Add cache and optimize code

This commit is contained in:
Nyymix 2025-04-14 10:26:50 +03:00
parent 2390968029
commit 473df39cbe
6 changed files with 114 additions and 54 deletions

View file

@ -1,6 +1,7 @@
import os
from datetime import datetime
from django.core.cache import cache
from django.db import models
from django.db.models.signals import post_save
from django.dispatch import receiver
@ -47,7 +48,6 @@ class Photo(models.Model):
self.slug = os.path.basename(self.photo.name)
super().save(*args, **kwargs)
def add_like(self):
self.likes += 1
self.save(update_fields=['likes'])
@ -58,7 +58,7 @@ class Photo(models.Model):
def get_next(self):
return self.__class__.objects.filter(taken_at__gt=self.taken_at, album=self.album).order_by('taken_at').first()
def get_prev(self):
return self.__class__.objects.filter(taken_at__lt=self.taken_at, album=self.album).order_by('-taken_at').first()
@ -79,13 +79,19 @@ class Photo(models.Model):
def create_photo(sender, instance, created, **kwargs):
if created:
""" Add exif metadata """
@receiver(post_save, sender=Photo)
def handle_photo_creation(sender, instance, created, **kwargs):
if not created:
return
# Lisää EXIF metadata
if instance.photo and instance.photo.path:
exif = Exif(instance.photo.path)
instance.exif = exif.data
""" Update taken datetime """
instance.taken_at = exif.datetimeoriginal('Europe/Helsinki')
instance.save()
instance.save(update_fields=['exif', 'taken_at'])
post_save.connect(create_photo, sender=Photo)
# Aseta cover, jos albumilla ei ole vielä sellaista
if instance.album and not instance.album.cover:
instance.album.cover = instance
instance.album.save(update_fields=['cover'])