1 from flask import Flask, render_template
6 gallery_root = "/app/gallery"
7 gallery_desc_filename = "description.html"
8 get_num_regex = re.compile(r'\d+')
13 with os.scandir(gallery_root) as galleries:
14 for gallery in galleries:
15 if not gallery.is_file():
16 gallery_names.append(gallery.name)
18 return render_template( 'gallery.html',
20 galleries=gallery_names
23 def get_page_number_from_name(name):
25 return int(get_num_regex.findall(name)[-1])
27 print ("Index error on name " + name, flush=True)
30 @app.route('/<gallery>')
31 def render_pages(gallery=None):
32 gallery_dir = gallery_root + "/" + gallery
34 # get list of available pages in gallery
36 with os.scandir(gallery_dir) as pages:
38 if page.is_file() and page.name.endswith('.png') or page.name.endswith('.jpg'):
39 template_pages.append({
41 'number': get_page_number_from_name(page.name)
43 template_pages = sorted(template_pages, key=lambda page: page['number'])
45 # get description for gallery (if available)
46 desc_filename = gallery_dir + "/" + gallery_desc_filename
49 with open(desc_filename, 'r') as file:
50 description = file.read()
52 print("Description file not found at " + desc_filename)
55 return render_template( 'pages.html',
58 description=description,
62 @app.route('/<gallery>/<int:page_num>')
63 def render_page(gallery=None, page_num=None):
65 # find a page that I think corrosponds to this page number
67 with os.scandir(gallery_root + "/" + gallery) as pages:
70 num = get_page_number_from_name(page.name)
71 if int(page_num) == int(num):
75 # if found, create src link to that page
77 src = '/images/{}/{}'.format( gallery, page_name )
78 prev_page_url = "/{}/{}".format( gallery, page_num - 1)
79 next_page_url = "/{}/{}".format( gallery, page_num + 1)
81 return render_template( 'page.html',
82 gallery=gallery, page_num=page_num,
83 title='{} {}'.format(gallery, page_num), src=src, alt=page_name,
84 prev_page_url=prev_page_url,
85 next_page_url=next_page_url )
87 return 'No page found'