aboutsummaryrefslogtreecommitdiff
path: root/ignis
diff options
context:
space:
mode:
authorBobby <[email protected]>2022-12-31 12:59:47 -0500
committerBobby <[email protected]>2022-12-31 12:59:47 -0500
commit3d15ed922526ae52237fa1f4c7dfb9b7fec25c53 (patch)
tree3ac206230e6b81ea36a9fddcabee7c17e873a9e6 /ignis
parent72e35f67163b67bdf5ccfa709954be21a509b411 (diff)
downloadthatcomputerscientist-3d15ed922526ae52237fa1f4c7dfb9b7fec25c53.tar.xz
thatcomputerscientist-3d15ed922526ae52237fa1f4c7dfb9b7fec25c53.zip
Ton of improvement, articles view, need to update posts on server now
Diffstat (limited to 'ignis')
-rw-r--r--ignis/admin.py3
-rw-r--r--ignis/migrations/0012_coverimage.py40
-rw-r--r--ignis/models.py8
-rw-r--r--ignis/views.py59
4 files changed, 77 insertions, 33 deletions
diff --git a/ignis/admin.py b/ignis/admin.py
index eb188185..b262f0d0 100644
--- a/ignis/admin.py
+++ b/ignis/admin.py
@@ -1,7 +1,8 @@
from django.contrib import admin
# Register your models here.
-from .models import PostImage, RepositoryTitle
+from .models import PostImage, RepositoryTitle, CoverImage
admin.site.register(PostImage)
admin.site.register(RepositoryTitle)
+admin.site.register(CoverImage)
diff --git a/ignis/migrations/0012_coverimage.py b/ignis/migrations/0012_coverimage.py
new file mode 100644
index 00000000..0a35a322
--- /dev/null
+++ b/ignis/migrations/0012_coverimage.py
@@ -0,0 +1,40 @@
+# Generated by Django 4.1.4 on 2022-12-31 17:21
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ("blog", "0006_remove_post_post_image"),
+ ("ignis", "0011_postimage_name"),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name="CoverImage",
+ fields=[
+ (
+ "id",
+ models.BigAutoField(
+ auto_created=True,
+ primary_key=True,
+ serialize=False,
+ verbose_name="ID",
+ ),
+ ),
+ ("image", models.ImageField(upload_to="images//cover_images")),
+ ("name", models.CharField(default=None, max_length=100, null=True)),
+ (
+ "post",
+ models.ForeignKey(
+ default=None,
+ null=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ to="blog.post",
+ ),
+ ),
+ ],
+ ),
+ ]
diff --git a/ignis/models.py b/ignis/models.py
index 048f1ea5..dd8443bc 100644
--- a/ignis/models.py
+++ b/ignis/models.py
@@ -5,6 +5,14 @@ UPLOAD_ROOT = 'images/'
# Only For Storing Images
+class CoverImage(models.Model):
+ image = models.ImageField(upload_to="{}/cover_images".format(UPLOAD_ROOT))
+ name = models.CharField(max_length=100, default=None, null=True)
+ post = models.ForeignKey(Post, default=None, on_delete=models.CASCADE, null=True)
+
+ def __str__(self):
+ return self.name
+
class PostImage(models.Model):
post = models.ForeignKey(Post, default=None, on_delete=models.CASCADE, null=True)
image = models.ImageField(upload_to="{}/post_images".format(UPLOAD_ROOT))
diff --git a/ignis/views.py b/ignis/views.py
index fd127d55..9a081c46 100644
--- a/ignis/views.py
+++ b/ignis/views.py
@@ -5,7 +5,7 @@ from django.views.decorators.csrf import csrf_exempt
import base64
from blog.models import Post
import base64
-from .models import PostImage, RepositoryTitle
+from .models import PostImage, RepositoryTitle, CoverImage
import json
import requests
from django.core.files.base import ContentFile
@@ -38,41 +38,36 @@ def tex(request):
@csrf_exempt
def post_image(request, size, post_id):
post_id = post_id.replace('.gif', '')
- pi = Post.objects.get(id=post_id).post_image
+ pi = CoverImage.objects.filter(post=Post.objects.get(id=post_id))
if not pi:
return HttpResponse('No image found!', status=404)
- # convert base64 data src to image
- image = base64.b64decode(pi.split(',')[1])
-
- size = int(size)
- if size != 0:
- image = Image.open(BytesIO(image))
-
- # set min and max size
- if size < 100:
- size = 100
- elif size > 1000:
- size = 1000
-
- # resize width to size, compute height
- width, height = image.size
- height = int(height * (size / width))
- width = size
-
+ # open image and return
+ image = pi[0].image
+ with open(image.path, 'rb') as f:
# resize image
- image = image.resize((width, height), Image.ANTIALIAS)
-
- # Convert back to gif and return
- output = BytesIO()
- image.save(output, format='GIF')
-
- return HttpResponse(output.getvalue(), content_type='image/gif')
- else:
- # Convert back to gif and return
- output = BytesIO()
- output.write(image)
- return HttpResponse(output.getvalue(), content_type='image/gif')
+ size = int(size)
+ if size != 0:
+
+ # set min and max size
+ if size < 100:
+ size = 100
+ elif size > 1000:
+ size = 1000
+
+ image = Image.open(f)
+ # resize width to size, compute height
+ width, height = image.size
+ height = int(height * (size / width))
+ width = size
+
+ # resize image
+ image = image.resize((width, height), Image.ANTIALIAS)
+ output = BytesIO()
+ image.save(output, format='GIF')
+ return HttpResponse(output.getvalue(), content_type='image/gif')
+ else:
+ return HttpResponse(f.read(), content_type='image/gif')
@csrf_exempt
def get_image(request, post_id, image_name):