X-Git-Url: http://git.purplebirdman.com/web-gallery.git/blobdiff_plain/d731a2bad30aaec2e1f1d63e2bb57062e1ccd503..7deeaa829328f71e5ce2ef03c1c20c56519369b6:/app/app.py diff --git a/app/app.py b/app/app.py index 86cbf79..33aac3d 100644 --- a/app/app.py +++ b/app/app.py @@ -1,8 +1,64 @@ from flask import Flask, render_template +import os +import re app = Flask(__name__) +gallery_root = "/app/gallery" +get_num_regex = re.compile(r'\d+') @app.route('/') def render_gallery(): - items = ['LittleWilly', 'foo', 'bar'] - return render_template( 'gallery.html', gallery_items=items ) + gallery_names = [] + with os.scandir(gallery_root) as galleries: + for gallery in galleries: + 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 + +@app.route('/') +def render_pages(gallery=None): + 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'): + 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('//') +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'