]> Untitled Git - web-gallery.git/commitdiff
Initial version 1.0.0
authorClifton Palmer <clifton.james.palmer@protonmail.com>
Sun, 29 Oct 2023 17:24:39 +0000 (12:24 -0500)
committerClifton Palmer <clifton.james.palmer@protonmail.com>
Sun, 29 Oct 2023 17:25:13 +0000 (12:25 -0500)
* No longer exposes filenames

app/app.py
app/templates/pages.html
docker-compose.yml

index e6d723a27b2c47652404ad4d9b6d800ad6b9a92b..33aac3d28c2a627db29b320485ed697d3537fe65 100644 (file)
@@ -16,30 +16,49 @@ def render_gallery():
     gallery_names.sort()
     return render_template( 'gallery.html', galleries=gallery_names )
 
+def get_page_number_from_name(name):
+    try:
+        return int(get_num_regex.findall(name)[-1]) 
+    except IndexError:
+        print ("Index error on name " + name, flush=True)
+        return -1
+
 @app.route('/<gallery>')
 def render_pages(gallery=None):
-    page_names = []
+    template_pages = []
     with os.scandir(gallery_root + "/" + gallery) as pages:
         for page in pages:
             if page.is_file() and page.name.endswith('.png') or page.name.endswith('.jpg'):
-                page_names.append(page.name)
-    page_names.sort()
-    return render_template( 'pages.html', gallery=gallery, pages=page_names )
-
-@app.route('/<gallery>/<page>')
-def render_page(gallery=None, page=None):
-    src = '/images/{}/{}'.format( gallery, page )
-
-    page_num = int(get_num_regex.findall(page)[-1])
-    page_num_str = str(page_num).rjust(3, '0')
-    next_page_num_str = str(page_num + 1).rjust(3, '0')
-    prev_page_num_str = str(page_num - 1).rjust(3, '0')
-
-    prev_page_url = '/{}/{}'.format(gallery, page.replace(page_num_str, prev_page_num_str) )
-    next_page_url = '/{}/{}'.format(gallery, page.replace(page_num_str, next_page_num_str) )
-
-    return render_template( 'page.html',
-        gallery=gallery, page=page, page_num=page_num,
-        title=page, src=src, alt=page,
-        prev_page_url=prev_page_url,
-        next_page_url=next_page_url )
+                template_pages.append({
+                    'name': page.name, 
+                    'number': get_page_number_from_name(page.name)
+                    })
+    template_pages = sorted(template_pages, key=lambda page: page['number'])
+    return render_template( 'pages.html', gallery=gallery, pages=template_pages )
+
+@app.route('/<gallery>/<int:page_num>')
+def render_page(gallery=None, page_num=None):
+
+    # find a page that I think corrosponds to this page number
+    page_name = None
+    with os.scandir(gallery_root + "/" + gallery) as pages:
+        for page in pages:
+            if page.is_file():
+                num = get_page_number_from_name(page.name)
+                if int(page_num) == int(num):
+                    page_name = page.name
+                    break
+
+    # if found, create src link to that page
+    if page_name:
+        src = '/images/{}/{}'.format( gallery, page_name )
+        prev_page_url = "/{}/{}".format( gallery, page_num - 1)
+        next_page_url = "/{}/{}".format( gallery, page_num + 1)
+
+        return render_template( 'page.html',
+            gallery=gallery, page_num=page_num,
+            title=page_name, src=src, alt=page_name,
+            prev_page_url=prev_page_url,
+            next_page_url=next_page_url )
+    else:
+        return 'No page found'
index fe4e75144aae664c942b79a3b47c72e0a5c570b2..c1204c9e3496669b178d3ffd2cbdcb0ae8ab76c1 100644 (file)
@@ -8,7 +8,7 @@
 
     <ul id="navigation">
     {% for page in pages %}
-        <li><a href="{{ gallery }}/{{ page }}">{{ page }}</a></li>
+        <li><a href="{{ gallery }}/{{ page.number }}">{{ page.number }}</a></li>
     {% endfor %}
     </ul>
 </body>
index 88d1329db236c7c4e33c6b2d08f62e5f58d1ae8c..0dcd45031f846780a42b5974c12e8413e5af40b4 100644 (file)
@@ -18,7 +18,7 @@ services:
         - gallery
     gallery:
         build: .
-        image: cjpalmer/gallery:0.1.0
+        image: cjpalmer/gallery:1.0.0
         volumes:
         - gallery_data:/app/gallery
         - ./app:/app