author | Sylvain Thénault <sylvain.thenault@logilab.fr> |
Thu, 10 Mar 2011 11:58:57 +0100 | |
changeset 7068 | 90ddf608fe2b |
parent 6961 | 686c59dfc401 |
child 7100 | 0f02ad198c1b |
permissions | -rw-r--r-- |
5421
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5001
diff
changeset
|
1 |
# copyright 2003-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved. |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5001
diff
changeset
|
2 |
# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5001
diff
changeset
|
3 |
# |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5001
diff
changeset
|
4 |
# This file is part of CubicWeb. |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5001
diff
changeset
|
5 |
# |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5001
diff
changeset
|
6 |
# CubicWeb is free software: you can redistribute it and/or modify it under the |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5001
diff
changeset
|
7 |
# terms of the GNU Lesser General Public License as published by the Free |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5001
diff
changeset
|
8 |
# Software Foundation, either version 2.1 of the License, or (at your option) |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5001
diff
changeset
|
9 |
# any later version. |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5001
diff
changeset
|
10 |
# |
5424
8ecbcbff9777
replace logilab-common by CubicWeb in disclaimer
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5421
diff
changeset
|
11 |
# CubicWeb is distributed in the hope that it will be useful, but WITHOUT |
5421
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5001
diff
changeset
|
12 |
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5001
diff
changeset
|
13 |
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5001
diff
changeset
|
14 |
# details. |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5001
diff
changeset
|
15 |
# |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5001
diff
changeset
|
16 |
# You should have received a copy of the GNU Lesser General Public License along |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5001
diff
changeset
|
17 |
# with CubicWeb. If not, see <http://www.gnu.org/licenses/>. |
5483
1a30c5a56256
merge good/bad versions of imported patches...
Sylvain Thénault <sylvain.thenault@logilab.fr>
diff
changeset
|
18 |
"""Set of HTML base actions""" |
0 | 19 |
|
20 |
__docformat__ = "restructuredtext en" |
|
2121 | 21 |
_ = unicode |
0 | 22 |
|
4932
dce5ebe5d598
add missing warn imports
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4583
diff
changeset
|
23 |
from warnings import warn |
dce5ebe5d598
add missing warn imports
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4583
diff
changeset
|
24 |
|
5483
1a30c5a56256
merge good/bad versions of imported patches...
Sylvain Thénault <sylvain.thenault@logilab.fr>
diff
changeset
|
25 |
from logilab.mtconverter import xml_escape |
1a30c5a56256
merge good/bad versions of imported patches...
Sylvain Thénault <sylvain.thenault@logilab.fr>
diff
changeset
|
26 |
|
4412
eaff00ef0a71
add action to list entities of the CWEType currently displayed
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
4320
diff
changeset
|
27 |
from cubicweb.schema import display_name |
2657
de974465d381
[appobject] kill VObject class, move base selector classes to appobject
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2652
diff
changeset
|
28 |
from cubicweb.appobject import objectify_selector |
3495
438576c5b1d1
[ui] turn footer items into actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3272
diff
changeset
|
29 |
from cubicweb.selectors import (EntitySelector, yes, |
4320
4efd4c306746
closes #345410: two_lines_rset, two_cols_rset, two_etypes_rset are badly named
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4252
diff
changeset
|
30 |
one_line_rset, multi_lines_rset, one_etype_rset, relation_possible, |
1829
f54710fcdd62
avoid SelectAction selection to crash on startup views
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
1551
diff
changeset
|
31 |
nonempty_rset, non_final_entity, |
631
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
32 |
authenticated_user, match_user_groups, match_search_state, |
5877
0c7b7b76a84f
[selectors] provide a new, optimized, is_instance selector that should at some point replace implements (along with the adaptable selector)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5811
diff
changeset
|
33 |
has_permission, has_add_permission, is_instance, debug_mode, |
631
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
34 |
) |
3484
52e6c8d62ac6
fix some actions selectors
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3481
diff
changeset
|
35 |
from cubicweb.web import uicfg, controller, action |
824
a5e6acffde30
merge, split baseviews (new csvexport, xmlrss and editviews modules)
sylvain.thenault@logilab.fr
parents:
822
diff
changeset
|
36 |
from cubicweb.web.views import linksearch_select_url, vid_from_rset |
0 | 37 |
|
1178 | 38 |
|
39 |
class has_editable_relation(EntitySelector): |
|
40 |
"""accept if some relations for an entity found in the result set is |
|
41 |
editable by the logged user. |
|
42 |
||
43 |
See `EntitySelector` documentation for behaviour when row is not specified. |
|
44 |
""" |
|
1452
546b9884d92c
delete spaces, use .row .col instead of fixed 0 0
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
45 |
|
1178 | 46 |
def score_entity(self, entity): |
47 |
# if user has no update right but it can modify some relation, |
|
48 |
# display action anyway |
|
3504 | 49 |
form = entity._cw.vreg['forms'].select('edition', entity._cw, |
6691
17208a358bb1
[action] set mainform=False to ensure we don't consume previously posted form validation errors
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6459
diff
changeset
|
50 |
entity=entity, mainform=False) |
3476
6e927b729ae1
[uicfg, autoform] more consistent/powerful autoform_section rtags by using formtype/section; deprecates autoform_is_inlined; refactor automatci form and renderer thanks to this
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3451
diff
changeset
|
51 |
for dummy in form.editable_relations(): |
1178 | 52 |
return 1 |
3476
6e927b729ae1
[uicfg, autoform] more consistent/powerful autoform_section rtags by using formtype/section; deprecates autoform_is_inlined; refactor automatci form and renderer thanks to this
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3451
diff
changeset
|
53 |
try: |
6e927b729ae1
[uicfg, autoform] more consistent/powerful autoform_section rtags by using formtype/section; deprecates autoform_is_inlined; refactor automatci form and renderer thanks to this
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3451
diff
changeset
|
54 |
editableattrs = form.editable_attributes(strict=True) |
6e927b729ae1
[uicfg, autoform] more consistent/powerful autoform_section rtags by using formtype/section; deprecates autoform_is_inlined; refactor automatci form and renderer thanks to this
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3451
diff
changeset
|
55 |
except TypeError: |
6e927b729ae1
[uicfg, autoform] more consistent/powerful autoform_section rtags by using formtype/section; deprecates autoform_is_inlined; refactor automatci form and renderer thanks to this
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3451
diff
changeset
|
56 |
warn('[3.6] %s: editable_attributes now take strict=False as ' |
6e927b729ae1
[uicfg, autoform] more consistent/powerful autoform_section rtags by using formtype/section; deprecates autoform_is_inlined; refactor automatci form and renderer thanks to this
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3451
diff
changeset
|
57 |
'optional argument', DeprecationWarning) |
6e927b729ae1
[uicfg, autoform] more consistent/powerful autoform_section rtags by using formtype/section; deprecates autoform_is_inlined; refactor automatci form and renderer thanks to this
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3451
diff
changeset
|
58 |
editableattrs = form.editable_attributes() |
3730
d6f95bd1032d
editable-attributes return a list of 2-uple
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3720
diff
changeset
|
59 |
for rschema, role in editableattrs: |
6363
b9ec8ebc187a
[web action] has_editable_relations should not filter out final relations, fix regression introduced in 6358:22c95c5ef12d
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6358
diff
changeset
|
60 |
return 1 |
1178 | 61 |
return 0 |
62 |
||
728
a95b284150d1
first pass to use __select__ instead of __selectors__
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
714
diff
changeset
|
63 |
@objectify_selector |
2161
200481e7b156
prepare time where it won't be mandatory to give rset to select()
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2121
diff
changeset
|
64 |
def match_searched_etype(cls, req, rset=None, **kwargs): |
631
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
65 |
return req.match_search_state(rset) |
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
66 |
|
728
a95b284150d1
first pass to use __select__ instead of __selectors__
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
714
diff
changeset
|
67 |
@objectify_selector |
2161
200481e7b156
prepare time where it won't be mandatory to give rset to select()
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2121
diff
changeset
|
68 |
def view_is_not_default_view(cls, req, rset=None, **kwargs): |
631
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
69 |
# interesting if it propose another view than the current one |
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
70 |
vid = req.form.get('vid') |
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
71 |
if vid and vid != vid_from_rset(req, rset, req.vreg.schema): |
631
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
72 |
return 1 |
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
73 |
return 0 |
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
74 |
|
728
a95b284150d1
first pass to use __select__ instead of __selectors__
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
714
diff
changeset
|
75 |
@objectify_selector |
2161
200481e7b156
prepare time where it won't be mandatory to give rset to select()
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2121
diff
changeset
|
76 |
def addable_etype_empty_rset(cls, req, rset=None, **kwargs): |
631
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
77 |
if rset is not None and not rset.rowcount: |
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
78 |
rqlst = rset.syntax_tree() |
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
79 |
if len(rqlst.children) > 1: |
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
80 |
return 0 |
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
81 |
select = rqlst.children[0] |
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
82 |
if len(select.defined_vars) == 1 and len(select.solutions) == 1: |
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
83 |
rset._searched_etype = select.solutions[0].itervalues().next() |
4087 | 84 |
eschema = req.vreg.schema.eschema(rset._searched_etype) |
3689
deb13e88e037
follow yams 0.25 api changes to improve performance
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3495
diff
changeset
|
85 |
if not (eschema.final or eschema.is_subobject(strict=True)) \ |
631
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
86 |
and eschema.has_perm(req, 'add'): |
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
87 |
return 1 |
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
88 |
return 0 |
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
89 |
|
2470 | 90 |
# generic 'main' actions ####################################################### |
0 | 91 |
|
3484
52e6c8d62ac6
fix some actions selectors
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3481
diff
changeset
|
92 |
class SelectAction(action.Action): |
0 | 93 |
"""base class for link search actions. By default apply on |
94 |
any size entity result search it the current state is 'linksearch' |
|
95 |
if accept match. |
|
96 |
""" |
|
3377
dd9d292b6a6d
use __regid__ instead of id on appobject classes
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3293
diff
changeset
|
97 |
__regid__ = 'select' |
3484
52e6c8d62ac6
fix some actions selectors
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3481
diff
changeset
|
98 |
__select__ = (match_search_state('linksearch') & nonempty_rset() |
52e6c8d62ac6
fix some actions selectors
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3481
diff
changeset
|
99 |
& match_searched_etype()) |
1452
546b9884d92c
delete spaces, use .row .col instead of fixed 0 0
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
100 |
|
0 | 101 |
title = _('select') |
1452
546b9884d92c
delete spaces, use .row .col instead of fixed 0 0
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
102 |
category = 'mainactions' |
631
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
103 |
order = 0 |
1452
546b9884d92c
delete spaces, use .row .col instead of fixed 0 0
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
104 |
|
0 | 105 |
def url(self): |
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
106 |
return linksearch_select_url(self._cw, self.cw_rset) |
0 | 107 |
|
108 |
||
3484
52e6c8d62ac6
fix some actions selectors
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3481
diff
changeset
|
109 |
class CancelSelectAction(action.Action): |
3377
dd9d292b6a6d
use __regid__ instead of id on appobject classes
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3293
diff
changeset
|
110 |
__regid__ = 'cancel' |
707 | 111 |
__select__ = match_search_state('linksearch') |
1452
546b9884d92c
delete spaces, use .row .col instead of fixed 0 0
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
112 |
|
631
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
113 |
title = _('cancel select') |
0 | 114 |
category = 'mainactions' |
115 |
order = 10 |
|
1452
546b9884d92c
delete spaces, use .row .col instead of fixed 0 0
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
116 |
|
0 | 117 |
def url(self): |
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
118 |
target, eid, r_type, searched_type = self._cw.search_state[1] |
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
119 |
return self._cw.build_url(str(eid), |
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
120 |
vid='edition', __mode='normal') |
0 | 121 |
|
122 |
||
3484
52e6c8d62ac6
fix some actions selectors
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3481
diff
changeset
|
123 |
class ViewAction(action.Action): |
3377
dd9d292b6a6d
use __regid__ instead of id on appobject classes
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3293
diff
changeset
|
124 |
__regid__ = 'view' |
3484
52e6c8d62ac6
fix some actions selectors
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3481
diff
changeset
|
125 |
__select__ = (action.Action.__select__ & |
707 | 126 |
match_user_groups('users', 'managers') & |
1452
546b9884d92c
delete spaces, use .row .col instead of fixed 0 0
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
127 |
view_is_not_default_view() & |
707 | 128 |
non_final_entity()) |
1452
546b9884d92c
delete spaces, use .row .col instead of fixed 0 0
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
129 |
|
631
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
130 |
title = _('view') |
1452
546b9884d92c
delete spaces, use .row .col instead of fixed 0 0
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
131 |
category = 'mainactions' |
631
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
132 |
order = 0 |
1452
546b9884d92c
delete spaces, use .row .col instead of fixed 0 0
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
133 |
|
0 | 134 |
def url(self): |
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
135 |
params = self._cw.form.copy() |
2701
afcc19c92072
fix #344895: view action should skip navigation parameters
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2161
diff
changeset
|
136 |
for param in ('vid', '__message') + controller.NAV_FORM_PARAMETERS: |
afcc19c92072
fix #344895: view action should skip navigation parameters
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2161
diff
changeset
|
137 |
params.pop(param, None) |
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
138 |
return self._cw.build_url(self._cw.relative_path(includeparams=False), |
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
139 |
**params) |
0 | 140 |
|
141 |
||
3484
52e6c8d62ac6
fix some actions selectors
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3481
diff
changeset
|
142 |
class ModifyAction(action.Action): |
3377
dd9d292b6a6d
use __regid__ instead of id on appobject classes
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3293
diff
changeset
|
143 |
__regid__ = 'edit' |
6358
22c95c5ef12d
[web action] has_permission_update checked implicitly by has_editable_relation, don't check it twice
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6177
diff
changeset
|
144 |
__select__ = (action.Action.__select__ |
22c95c5ef12d
[web action] has_permission_update checked implicitly by has_editable_relation, don't check it twice
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6177
diff
changeset
|
145 |
& one_line_rset() & has_editable_relation('add')) |
1452
546b9884d92c
delete spaces, use .row .col instead of fixed 0 0
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
146 |
|
631
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
147 |
title = _('modify') |
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
148 |
category = 'mainactions' |
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
149 |
order = 10 |
0 | 150 |
|
151 |
def url(self): |
|
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
152 |
entity = self.cw_rset.get_entity(self.cw_row or 0, self.cw_col or 0) |
0 | 153 |
return entity.absolute_url(vid='edition') |
1452
546b9884d92c
delete spaces, use .row .col instead of fixed 0 0
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
154 |
|
401
bc55a104d636
cleanup, backport manage perm action from jpl
sylvain.thenault@logilab.fr
parents:
328
diff
changeset
|
155 |
|
3484
52e6c8d62ac6
fix some actions selectors
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3481
diff
changeset
|
156 |
class MultipleEditAction(action.Action): |
3377
dd9d292b6a6d
use __regid__ instead of id on appobject classes
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3293
diff
changeset
|
157 |
__regid__ = 'muledit' # XXX get strange conflicts if id='edit' |
4320
4efd4c306746
closes #345410: two_lines_rset, two_cols_rset, two_etypes_rset are badly named
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4252
diff
changeset
|
158 |
__select__ = (action.Action.__select__ & multi_lines_rset() & |
3484
52e6c8d62ac6
fix some actions selectors
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3481
diff
changeset
|
159 |
one_etype_rset() & has_permission('update')) |
631
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
160 |
|
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
161 |
title = _('modify') |
401
bc55a104d636
cleanup, backport manage perm action from jpl
sylvain.thenault@logilab.fr
parents:
328
diff
changeset
|
162 |
category = 'mainactions' |
bc55a104d636
cleanup, backport manage perm action from jpl
sylvain.thenault@logilab.fr
parents:
328
diff
changeset
|
163 |
order = 10 |
1452
546b9884d92c
delete spaces, use .row .col instead of fixed 0 0
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
164 |
|
401
bc55a104d636
cleanup, backport manage perm action from jpl
sylvain.thenault@logilab.fr
parents:
328
diff
changeset
|
165 |
def url(self): |
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
166 |
return self._cw.build_url('view', rql=self.cw_rset.rql, vid='muledit') |
401
bc55a104d636
cleanup, backport manage perm action from jpl
sylvain.thenault@logilab.fr
parents:
328
diff
changeset
|
167 |
|
bc55a104d636
cleanup, backport manage perm action from jpl
sylvain.thenault@logilab.fr
parents:
328
diff
changeset
|
168 |
|
2470 | 169 |
# generic "more" actions ####################################################### |
401
bc55a104d636
cleanup, backport manage perm action from jpl
sylvain.thenault@logilab.fr
parents:
328
diff
changeset
|
170 |
|
3484
52e6c8d62ac6
fix some actions selectors
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3481
diff
changeset
|
171 |
class ManagePermissionsAction(action.Action): |
3377
dd9d292b6a6d
use __regid__ instead of id on appobject classes
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3293
diff
changeset
|
172 |
__regid__ = 'managepermission' |
3484
52e6c8d62ac6
fix some actions selectors
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3481
diff
changeset
|
173 |
__select__ = (action.Action.__select__ & one_line_rset() & |
52e6c8d62ac6
fix some actions selectors
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3481
diff
changeset
|
174 |
non_final_entity() & match_user_groups('managers')) |
631
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
175 |
|
401
bc55a104d636
cleanup, backport manage perm action from jpl
sylvain.thenault@logilab.fr
parents:
328
diff
changeset
|
176 |
title = _('manage permissions') |
bc55a104d636
cleanup, backport manage perm action from jpl
sylvain.thenault@logilab.fr
parents:
328
diff
changeset
|
177 |
category = 'moreactions' |
1551 | 178 |
order = 15 |
401
bc55a104d636
cleanup, backport manage perm action from jpl
sylvain.thenault@logilab.fr
parents:
328
diff
changeset
|
179 |
|
707 | 180 |
@classmethod |
4490
d45cde54d464
backport stable branch and some vreg cleanups:
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4462
diff
changeset
|
181 |
def __registered__(cls, reg): |
d45cde54d464
backport stable branch and some vreg cleanups:
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4462
diff
changeset
|
182 |
if 'require_permission' in reg.schema: |
822 | 183 |
cls.__select__ = (one_line_rset() & non_final_entity() & |
184 |
(match_user_groups('managers') |
|
1398
5fe84a5f7035
rename internal entity types to have CW prefix instead of E
sylvain.thenault@logilab.fr
parents:
1263
diff
changeset
|
185 |
| relation_possible('require_permission', 'subject', 'CWPermission', |
822 | 186 |
action='add'))) |
4490
d45cde54d464
backport stable branch and some vreg cleanups:
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4462
diff
changeset
|
187 |
return super(ManagePermissionsAction, cls).__registered__(reg) |
1452
546b9884d92c
delete spaces, use .row .col instead of fixed 0 0
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
188 |
|
401
bc55a104d636
cleanup, backport manage perm action from jpl
sylvain.thenault@logilab.fr
parents:
328
diff
changeset
|
189 |
def url(self): |
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
190 |
return self.cw_rset.get_entity(self.cw_row or 0, self.cw_col or 0).absolute_url(vid='security') |
0 | 191 |
|
1452
546b9884d92c
delete spaces, use .row .col instead of fixed 0 0
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
192 |
|
3484
52e6c8d62ac6
fix some actions selectors
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3481
diff
changeset
|
193 |
class DeleteAction(action.Action): |
3377
dd9d292b6a6d
use __regid__ instead of id on appobject classes
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3293
diff
changeset
|
194 |
__regid__ = 'delete' |
3484
52e6c8d62ac6
fix some actions selectors
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3481
diff
changeset
|
195 |
__select__ = action.Action.__select__ & has_permission('delete') |
1452
546b9884d92c
delete spaces, use .row .col instead of fixed 0 0
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
196 |
|
631
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
197 |
title = _('delete') |
1452
546b9884d92c
delete spaces, use .row .col instead of fixed 0 0
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
198 |
category = 'moreactions' |
0 | 199 |
order = 20 |
1452
546b9884d92c
delete spaces, use .row .col instead of fixed 0 0
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
200 |
|
0 | 201 |
def url(self): |
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
202 |
if len(self.cw_rset) == 1: |
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
203 |
entity = self.cw_rset.get_entity(self.cw_row or 0, self.cw_col or 0) |
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
204 |
return self._cw.build_url(entity.rest_path(), vid='deleteconf') |
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
205 |
return self._cw.build_url(rql=self.cw_rset.printable_rql(), vid='deleteconf') |
1452
546b9884d92c
delete spaces, use .row .col instead of fixed 0 0
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
206 |
|
546b9884d92c
delete spaces, use .row .col instead of fixed 0 0
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
207 |
|
3484
52e6c8d62ac6
fix some actions selectors
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3481
diff
changeset
|
208 |
class CopyAction(action.Action): |
3377
dd9d292b6a6d
use __regid__ instead of id on appobject classes
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3293
diff
changeset
|
209 |
__regid__ = 'copy' |
3484
52e6c8d62ac6
fix some actions selectors
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3481
diff
changeset
|
210 |
__select__ = (action.Action.__select__ & one_line_rset() |
52e6c8d62ac6
fix some actions selectors
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3481
diff
changeset
|
211 |
& has_permission('add')) |
1452
546b9884d92c
delete spaces, use .row .col instead of fixed 0 0
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
212 |
|
631
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
213 |
title = _('copy') |
0 | 214 |
category = 'moreactions' |
215 |
order = 30 |
|
1452
546b9884d92c
delete spaces, use .row .col instead of fixed 0 0
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
216 |
|
0 | 217 |
def url(self): |
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
218 |
entity = self.cw_rset.get_entity(self.cw_row or 0, self.cw_col or 0) |
0 | 219 |
return entity.absolute_url(vid='copy') |
220 |
||
221 |
||
222 |
class AddNewAction(MultipleEditAction): |
|
223 |
"""when we're seeing more than one entity with the same type, propose to |
|
224 |
add a new one |
|
225 |
""" |
|
3377
dd9d292b6a6d
use __regid__ instead of id on appobject classes
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3293
diff
changeset
|
226 |
__regid__ = 'addentity' |
3484
52e6c8d62ac6
fix some actions selectors
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3481
diff
changeset
|
227 |
__select__ = (action.Action.__select__ & |
707 | 228 |
(addable_etype_empty_rset() |
4462
c57c8176b8c2
reorganize, cleanup and properly document base selectors. Kill the may_add_relation selector.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4419
diff
changeset
|
229 |
| (multi_lines_rset() & one_etype_rset() & has_add_permission())) |
707 | 230 |
) |
631
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
231 |
|
0 | 232 |
category = 'moreactions' |
401
bc55a104d636
cleanup, backport manage perm action from jpl
sylvain.thenault@logilab.fr
parents:
328
diff
changeset
|
233 |
order = 40 |
1452
546b9884d92c
delete spaces, use .row .col instead of fixed 0 0
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
234 |
|
0 | 235 |
@property |
236 |
def rsettype(self): |
|
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
237 |
if self.cw_rset: |
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
238 |
return self.cw_rset.description[0][0] |
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
239 |
return self.cw_rset._searched_etype |
0 | 240 |
|
241 |
@property |
|
242 |
def title(self): |
|
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
243 |
return self._cw.__('add a %s' % self.rsettype) # generated msgid |
0 | 244 |
|
245 |
def url(self): |
|
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
246 |
return self._cw.build_url('add/%s' % self.rsettype) |
0 | 247 |
|
248 |
||
3484
52e6c8d62ac6
fix some actions selectors
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3481
diff
changeset
|
249 |
class AddRelatedActions(action.Action): |
3219
be8cfc00ae04
edit box refactoring to gain more control by using actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2715
diff
changeset
|
250 |
"""fill 'addrelated' sub-menu of the actions box""" |
3377
dd9d292b6a6d
use __regid__ instead of id on appobject classes
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3293
diff
changeset
|
251 |
__regid__ = 'addrelated' |
3504 | 252 |
__select__ = action.Action.__select__ & one_line_rset() & non_final_entity() |
3219
be8cfc00ae04
edit box refactoring to gain more control by using actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2715
diff
changeset
|
253 |
|
be8cfc00ae04
edit box refactoring to gain more control by using actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2715
diff
changeset
|
254 |
submenu = _('addrelated') |
5241
1460d69672bc
[test] fix unittest_viewselector
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5001
diff
changeset
|
255 |
order = 17 |
3219
be8cfc00ae04
edit box refactoring to gain more control by using actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2715
diff
changeset
|
256 |
|
be8cfc00ae04
edit box refactoring to gain more control by using actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2715
diff
changeset
|
257 |
def fill_menu(self, box, menu): |
be8cfc00ae04
edit box refactoring to gain more control by using actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2715
diff
changeset
|
258 |
# when there is only one item in the sub-menu, replace the sub-menu by |
be8cfc00ae04
edit box refactoring to gain more control by using actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2715
diff
changeset
|
259 |
# item's title prefixed by 'add' |
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
260 |
menu.label_prefix = self._cw._('add') |
3228
7b05b2709439
[actions] refactor: extract actual_actions from fill_menu to work with table filter form
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3219
diff
changeset
|
261 |
super(AddRelatedActions, self).fill_menu(box, menu) |
7b05b2709439
[actions] refactor: extract actual_actions from fill_menu to work with table filter form
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3219
diff
changeset
|
262 |
|
5745
d532fe79800b
[linkto action] refactor to ease overriding to control redirection
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5521
diff
changeset
|
263 |
def redirect_params(self, entity): |
d532fe79800b
[linkto action] refactor to ease overriding to control redirection
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5521
diff
changeset
|
264 |
return {'__redirectpath': entity.rest_path(), # should not be url quoted! |
d532fe79800b
[linkto action] refactor to ease overriding to control redirection
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5521
diff
changeset
|
265 |
'__redirectvid': self._cw.form.get('vid', '')} |
d532fe79800b
[linkto action] refactor to ease overriding to control redirection
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5521
diff
changeset
|
266 |
|
3228
7b05b2709439
[actions] refactor: extract actual_actions from fill_menu to work with table filter form
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3219
diff
changeset
|
267 |
def actual_actions(self): |
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
268 |
entity = self.cw_rset.get_entity(self.cw_row or 0, self.cw_col or 0) |
3219
be8cfc00ae04
edit box refactoring to gain more control by using actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2715
diff
changeset
|
269 |
eschema = entity.e_schema |
5745
d532fe79800b
[linkto action] refactor to ease overriding to control redirection
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5521
diff
changeset
|
270 |
params = self.redirect_params(entity) |
5521
4c53a0cb186c
[actions box] enhance add related menu generation: don't propose to add relation of single cardinality where entity already have the relation set
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5426
diff
changeset
|
271 |
for rschema, teschema, role in self.add_related_schemas(entity): |
4c53a0cb186c
[actions box] enhance add related menu generation: don't propose to add relation of single cardinality where entity already have the relation set
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5426
diff
changeset
|
272 |
if rschema.role_rdef(eschema, teschema, role).role_cardinality(role) in '1?': |
4c53a0cb186c
[actions box] enhance add related menu generation: don't propose to add relation of single cardinality where entity already have the relation set
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5426
diff
changeset
|
273 |
if entity.related(rschema, role): |
4c53a0cb186c
[actions box] enhance add related menu generation: don't propose to add relation of single cardinality where entity already have the relation set
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5426
diff
changeset
|
274 |
continue |
4c53a0cb186c
[actions box] enhance add related menu generation: don't propose to add relation of single cardinality where entity already have the relation set
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5426
diff
changeset
|
275 |
if role == 'subject': |
4c53a0cb186c
[actions box] enhance add related menu generation: don't propose to add relation of single cardinality where entity already have the relation set
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5426
diff
changeset
|
276 |
label = 'add %s %s %s %s' % (eschema, rschema, teschema, role) |
5776
e7a88c97fef7
[web actions] fix recent refactoring, leading to missing redirect parameters in action's url
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5745
diff
changeset
|
277 |
url = self.linkto_url(entity, rschema, teschema, 'object', **params) |
3219
be8cfc00ae04
edit box refactoring to gain more control by using actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2715
diff
changeset
|
278 |
else: |
5521
4c53a0cb186c
[actions box] enhance add related menu generation: don't propose to add relation of single cardinality where entity already have the relation set
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5426
diff
changeset
|
279 |
label = 'add %s %s %s %s' % (teschema, rschema, eschema, role) |
5776
e7a88c97fef7
[web actions] fix recent refactoring, leading to missing redirect parameters in action's url
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5745
diff
changeset
|
280 |
url = self.linkto_url(entity, rschema, teschema, 'subject', **params) |
e7a88c97fef7
[web actions] fix recent refactoring, leading to missing redirect parameters in action's url
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5745
diff
changeset
|
281 |
yield self.build_action(self._cw._(label), url) |
3219
be8cfc00ae04
edit box refactoring to gain more control by using actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2715
diff
changeset
|
282 |
|
be8cfc00ae04
edit box refactoring to gain more control by using actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2715
diff
changeset
|
283 |
def add_related_schemas(self, entity): |
be8cfc00ae04
edit box refactoring to gain more control by using actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2715
diff
changeset
|
284 |
"""this is actually used ui method to generate 'addrelated' actions from |
be8cfc00ae04
edit box refactoring to gain more control by using actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2715
diff
changeset
|
285 |
the schema. |
be8cfc00ae04
edit box refactoring to gain more control by using actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2715
diff
changeset
|
286 |
|
be8cfc00ae04
edit box refactoring to gain more control by using actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2715
diff
changeset
|
287 |
If you don't want any auto-generated actions, you should overrides this |
be8cfc00ae04
edit box refactoring to gain more control by using actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2715
diff
changeset
|
288 |
method to return an empty list. If you only want some, you can configure |
be8cfc00ae04
edit box refactoring to gain more control by using actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2715
diff
changeset
|
289 |
them by using uicfg.actionbox_appearsin_addmenu |
be8cfc00ae04
edit box refactoring to gain more control by using actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2715
diff
changeset
|
290 |
""" |
be8cfc00ae04
edit box refactoring to gain more control by using actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2715
diff
changeset
|
291 |
appearsin_addmenu = uicfg.actionbox_appearsin_addmenu |
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
292 |
req = self._cw |
3219
be8cfc00ae04
edit box refactoring to gain more control by using actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2715
diff
changeset
|
293 |
eschema = entity.e_schema |
be8cfc00ae04
edit box refactoring to gain more control by using actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2715
diff
changeset
|
294 |
for role, rschemas in (('subject', eschema.subject_relations()), |
be8cfc00ae04
edit box refactoring to gain more control by using actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2715
diff
changeset
|
295 |
('object', eschema.object_relations())): |
be8cfc00ae04
edit box refactoring to gain more control by using actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2715
diff
changeset
|
296 |
for rschema in rschemas: |
3689
deb13e88e037
follow yams 0.25 api changes to improve performance
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3495
diff
changeset
|
297 |
if rschema.final: |
3219
be8cfc00ae04
edit box refactoring to gain more control by using actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2715
diff
changeset
|
298 |
continue |
be8cfc00ae04
edit box refactoring to gain more control by using actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2715
diff
changeset
|
299 |
for teschema in rschema.targets(eschema, role): |
be8cfc00ae04
edit box refactoring to gain more control by using actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2715
diff
changeset
|
300 |
if not appearsin_addmenu.etype_get(eschema, rschema, |
be8cfc00ae04
edit box refactoring to gain more control by using actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2715
diff
changeset
|
301 |
role, teschema): |
be8cfc00ae04
edit box refactoring to gain more control by using actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2715
diff
changeset
|
302 |
continue |
3877
7ca53fc72a0a
reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3689
diff
changeset
|
303 |
rdef = rschema.role_rdef(eschema, teschema, role) |
7ca53fc72a0a
reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3689
diff
changeset
|
304 |
# check the relation can be added |
7ca53fc72a0a
reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3689
diff
changeset
|
305 |
# XXX consider autoform_permissions_overrides? |
7ca53fc72a0a
reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3689
diff
changeset
|
306 |
if role == 'subject'and not rdef.has_perm( |
7ca53fc72a0a
reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3689
diff
changeset
|
307 |
req, 'add', fromeid=entity.eid): |
7ca53fc72a0a
reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3689
diff
changeset
|
308 |
continue |
7ca53fc72a0a
reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3689
diff
changeset
|
309 |
if role == 'object'and not rdef.has_perm( |
7ca53fc72a0a
reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3689
diff
changeset
|
310 |
req, 'add', toeid=entity.eid): |
7ca53fc72a0a
reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3689
diff
changeset
|
311 |
continue |
7ca53fc72a0a
reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3689
diff
changeset
|
312 |
# check the target types can be added as well |
7ca53fc72a0a
reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3689
diff
changeset
|
313 |
if teschema.may_have_permission('add', req): |
3219
be8cfc00ae04
edit box refactoring to gain more control by using actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2715
diff
changeset
|
314 |
yield rschema, teschema, role |
be8cfc00ae04
edit box refactoring to gain more control by using actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2715
diff
changeset
|
315 |
|
5745
d532fe79800b
[linkto action] refactor to ease overriding to control redirection
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5521
diff
changeset
|
316 |
def linkto_url(self, entity, rtype, etype, target, **kwargs): |
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
317 |
return self._cw.build_url('add/%s' % etype, |
5745
d532fe79800b
[linkto action] refactor to ease overriding to control redirection
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5521
diff
changeset
|
318 |
__linkto='%s:%s:%s' % (rtype, entity.eid, target), **kwargs) |
3219
be8cfc00ae04
edit box refactoring to gain more control by using actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2715
diff
changeset
|
319 |
|
be8cfc00ae04
edit box refactoring to gain more control by using actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2715
diff
changeset
|
320 |
|
4413 | 321 |
class ViewSameCWEType(action.Action): |
4412
eaff00ef0a71
add action to list entities of the CWEType currently displayed
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
4320
diff
changeset
|
322 |
"""when displaying the schema of a CWEType, offer to list entities of that type |
eaff00ef0a71
add action to list entities of the CWEType currently displayed
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
4320
diff
changeset
|
323 |
""" |
4413 | 324 |
__regid__ = 'entitiesoftype' |
5877
0c7b7b76a84f
[selectors] provide a new, optimized, is_instance selector that should at some point replace implements (along with the adaptable selector)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5811
diff
changeset
|
325 |
__select__ = one_line_rset() & is_instance('CWEType') |
4412
eaff00ef0a71
add action to list entities of the CWEType currently displayed
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
4320
diff
changeset
|
326 |
category = 'mainactions' |
eaff00ef0a71
add action to list entities of the CWEType currently displayed
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
4320
diff
changeset
|
327 |
order = 40 |
eaff00ef0a71
add action to list entities of the CWEType currently displayed
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
4320
diff
changeset
|
328 |
|
eaff00ef0a71
add action to list entities of the CWEType currently displayed
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
4320
diff
changeset
|
329 |
@property |
eaff00ef0a71
add action to list entities of the CWEType currently displayed
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
4320
diff
changeset
|
330 |
def etype(self): |
4419
1f777d13a76b
refactor to use the 3.6 API
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
4413
diff
changeset
|
331 |
return self.cw_rset.get_entity(0,0).name |
4412
eaff00ef0a71
add action to list entities of the CWEType currently displayed
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
4320
diff
changeset
|
332 |
|
eaff00ef0a71
add action to list entities of the CWEType currently displayed
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
4320
diff
changeset
|
333 |
@property |
eaff00ef0a71
add action to list entities of the CWEType currently displayed
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
4320
diff
changeset
|
334 |
def title(self): |
4419
1f777d13a76b
refactor to use the 3.6 API
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
4413
diff
changeset
|
335 |
return self._cw.__('view all %s') % display_name(self._cw, self.etype, 'plural').lower() |
4412
eaff00ef0a71
add action to list entities of the CWEType currently displayed
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
4320
diff
changeset
|
336 |
|
eaff00ef0a71
add action to list entities of the CWEType currently displayed
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
4320
diff
changeset
|
337 |
def url(self): |
4419
1f777d13a76b
refactor to use the 3.6 API
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
4413
diff
changeset
|
338 |
return self._cw.build_url(self.etype) |
4412
eaff00ef0a71
add action to list entities of the CWEType currently displayed
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
4320
diff
changeset
|
339 |
|
401
bc55a104d636
cleanup, backport manage perm action from jpl
sylvain.thenault@logilab.fr
parents:
328
diff
changeset
|
340 |
# logged user actions ######################################################### |
0 | 341 |
|
3504 | 342 |
class UserPreferencesAction(action.Action): |
3377
dd9d292b6a6d
use __regid__ instead of id on appobject classes
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3293
diff
changeset
|
343 |
__regid__ = 'myprefs' |
707 | 344 |
__select__ = authenticated_user() |
1452
546b9884d92c
delete spaces, use .row .col instead of fixed 0 0
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
345 |
|
631
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
346 |
title = _('user preferences') |
0 | 347 |
category = 'useractions' |
348 |
order = 10 |
|
349 |
||
350 |
def url(self): |
|
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
351 |
return self._cw.build_url(self.__regid__) |
0 | 352 |
|
401
bc55a104d636
cleanup, backport manage perm action from jpl
sylvain.thenault@logilab.fr
parents:
328
diff
changeset
|
353 |
|
3504 | 354 |
class UserInfoAction(action.Action): |
3377
dd9d292b6a6d
use __regid__ instead of id on appobject classes
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3293
diff
changeset
|
355 |
__regid__ = 'myinfos' |
707 | 356 |
__select__ = authenticated_user() |
1452
546b9884d92c
delete spaces, use .row .col instead of fixed 0 0
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
357 |
|
6177
76aaca285e07
[views] rename Edition to Modification and personal information to profile
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
5963
diff
changeset
|
358 |
title = _('profile') |
401
bc55a104d636
cleanup, backport manage perm action from jpl
sylvain.thenault@logilab.fr
parents:
328
diff
changeset
|
359 |
category = 'useractions' |
bc55a104d636
cleanup, backport manage perm action from jpl
sylvain.thenault@logilab.fr
parents:
328
diff
changeset
|
360 |
order = 20 |
bc55a104d636
cleanup, backport manage perm action from jpl
sylvain.thenault@logilab.fr
parents:
328
diff
changeset
|
361 |
|
bc55a104d636
cleanup, backport manage perm action from jpl
sylvain.thenault@logilab.fr
parents:
328
diff
changeset
|
362 |
def url(self): |
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
363 |
return self._cw.build_url('cwuser/%s'%self._cw.user.login, vid='edition') |
401
bc55a104d636
cleanup, backport manage perm action from jpl
sylvain.thenault@logilab.fr
parents:
328
diff
changeset
|
364 |
|
bc55a104d636
cleanup, backport manage perm action from jpl
sylvain.thenault@logilab.fr
parents:
328
diff
changeset
|
365 |
|
3504 | 366 |
class LogoutAction(action.Action): |
3377
dd9d292b6a6d
use __regid__ instead of id on appobject classes
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3293
diff
changeset
|
367 |
__regid__ = 'logout' |
707 | 368 |
__select__ = authenticated_user() |
1452
546b9884d92c
delete spaces, use .row .col instead of fixed 0 0
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
369 |
|
631
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
370 |
title = _('logout') |
401
bc55a104d636
cleanup, backport manage perm action from jpl
sylvain.thenault@logilab.fr
parents:
328
diff
changeset
|
371 |
category = 'useractions' |
bc55a104d636
cleanup, backport manage perm action from jpl
sylvain.thenault@logilab.fr
parents:
328
diff
changeset
|
372 |
order = 30 |
bc55a104d636
cleanup, backport manage perm action from jpl
sylvain.thenault@logilab.fr
parents:
328
diff
changeset
|
373 |
|
bc55a104d636
cleanup, backport manage perm action from jpl
sylvain.thenault@logilab.fr
parents:
328
diff
changeset
|
374 |
def url(self): |
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
375 |
return self._cw.build_url(self.__regid__) |
401
bc55a104d636
cleanup, backport manage perm action from jpl
sylvain.thenault@logilab.fr
parents:
328
diff
changeset
|
376 |
|
1452
546b9884d92c
delete spaces, use .row .col instead of fixed 0 0
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
377 |
|
401
bc55a104d636
cleanup, backport manage perm action from jpl
sylvain.thenault@logilab.fr
parents:
328
diff
changeset
|
378 |
# site actions ################################################################ |
bc55a104d636
cleanup, backport manage perm action from jpl
sylvain.thenault@logilab.fr
parents:
328
diff
changeset
|
379 |
|
3504 | 380 |
class ManagersAction(action.Action): |
631
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
381 |
__abstract__ = True |
707 | 382 |
__select__ = match_user_groups('managers') |
631
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
383 |
|
401
bc55a104d636
cleanup, backport manage perm action from jpl
sylvain.thenault@logilab.fr
parents:
328
diff
changeset
|
384 |
category = 'siteactions' |
bc55a104d636
cleanup, backport manage perm action from jpl
sylvain.thenault@logilab.fr
parents:
328
diff
changeset
|
385 |
|
bc55a104d636
cleanup, backport manage perm action from jpl
sylvain.thenault@logilab.fr
parents:
328
diff
changeset
|
386 |
def url(self): |
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
387 |
return self._cw.build_url(self.__regid__) |
401
bc55a104d636
cleanup, backport manage perm action from jpl
sylvain.thenault@logilab.fr
parents:
328
diff
changeset
|
388 |
|
1452
546b9884d92c
delete spaces, use .row .col instead of fixed 0 0
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
389 |
|
401
bc55a104d636
cleanup, backport manage perm action from jpl
sylvain.thenault@logilab.fr
parents:
328
diff
changeset
|
390 |
class SiteConfigurationAction(ManagersAction): |
3377
dd9d292b6a6d
use __regid__ instead of id on appobject classes
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3293
diff
changeset
|
391 |
__regid__ = 'siteconfig' |
401
bc55a104d636
cleanup, backport manage perm action from jpl
sylvain.thenault@logilab.fr
parents:
328
diff
changeset
|
392 |
title = _('site configuration') |
631
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
393 |
order = 10 |
6961
686c59dfc401
[manage view] cleanup manage view and user menu
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6691
diff
changeset
|
394 |
category = 'manage' |
401
bc55a104d636
cleanup, backport manage perm action from jpl
sylvain.thenault@logilab.fr
parents:
328
diff
changeset
|
395 |
|
1452
546b9884d92c
delete spaces, use .row .col instead of fixed 0 0
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
396 |
|
401
bc55a104d636
cleanup, backport manage perm action from jpl
sylvain.thenault@logilab.fr
parents:
328
diff
changeset
|
397 |
class ManageAction(ManagersAction): |
3377
dd9d292b6a6d
use __regid__ instead of id on appobject classes
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3293
diff
changeset
|
398 |
__regid__ = 'manage' |
401
bc55a104d636
cleanup, backport manage perm action from jpl
sylvain.thenault@logilab.fr
parents:
328
diff
changeset
|
399 |
title = _('manage') |
631
99f5852f8604
major selector refactoring (mostly to avoid looking for select parameters on the target class), start accept / interface unification)
sylvain.thenault@logilab.fr
parents:
554
diff
changeset
|
400 |
order = 20 |
401
bc55a104d636
cleanup, backport manage perm action from jpl
sylvain.thenault@logilab.fr
parents:
328
diff
changeset
|
401 |
|
bc55a104d636
cleanup, backport manage perm action from jpl
sylvain.thenault@logilab.fr
parents:
328
diff
changeset
|
402 |
|
3504 | 403 |
# footer actions ############################################################### |
404 |
||
405 |
class PoweredByAction(action.Action): |
|
3645
7272b793d7c9
3.6 updates
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3504
diff
changeset
|
406 |
__regid__ = 'poweredby' |
3495
438576c5b1d1
[ui] turn footer items into actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3272
diff
changeset
|
407 |
__select__ = yes() |
438576c5b1d1
[ui] turn footer items into actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3272
diff
changeset
|
408 |
|
438576c5b1d1
[ui] turn footer items into actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3272
diff
changeset
|
409 |
category = 'footer' |
438576c5b1d1
[ui] turn footer items into actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3272
diff
changeset
|
410 |
order = 3 |
6459
7f46ec158c48
[i18n] uniformize footer capitalization
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6363
diff
changeset
|
411 |
title = _('Powered by CubicWeb') |
3495
438576c5b1d1
[ui] turn footer items into actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3272
diff
changeset
|
412 |
|
438576c5b1d1
[ui] turn footer items into actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3272
diff
changeset
|
413 |
def url(self): |
438576c5b1d1
[ui] turn footer items into actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3272
diff
changeset
|
414 |
return 'http://www.cubicweb.org' |
438576c5b1d1
[ui] turn footer items into actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3272
diff
changeset
|
415 |
|
5477
f79c39be0b9b
[css] introducing scale and rhythm composition
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
5426
diff
changeset
|
416 |
class GotRhythmAction(action.Action): |
f79c39be0b9b
[css] introducing scale and rhythm composition
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
5426
diff
changeset
|
417 |
__regid__ = 'rhythm' |
5480
2d5c46e78ae9
[css] introducing scale and rhythm composition
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
5426
diff
changeset
|
418 |
__select__ = debug_mode() |
5477
f79c39be0b9b
[css] introducing scale and rhythm composition
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
5426
diff
changeset
|
419 |
|
f79c39be0b9b
[css] introducing scale and rhythm composition
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
5426
diff
changeset
|
420 |
category = 'footer' |
f79c39be0b9b
[css] introducing scale and rhythm composition
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
5426
diff
changeset
|
421 |
order = 3 |
f79c39be0b9b
[css] introducing scale and rhythm composition
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
5426
diff
changeset
|
422 |
title = _('Got rhythm?') |
f79c39be0b9b
[css] introducing scale and rhythm composition
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
5426
diff
changeset
|
423 |
|
f79c39be0b9b
[css] introducing scale and rhythm composition
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
5426
diff
changeset
|
424 |
def url(self): |
f79c39be0b9b
[css] introducing scale and rhythm composition
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
5426
diff
changeset
|
425 |
return xml_escape(self._cw.url()+'#') |
f79c39be0b9b
[css] introducing scale and rhythm composition
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
5426
diff
changeset
|
426 |
|
f79c39be0b9b
[css] introducing scale and rhythm composition
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
5426
diff
changeset
|
427 |
def html_class(self): |
f79c39be0b9b
[css] introducing scale and rhythm composition
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
5426
diff
changeset
|
428 |
self._cw.add_js('cubicweb.rhythm.js') |
f79c39be0b9b
[css] introducing scale and rhythm composition
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
5426
diff
changeset
|
429 |
return 'rhythm' |
3495
438576c5b1d1
[ui] turn footer items into actions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3272
diff
changeset
|
430 |
|
2652
3753f3a07ca1
[refactoring] moved rtags specification in web/views
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
2470
diff
changeset
|
431 |
## default actions ui configuration ########################################### |
3753f3a07ca1
[refactoring] moved rtags specification in web/views
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
2470
diff
changeset
|
432 |
|
3753f3a07ca1
[refactoring] moved rtags specification in web/views
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
2470
diff
changeset
|
433 |
addmenu = uicfg.actionbox_appearsin_addmenu |
3753f3a07ca1
[refactoring] moved rtags specification in web/views
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
2470
diff
changeset
|
434 |
addmenu.tag_subject_of(('*', 'require_permission', '*'), False) |
3753f3a07ca1
[refactoring] moved rtags specification in web/views
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
2470
diff
changeset
|
435 |
addmenu.tag_object_of(('*', 'relation_type', 'CWRType'), True) |
3753f3a07ca1
[refactoring] moved rtags specification in web/views
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
2470
diff
changeset
|
436 |
addmenu.tag_object_of(('*', 'from_entity', 'CWEType'), False) |
3753f3a07ca1
[refactoring] moved rtags specification in web/views
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
2470
diff
changeset
|
437 |
addmenu.tag_object_of(('*', 'to_entity', 'CWEType'), False) |
3753f3a07ca1
[refactoring] moved rtags specification in web/views
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
2470
diff
changeset
|
438 |
addmenu.tag_object_of(('*', 'in_group', 'CWGroup'), True) |
3753f3a07ca1
[refactoring] moved rtags specification in web/views
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
2470
diff
changeset
|
439 |
addmenu.tag_object_of(('*', 'bookmarked_by', 'CWUser'), True) |