diff options
| author | Bobby <[email protected]> | 2024-08-12 10:57:30 -0400 |
|---|---|---|
| committer | Bobby <[email protected]> | 2024-08-12 10:57:30 -0400 |
| commit | 28d45547ac5a05ad2e6b11849608e45dc9eeca39 (patch) | |
| tree | 867bab5fdb0473195fbbe80929b1064196f19358 /ignis/views.py | |
| parent | 3eb61715ecfa0dcf90ee607661f8777e6765bab3 (diff) | |
| download | thatcomputerscientist-28d45547ac5a05ad2e6b11849608e45dc9eeca39.tar.xz thatcomputerscientist-28d45547ac5a05ad2e6b11849608e45dc9eeca39.zip | |
better spacing; better forms
Diffstat (limited to 'ignis/views.py')
| -rw-r--r-- | ignis/views.py | 160 |
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") |
