aboutsummaryrefslogtreecommitdiff
path: root/ignis/views.py
diff options
context:
space:
mode:
authorBobby <[email protected]>2024-08-12 10:57:30 -0400
committerBobby <[email protected]>2024-08-12 10:57:30 -0400
commit28d45547ac5a05ad2e6b11849608e45dc9eeca39 (patch)
tree867bab5fdb0473195fbbe80929b1064196f19358 /ignis/views.py
parent3eb61715ecfa0dcf90ee607661f8777e6765bab3 (diff)
downloadthatcomputerscientist-28d45547ac5a05ad2e6b11849608e45dc9eeca39.tar.xz
thatcomputerscientist-28d45547ac5a05ad2e6b11849608e45dc9eeca39.zip
better spacing; better forms
Diffstat (limited to 'ignis/views.py')
-rw-r--r--ignis/views.py160
1 files changed, 94 insertions, 66 deletions
diff --git a/ignis/views.py b/ignis/views.py
index 942ab187..06454206 100644
--- a/ignis/views.py
+++ b/ignis/views.py
@@ -15,38 +15,43 @@ from .models import PostImage, RepositoryTitle
# from .github import get_cover
+
# Create your views here.
@csrf_exempt
def tex(request):
# get expression from request query
- expression = request.GET.get('expr').replace('"', '').strip()
+ expression = request.GET.get("expr").replace('"', "").strip()
if not expression:
- return HttpResponse('No expression provided!', status=400)
+ return HttpResponse("No expression provided!", status=400)
import requests
- image = requests.get('https://latex.codecogs.com/png.image?%5Cinline%20%5Clarge%20%5Cdpi%7B200%7D%5Cbg%7Btransparent%7D' + expression).content
+ image = requests.get(
+ "https://latex.codecogs.com/png.image?%5Cinline%20%5Clarge%20%5Cdpi%7B200%7D%5Cbg%7Btransparent%7D"
+ + expression
+ ).content
# Image is a transparent GIF with black text. Invert the colors.
image = Image.open(BytesIO(image))
- image = image.convert('RGBA')
+ image = image.convert("RGBA")
image = Image.eval(image, lambda x: 255 - x)
# Convert back to gif and return
output = BytesIO()
- image.save(output, format='GIF')
- return HttpResponse(output.getvalue(), content_type='image/gif')
+ image.save(output, format="GIF")
+ return HttpResponse(output.getvalue(), content_type="image/gif")
+
@csrf_exempt
def post_image(request, size, post_id):
- post_id = post_id.replace('.gif', '')
+ post_id = post_id.replace(".gif", "")
pi = Post.objects.get(id=post_id)
if not pi:
- return HttpResponse('No image found!', status=404)
-
+ return HttpResponse("No image found!", status=404)
+
# open image and return
image = pi.post_image
- with open(image.path, 'rb') as f:
+ with open(image.path, "rb") as f:
# resize image
size = int(size)
if size != 0:
@@ -56,7 +61,7 @@ def post_image(request, size, post_id):
size = 100
elif size > 1000:
size = 1000
-
+
image = Image.open(f)
# resize width to size, compute height
width, height = image.size
@@ -66,50 +71,54 @@ def post_image(request, size, post_id):
# resize image
image = image.resize((width, height), Image.ANTIALIAS)
output = BytesIO()
- image.save(output, format='GIF')
- return HttpResponse(output.getvalue(), content_type='image/gif')
+ image.save(output, format="GIF")
+ return HttpResponse(output.getvalue(), content_type="image/gif")
else:
- return HttpResponse(f.read(), content_type='image/gif')
+ return HttpResponse(f.read(), content_type="image/gif")
+
@csrf_exempt
def get_image(request, post_id, image_name):
# get image from post_id
- try:
+ try:
post = Post.objects.get(id=post_id)
except:
- return HttpResponse('No post found!', status=404)
+ return HttpResponse("No post found!", status=404)
pi = PostImage.objects.filter(post=post, name=image_name)
if not pi:
- return HttpResponse('No image found!', status=404)
-
+ return HttpResponse("No image found!", status=404)
+
# open image and return
image = pi[0].image
- with open(image.path, 'rb') as f:
+ with open(image.path, "rb") as f:
image_file = f.read()
# convert to gif
image = Image.open(BytesIO(image_file))
# check image format
- if image.format != 'GIF':
- image = image.convert('RGBA')
+ if image.format != "GIF":
+ image = image.convert("RGBA")
output = BytesIO()
- image.save(output, format='GIF')
+ image.save(output, format="GIF")
image_file = output.getvalue()
- return HttpResponse(image_file, content_type='image/gif')
+ return HttpResponse(image_file, content_type="image/gif")
+
@csrf_exempt
def cover_image(request, repository):
- force_reload = request.GET.get('force_reload')
- repository = repository.replace('.gif', '')
+ force_reload = request.GET.get("force_reload")
+ repository = repository.replace(".gif", "")
# check if the image is in RepositoryTitles
try:
if force_reload:
- raise Exception('Force reload')
+ raise Exception("Force reload")
repository_title = RepositoryTitle.objects.get(repository=repository)
image = repository_title.image
except:
# image is not in RepositoryTitles
# get image
- url = 'https://socialify.thatcomputerscientist.com/luciferreeves/{}/png?font=KoHo&language=1&language2=1&name=1&theme=Dark&pattern=Solid'.format(repository)
+ url = "https://socialify.thatcomputerscientist.com/luciferreeves/{}/png?font=KoHo&language=1&language2=1&name=1&theme=Dark&pattern=Solid".format(
+ repository
+ )
image = requests.get(url).content
# reduce image size to 320x160
@@ -117,7 +126,7 @@ def cover_image(request, repository):
image = image.resize((320, 160), Image.ANTIALIAS)
# remove black background
- image = image.convert('RGBA').getdata()
+ image = image.convert("RGBA").getdata()
new_data = []
for item in image:
if item[0] == 0 and item[1] == 0 and item[2] == 0:
@@ -127,75 +136,94 @@ def cover_image(request, repository):
# Convert back to png and return
output = BytesIO()
- image = Image.new('RGBA', (320, 160))
+ image = Image.new("RGBA", (320, 160))
image.putdata(new_data)
- image.save(output, format='GIF')
+ image.save(output, format="GIF")
image = output.getvalue()
# save image to RepositoryTitles
- image = ContentFile(image, name='{}.png'.format(repository))
+ image = ContentFile(image, name="{}.png".format(repository))
repository_title = RepositoryTitle(repository=repository, image=image)
repository_title.save()
- return HttpResponse(image, content_type='image/gif')
+ return HttpResponse(image, content_type="image/gif")
def upload_image(request):
- if request.method == 'POST':
+ if request.method == "POST":
if not request.user.is_authenticated and not request.user.is_staff:
- return HttpResponse('Unauthorized', status=401)
- if not request.FILES.get('image'):
- return HttpResponse('No image provided!', status=400)
- if not request.POST.get('id'):
- return HttpResponse('No id provided!', status=400)
-
+ return HttpResponse("Unauthorized", status=401)
+ if not request.FILES.get("image"):
+ return HttpResponse("No image provided!", status=400)
+ if not request.POST.get("id"):
+ return HttpResponse("No id provided!", status=400)
+
# upload image to PostImage model
- image = request.FILES['image']
- post_id = request.POST['id']
+ image = request.FILES["image"]
+ post_id = request.POST["id"]
# check if image already exists
- pi = PostImage.objects.filter(post=Post.objects.get(id=post_id), name=image.name)
+ pi = PostImage.objects.filter(
+ post=Post.objects.get(id=post_id), name=image.name
+ )
if pi:
# image already exists, delete it
pi[0].delete()
# save image to post_id
pi = PostImage(image=image, post=Post.objects.get(id=post_id), name=image.name)
pi.save()
- response = {
- 'url': '/ignis/image/{}/{}'.format(post_id, pi.name)
- }
- return HttpResponse(json.dumps(response), content_type='application/json')
- return HttpResponse('Method not allowed', status=405)
+ response = {"url": "/ignis/image/{}/{}".format(post_id, pi.name)}
+ return HttpResponse(json.dumps(response), content_type="application/json")
+ return HttpResponse("Method not allowed", status=405)
+
def captcha_image(request, captcha_string):
captcha = CaptchaTokenGenerator().decrypt(captcha_string)
imgcaptcha = ImageCaptcha()
+ imgcaptcha.character_rotate = (-15, 15)
+ imgcaptcha.character_warp_dx = (0, 0)
+ imgcaptcha.character_warp_dy = (0, 0)
+ imgcaptcha.character_offset_dx = (12, 20)
+ imgcaptcha.character_offset_dy = (0, 6)
data = imgcaptcha.generate(captcha)
- return HttpResponse(data, content_type='image/png')
+ return HttpResponse(data, content_type="image/png")
+
def socialify(request):
- repo = request.GET.get('repo')
- theme = request.GET.get('theme')
- font = request.GET.get('font')
- pattern = request.GET.get('pattern')
- name = request.GET.get('name')
- description = request.GET.get('description')
- language_1 = request.GET.get('language_1')
- language_2 = request.GET.get('language_2')
- stargazers = request.GET.get('stargazers')
- forks = request.GET.get('forks')
- issues = request.GET.get('issues')
- pulls = request.GET.get('pulls')
-
- url = 'https://socialify.thatcomputerscientist.com/{}/png?description={}&font={}&forks={}&issues={}&language={}&language2={}&name={}&owner=1&pattern={}&pulls={}&stargazers={}&theme={}'.format(repo, description, font, forks, issues, language_1, language_2, name, pattern, pulls, stargazers, theme)
+ repo = request.GET.get("repo")
+ theme = request.GET.get("theme")
+ font = request.GET.get("font")
+ pattern = request.GET.get("pattern")
+ name = request.GET.get("name")
+ description = request.GET.get("description")
+ language_1 = request.GET.get("language_1")
+ language_2 = request.GET.get("language_2")
+ stargazers = request.GET.get("stargazers")
+ forks = request.GET.get("forks")
+ issues = request.GET.get("issues")
+ pulls = request.GET.get("pulls")
+
+ url = "https://socialify.thatcomputerscientist.com/{}/png?description={}&font={}&forks={}&issues={}&language={}&language2={}&name={}&owner=1&pattern={}&pulls={}&stargazers={}&theme={}".format(
+ repo,
+ description,
+ font,
+ forks,
+ issues,
+ language_1,
+ language_2,
+ name,
+ pattern,
+ pulls,
+ stargazers,
+ theme,
+ )
req = requests.get(url)
image = req.content
status = req.status_code
if status == 200:
- return HttpResponse(image, content_type='image/png')
+ return HttpResponse(image, content_type="image/png")
else:
- with open('static/images/site/utgi.gif', 'rb') as f:
+ with open("static/images/site/utgi.gif", "rb") as f:
image = f.read()
- return HttpResponse(image, content_type='image/gif')
-
+ return HttpResponse(image, content_type="image/gif")