1 from flask import Flask, render_template
6 gallery_root = "/app/gallery"
7 get_num_regex = re.compile(r'\d+')
12 with os.scandir(gallery_root) as galleries:
13 for gallery in galleries:
14 if not gallery.is_file():
15 gallery_names.append(gallery.name)
17 return render_template( 'gallery.html', galleries=gallery_names )
19 def get_page_number_from_name(name):
21 return int(get_num_regex.findall(name)[-1])
23 print ("Index error on name " + name, flush=True)
26 @app.route('/<gallery>')
27 def render_pages(gallery=None):
29 with os.scandir(gallery_root + "/" + gallery) as pages:
31 if page.is_file() and page.name.endswith('.png') or page.name.endswith('.jpg'):
32 template_pages.append({
34 'number': get_page_number_from_name(page.name)
36 template_pages = sorted(template_pages, key=lambda page: page['number'])
37 return render_template( 'pages.html', gallery=gallery, pages=template_pages )
39 @app.route('/<gallery>/<int:page_num>')
40 def render_page(gallery=None, page_num=None):
42 # find a page that I think corrosponds to this page number
44 with os.scandir(gallery_root + "/" + gallery) as pages:
47 num = get_page_number_from_name(page.name)
48 if int(page_num) == int(num):
52 # if found, create src link to that page
54 src = '/images/{}/{}'.format( gallery, page_name )
55 prev_page_url = "/{}/{}".format( gallery, page_num - 1)
56 next_page_url = "/{}/{}".format( gallery, page_num + 1)
58 return render_template( 'page.html',
59 gallery=gallery, page_num=page_num,
60 title=page_name, src=src, alt=page_name,
61 prev_page_url=prev_page_url,
62 next_page_url=next_page_url )
64 return 'No page found'