]> Untitled Git - web-gallery.git/blobdiff - navigator/app/app.py
Updated to version 1.5.0
[web-gallery.git] / navigator / app / app.py
index 33aac3d28c2a627db29b320485ed697d3537fe65..50d8cf75c8c8f5d8633230af20dfbb2672bfe82a 100644 (file)
@@ -6,6 +6,26 @@ app = Flask(__name__)
 gallery_root = "/app/gallery"
 get_num_regex = re.compile(r'\d+')
 
+### helper functions ###
+
+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
+
+def get_file_text(filename):
+    file_text = None
+    try:
+        with open(filename, 'r') as file:
+            file_text = file.read()
+    except:
+        print("File not found:" + filename)
+    return file_text
+
+### routes ###
+
 @app.route('/')
 def render_gallery():
     gallery_names = []
@@ -14,19 +34,18 @@ def render_gallery():
             if not gallery.is_file():
                 gallery_names.append(gallery.name)
     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
+    return render_template( 'gallery.html',
+        title="My Comics",
+        galleries=gallery_names
+        )
 
 @app.route('/<gallery>')
 def render_pages(gallery=None):
+    gallery_dir = gallery_root + "/" + gallery
+
+    # get list of available pages in gallery
     template_pages = []
-    with os.scandir(gallery_root + "/" + gallery) as pages:
+    with os.scandir(gallery_dir) as pages:
         for page in pages:
             if page.is_file() and page.name.endswith('.png') or page.name.endswith('.jpg'):
                 template_pages.append({
@@ -34,7 +53,17 @@ def render_pages(gallery=None):
                     '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 )
+
+    # get header for gallery (if available)
+    header_html = get_file_text(gallery_dir + "/header.html")
+
+    # render!
+    return render_template( 'pages.html',
+        title=gallery,
+        gallery=gallery,
+        header=header_html,
+        pages=template_pages
+        )
 
 @app.route('/<gallery>/<int:page_num>')
 def render_page(gallery=None, page_num=None):
@@ -57,7 +86,7 @@ def render_page(gallery=None, page_num=None):
 
         return render_template( 'page.html',
             gallery=gallery, page_num=page_num,
-            title=page_name, src=src, alt=page_name,
+            title='{} {}'.format(gallery, page_num), src=src, alt=page_name,
             prev_page_url=prev_page_url,
             next_page_url=next_page_url )
     else: