Mercurial > piecrust2
annotate piecrust/admin/views/menu.py @ 1149:be74ba54a06f
admin: Improvements to micropub endpoint's photo handling.
- Add `.jpg` extension to photos that don't have any extension.
- Add photos in the config section instead of the body, so that the layout
can put them in separate `u-photo` tags.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Tue, 10 Jul 2018 21:03:58 -0700 |
parents | dff873f11541 |
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 from flask import g, request, url_for |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
2 from flask.ext.login import current_user |
886
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
812
diff
changeset
|
3 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
|
4 |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
5 |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
6 def get_menu_context(): |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
7 entries = [] |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
8 entries.append({ |
934
98430e7143d2
admin: The link to the panel's dashboard works when we are not at the root.
Ludovic Chabant <ludovic@chabant.com>
parents:
886
diff
changeset
|
9 'url': url_for('FoodTruck.index'), |
587
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
10 'title': "Dashboard", |
1069
dff873f11541
admin: Upgrade Bootstrap, switch icons to Open-Iconic, remove Bower.
Ludovic Chabant <ludovic@chabant.com>
parents:
934
diff
changeset
|
11 'icon': 'dashboard'}) |
587
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
12 |
610
efc1dc916e7c
admin: Configuration changes.
Ludovic Chabant <ludovic@chabant.com>
parents:
602
diff
changeset
|
13 site = g.site.piecrust_app |
886
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
812
diff
changeset
|
14 for source in site.sources: |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
812
diff
changeset
|
15 if source.is_theme_source: |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
812
diff
changeset
|
16 continue |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
812
diff
changeset
|
17 if not isinstance(source, IInteractiveSource): |
587
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
18 continue |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
19 |
886
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
812
diff
changeset
|
20 # Figure out the icon to use... we do some hard-coded stuff to |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
812
diff
changeset
|
21 # have something vaguely pretty out of the box. |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
812
diff
changeset
|
22 source_icon = source.config.get('admin_icon') |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
812
diff
changeset
|
23 if source_icon is None: |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
812
diff
changeset
|
24 if source.name == 'pages': |
1069
dff873f11541
admin: Upgrade Bootstrap, switch icons to Open-Iconic, remove Bower.
Ludovic Chabant <ludovic@chabant.com>
parents:
934
diff
changeset
|
25 source_icon = 'document' |
886
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
812
diff
changeset
|
26 elif 'blog' in source.name or 'posts' in source.name: |
1069
dff873f11541
admin: Upgrade Bootstrap, switch icons to Open-Iconic, remove Bower.
Ludovic Chabant <ludovic@chabant.com>
parents:
934
diff
changeset
|
27 source_icon = 'box' |
886
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
812
diff
changeset
|
28 else: |
1069
dff873f11541
admin: Upgrade Bootstrap, switch icons to Open-Iconic, remove Bower.
Ludovic Chabant <ludovic@chabant.com>
parents:
934
diff
changeset
|
29 source_icon = 'file' |
587
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
30 |
886
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
812
diff
changeset
|
31 url_write = url_for('.write_page', source_name=source.name) |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
812
diff
changeset
|
32 url_listall = 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 |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
34 ctx = { |
812
82509bce94ca
internal: PEP8 fixup for admin panel code.
Ludovic Chabant <ludovic@chabant.com>
parents:
811
diff
changeset
|
35 'url': url_listall, |
886
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
812
diff
changeset
|
36 'title': source.name, |
812
82509bce94ca
internal: PEP8 fixup for admin panel code.
Ludovic Chabant <ludovic@chabant.com>
parents:
811
diff
changeset
|
37 'icon': source_icon, |
82509bce94ca
internal: PEP8 fixup for admin panel code.
Ludovic Chabant <ludovic@chabant.com>
parents:
811
diff
changeset
|
38 'quicklink': { |
1069
dff873f11541
admin: Upgrade Bootstrap, switch icons to Open-Iconic, remove Bower.
Ludovic Chabant <ludovic@chabant.com>
parents:
934
diff
changeset
|
39 'icon': 'plus', |
812
82509bce94ca
internal: PEP8 fixup for admin panel code.
Ludovic Chabant <ludovic@chabant.com>
parents:
811
diff
changeset
|
40 'url': url_write, |
82509bce94ca
internal: PEP8 fixup for admin panel code.
Ludovic Chabant <ludovic@chabant.com>
parents:
811
diff
changeset
|
41 'title': "Write New" |
82509bce94ca
internal: PEP8 fixup for admin panel code.
Ludovic Chabant <ludovic@chabant.com>
parents:
811
diff
changeset
|
42 }, |
82509bce94ca
internal: PEP8 fixup for admin panel code.
Ludovic Chabant <ludovic@chabant.com>
parents:
811
diff
changeset
|
43 'entries': [ |
82509bce94ca
internal: PEP8 fixup for admin panel code.
Ludovic Chabant <ludovic@chabant.com>
parents:
811
diff
changeset
|
44 {'url': url_listall, 'title': "List All"}, |
82509bce94ca
internal: PEP8 fixup for admin panel code.
Ludovic Chabant <ludovic@chabant.com>
parents:
811
diff
changeset
|
45 {'url': url_write, 'title': "Write New"} |
82509bce94ca
internal: PEP8 fixup for admin panel code.
Ludovic Chabant <ludovic@chabant.com>
parents:
811
diff
changeset
|
46 ] |
82509bce94ca
internal: PEP8 fixup for admin panel code.
Ludovic Chabant <ludovic@chabant.com>
parents:
811
diff
changeset
|
47 } |
587
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
48 entries.append(ctx) |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
49 |
602
c6bc0ef03f82
admin: Better UI for publishing websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
594
diff
changeset
|
50 entries.append({ |
772
3885421c29a3
admin: Make the whole FoodTruck site into a blueprint.
Ludovic Chabant <ludovic@chabant.com>
parents:
610
diff
changeset
|
51 'url': url_for('.publish'), |
602
c6bc0ef03f82
admin: Better UI for publishing websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
594
diff
changeset
|
52 'title': "Publish", |
1069
dff873f11541
admin: Upgrade Bootstrap, switch icons to Open-Iconic, remove Bower.
Ludovic Chabant <ludovic@chabant.com>
parents:
934
diff
changeset
|
53 'icon': 'cloud-upload'}) |
602
c6bc0ef03f82
admin: Better UI for publishing websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
594
diff
changeset
|
54 |
886
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
812
diff
changeset
|
55 # TODO: re-enable settings UI at some point. |
594
8f9cf1bcbe76
admin: Dashboard UI cleaning, re-use utility function for page summaries.
Ludovic Chabant <ludovic@chabant.com>
parents:
587
diff
changeset
|
56 # entries.append({ |
772
3885421c29a3
admin: Make the whole FoodTruck site into a blueprint.
Ludovic Chabant <ludovic@chabant.com>
parents:
610
diff
changeset
|
57 # 'url': url_for('.settings'), |
594
8f9cf1bcbe76
admin: Dashboard UI cleaning, re-use utility function for page summaries.
Ludovic Chabant <ludovic@chabant.com>
parents:
587
diff
changeset
|
58 # 'title': "Settings", |
8f9cf1bcbe76
admin: Dashboard UI cleaning, re-use utility function for page summaries.
Ludovic Chabant <ludovic@chabant.com>
parents:
587
diff
changeset
|
59 # 'icon': 'gear-b'}) |
587
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
60 |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
61 for e in entries: |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
62 needs_more_break = False |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
63 if 'entries' in e: |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
64 for e2 in e['entries']: |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
65 if e2['url'] == request.path: |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
66 e['open'] = True |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
67 e2['active'] = True |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
68 needs_more_break = True |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
69 break |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
70 if needs_more_break: |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
71 break |
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 if e['url'] == request.path: |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
74 e['active'] = True |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
75 break |
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 data = {'entries': entries, |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
78 'user': current_user, |
772
3885421c29a3
admin: Make the whole FoodTruck site into a blueprint.
Ludovic Chabant <ludovic@chabant.com>
parents:
610
diff
changeset
|
79 'url_logout': url_for('.logout')} |
587
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
80 return data |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
81 |
d4a01a023998
admin: Add "FoodTruck" admin panel from the side experiment project.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
82 |