comparison foodtruck/views/main.py @ 594:8f9cf1bcbe76

admin: Dashboard UI cleaning, re-use utility function for page summaries.
author Ludovic Chabant <ludovic@chabant.com>
date Tue, 19 Jan 2016 21:34:26 -0800
parents d4a01a023998
children
comparison
equal deleted inserted replaced
593:2713b54b5d76 594:8f9cf1bcbe76
1 import os 1 import os
2 import os.path 2 import os.path
3 import logging 3 import logging
4 from flask import ( 4 from flask import (
5 g, request, 5 g, request,
6 render_template, url_for, redirect, make_response) 6 render_template, url_for, redirect)
7 from flask.ext.login import login_user, logout_user, login_required 7 from flask.ext.login import login_user, logout_user, login_required
8 from piecrust.configuration import parse_config_header 8 from piecrust.configuration import parse_config_header
9 from piecrust.rendering import QualifiedPage 9 from piecrust.rendering import QualifiedPage
10 from piecrust.uriutil import split_uri 10 from piecrust.uriutil import split_uri
11 from ..textutil import text_preview
11 from ..views import with_menu_context 12 from ..views import with_menu_context
12 from ..web import app, load_user, after_this_request 13 from ..web import app, load_user, after_this_request
13 14
14 15
15 logger = logging.getLogger(__name__) 16 logger = logging.getLogger(__name__)
50 pd = _getWipData(p, site, fs_endpoints) 51 pd = _getWipData(p, site, fs_endpoints)
51 if pd: 52 if pd:
52 data['edited_pages'].append(pd) 53 data['edited_pages'].append(pd)
53 54
54 data['site_name'] = site.name 55 data['site_name'] = site.name
56 data['site_title'] = site.piecrust_app.config.get('site/title', site.name)
55 data['url_bake'] = url_for('bake_site') 57 data['url_bake'] = url_for('bake_site')
56 data['url_preview'] = url_for('preview_site_root', sitename=site.name) 58 data['url_preview'] = url_for('preview_site_root', sitename=site.name)
57 59
58 data['sites'] = [] 60 data['sites'] = []
59 for k, v in g.config.get('sites').items(): 61 for k, v in g.config.get('sites').items():
60 data['sites'].append({ 62 data['sites'].append({
61 'name': k, 63 'name': k,
62 'display_name': v.get('name', k), 64 'display_name': v.get('name', k),
63 'url': url_for('index', site_name=site_name) 65 'url': url_for('index', site_name=site_name)
64 }) 66 })
67 data['needs_switch'] = len(g.config.get('sites')) > 1
65 data['url_switch'] = url_for('switch_site') 68 data['url_switch'] = url_for('switch_site')
66 69
67 with_menu_context(data) 70 with_menu_context(data)
68 return render_template('dashboard.html', **data) 71 return render_template('dashboard.html', **data)
69 72
88 _, slug = split_uri(site.piecrust_app, uri) 91 _, slug = split_uri(site.piecrust_app, uri)
89 92
90 with open(fac.path, 'r', encoding='utf8') as fp: 93 with open(fac.path, 'r', encoding='utf8') as fp:
91 raw_text = fp.read() 94 raw_text = fp.read()
92 95
93 preferred_length = 100
94 max_length = 150
95 header, offset = parse_config_header(raw_text) 96 header, offset = parse_config_header(raw_text)
96 extract = raw_text[offset:offset + preferred_length] 97 extract = text_preview(raw_text, offset=offset)
97 if len(raw_text) > offset + preferred_length:
98 for i in range(offset + preferred_length,
99 min(offset + max_length, len(raw_text))):
100 c = raw_text[i]
101 if c not in [' ', '\t', '\r', '\n']:
102 extract += c
103 else:
104 extract += '...'
105 break
106
107 return { 98 return {
108 'title': qp.config.get('title'), 99 'title': qp.config.get('title'),
109 'slug': slug, 100 'slug': slug,
110 'url': url_for('edit_page', slug=slug), 101 'url': url_for('edit_page', slug=slug),
111 'text': extract 102 'text': extract