annotate piecrust/admin/views/dashboard.py @ 778:5e91bc0e3b4d

internal: Move admin panel code into the piecrust package.
author Ludovic Chabant <ludovic@chabant.com>
date Sat, 16 Jul 2016 15:02:24 +0200
parents foodtruck/views/dashboard.py@3885421c29a3
children 82509bce94ca
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
587
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
1 import os
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
2 import os.path
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
3 import logging
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
4 from flask import (
772
3885421c29a3 admin: Make the whole FoodTruck site into a blueprint.
Ludovic Chabant <ludovic@chabant.com>
parents: 770
diff changeset
5 current_app, g, request,
594
8f9cf1bcbe76 admin: Dashboard UI cleaning, re-use utility function for page summaries.
Ludovic Chabant <ludovic@chabant.com>
parents: 587
diff changeset
6 render_template, url_for, redirect)
587
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
7 from flask.ext.login import login_user, logout_user, login_required
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
8 from piecrust.configuration import parse_config_header
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
9 from piecrust.rendering import QualifiedPage
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
10 from piecrust.uriutil import split_uri
594
8f9cf1bcbe76 admin: Dashboard UI cleaning, re-use utility function for page summaries.
Ludovic Chabant <ludovic@chabant.com>
parents: 587
diff changeset
11 from ..textutil import text_preview
772
3885421c29a3 admin: Make the whole FoodTruck site into a blueprint.
Ludovic Chabant <ludovic@chabant.com>
parents: 770
diff changeset
12 from ..blueprint import foodtruck_bp, load_user, after_this_request
587
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
13 from ..views import with_menu_context
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
14
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
15
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
16 logger = logging.getLogger(__name__)
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
17
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
18
772
3885421c29a3 admin: Make the whole FoodTruck site into a blueprint.
Ludovic Chabant <ludovic@chabant.com>
parents: 770
diff changeset
19 @foodtruck_bp.route('/')
587
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
20 @login_required
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
21 def index():
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
22 data = {}
610
efc1dc916e7c admin: Configuration changes.
Ludovic Chabant <ludovic@chabant.com>
parents: 602
diff changeset
23 data['sources'] = []
efc1dc916e7c admin: Configuration changes.
Ludovic Chabant <ludovic@chabant.com>
parents: 602
diff changeset
24 site = g.site
587
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
25 fs_endpoints = {}
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
26 for source in site.piecrust_app.sources:
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
27 if source.is_theme_source:
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
28 continue
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
29 facs = source.getPageFactories()
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
30 src_data = {
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
31 'name': source.name,
772
3885421c29a3 admin: Make the whole FoodTruck site into a blueprint.
Ludovic Chabant <ludovic@chabant.com>
parents: 770
diff changeset
32 'list_url': url_for('.list_source', source_name=source.name),
587
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
33 'page_count': len(facs)}
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
34 data['sources'].append(src_data)
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
35
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
36 fe = getattr(source, 'fs_endpoint', None)
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
37 if fe:
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
38 fs_endpoints[fe] = source
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
39
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
40 data['new_pages'] = []
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
41 data['edited_pages'] = []
770
a7726e4862c4 admin: Fix API changes, don't crash the dashboard on non-binary WIP files.
Ludovic Chabant <ludovic@chabant.com>
parents: 761
diff changeset
42 data['misc_files'] = []
761
4d8e82641597 admin: Don't crash when the site isn't in a source control repository.
Ludovic Chabant <ludovic@chabant.com>
parents: 610
diff changeset
43 if site.scm:
4d8e82641597 admin: Don't crash when the site isn't in a source control repository.
Ludovic Chabant <ludovic@chabant.com>
parents: 610
diff changeset
44 st = site.scm.getStatus()
4d8e82641597 admin: Don't crash when the site isn't in a source control repository.
Ludovic Chabant <ludovic@chabant.com>
parents: 610
diff changeset
45 for p in st.new_files:
4d8e82641597 admin: Don't crash when the site isn't in a source control repository.
Ludovic Chabant <ludovic@chabant.com>
parents: 610
diff changeset
46 pd = _getWipData(p, site, fs_endpoints)
4d8e82641597 admin: Don't crash when the site isn't in a source control repository.
Ludovic Chabant <ludovic@chabant.com>
parents: 610
diff changeset
47 if pd:
4d8e82641597 admin: Don't crash when the site isn't in a source control repository.
Ludovic Chabant <ludovic@chabant.com>
parents: 610
diff changeset
48 data['new_pages'].append(pd)
770
a7726e4862c4 admin: Fix API changes, don't crash the dashboard on non-binary WIP files.
Ludovic Chabant <ludovic@chabant.com>
parents: 761
diff changeset
49 else:
a7726e4862c4 admin: Fix API changes, don't crash the dashboard on non-binary WIP files.
Ludovic Chabant <ludovic@chabant.com>
parents: 761
diff changeset
50 data['misc_files'].append(p)
761
4d8e82641597 admin: Don't crash when the site isn't in a source control repository.
Ludovic Chabant <ludovic@chabant.com>
parents: 610
diff changeset
51 for p in st.edited_files:
4d8e82641597 admin: Don't crash when the site isn't in a source control repository.
Ludovic Chabant <ludovic@chabant.com>
parents: 610
diff changeset
52 pd = _getWipData(p, site, fs_endpoints)
4d8e82641597 admin: Don't crash when the site isn't in a source control repository.
Ludovic Chabant <ludovic@chabant.com>
parents: 610
diff changeset
53 if pd:
4d8e82641597 admin: Don't crash when the site isn't in a source control repository.
Ludovic Chabant <ludovic@chabant.com>
parents: 610
diff changeset
54 data['edited_pages'].append(pd)
770
a7726e4862c4 admin: Fix API changes, don't crash the dashboard on non-binary WIP files.
Ludovic Chabant <ludovic@chabant.com>
parents: 761
diff changeset
55 else:
a7726e4862c4 admin: Fix API changes, don't crash the dashboard on non-binary WIP files.
Ludovic Chabant <ludovic@chabant.com>
parents: 761
diff changeset
56 data['misc_files'].append(p)
587
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
57
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
58 data['site_name'] = site.name
594
8f9cf1bcbe76 admin: Dashboard UI cleaning, re-use utility function for page summaries.
Ludovic Chabant <ludovic@chabant.com>
parents: 587
diff changeset
59 data['site_title'] = site.piecrust_app.config.get('site/title', site.name)
772
3885421c29a3 admin: Make the whole FoodTruck site into a blueprint.
Ludovic Chabant <ludovic@chabant.com>
parents: 770
diff changeset
60 data['url_publish'] = url_for('.publish')
3885421c29a3 admin: Make the whole FoodTruck site into a blueprint.
Ludovic Chabant <ludovic@chabant.com>
parents: 770
diff changeset
61 data['url_preview'] = url_for('.preview_site_root', sitename=site.name)
587
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
62
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
63 data['sites'] = []
610
efc1dc916e7c admin: Configuration changes.
Ludovic Chabant <ludovic@chabant.com>
parents: 602
diff changeset
64 for s in g.sites.getall():
587
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
65 data['sites'].append({
610
efc1dc916e7c admin: Configuration changes.
Ludovic Chabant <ludovic@chabant.com>
parents: 602
diff changeset
66 'name': s.name,
efc1dc916e7c admin: Configuration changes.
Ludovic Chabant <ludovic@chabant.com>
parents: 602
diff changeset
67 'display_name': s.piecrust_app.config.get('site/title'),
772
3885421c29a3 admin: Make the whole FoodTruck site into a blueprint.
Ludovic Chabant <ludovic@chabant.com>
parents: 770
diff changeset
68 'url': url_for('.index', site_name=s.name)
587
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
69 })
594
8f9cf1bcbe76 admin: Dashboard UI cleaning, re-use utility function for page summaries.
Ludovic Chabant <ludovic@chabant.com>
parents: 587
diff changeset
70 data['needs_switch'] = len(g.config.get('sites')) > 1
772
3885421c29a3 admin: Make the whole FoodTruck site into a blueprint.
Ludovic Chabant <ludovic@chabant.com>
parents: 770
diff changeset
71 data['url_switch'] = url_for('.switch_site')
587
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
72
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
73 with_menu_context(data)
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
74 return render_template('dashboard.html', **data)
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
75
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
76
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
77 def _getWipData(path, site, fs_endpoints):
770
a7726e4862c4 admin: Fix API changes, don't crash the dashboard on non-binary WIP files.
Ludovic Chabant <ludovic@chabant.com>
parents: 761
diff changeset
78 auto_formats = site.piecrust_app.config.get('site/auto_formats', ['html'])
a7726e4862c4 admin: Fix API changes, don't crash the dashboard on non-binary WIP files.
Ludovic Chabant <ludovic@chabant.com>
parents: 761
diff changeset
79 pathname, pathext = os.path.splitext(path)
a7726e4862c4 admin: Fix API changes, don't crash the dashboard on non-binary WIP files.
Ludovic Chabant <ludovic@chabant.com>
parents: 761
diff changeset
80 if pathext not in auto_formats:
a7726e4862c4 admin: Fix API changes, don't crash the dashboard on non-binary WIP files.
Ludovic Chabant <ludovic@chabant.com>
parents: 761
diff changeset
81 return None
a7726e4862c4 admin: Fix API changes, don't crash the dashboard on non-binary WIP files.
Ludovic Chabant <ludovic@chabant.com>
parents: 761
diff changeset
82
587
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
83 source = None
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
84 for endpoint, s in fs_endpoints.items():
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
85 if path.startswith(endpoint):
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
86 source = s
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
87 break
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
88 if source is None:
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
89 return None
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
90
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
91 fac = source.buildPageFactory(os.path.join(site.root_dir, path))
770
a7726e4862c4 admin: Fix API changes, don't crash the dashboard on non-binary WIP files.
Ludovic Chabant <ludovic@chabant.com>
parents: 761
diff changeset
92 route = site.piecrust_app.getSourceRoute(source.name, fac.metadata)
587
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
93 if not route:
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
94 return None
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
95
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
96 qp = QualifiedPage(fac.buildPage(), route, fac.metadata)
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
97 uri = qp.getUri()
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
98 _, slug = split_uri(site.piecrust_app, uri)
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
99
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
100 with open(fac.path, 'r', encoding='utf8') as fp:
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
101 raw_text = fp.read()
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
102
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
103 header, offset = parse_config_header(raw_text)
594
8f9cf1bcbe76 admin: Dashboard UI cleaning, re-use utility function for page summaries.
Ludovic Chabant <ludovic@chabant.com>
parents: 587
diff changeset
104 extract = text_preview(raw_text, offset=offset)
587
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
105 return {
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
106 'title': qp.config.get('title'),
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
107 'slug': slug,
772
3885421c29a3 admin: Make the whole FoodTruck site into a blueprint.
Ludovic Chabant <ludovic@chabant.com>
parents: 770
diff changeset
108 'url': url_for('.edit_page', slug=slug),
587
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
109 'text': extract
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
110 }
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
111
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
112
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
113 @login_required
772
3885421c29a3 admin: Make the whole FoodTruck site into a blueprint.
Ludovic Chabant <ludovic@chabant.com>
parents: 770
diff changeset
114 @foodtruck_bp.route('/switch_site', methods=['POST'])
587
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
115 def switch_site():
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
116 site_name = request.form.get('site_name')
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
117 if not site_name:
772
3885421c29a3 admin: Make the whole FoodTruck site into a blueprint.
Ludovic Chabant <ludovic@chabant.com>
parents: 770
diff changeset
118 return redirect(url_for('.index'))
587
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
119
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
120 @after_this_request
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
121 def _save_site(resp):
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
122 resp.set_cookie('foodtruck_site_name', site_name)
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
123
772
3885421c29a3 admin: Make the whole FoodTruck site into a blueprint.
Ludovic Chabant <ludovic@chabant.com>
parents: 770
diff changeset
124 return redirect(url_for('.index'))
587
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
125
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
126
772
3885421c29a3 admin: Make the whole FoodTruck site into a blueprint.
Ludovic Chabant <ludovic@chabant.com>
parents: 770
diff changeset
127 @foodtruck_bp.route('/login', methods=['GET', 'POST'])
587
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
128 def login():
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
129 data = {}
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
130
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
131 if request.method == 'POST':
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
132 username = request.form.get('username')
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
133 password = request.form.get('password')
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
134 remember = request.form.get('remember')
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
135
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
136 user = load_user(username)
772
3885421c29a3 admin: Make the whole FoodTruck site into a blueprint.
Ludovic Chabant <ludovic@chabant.com>
parents: 770
diff changeset
137 if user is not None and current_app.bcrypt:
3885421c29a3 admin: Make the whole FoodTruck site into a blueprint.
Ludovic Chabant <ludovic@chabant.com>
parents: 770
diff changeset
138 if current_app.bcrypt.check_password_hash(user.password, password):
587
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
139 login_user(user, remember=bool(remember))
772
3885421c29a3 admin: Make the whole FoodTruck site into a blueprint.
Ludovic Chabant <ludovic@chabant.com>
parents: 770
diff changeset
140 return redirect(url_for('.index'))
587
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
141 data['message'] = (
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
142 "User '%s' doesn't exist or password is incorrect." %
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
143 username)
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
144
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
145 return render_template('login.html', **data)
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
146
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
147
772
3885421c29a3 admin: Make the whole FoodTruck site into a blueprint.
Ludovic Chabant <ludovic@chabant.com>
parents: 770
diff changeset
148 @foodtruck_bp.route('/logout')
587
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
149 @login_required
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
150 def logout():
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
151 logout_user()
772
3885421c29a3 admin: Make the whole FoodTruck site into a blueprint.
Ludovic Chabant <ludovic@chabant.com>
parents: 770
diff changeset
152 return redirect(url_for('.index'))
587
d4a01a023998 admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
153