Projet

Général

Profil

Télécharger (8,32 ko) Statistiques
| Branche: | Tag: | Révision:

root / auquotidien / modules / admin.py @ 813372ab

1
import os
2

    
3
from quixote import get_publisher, redirect
4
from quixote.directory import Directory
5
from quixote.html import htmltext, TemplateIO
6

    
7
import wcs.admin.root
8
import wcs.root
9
from wcs.roles import get_user_roles
10

    
11
from wcs.qommon import _
12
from wcs.qommon import errors, get_cfg
13
from wcs.qommon.form import *
14

    
15
import wcs.admin.settings
16
from wcs.formdef import FormDef
17
from wcs.categories import Category
18
from wcs.qommon.backoffice.menu import html_top
19

    
20
import re
21
from .abelium_domino_ui import AbeliumDominoDirectory
22

    
23

    
24
class PanelDirectory(Directory):
25
    _q_exports = ['', 'update', 'announces', 'permissions',
26
            'announce_themes', 'strongbox', 'domino']
27
    label = N_('Control Panel')
28

    
29
    domino = AbeliumDominoDirectory()
30

    
31
    def _verify_mask(self, form):
32
        if form.is_submitted():
33
            if not re.match("[0-9Xx]*$", form.get('mobile_mask') or ''):
34
                form.set_error('mobile_mask', _('Invalid value'))
35
            else:
36
                string_value = form.get_widget('mobile_mask').value
37
                if string_value:
38
                    form.get_widget('mobile_mask').value = string_value.upper()
39

    
40
    def announces(self):
41
        announces_cfg = get_cfg('announces', {})
42
        sms_cfg = get_cfg('sms', {})
43
        form = Form(enctype='multipart/form-data')
44
        hint = ""
45
        if sms_cfg.get('mode','') in ("none",""):
46
            hint = htmltext(_('You must also <a href="%s">configure your SMS provider</a>') % "../settings/sms")
47

    
48
        form.add(CheckboxWidget, 'sms_support', title = _('SMS support'),
49
                hint = hint, value = announces_cfg.get('sms_support', 0))
50
        form.add(StringWidget, 'mobile_mask', title = _('Mask for mobile numbers'),
51
                hint = _('example: 06XXXXXXXX'),
52
                value = announces_cfg.get('mobile_mask',''))
53
        form.add_submit('submit', _('Submit'))
54
        form.add_submit('cancel', _('Cancel'))
55

    
56
        self._verify_mask(form)
57

    
58
        if form.get_widget('cancel').parse():
59
            return redirect('..')
60

    
61
        if not form.is_submitted() or form.has_errors():
62
            get_response().breadcrumb.append(('aq/announces', _('Announces Options')))
63
            html_top('settings', _('Announces Options'))
64
            r = TemplateIO(html=True)
65
            r += htmltext('<h2>%s</h2>') % _('Announces Options')
66
            r += form.render()
67
            return r.getvalue()
68
        else:
69
            from wcs.admin.settings import cfg_submit
70
            cfg_submit(form, 'announces', ('sms_support','mobile_mask'))
71
            return redirect('..')
72

    
73
    def permissions(self):
74
        permissions_cfg = get_cfg('aq-permissions', {})
75
        form = Form(enctype='multipart/form-data')
76
        form.add(SingleSelectWidget, 'forms', title = _('Admin role for forms'),
77
                value = permissions_cfg.get('forms', None),
78
                options = [(None, _('Nobody'), None)] + get_user_roles())
79
        if get_publisher().has_site_option('auquotidien-announces'):
80
            form.add(SingleSelectWidget, 'announces', title = _('Admin role for announces'),
81
                    value = permissions_cfg.get('announces', None),
82
                    options = [(None, _('Nobody'), None)] + get_user_roles())
83
        if get_publisher().has_site_option('auquotidien-payments'):
84
            form.add(SingleSelectWidget, 'payments', title = _('Admin role for payments'),
85
                    value = permissions_cfg.get('payments', None),
86
                    options = [(None, _('Nobody'), None)] + get_user_roles())
87
        if get_publisher().has_site_option('auquotidien-strongbox'):
88
            form.add(SingleSelectWidget, 'strongbox', title = _('Admin role for strongbox'),
89
                    value = permissions_cfg.get('strongbox', None),
90
                    options = [(None, _('Nobody'), None)] + get_user_roles())
91
        form.add_submit('submit', _('Submit'))
92
        form.add_submit('cancel', _('Cancel'))
93

    
94
        if form.get_widget('cancel').parse():
95
            return redirect('..')
96

    
97
        if not form.is_submitted() or form.has_errors():
98
            get_response().breadcrumb.append(('aq/permissions', _('Permissions')))
99
            html_top('settings', _('Permissions'))
100
            r = TemplateIO(html=True)
101
            r += htmltext('<h2>%s</h2>') % _('Permissions')
102
            r += form.render()
103
            return r.getvalue()
104
        else:
105
            from wcs.admin.settings import cfg_submit
106
            cfg_submit(form, 'aq-permissions',
107
                        ('forms', 'announces', 'payments', 'strongbox'))
108
            return redirect('..')
109

    
110
    def announce_themes(self):
111
        misc_cfg = get_cfg('misc', {})
112
        form = Form(enctype='multipart/form-data')
113
        form.add(WidgetList, 'announce_themes', title = _('Announce Themes'),
114
                value = misc_cfg.get('announce_themes', []),
115
                elemnt_type = StringWidget,
116
                add_element_label = _('Add Theme'),
117
                element_kwargs = {str('render_br'): False, str('size'): 30})
118

    
119
        form.add_submit('submit', _('Submit'))
120
        form.add_submit('cancel', _('Cancel'))
121

    
122
        if form.get_widget('cancel').parse():
123
            return redirect('..')
124

    
125
        if not form.is_submitted() or form.has_errors():
126
            get_response().breadcrumb.append(('aq/announce_themes', _('Announce Themes')))
127
            html_top('settings', _('Announce Themes'))
128
            r = TemplateIO(html=True)
129
            r += htmltext('<h2>%s</h2>') % _('Announce Themes')
130
            r += form.render()
131
            return r.getvalue()
132
        else:
133
            from wcs.admin.settings import cfg_submit
134
            cfg_submit(form, 'misc', ('announce_themes',))
135
            return redirect('..')
136

    
137
    def strongbox(self):
138
        if not get_publisher().has_site_option('strongbox'):
139
            raise errors.TraversalError()
140
        misc_cfg = get_cfg('misc', {})
141
        form = Form(enctype='multipart/form-data')
142
        form.add(CheckboxWidget, 'aq-strongbox', title=_('Strongbox Support'),
143
                value=misc_cfg.get('aq-strongbox'), required=False)
144

    
145
        form.add_submit('submit', _('Submit'))
146
        form.add_submit('cancel', _('Cancel'))
147

    
148
        if form.get_widget('cancel').parse():
149
            return redirect('..')
150

    
151
        if not form.is_submitted() or form.has_errors():
152
            get_response().breadcrumb.append(('aq/strongbox', _('Strongbox Support')))
153
            html_top('settings', _('Strongbox Support'))
154
            r = TemplateIO(html=True)
155
            r += htmltext('<h2>%s</h2>') % _('Strongbox Support')
156
            r += form.render()
157
            return r.getvalue()
158
        else:
159
            from wcs.admin.settings import cfg_submit
160
            cfg_submit(form, 'misc', ('aq-strongbox',))
161
            return redirect('..')
162

    
163

    
164
class SettingsDirectory(wcs.admin.settings.SettingsDirectory):
165
    def _q_index(self):
166
        if not (get_publisher().has_site_option('auquotidien-announces') or
167
                get_publisher().has_site_option('auquotidien-payments') or
168
                get_publisher().has_site_option('auquotidien-strongvox')):
169
            return super(SettingsDirectory, self)._q_index()
170
        r = TemplateIO(html=True)
171
        r += htmltext(super(SettingsDirectory, self)._q_index())
172
        r += htmltext('<div class="splitcontent-right">')
173
        r += htmltext('<div class="bo-block">')
174
        r += htmltext('<h2>%s</h2>') % _('Extra Options')
175
        r += htmltext('<ul>')
176
        if get_publisher().has_site_option('auquotidien-announces'):
177
            r += htmltext('<li><a href="aq/announces">%s</a></li>') % _('Announces Options')
178
        r += htmltext('<li><a href="aq/permissions">%s</a></li>') % _('Permissions')
179
        if get_publisher().has_site_option('auquotidien-announces'):
180
            r += htmltext('<li><a href="aq/announce_themes">%s</a></li>') % _('Announce Themes')
181
        if get_publisher().has_site_option('strongbox'):
182
            r += htmltext('<li><a href="aq/strongbox">%s</a></li>') % _('Strongbox Support')
183
        if get_publisher().has_site_option('domino'):
184
            r += htmltext('<li><a href="aq/domino">%s</a></li>') % _('Abelium Domino Integration')
185
        r += htmltext('</ul>')
186
        r += htmltext('</div>')
187
        r += htmltext('</div>')
188
        return r.getvalue()
189

    
190
    def _q_lookup(self, component):
191
        if component == 'aq':
192
            return PanelDirectory()
193
        return super(SettingsDirectory, self)._q_lookup(component)
194

    
195
from . import categories_admin
(7-7/21)