Projet

Général

Profil

0001-backoffice-remove-custom-forms-management-page-7048.patch

Frédéric Péters, 27 avril 2015 15:32

Télécharger (7,72 ko)

Voir les différences:

Subject: [PATCH] backoffice: remove custom "forms management" page (#7048)

 extra/auquotidien.py        |   7 --
 extra/modules/backoffice.py |  10 +--
 extra/modules/forms_ui.py   | 151 --------------------------------------------
 3 files changed, 1 insertion(+), 167 deletions(-)
 delete mode 100644 extra/modules/forms_ui.py
extra/auquotidien.py
9 9
import modules.announces_ui
10 10
import modules.categories_admin
11 11
import modules.events_ui
12
import modules.forms_ui
13 12
import modules.payments_ui
14 13
import modules.strongbox_ui
15 14
import modules.formpage
......
49 48

  
50 49
rdb.items = []
51 50

  
52
rdb.register_menu_item('management', None)
53
rdb.register_directory('management', modules.forms_ui.FormsDirectory())
54
rdb.register_menu_item('management/', _('Forms Management'), check_visibility, insert_first=True)
55

  
56
rdb.register_menu_item('home', _('Pending Forms'), insert_first=True)
57

  
58 51
rdb.register_directory('announces', modules.announces_ui.AnnouncesDirectory())
59 52
rdb.register_menu_item('announces/', _('Announces'), check_visibility)
60 53

  
extra/modules/backoffice.py
19 19
from qommon.form import *
20 20

  
21 21
class BackofficeRootDirectory(wcs.backoffice.root.RootDirectory):
22
    _q_exports = ['', 'home', 'statistics']
23

  
24 22
    def get_intro_text(self):
25 23
        return _('Welcome on Au Quotidien back office interface')
26 24

  
......
30 28
        return wcs.backoffice.root.RootDirectory._q_index(self)
31 29

  
32 30
    def home(self):
33
        r = TemplateIO(html=True)
34
        r += htmltext('<div class="bo-block"><p>%s</p></div>') % self.get_intro_text()
35
        r += wcs.backoffice.root.RootDirectory.management(self)
36
        from qommon.backoffice.menu import html_top
37
        html_top('home', _('Pending Forms'))
38
        get_response().breadcrumb[-1:] = [('home', _('Pending Forms'))]
39
        return r.getvalue()
31
        return redirect('management')
40 32

  
41 33
    def _q_lookup(self, component):
42 34
        if component in [str(x[0]).strip('/') for x in self.menu_items]:
extra/modules/forms_ui.py
1
from quixote import get_request, get_response, get_session, redirect
2
from quixote.directory import Directory, AccessControlled
3
from quixote.html import TemplateIO, htmltext
4

  
5
import wcs
6
import wcs.admin.root
7

  
8
from qommon.backoffice.menu import html_top
9
from qommon import get_cfg
10
from qommon import errors
11
from qommon.form import *
12
from qommon import misc, get_logger
13

  
14
from wcs.formdef import FormDef
15
from wcs.categories import Category
16

  
17
class FormDirectory(Directory):
18
    _q_exports = ['options', 'disable', 'enable']
19

  
20
    def __init__(self, formdef):
21
        self.formdef = formdef
22

  
23
    def enable(self):
24
        self.formdef.disabled = False
25
        self.formdef.store()
26
        return redirect('..')
27

  
28
    def disable(self):
29
        self.formdef.disabled = True
30
        self.formdef.store()
31
        return redirect('..')
32

  
33
    def options(self):
34
        form = Form(enctype='multipart/form-data')
35
        form.add_submit('submit', _('Submit'))
36
        form.add_submit('cancel', _('Cancel'))
37
        form.add_submit('disable', _('Disable Form'))
38

  
39
        if form.get_submit() == 'disable':
40
            return self.disable()
41

  
42
        if form.get_submit() == 'cancel':
43
            return redirect('..')
44

  
45
        if form.is_submitted() and not form.has_errors():
46
            return redirect('..')
47

  
48
        r = TemplateIO(html=True)
49
        r += htmltext('<p>')
50
        r += _('No available options')
51
        r += htmltext('</p>')
52
        r += form.render()
53
        return r.getvalue()
54

  
55

  
56
def is_forms_admin():
57
    user = get_request().user
58
    if not user:
59
        return False
60
    admin_role = get_cfg('aq-permissions', {}).get('forms', None)
61
    if not (user.is_admin or admin_role in (user.roles or [])):
62
        return False
63
    return True
64

  
65

  
66
class FormsDirectory(AccessControlled, Directory):
67
    _q_exports = ['', 'new', 'listing', 'update_order']
68
    label = N_('Forms')
69

  
70
    def _q_access(self):
71
        get_response().breadcrumb.append(('forms/', _('Forms Management')))
72

  
73
    def _q_index(self):
74
        html_top('management', _('Forms Management'))
75
        r = TemplateIO(html=True)
76

  
77
        session = get_session()
78
        user = get_request().user
79

  
80
        is_admin = is_forms_admin()
81

  
82
        l = []
83
        l2 = []
84
        if user:
85
            for formdef in FormDef.select(order_by='name', ignore_errors=True):
86
                if not formdef.disabled:
87
                    if is_admin or formdef.is_of_concern_for(user):
88
                        l.append(formdef)
89
                elif is_admin:
90
                    l.append(formdef)
91

  
92
        cats = Category.select(order_by = 'name')
93
        lists = []
94
        for c in cats:
95
            t = [x for x in l if str(x.category_id) == str(c.id)]
96
            if t:
97
                lists.append((c.name, t))
98
        t = [x for x in l if x.category_id is None]
99
        if t:
100
            lists.append((None, t))
101

  
102
        mid_term = ((len(lists) * 2) + sum([len(x[-1]) for x in lists])) / 2
103
        count = 0
104
        in_second_column = False
105
        r += htmltext('<div class="splitcontent-left">')
106
        for cat_name, formdefs in lists:
107
            if not in_second_column and count > mid_term:
108
                r += htmltext('</div>')
109
                r += htmltext('<div class="splitcontent-right">')
110
            count += 2 + len(formdefs)
111
            if len([x for x in formdefs if not x.disabled]) == 0:
112
                # all forms are disabled, dim the block
113
                r += htmltext('<div class="bo-block dimmed-block">')
114
            else:
115
                r += htmltext('<div class="bo-block">')
116
            if cat_name:
117
                r += htmltext('<h2>%s</h2>') % cat_name
118
            elif len(lists) > 1:
119
                r += htmltext('<h2>%s</h2>') % _('Misc')
120
            r += htmltext('<ul>')
121
            for formdef in formdefs:
122
                r += htmltext('<li>')
123
                if formdef.disabled:
124
                    r += htmltext('<span class="disabled">')
125
                r += htmltext('<a href="../%s/">%s</a>') % (formdef.url_name, formdef.name)
126
                if formdef.disabled:
127
                    r += htmltext('</span>')
128
                if is_admin:
129
                    if formdef.disabled:
130
                        r += htmltext(' (<a href="%s/enable">%s</a>)') % (formdef.id, _('enable'))
131
                    else:
132
                        r += htmltext(' (<a href="%s/disable">%s</a>)') % (formdef.id, _('disable'))
133
                r += htmltext('</li>')
134
            r += htmltext('</ul>')
135
            r += htmltext('</div>')
136
        r += htmltext('</div>')
137

  
138
        get_logger().info('forms backoffice - home')
139
        return r.getvalue()
140

  
141
    def _q_lookup(self, component):
142
        try:
143
            formdef = FormDef.get(component)
144
        except KeyError:
145
            raise errors.TraversalError()
146
        get_response().breadcrumb.append((str(formdef.id), formdef.name))
147
        return FormDirectory(formdef)
148

  
149
    def listing(self):
150
        return redirect('.')
151

  
152
-