Skip to content
Snippets Groups Projects
Commit 1134f719 authored by Jonathan Weth's avatar Jonathan Weth :keyboard:
Browse files

Fix bugs with wrong methods and missing unique constraints

parent f592ebdf
No related branches found
No related tags found
1 merge request!1Resolve "Optimise query count"
# Generated by Django 3.2 on 2021-05-15 20:28
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('favicon', '0003_site_manager'),
]
operations = [
migrations.AddConstraint(
model_name='faviconimg',
constraint=models.UniqueConstraint(fields=('faviconFK', 'size', 'rel'), name='favicon_size_rel_unique'),
),
]
...@@ -81,7 +81,7 @@ class Favicon(models.Model): ...@@ -81,7 +81,7 @@ class Favicon(models.Model):
# Delete all favicon images to update all # Delete all favicon images to update all
if update: if update:
favicons.delete() favicons.delete()
favicons = FaviconImg.objects.empty() favicons = FaviconImg.objects.none()
found = [] found = []
else: else:
favicons = favicons.all() favicons = favicons.all()
...@@ -96,7 +96,7 @@ class Favicon(models.Model): ...@@ -96,7 +96,7 @@ class Favicon(models.Model):
fav.generate_image() fav.generate_image()
new_favicons.append(fav) new_favicons.append(fav)
if new_favicons: if new_favicons:
FaviconImg.objects.bulk_create(new_favicons) FaviconImg.objects.bulk_create(new_favicons, ignore_conflicts=True)
return list(favicons) + new_favicons return list(favicons) + new_favicons
...@@ -117,8 +117,6 @@ class Favicon(models.Model): ...@@ -117,8 +117,6 @@ class Favicon(models.Model):
return html return html
def save(self, *args, **kwargs): def save(self, *args, **kwargs):
update = False
if self.isFavicon: if self.isFavicon:
Favicon.on_site.exclude(pk=self.pk).update(isFavicon=False) Favicon.on_site.exclude(pk=self.pk).update(isFavicon=False)
...@@ -127,7 +125,7 @@ class Favicon(models.Model): ...@@ -127,7 +125,7 @@ class Favicon(models.Model):
cache.delete(config_cache_key) cache.delete(config_cache_key)
if self.faviconImage: if self.faviconImage:
html = self.get_favicons(update=update) html = self.as_html(update=True)
cache.set(config_cache_key, html, timeout=None) cache.set(config_cache_key, html, timeout=None)
...@@ -154,6 +152,9 @@ class FaviconImg(models.Model): ...@@ -154,6 +152,9 @@ class FaviconImg(models.Model):
def del_image(self): def del_image(self):
self.faviconImage.delete() self.faviconImage.delete()
class Meta:
constraints = [models.UniqueConstraint(fields=["faviconFK", "size", "rel"], name="favicon_size_rel_unique")]
signals.pre_delete.connect(pre_delete_image, sender=Favicon) signals.pre_delete.connect(pre_delete_image, sender=Favicon)
signals.pre_delete.connect(pre_delete_image, sender=FaviconImg) signals.pre_delete.connect(pre_delete_image, sender=FaviconImg)
...@@ -20,12 +20,11 @@ def place_favicon(context): ...@@ -20,12 +20,11 @@ def place_favicon(context):
html = cache.get(config_cache_key) html = cache.get(config_cache_key)
if html: if html:
return html return mark_safe(html)
fav = Favicon.on_site.filter(isFavicon=True).first() fav = Favicon.on_site.filter(isFavicon=True).first()
if not fav: if not fav:
return mark_safe('<!-- no favicon -->') return mark_safe('<!-- no favicon -->')
html = fav.as_html() html = fav.as_html()
cache.set(config_cache_key, html, timeout=None) cache.set(config_cache_key, html, timeout=None)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment