Mercurial > piecrust2
annotate piecrust/admin/views/dashboard.py @ 1107:a1c6050c9801
admin: Fix possible crash in the edit page.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Sun, 18 Feb 2018 20:31:16 -0800 |
parents | 8adc27285d93 |
children | 0d699f04968c |
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 ( |
812
82509bce94ca
internal: PEP8 fixup for admin panel code.
Ludovic Chabant <ludovic@chabant.com>
parents:
778
diff
changeset
|
5 current_app, g, request, |
82509bce94ca
internal: PEP8 fixup for admin panel code.
Ludovic Chabant <ludovic@chabant.com>
parents:
778
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 |
927
175d80cf75d7
serve: Admin dashboard improvements.
Ludovic Chabant <ludovic@chabant.com>
parents:
886
diff
changeset
|
8 from piecrust.sources.fs import FSContentSourceBase |
886
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
812
diff
changeset
|
9 from piecrust.sources.interfaces import IInteractiveSource |
587
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 |
927
175d80cf75d7
serve: Admin dashboard improvements.
Ludovic Chabant <ludovic@chabant.com>
parents:
886
diff
changeset
|
12 from ..blueprint import foodtruck_bp, load_user |
961
b1a00c2c0c7f
admin: Use URL routes for static assets.
Ludovic Chabant <ludovic@chabant.com>
parents:
960
diff
changeset
|
13 from ..views import with_menu_context |
587
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'] = [] |
886
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
812
diff
changeset
|
24 |
587
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
25 fs_endpoints = {} |
886
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
812
diff
changeset
|
26 |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
812
diff
changeset
|
27 site = g.site |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
812
diff
changeset
|
28 pcapp = site.piecrust_app |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
812
diff
changeset
|
29 for source in pcapp.sources: |
587
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
30 if source.is_theme_source: |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
31 continue |
886
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
812
diff
changeset
|
32 if not isinstance(source, IInteractiveSource): |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
812
diff
changeset
|
33 continue |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
812
diff
changeset
|
34 |
587
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
35 src_data = { |
812
82509bce94ca
internal: PEP8 fixup for admin panel code.
Ludovic Chabant <ludovic@chabant.com>
parents:
778
diff
changeset
|
36 'name': source.name, |
927
175d80cf75d7
serve: Admin dashboard improvements.
Ludovic Chabant <ludovic@chabant.com>
parents:
886
diff
changeset
|
37 '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
|
38 data['sources'].append(src_data) |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
39 |
927
175d80cf75d7
serve: Admin dashboard improvements.
Ludovic Chabant <ludovic@chabant.com>
parents:
886
diff
changeset
|
40 if isinstance(source, FSContentSourceBase): |
175d80cf75d7
serve: Admin dashboard improvements.
Ludovic Chabant <ludovic@chabant.com>
parents:
886
diff
changeset
|
41 fs_endpoints[source.fs_endpoint] = source |
587
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
42 |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
43 data['new_pages'] = [] |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
44 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
|
45 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
|
46 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
|
47 st = site.scm.getStatus() |
927
175d80cf75d7
serve: Admin dashboard improvements.
Ludovic Chabant <ludovic@chabant.com>
parents:
886
diff
changeset
|
48 auto_formats = site.piecrust_app.config.get('site/auto_formats', |
175d80cf75d7
serve: Admin dashboard improvements.
Ludovic Chabant <ludovic@chabant.com>
parents:
886
diff
changeset
|
49 ['html']) |
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
|
50 for p in st.new_files: |
927
175d80cf75d7
serve: Admin dashboard improvements.
Ludovic Chabant <ludovic@chabant.com>
parents:
886
diff
changeset
|
51 pd = _getWipData(p, fs_endpoints, auto_formats, site.piecrust_app) |
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
|
52 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
|
53 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
|
54 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
|
55 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
|
56 for p in st.edited_files: |
927
175d80cf75d7
serve: Admin dashboard improvements.
Ludovic Chabant <ludovic@chabant.com>
parents:
886
diff
changeset
|
57 pd = _getWipData(p, fs_endpoints, auto_formats, site.piecrust_app) |
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
|
58 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
|
59 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
|
60 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
|
61 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
|
62 |
886
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
812
diff
changeset
|
63 data['site_title'] = pcapp.config.get('site/title', "Unnamed Website") |
772
3885421c29a3
admin: Make the whole FoodTruck site into a blueprint.
Ludovic Chabant <ludovic@chabant.com>
parents:
770
diff
changeset
|
64 data['url_publish'] = url_for('.publish') |
886
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
812
diff
changeset
|
65 data['url_preview'] = url_for('.preview_root_page') |
960
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
935
diff
changeset
|
66 data['url_bake_assets'] = url_for('.rebake_assets') |
587
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
67 |
927
175d80cf75d7
serve: Admin dashboard improvements.
Ludovic Chabant <ludovic@chabant.com>
parents:
886
diff
changeset
|
68 pub_tgts = pcapp.config.get('publish', {}) |
175d80cf75d7
serve: Admin dashboard improvements.
Ludovic Chabant <ludovic@chabant.com>
parents:
886
diff
changeset
|
69 data['publish'] = {'targets': list(pub_tgts.keys())} |
175d80cf75d7
serve: Admin dashboard improvements.
Ludovic Chabant <ludovic@chabant.com>
parents:
886
diff
changeset
|
70 |
175d80cf75d7
serve: Admin dashboard improvements.
Ludovic Chabant <ludovic@chabant.com>
parents:
886
diff
changeset
|
71 micropub = pcapp.config.get('micropub', {}) |
175d80cf75d7
serve: Admin dashboard improvements.
Ludovic Chabant <ludovic@chabant.com>
parents:
886
diff
changeset
|
72 data['publish'] = micropub.get('publish_target') |
175d80cf75d7
serve: Admin dashboard improvements.
Ludovic Chabant <ludovic@chabant.com>
parents:
886
diff
changeset
|
73 |
587
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
74 with_menu_context(data) |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
75 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
|
76 |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
77 |
927
175d80cf75d7
serve: Admin dashboard improvements.
Ludovic Chabant <ludovic@chabant.com>
parents:
886
diff
changeset
|
78 def _getWipData(path, fs_endpoints, auto_formats, pcapp): |
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
|
79 pathname, pathext = os.path.splitext(path) |
927
175d80cf75d7
serve: Admin dashboard improvements.
Ludovic Chabant <ludovic@chabant.com>
parents:
886
diff
changeset
|
80 if pathext.lstrip('.') not in auto_formats: |
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
|
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 |
989
8adc27285d93
bake: Big pass on bake performance.
Ludovic Chabant <ludovic@chabant.com>
parents:
961
diff
changeset
|
91 # TODO: this assumes FS sources, but this comes from the disk anyway. |
935
7ecb946bfafd
admin: Lots of fixes for running the admin panel in a WSGI server.
Ludovic Chabant <ludovic@chabant.com>
parents:
927
diff
changeset
|
92 full_path = os.path.join(pcapp.root_dir, path) |
989
8adc27285d93
bake: Big pass on bake performance.
Ludovic Chabant <ludovic@chabant.com>
parents:
961
diff
changeset
|
93 content_item = source.findContentFromSpec(full_path) |
927
175d80cf75d7
serve: Admin dashboard improvements.
Ludovic Chabant <ludovic@chabant.com>
parents:
886
diff
changeset
|
94 if content_item is None: |
587
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
95 return None |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
96 |
927
175d80cf75d7
serve: Admin dashboard improvements.
Ludovic Chabant <ludovic@chabant.com>
parents:
886
diff
changeset
|
97 page = pcapp.getPage(source, content_item) |
175d80cf75d7
serve: Admin dashboard improvements.
Ludovic Chabant <ludovic@chabant.com>
parents:
886
diff
changeset
|
98 uri = page.getUri() |
175d80cf75d7
serve: Admin dashboard improvements.
Ludovic Chabant <ludovic@chabant.com>
parents:
886
diff
changeset
|
99 _, slug = split_uri(pcapp, uri) |
587
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
100 |
927
175d80cf75d7
serve: Admin dashboard improvements.
Ludovic Chabant <ludovic@chabant.com>
parents:
886
diff
changeset
|
101 seg = page.getSegment() |
175d80cf75d7
serve: Admin dashboard improvements.
Ludovic Chabant <ludovic@chabant.com>
parents:
886
diff
changeset
|
102 if not seg: |
175d80cf75d7
serve: Admin dashboard improvements.
Ludovic Chabant <ludovic@chabant.com>
parents:
886
diff
changeset
|
103 return None |
175d80cf75d7
serve: Admin dashboard improvements.
Ludovic Chabant <ludovic@chabant.com>
parents:
886
diff
changeset
|
104 |
175d80cf75d7
serve: Admin dashboard improvements.
Ludovic Chabant <ludovic@chabant.com>
parents:
886
diff
changeset
|
105 extract = text_preview(seg.content) |
587
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
106 return { |
927
175d80cf75d7
serve: Admin dashboard improvements.
Ludovic Chabant <ludovic@chabant.com>
parents:
886
diff
changeset
|
107 'title': page.config.get('title'), |
812
82509bce94ca
internal: PEP8 fixup for admin panel code.
Ludovic Chabant <ludovic@chabant.com>
parents:
778
diff
changeset
|
108 'slug': slug, |
935
7ecb946bfafd
admin: Lots of fixes for running the admin panel in a WSGI server.
Ludovic Chabant <ludovic@chabant.com>
parents:
927
diff
changeset
|
109 'url': url_for('.edit_page', url=slug), |
812
82509bce94ca
internal: PEP8 fixup for admin panel code.
Ludovic Chabant <ludovic@chabant.com>
parents:
778
diff
changeset
|
110 'text': extract |
82509bce94ca
internal: PEP8 fixup for admin panel code.
Ludovic Chabant <ludovic@chabant.com>
parents:
778
diff
changeset
|
111 } |
587
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 |
960
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
935
diff
changeset
|
114 @foodtruck_bp.route('/rebake_assets', methods=['POST']) |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
935
diff
changeset
|
115 @login_required |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
935
diff
changeset
|
116 def rebake_assets(): |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
935
diff
changeset
|
117 g.site.rebakeAssets() |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
935
diff
changeset
|
118 return redirect(url_for('.index')) |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
935
diff
changeset
|
119 |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
935
diff
changeset
|
120 |
772
3885421c29a3
admin: Make the whole FoodTruck site into a blueprint.
Ludovic Chabant <ludovic@chabant.com>
parents:
770
diff
changeset
|
121 @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
|
122 def login(): |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
123 data = {} |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
124 |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
125 if request.method == 'POST': |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
126 username = request.form.get('username') |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
127 password = request.form.get('password') |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
128 remember = request.form.get('remember') |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
129 |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
130 user = load_user(username) |
772
3885421c29a3
admin: Make the whole FoodTruck site into a blueprint.
Ludovic Chabant <ludovic@chabant.com>
parents:
770
diff
changeset
|
131 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
|
132 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
|
133 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
|
134 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
|
135 data['message'] = ( |
812
82509bce94ca
internal: PEP8 fixup for admin panel code.
Ludovic Chabant <ludovic@chabant.com>
parents:
778
diff
changeset
|
136 "User '%s' doesn't exist or password is incorrect." % |
82509bce94ca
internal: PEP8 fixup for admin panel code.
Ludovic Chabant <ludovic@chabant.com>
parents:
778
diff
changeset
|
137 username) |
587
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
138 |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
139 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
|
140 |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
141 |
772
3885421c29a3
admin: Make the whole FoodTruck site into a blueprint.
Ludovic Chabant <ludovic@chabant.com>
parents:
770
diff
changeset
|
142 @foodtruck_bp.route('/logout') |
587
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
143 @login_required |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
144 def logout(): |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
145 logout_user() |
772
3885421c29a3
admin: Make the whole FoodTruck site into a blueprint.
Ludovic Chabant <ludovic@chabant.com>
parents:
770
diff
changeset
|
146 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
|
147 |