author | Aurelien Campeas <aurelien.campeas@logilab.fr> |
Tue, 03 Jun 2014 11:17:09 +0200 | |
changeset 9840 | 92ea0a4746e2 |
parent 9034 | cc3442054e48 |
child 10309 | 35bf741203d6 |
child 10390 | 0bbd211cf4d7 |
permissions | -rw-r--r-- |
8190
2a3c1b787688
[vreg] move base registry implementation to logilab.common. Closes #1916014
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7808
diff
changeset
|
1 |
# copyright 2003-2012 LOGILAB S.A. (Paris, FRANCE), all rights reserved. |
5421
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4714
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:
4714
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:
4714
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:
4714
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:
4714
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:
4714
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:
4714
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:
4714
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:
4714
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:
4714
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:
4714
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:
4714
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:
4714
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:
4714
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:
4714
diff
changeset
|
17 |
# with CubicWeb. If not, see <http://www.gnu.org/licenses/>. |
5528 | 18 |
"""security management and error screens""" |
0 | 19 |
|
20 |
__docformat__ = "restructuredtext en" |
|
1641 | 21 |
_ = unicode |
0 | 22 |
|
8605
797fc2e2fb78
[web] add a digital signature to error form (closes #2522526)
David Douard <david.douard@logilab.fr>
parents:
8604
diff
changeset
|
23 |
|
2312
af4d8f75c5db
use xml_escape
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2270
diff
changeset
|
24 |
from logilab.mtconverter import xml_escape |
8190
2a3c1b787688
[vreg] move base registry implementation to logilab.common. Closes #1916014
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7808
diff
changeset
|
25 |
from logilab.common.registry import yes |
0 | 26 |
|
8190
2a3c1b787688
[vreg] move base registry implementation to logilab.common. Closes #1916014
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7808
diff
changeset
|
27 |
from cubicweb.predicates import none_rset, match_user_groups, authenticated_user |
4706
6035e96b64dd
added stats for munin collecting #615844 - from 027bbff3659f
arthur
parents:
4297
diff
changeset
|
28 |
from cubicweb.view import AnyRsetView, StartupView, EntityView, View |
6683
68cfebd3b9f3
fix #724689: exception's display during ajax call
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6453
diff
changeset
|
29 |
from cubicweb.uilib import html_traceback, rest_traceback, exc_message |
2270
70c0da0f2181
should use a hidden text area for error description, not an hidden input (else the browser may remove line breaks)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2052
diff
changeset
|
30 |
from cubicweb.web import formwidgets as wdgs |
1402
04b7afb14b50
new style security management forms
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
31 |
from cubicweb.web.formfields import guess_field |
5234
e2476d78b060
ticket #787103, relation schema view enhancements
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
5232
diff
changeset
|
32 |
from cubicweb.web.views.schema import SecurityViewMixIn |
0 | 33 |
|
5232
78c1a531f7b3
ticket #787032, schema view improvement
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
4714
diff
changeset
|
34 |
from yams.buildobjs import EntityType |
0 | 35 |
|
1388
6d5f0ccf31b8
new style form for submitting bug reports
sylvain.thenault@logilab.fr
parents:
836
diff
changeset
|
36 |
SUBMIT_MSGID = _('Submit bug report') |
6d5f0ccf31b8
new style form for submitting bug reports
sylvain.thenault@logilab.fr
parents:
836
diff
changeset
|
37 |
MAIL_SUBMIT_MSGID = _('Submit bug report by mail') |
0 | 38 |
|
5234
e2476d78b060
ticket #787103, relation schema view enhancements
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
5232
diff
changeset
|
39 |
class SecurityManagementView(SecurityViewMixIn, EntityView): |
0 | 40 |
"""display security information for a given entity""" |
3377
dd9d292b6a6d
use __regid__ instead of id on appobject classes
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3230
diff
changeset
|
41 |
__regid__ = 'security' |
1877
10b9feeb7905
anon should not see security management view
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1806
diff
changeset
|
42 |
__select__ = EntityView.__select__ & authenticated_user() |
10b9feeb7905
anon should not see security management view
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1806
diff
changeset
|
43 |
|
0 | 44 |
title = _('security') |
1941
4f38e8b81a1a
egroup -> cwgroup #343418
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
1877
diff
changeset
|
45 |
|
1569
99a19875ef1e
set progress div in call() to avoid duplication when applied on multiple entities
sylvain.thenault@logilab.fr
parents:
1568
diff
changeset
|
46 |
def call(self): |
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
47 |
self.w(u'<div id="progress">%s</div>' % self._cw._('validating...')) |
1569
99a19875ef1e
set progress div in call() to avoid duplication when applied on multiple entities
sylvain.thenault@logilab.fr
parents:
1568
diff
changeset
|
48 |
super(SecurityManagementView, self).call() |
602
1454282a8b45
[views] cleanup, be less heavy with self.w ...
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
431
diff
changeset
|
49 |
|
7797
a71618a75b53
backport stable
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7782
diff
changeset
|
50 |
def entity_call(self, entity): |
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
51 |
self._cw.add_js('cubicweb.edition.js') |
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
52 |
self._cw.add_css('cubicweb.acl.css') |
0 | 53 |
w = self.w |
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
54 |
_ = self._cw._ |
0 | 55 |
w(u'<h1><span class="etype">%s</span> <a href="%s">%s</a></h1>' |
56 |
% (entity.dc_type().capitalize(), |
|
2312
af4d8f75c5db
use xml_escape
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2270
diff
changeset
|
57 |
xml_escape(entity.absolute_url()), |
af4d8f75c5db
use xml_escape
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2270
diff
changeset
|
58 |
xml_escape(entity.dc_title()))) |
0 | 59 |
# first show permissions defined by the schema |
7808
d90338624ea0
[security view] slight changes to make things clearer
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7797
diff
changeset
|
60 |
self.w('<h2>%s</h2>' % _('Schema\'s permissions definitions')) |
5234
e2476d78b060
ticket #787103, relation schema view enhancements
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
5232
diff
changeset
|
61 |
self.permissions_table(entity.e_schema) |
7808
d90338624ea0
[security view] slight changes to make things clearer
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7797
diff
changeset
|
62 |
self.w('<h2>%s</h2>' % _('Manage security')) |
0 | 63 |
# ownership information |
4045
f4a52abb6f4f
cw 3.6 api update
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
4023
diff
changeset
|
64 |
if self._cw.vreg.schema.rschema('owned_by').has_perm(self._cw, 'add', |
0 | 65 |
fromeid=entity.eid): |
66 |
self.owned_by_edit_form(entity) |
|
67 |
else: |
|
68 |
self.owned_by_information(entity) |
|
69 |
||
70 |
def owned_by_edit_form(self, entity): |
|
7808
d90338624ea0
[security view] slight changes to make things clearer
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7797
diff
changeset
|
71 |
self.w('<h3>%s</h3>' % self._cw._('Ownership')) |
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
72 |
msg = self._cw._('ownerships have been changed') |
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
73 |
form = self._cw.vreg['forms'].select('base', self._cw, entity=entity, |
7808
d90338624ea0
[security view] slight changes to make things clearer
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7797
diff
changeset
|
74 |
form_renderer_id='onerowtable', submitmsg=msg, |
2650
18aec79ec3a3
R [vreg] important refactoring of the vregistry, moving behaviour to end dictionnary (and so leaving room for more flexibility ; keep bw compat ; update api usage in cw
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2433
diff
changeset
|
75 |
form_buttons=[wdgs.SubmitButton()], |
18aec79ec3a3
R [vreg] important refactoring of the vregistry, moving behaviour to end dictionnary (and so leaving room for more flexibility ; keep bw compat ; update api usage in cw
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2433
diff
changeset
|
76 |
domid='ownership%s' % entity.eid, |
18aec79ec3a3
R [vreg] important refactoring of the vregistry, moving behaviour to end dictionnary (and so leaving room for more flexibility ; keep bw compat ; update api usage in cw
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2433
diff
changeset
|
77 |
__redirectvid='security', |
18aec79ec3a3
R [vreg] important refactoring of the vregistry, moving behaviour to end dictionnary (and so leaving room for more flexibility ; keep bw compat ; update api usage in cw
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2433
diff
changeset
|
78 |
__redirectpath=entity.rest_path()) |
8666
1dd655788ece
make ui configurations selectable (closes #2406609)
Florent Cayré <florent.cayre@logilab.fr>
parents:
8605
diff
changeset
|
79 |
field = guess_field(entity.e_schema, |
1dd655788ece
make ui configurations selectable (closes #2406609)
Florent Cayré <florent.cayre@logilab.fr>
parents:
8605
diff
changeset
|
80 |
self._cw.vreg.schema['owned_by'], |
1dd655788ece
make ui configurations selectable (closes #2406609)
Florent Cayré <florent.cayre@logilab.fr>
parents:
8605
diff
changeset
|
81 |
req=self._cw) |
1453
a9841184be7c
guess_field now takes an entity schema as first argument, not an entity class
sylvain.thenault@logilab.fr
parents:
1402
diff
changeset
|
82 |
form.append_field(field) |
6453
7fdd780d87e4
[form] unify form.render prototype to take a 'w' argument as other view/components render method
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6109
diff
changeset
|
83 |
form.render(w=self.w, display_progress_div=False) |
0 | 84 |
|
85 |
def owned_by_information(self, entity): |
|
86 |
ownersrset = entity.related('owned_by') |
|
87 |
if ownersrset: |
|
7808
d90338624ea0
[security view] slight changes to make things clearer
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7797
diff
changeset
|
88 |
self.w('<h3>%s</h3>' % self._cw._('Ownership')) |
0 | 89 |
self.w(u'<div class="ownerInfo">') |
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
90 |
self.w(self._cw._('this entity is currently owned by') + ' ') |
0 | 91 |
self.wview('csv', entity.related('owned_by'), 'null') |
92 |
self.w(u'</div>') |
|
93 |
# else we don't know if this is because entity has no owner or becayse |
|
94 |
# user as no access to owner users entities |
|
95 |
||
96 |
||
97 |
class ErrorView(AnyRsetView): |
|
98 |
"""default view when no result has been found""" |
|
731
ac4a94e50b60
some more s/__selectors__/__select__ but still more to come
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
691
diff
changeset
|
99 |
__select__ = yes() |
3377
dd9d292b6a6d
use __regid__ instead of id on appobject classes
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3230
diff
changeset
|
100 |
__regid__ = 'error' |
602
1454282a8b45
[views] cleanup, be less heavy with self.w ...
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
431
diff
changeset
|
101 |
|
0 | 102 |
def page_title(self): |
103 |
"""returns a title according to the result set - used for the |
|
104 |
title in the HTML header |
|
105 |
""" |
|
6109
47d9c0e0f7b7
integrate Celso's work on translation file: proper/complete spanish translation, fixed some typos in french translation, occured -> occurred fix in various places
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5973
diff
changeset
|
106 |
return self._cw._('an error occurred') |
0 | 107 |
|
108 |
def call(self): |
|
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
109 |
req = self._cw.reset_headers() |
1388
6d5f0ccf31b8
new style form for submitting bug reports
sylvain.thenault@logilab.fr
parents:
836
diff
changeset
|
110 |
w = self.w |
0 | 111 |
ex = req.data.get('ex')#_("unable to find exception information")) |
112 |
excinfo = req.data.get('excinfo') |
|
6109
47d9c0e0f7b7
integrate Celso's work on translation file: proper/complete spanish translation, fixed some typos in french translation, occured -> occurred fix in various places
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5973
diff
changeset
|
113 |
title = self._cw._('an error occurred') |
602
1454282a8b45
[views] cleanup, be less heavy with self.w ...
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
431
diff
changeset
|
114 |
w(u'<h2>%s</h2>' % title) |
0 | 115 |
if 'errmsg' in req.data: |
116 |
ex = req.data['errmsg'] |
|
174
a2966960d550
get actual exception class instead of 'unicode' in the error view
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
0
diff
changeset
|
117 |
exclass = None |
0 | 118 |
else: |
174
a2966960d550
get actual exception class instead of 'unicode' in the error view
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
0
diff
changeset
|
119 |
exclass = ex.__class__.__name__ |
0 | 120 |
ex = exc_message(ex, req.encoding) |
3733
c3feb6a33f58
remove some warnings
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3451
diff
changeset
|
121 |
if excinfo is not None and self._cw.vreg.config['print-traceback']: |
174
a2966960d550
get actual exception class instead of 'unicode' in the error view
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
0
diff
changeset
|
122 |
if exclass is None: |
602
1454282a8b45
[views] cleanup, be less heavy with self.w ...
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
431
diff
changeset
|
123 |
w(u'<div class="tb">%s</div>' |
2312
af4d8f75c5db
use xml_escape
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2270
diff
changeset
|
124 |
% xml_escape(ex).replace("\n","<br />")) |
174
a2966960d550
get actual exception class instead of 'unicode' in the error view
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
0
diff
changeset
|
125 |
else: |
602
1454282a8b45
[views] cleanup, be less heavy with self.w ...
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
431
diff
changeset
|
126 |
w(u'<div class="tb">%s: %s</div>' |
2312
af4d8f75c5db
use xml_escape
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2270
diff
changeset
|
127 |
% (exclass, xml_escape(ex).replace("\n","<br />"))) |
602
1454282a8b45
[views] cleanup, be less heavy with self.w ...
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
431
diff
changeset
|
128 |
w(u'<hr />') |
1454282a8b45
[views] cleanup, be less heavy with self.w ...
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
431
diff
changeset
|
129 |
w(u'<div class="tb">%s</div>' % html_traceback(excinfo, ex, '')) |
0 | 130 |
else: |
2312
af4d8f75c5db
use xml_escape
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2270
diff
changeset
|
131 |
w(u'<div class="tb">%s</div>' % (xml_escape(ex).replace("\n","<br />"))) |
0 | 132 |
# if excinfo is not None, it's probably not a bug |
133 |
if excinfo is None: |
|
134 |
return |
|
3733
c3feb6a33f58
remove some warnings
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3451
diff
changeset
|
135 |
vcconf = self._cw.vreg.config.vc_config() |
602
1454282a8b45
[views] cleanup, be less heavy with self.w ...
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
431
diff
changeset
|
136 |
w(u"<div>") |
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
137 |
eversion = vcconf.get('cubicweb', self._cw._('no version information')) |
0 | 138 |
# NOTE: tuple wrapping needed since eversion is itself a tuple |
602
1454282a8b45
[views] cleanup, be less heavy with self.w ...
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
431
diff
changeset
|
139 |
w(u"<b>CubicWeb version:</b> %s<br/>\n" % (eversion,)) |
1388
6d5f0ccf31b8
new style form for submitting bug reports
sylvain.thenault@logilab.fr
parents:
836
diff
changeset
|
140 |
cversions = [] |
3733
c3feb6a33f58
remove some warnings
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3451
diff
changeset
|
141 |
for cube in self._cw.vreg.config.cubes(): |
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
142 |
cubeversion = vcconf.get(cube, self._cw._('no version information')) |
5435
cc7d00a1b36e
[management] fix vocab: use cube instead of package
Julien Jehannet <julien.jehannet@logilab.fr>
parents:
5426
diff
changeset
|
143 |
w(u"<b>Cube %s version:</b> %s<br/>\n" % (cube, cubeversion)) |
1388
6d5f0ccf31b8
new style form for submitting bug reports
sylvain.thenault@logilab.fr
parents:
836
diff
changeset
|
144 |
cversions.append((cube, cubeversion)) |
602
1454282a8b45
[views] cleanup, be less heavy with self.w ...
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
431
diff
changeset
|
145 |
w(u"</div>") |
3200
747d17498cca
#345461: drop support for cube_eid / direct bug submission
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2996
diff
changeset
|
146 |
# creates a bug submission link if submit-mail is set |
3733
c3feb6a33f58
remove some warnings
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3451
diff
changeset
|
147 |
if self._cw.vreg.config['submit-mail']: |
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
148 |
form = self._cw.vreg['forms'].select('base', self._cw, rset=None, |
5358
d4d294610ee7
[forms] no crash if restore_previous_post has not be called, has in report bug form in management.py for instance
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5234
diff
changeset
|
149 |
mainform=False) |
1388
6d5f0ccf31b8
new style form for submitting bug reports
sylvain.thenault@logilab.fr
parents:
836
diff
changeset
|
150 |
binfo = text_error_description(ex, excinfo, req, eversion, cversions) |
4164
119a374c5eb4
form_add_hidden -> add_hidden
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4045
diff
changeset
|
151 |
form.add_hidden('description', binfo, |
119a374c5eb4
form_add_hidden -> add_hidden
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4045
diff
changeset
|
152 |
# we must use a text area to keep line breaks |
119a374c5eb4
form_add_hidden -> add_hidden
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4045
diff
changeset
|
153 |
widget=wdgs.TextArea({'class': 'hidden'})) |
8605
797fc2e2fb78
[web] add a digital signature to error form (closes #2522526)
David Douard <david.douard@logilab.fr>
parents:
8604
diff
changeset
|
154 |
# add a signature so one can't send arbitrary text |
797fc2e2fb78
[web] add a digital signature to error form (closes #2522526)
David Douard <david.douard@logilab.fr>
parents:
8604
diff
changeset
|
155 |
form.add_hidden('__signature', req.vreg.config.sign_text(binfo)) |
4164
119a374c5eb4
form_add_hidden -> add_hidden
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4045
diff
changeset
|
156 |
form.add_hidden('__bugreporting', '1') |
3200
747d17498cca
#345461: drop support for cube_eid / direct bug submission
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2996
diff
changeset
|
157 |
form.form_buttons = [wdgs.SubmitButton(MAIL_SUBMIT_MSGID)] |
747d17498cca
#345461: drop support for cube_eid / direct bug submission
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2996
diff
changeset
|
158 |
form.action = req.build_url('reportbug') |
6453
7fdd780d87e4
[form] unify form.render prototype to take a 'w' argument as other view/components render method
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6109
diff
changeset
|
159 |
form.render(w=w) |
0 | 160 |
|
161 |
||
162 |
def text_error_description(ex, excinfo, req, eversion, cubes): |
|
2312
af4d8f75c5db
use xml_escape
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2270
diff
changeset
|
163 |
binfo = rest_traceback(excinfo, xml_escape(ex)) |
0 | 164 |
binfo += u'\n\n:URL: %s\n' % req.url() |
165 |
if not '__bugreporting' in req.form: |
|
166 |
binfo += u'\n:form params:\n' |
|
167 |
binfo += u'\n'.join(u' * %s = %s' % (k, v) for k, v in req.form.iteritems()) |
|
168 |
binfo += u'\n\n:CubicWeb version: %s\n' % (eversion,) |
|
169 |
for pkg, pkgversion in cubes: |
|
5435
cc7d00a1b36e
[management] fix vocab: use cube instead of package
Julien Jehannet <julien.jehannet@logilab.fr>
parents:
5426
diff
changeset
|
170 |
binfo += u":Cube %s version: %s\n" % (pkg, pkgversion) |
0 | 171 |
binfo += '\n' |
172 |
return binfo |
|
173 |
||
1877
10b9feeb7905
anon should not see security management view
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1806
diff
changeset
|
174 |
|
4706
6035e96b64dd
added stats for munin collecting #615844 - from 027bbff3659f
arthur
parents:
4297
diff
changeset
|
175 |
class CwStats(View): |
6035e96b64dd
added stats for munin collecting #615844 - from 027bbff3659f
arthur
parents:
4297
diff
changeset
|
176 |
"""A textual stats output for monitoring tools such as munin """ |
6035e96b64dd
added stats for munin collecting #615844 - from 027bbff3659f
arthur
parents:
4297
diff
changeset
|
177 |
|
6035e96b64dd
added stats for munin collecting #615844 - from 027bbff3659f
arthur
parents:
4297
diff
changeset
|
178 |
__regid__ = 'processinfo' |
8604
7bacc4f21edc
[web/views] bugfix: the mime type is text/plain, not text/txt (closes #2526345)
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
8190
diff
changeset
|
179 |
content_type = 'text/plain' |
4706
6035e96b64dd
added stats for munin collecting #615844 - from 027bbff3659f
arthur
parents:
4297
diff
changeset
|
180 |
templatable = False |
6035e96b64dd
added stats for munin collecting #615844 - from 027bbff3659f
arthur
parents:
4297
diff
changeset
|
181 |
__select__ = none_rset() & match_user_groups('users', 'managers') |
6035e96b64dd
added stats for munin collecting #615844 - from 027bbff3659f
arthur
parents:
4297
diff
changeset
|
182 |
|
6035e96b64dd
added stats for munin collecting #615844 - from 027bbff3659f
arthur
parents:
4297
diff
changeset
|
183 |
def call(self): |
9034
cc3442054e48
[repo] move repo stats to Service (closes #2951067)
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8666
diff
changeset
|
184 |
stats = self._cw.call_service('repo_stats') |
4706
6035e96b64dd
added stats for munin collecting #615844 - from 027bbff3659f
arthur
parents:
4297
diff
changeset
|
185 |
results = [] |
6035e96b64dd
added stats for munin collecting #615844 - from 027bbff3659f
arthur
parents:
4297
diff
changeset
|
186 |
for element in stats: |
4713
785299dfc2c0
[i18n] nothing to translate here
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4706
diff
changeset
|
187 |
results.append(u'%s %s' % (element, stats[element])) |
785299dfc2c0
[i18n] nothing to translate here
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4706
diff
changeset
|
188 |
self.w(u'\n'.join(results)) |