Skip to content
Snippets Groups Projects
Verified Commit e6b4ce1f authored by Nik | Klampfradler's avatar Nik | Klampfradler
Browse files

Pre-generate HTML on save

parent 939d0de2
No related branches found
No related tags found
1 merge request!1Resolve "Optimise query count"
......@@ -106,6 +106,13 @@ class Favicon(models.Model):
def del_image(self):
self.faviconImage.delete()
def as_html(self, update=False):
"""Return <link> html tags for this favicon set."""
html = ''
for favicon in self.get_favicons(update=update):
html += favicon.as_html()
return html
def save(self, *args, **kwargs):
update = False
......@@ -114,11 +121,12 @@ class Favicon(models.Model):
super(Favicon, self).save(*args, **kwargs)
if self.faviconImage:
self.get_favicons(update=update)
cache.delete(config_cache_key)
if self.faviconImage:
html = self.get_favicons(update=update)
cache.set(config_cache_key, html, timeout=None)
class FaviconImg(models.Model):
faviconFK = models.ForeignKey(Favicon, on_delete=models.CASCADE)
......@@ -126,6 +134,10 @@ class FaviconImg(models.Model):
rel = models.CharField(max_length=250, null=True)
faviconImage = models.ImageField(upload_to=image_path)
def as_html(self):
"""Return a <link> tag forthis favicon image."""
return f'<link rel="{self.rel}" sizes="{self.size}x{self.size}" href="{self.faviconImage.url}"/>'
def generate_image(self):
tmp = Image.open(storage.open(self.faviconFK.faviconImage.name))
tmp.thumbnail((self.size, self.size), Image.ANTIALIAS)
......
......@@ -25,9 +25,8 @@ def place_favicon(context):
fav = Favicon.on_site.filter(isFavicon=True).first()
if not fav:
return mark_safe('<!-- no favicon -->')
html = ''
for n in fav.get_favicons():
html += f'<link rel="{n.rel}" sizes="{n.size}x{n.size}" href="{n.faviconImage.url}"/>'
html = fav.as_html()
cache.set(config_cache_key, html, timeout=None)
return mark_safe(html)
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