From 913182d31d788a10560190b06e961c74085303e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Thu, 21 Apr 2011 12:12:18 +0200 Subject: [PATCH] handle can_logo and can_theme permissions --- data/web/admin.css | 6 ++++-- extra/modules/backoffice.ptl | 3 ++- extra/modules/boconfig.ptl | 25 ++++++++++++++++++++----- extra/modules/quota.py | 17 +++++++++++++++++ 4 files changed, 43 insertions(+), 8 deletions(-) diff --git a/data/web/admin.css b/data/web/admin.css index df681c3..e1b8e66 100644 --- a/data/web/admin.css +++ b/data/web/admin.css @@ -65,6 +65,10 @@ body div#popup h2 { padding-top: 3px; } +div.themes hr { + visibility: hidden; +} + div.themes div.theme { border: 1px dotted #888; margin: 1em; @@ -122,10 +126,8 @@ div#main-content { div#logo-selection { clear: both; - padding-top: 1em; } - div#logo-selection form { margin: 1em; } diff --git a/extra/modules/backoffice.ptl b/extra/modules/backoffice.ptl index b3eec31..9f7c88b 100644 --- a/extra/modules/backoffice.ptl +++ b/extra/modules/backoffice.ptl @@ -171,7 +171,8 @@ class RootDirectory(AccessControlled, Directory): '' '' diff --git a/extra/modules/boconfig.ptl b/extra/modules/boconfig.ptl index 6a60fdc..9dfb872 100644 --- a/extra/modules/boconfig.ptl +++ b/extra/modules/boconfig.ptl @@ -30,6 +30,9 @@ import qommon.admin.texts from qommon.form import * +import quota + + def get_logo_url(): pages_data_dir = os.path.join(get_publisher().app_dir, 'pages', 'data') for f in ('png', 'jpeg', 'gif'): @@ -179,8 +182,18 @@ class ConfigDirectory(Directory): redirect('.') def appearance [html] (self): - request = get_request() + get_response().breadcrumb.append(('appearance', _('Appearance'))) + html_top('config', title = _('Appearance')) + if quota.can_theme(): + "

%s

" % _('Appearance') + self.appearance_theme() + + if quota.can_logo(): + self.appearance_logo() + + def appearance_theme [html] (self): + request = get_request() if request.form.has_key('theme'): themes = qommon.template.get_themes() if themes.has_key(str(request.form['theme'])): @@ -191,10 +204,6 @@ class ConfigDirectory(Directory): current_theme = get_cfg('branding', {}).get('theme', 'default') - get_response().breadcrumb.append(('appearance', _('Appearance'))) - html_top('config', title = _('Appearance')) - "

%s

" % _('Appearance') - '
' '

' @@ -215,8 +224,10 @@ class ConfigDirectory(Directory): '' % theme '' '

' + '
' '' + def appearance_logo [html] (self): '
' '

%s

' % _('Logo') @@ -236,7 +247,11 @@ class ConfigDirectory(Directory): '' '
' + def logo(self): + if not quota.can_logo(): + raise errors.NotAvailableFeature() + form = Form(enctype='multipart/form-data', use_tokens=False) form.add(FileWidget, 'file', title = _('Theme'), required=True) form.add_submit('submit', _('Upload')) diff --git a/extra/modules/quota.py b/extra/modules/quota.py index 27321ca..600884b 100644 --- a/extra/modules/quota.py +++ b/extra/modules/quota.py @@ -29,6 +29,12 @@ class QuotaExceeded(AccessError): return template.error_page(_('Quota Exceeded'), continue_to = (get_publisher().get_root_url(), _('the homepage'))) +class NotAvailableFeature(AccessError): + def render(self): + return template.error_page(_('This feature is not available.'), + continue_to = (get_publisher().get_root_url(), _('the homepage'))) + + def get_max_number_of_forms(): t = get_request().get_header('x-asec-quota-forms') if not t: @@ -72,3 +78,14 @@ def may_add_a_new_answer(formdef): answers_count = formdef.data_class().count() return (answers_count < max_answers) +def get_boolean_quota(s): + v = get_request().get_header(s) + if v and v.lower() == 'true': + return True + return False + +def can_logo(): + return get_boolean_quota('x-asec-can-logo') + +def can_theme(): + return get_boolean_quota('x-asec-can-theme')