You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by gc...@apache.org on 2023/04/28 21:45:12 UTC

[allura] branch gc/8508 created (now 269ba7abc)

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

gcruz pushed a change to branch gc/8508
in repository https://gitbox.apache.org/repos/asf/allura.git


      at 269ba7abc [#8508] adding unique id to uploaded screenshots

This branch includes the following new commits:

     new 269ba7abc [#8508] adding unique id to uploaded screenshots

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[allura] 01/01: [#8508] adding unique id to uploaded screenshots

Posted by gc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gcruz pushed a commit to branch gc/8508
in repository https://gitbox.apache.org/repos/asf/allura.git

commit 269ba7abc6e4f6db8c937434537e830c03605d87
Author: Guillermo Cruz <gu...@slashdotmedia.com>
AuthorDate: Fri Apr 28 16:44:52 2023 -0500

    [#8508] adding unique id to uploaded screenshots
---
 Allura/allura/ext/admin/admin_main.py                    | 15 +++------------
 Allura/allura/model/project.py                           |  4 ++++
 Allura/allura/templates/widgets/project_screenshots.html |  2 +-
 3 files changed, 8 insertions(+), 13 deletions(-)

diff --git a/Allura/allura/ext/admin/admin_main.py b/Allura/allura/ext/admin/admin_main.py
index 9dd17d062..08aec761d 100644
--- a/Allura/allura/ext/admin/admin_main.py
+++ b/Allura/allura/ext/admin/admin_main.py
@@ -52,6 +52,7 @@ from allura.lib.widgets.project_list import ProjectScreenshots
 
 from . import widgets as aw
 import six
+import uuid
 
 
 log = logging.getLogger(__name__)
@@ -517,6 +518,7 @@ class ProjectAdminController(BaseController):
     @require_post()
     @validate(W.screenshot_admin)
     def add_screenshot(self, screenshot=None, caption=None, **kw):
+        id = uuid.uuid1()
         require_access(c.project, 'update')
         screenshots = c.project.get_screenshots()
         if len(screenshots) >= 6:
@@ -525,18 +527,7 @@ class ProjectAdminController(BaseController):
         elif screenshot is not None and screenshot != '':
             future_bmp = False
             e_filename, e_fileext = os.path.splitext(screenshot.filename)
-            for screen in screenshots:
-                c_filename, c_fileext = os.path.splitext(screen.filename)
-                if c_fileext == '.png' and e_fileext.lower() == '.bmp' and e_filename == c_filename:
-                    future_bmp = True
-                    # If both filename(without ext.) equals and exiting file ext. is png and given file ext is bmp,
-                    # there will be two similar png files.
-
-                if screen.filename == screenshot.filename or future_bmp:
-                    screenshot.filename = re.sub(r'(.*)\.(.*)', r'\1-' + str(randint(1000, 9999)) + r'.\2',
-                                                 screenshot.filename)
-                    # if filename already exists append a random number
-                    break
+            screenshot.filename = f"{e_filename}-{id.hex[:8]}{e_fileext}"
             M.AuditLog.log('screenshots: added screenshot {} with caption "{}"'.format(
                 screenshot.filename, caption))
             sort = 1 + max([ss.sort or 0 for ss in screenshots] or [0])
diff --git a/Allura/allura/model/project.py b/Allura/allura/model/project.py
index e6ff5af2e..9d90bea39 100644
--- a/Allura/allura/model/project.py
+++ b/Allura/allura/model/project.py
@@ -94,6 +94,10 @@ class ProjectFile(File):
     caption = FieldProperty(str)
     sort = FieldProperty(int)
 
+    @LazyProperty
+    def screenshot_timestamp(self):
+        return timegm(self._id.generation_time.timetuple())
+
 
 class ProjectCategory(MappedClass):
 
diff --git a/Allura/allura/templates/widgets/project_screenshots.html b/Allura/allura/templates/widgets/project_screenshots.html
index 5aa5059d2..a595b5baf 100644
--- a/Allura/allura/templates/widgets/project_screenshots.html
+++ b/Allura/allura/templates/widgets/project_screenshots.html
@@ -25,7 +25,7 @@
   {% for ss in screenshots %}
   <div data-ss-id="{{ ss._id }}" class="screenshot">
     <div class="image">
-      <a class="lightbox" href="{{project.url()}}screenshot/{{h.urlquote(ss.filename)}}" ><img src="{{project.url()}}screenshot/{{h.urlquote(ss.filename)}}/thumb" alt="Screenshot thumbnail"/></a>
+      <a class="lightbox" href="{{project.url()}}screenshot/{{h.urlquote(ss.filename)}}" ><img src="{{project.url()}}screenshot/{{h.urlquote(ss.filename)}}/thumb?{{ ss.screenshot_timestamp }}" alt="Screenshot thumbnail"/></a>
       {% if not edit %}
       <br>
       {{ss.caption}}