You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by ke...@apache.org on 2021/02/10 18:36:53 UTC

[allura] 01/01: SF-5746 use project icon file hash for cache busting

This is an automated email from the ASF dual-hosted git repository.

kentontaylor pushed a commit to branch kt/icon-hash
in repository https://gitbox.apache.org/repos/asf/allura.git

commit 6bc97808aa732c3a347d8923c7e043c1d88c19d5
Author: Kenton Taylor <kt...@slashdotmedia.com>
AuthorDate: Wed Feb 10 18:34:58 2021 +0000

    SF-5746 use project icon file hash for cache busting
---
 Allura/allura/model/project.py | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/Allura/allura/model/project.py b/Allura/allura/model/project.py
index 68585b7..5819a8f 100644
--- a/Allura/allura/model/project.py
+++ b/Allura/allura/model/project.py
@@ -21,6 +21,8 @@ from __future__ import absolute_import
 import logging
 from calendar import timegm
 from collections import Counter, OrderedDict
+from hashlib import sha256
+
 from datetime import datetime
 from copy import deepcopy
 import six.moves.urllib.request
@@ -380,8 +382,18 @@ class Project(SearchIndexable, MappedClass, ActivityNode, ActivityObject):
         )
         # store the dimensions so we don't have to read the whole image each time we need to know
         icon_orig_img = PIL.Image.open(icon_orig.rfile())
+
         self.set_tool_data('allura', icon_original_size=icon_orig_img.size)
 
+        try:
+            # calc and save icon file hash, for better cache busting purposes
+            file_input.seek(0)
+            file_bytes = file_input.read()
+            file_sha256 = sha256(file_bytes).hexdigest()
+            self.set_tool_data('allura', icon_sha256=file_sha256)
+        except Exception as ex:
+            log.exception('Failed to calculate sha256 for icon file for {}'.format(self.shortname))
+
     @property
     def icon(self):
         return self.icon_sized(DEFAULT_ICON_WIDTH)