author | David Douard <david.douard@logilab.fr> |
Thu, 21 Jul 2016 21:03:25 +0200 | |
branch | 3.22 |
changeset 11441 | 2576d295c66d |
parent 10951 | ef1cfc80d51c |
permissions | -rw-r--r-- |
8665
e65af61bde7d
[uicfg] uicfg.py moves from web/ to web/views/ (prepares #2406609)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8408
diff
changeset
|
1 |
# copyright 2010-2012 LOGILAB S.A. (Paris, FRANCE), all rights reserved. |
6724
24bf6f181d0e
[pyro source] store pyro source mapping file into the database
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
2 |
# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr |
24bf6f181d0e
[pyro source] store pyro source mapping file into the database
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
3 |
# |
24bf6f181d0e
[pyro source] store pyro source mapping file into the database
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
4 |
# This file is part of CubicWeb. |
24bf6f181d0e
[pyro source] store pyro source mapping file into the database
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
5 |
# |
24bf6f181d0e
[pyro source] store pyro source mapping file into the database
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
6 |
# CubicWeb is free software: you can redistribute it and/or modify it under the |
24bf6f181d0e
[pyro source] store pyro source mapping file into the database
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
7 |
# terms of the GNU Lesser General Public License as published by the Free |
24bf6f181d0e
[pyro source] store pyro source mapping file into the database
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
8 |
# Software Foundation, either version 2.1 of the License, or (at your option) |
24bf6f181d0e
[pyro source] store pyro source mapping file into the database
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
9 |
# any later version. |
24bf6f181d0e
[pyro source] store pyro source mapping file into the database
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
10 |
# |
24bf6f181d0e
[pyro source] store pyro source mapping file into the database
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
11 |
# CubicWeb is distributed in the hope that it will be useful, but WITHOUT |
24bf6f181d0e
[pyro source] store pyro source mapping file into the database
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
12 |
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
24bf6f181d0e
[pyro source] store pyro source mapping file into the database
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
13 |
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more |
24bf6f181d0e
[pyro source] store pyro source mapping file into the database
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
14 |
# details. |
24bf6f181d0e
[pyro source] store pyro source mapping file into the database
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
15 |
# |
24bf6f181d0e
[pyro source] store pyro source mapping file into the database
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
16 |
# You should have received a copy of the GNU Lesser General Public License along |
24bf6f181d0e
[pyro source] store pyro source mapping file into the database
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
17 |
# with CubicWeb. If not, see <http://www.gnu.org/licenses/>. |
6944
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
18 |
"""Specific views for data sources and related entities (eg CWSource, |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
19 |
CWSourceHostConfig, CWSourceSchemaConfig). |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
20 |
""" |
6724
24bf6f181d0e
[pyro source] store pyro source mapping file into the database
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
21 |
|
24bf6f181d0e
[pyro source] store pyro source mapping file into the database
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
22 |
__docformat__ = "restructuredtext en" |
10666
7f6b5f023884
[py3k] replace '_ = unicode' in global scope (closes #7589459)
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10662
diff
changeset
|
23 |
from cubicweb import _ |
6724
24bf6f181d0e
[pyro source] store pyro source mapping file into the database
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
24 |
|
7995
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
25 |
import logging |
8136
273d8a03700c
[sources management] fix crash mapping tab because chain() is not indexable. Closes #2124077
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7995
diff
changeset
|
26 |
from itertools import repeat |
10609
e2d8e81bfe68
[py3k] import range using six.moves
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10244
diff
changeset
|
27 |
|
e2d8e81bfe68
[py3k] import range using six.moves
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10244
diff
changeset
|
28 |
from six.moves import range |
e2d8e81bfe68
[py3k] import range using six.moves
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10244
diff
changeset
|
29 |
|
7995
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
30 |
from logilab.mtconverter import xml_escape |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
31 |
from logilab.common.decorators import cachedproperty |
6724
24bf6f181d0e
[pyro source] store pyro source mapping file into the database
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
32 |
|
7995
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
33 |
from cubicweb import Unauthorized, tags |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
34 |
from cubicweb.utils import make_uid |
8190
2a3c1b787688
[vreg] move base registry implementation to logilab.common. Closes #1916014
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8166
diff
changeset
|
35 |
from cubicweb.predicates import (is_instance, score_entity, has_related_entities, |
10951
ef1cfc80d51c
action, view and service so managers can start source synchronization from the web ui
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10666
diff
changeset
|
36 |
match_user_groups, match_kwargs, match_view, one_line_rset) |
6962
220e32f058be
[management ui] add views to manage sources similarly to users
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6944
diff
changeset
|
37 |
from cubicweb.view import EntityView, StartupView |
6724
24bf6f181d0e
[pyro source] store pyro source mapping file into the database
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
38 |
from cubicweb.schema import META_RTYPES, VIRTUAL_RTYPES, display_name |
10951
ef1cfc80d51c
action, view and service so managers can start source synchronization from the web ui
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10666
diff
changeset
|
39 |
from cubicweb.web import Redirect, formwidgets as wdgs, facet, action |
7995
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
40 |
from cubicweb.web.views import add_etype_button |
8665
e65af61bde7d
[uicfg] uicfg.py moves from web/ to web/views/ (prepares #2406609)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8408
diff
changeset
|
41 |
from cubicweb.web.views import (uicfg, tabs, actions, ibreadcrumbs, navigation, |
7995
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
42 |
tableview, pyviews) |
6962
220e32f058be
[management ui] add views to manage sources similarly to users
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6944
diff
changeset
|
43 |
|
7019
46413742f9b5
[source ui] uicfg tweaks
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6962
diff
changeset
|
44 |
|
46413742f9b5
[source ui] uicfg tweaks
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6962
diff
changeset
|
45 |
_abaa = uicfg.actionbox_appearsin_addmenu |
7832
953f224357af
[sources management] nicer source management view and breadcrumbs (closes #1946329)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7806
diff
changeset
|
46 |
# there are explicit 'add' buttons for those |
7019
46413742f9b5
[source ui] uicfg tweaks
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6962
diff
changeset
|
47 |
_abaa.tag_object_of(('CWSourceSchemaConfig', 'cw_schema', '*'), False) |
46413742f9b5
[source ui] uicfg tweaks
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6962
diff
changeset
|
48 |
_abaa.tag_object_of(('CWSourceSchemaConfig', 'cw_for_source', '*'), False) |
7832
953f224357af
[sources management] nicer source management view and breadcrumbs (closes #1946329)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7806
diff
changeset
|
49 |
_abaa.tag_object_of(('CWSourceSchemaConfig', 'cw_host_config_of', '*'), False) |
7995
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
50 |
_abaa.tag_object_of(('CWDataImport', 'cw_import_of', '*'), False) |
7019
46413742f9b5
[source ui] uicfg tweaks
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6962
diff
changeset
|
51 |
|
7524
c019c3426049
[ui, sources] configure source form: hide synchronizing and mapping entities, use simple text input for parser
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7375
diff
changeset
|
52 |
_afs = uicfg.autoform_section |
8150
b5a9706f839e
[sources] hide some attributes from source edition form. Closes #2144160
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8136
diff
changeset
|
53 |
_afs.tag_attribute(('CWSource', 'latest_retrieval'), 'main', 'hidden') |
b5a9706f839e
[sources] hide some attributes from source edition form. Closes #2144160
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8136
diff
changeset
|
54 |
_afs.tag_attribute(('CWSource', 'in_synchronization'), 'main', 'hidden') |
7524
c019c3426049
[ui, sources] configure source form: hide synchronizing and mapping entities, use simple text input for parser
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7375
diff
changeset
|
55 |
_afs.tag_object_of(('*', 'cw_for_source', 'CWSource'), 'main', 'hidden') |
7832
953f224357af
[sources management] nicer source management view and breadcrumbs (closes #1946329)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7806
diff
changeset
|
56 |
|
7524
c019c3426049
[ui, sources] configure source form: hide synchronizing and mapping entities, use simple text input for parser
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7375
diff
changeset
|
57 |
_affk = uicfg.autoform_field_kwargs |
c019c3426049
[ui, sources] configure source form: hide synchronizing and mapping entities, use simple text input for parser
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7375
diff
changeset
|
58 |
_affk.tag_attribute(('CWSource', 'parser'), {'widget': wdgs.TextInput}) |
c019c3426049
[ui, sources] configure source form: hide synchronizing and mapping entities, use simple text input for parser
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7375
diff
changeset
|
59 |
|
6962
220e32f058be
[management ui] add views to manage sources similarly to users
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6944
diff
changeset
|
60 |
# source primary views ######################################################### |
6724
24bf6f181d0e
[pyro source] store pyro source mapping file into the database
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
61 |
|
6944
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
62 |
_pvs = uicfg.primaryview_section |
7832
953f224357af
[sources management] nicer source management view and breadcrumbs (closes #1946329)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7806
diff
changeset
|
63 |
_pvs.tag_attribute(('CWSource', 'name'), 'hidden') |
6944
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
64 |
_pvs.tag_object_of(('*', 'cw_for_source', 'CWSource'), 'hidden') |
7832
953f224357af
[sources management] nicer source management view and breadcrumbs (closes #1946329)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7806
diff
changeset
|
65 |
_pvs.tag_object_of(('*', 'cw_host_config_of', 'CWSource'), 'hidden') |
953f224357af
[sources management] nicer source management view and breadcrumbs (closes #1946329)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7806
diff
changeset
|
66 |
|
953f224357af
[sources management] nicer source management view and breadcrumbs (closes #1946329)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7806
diff
changeset
|
67 |
_pvdc = uicfg.primaryview_display_ctrl |
953f224357af
[sources management] nicer source management view and breadcrumbs (closes #1946329)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7806
diff
changeset
|
68 |
_pvdc.tag_attribute(('CWSource', 'type'), {'vid': 'attribute'})# disable reledit |
953f224357af
[sources management] nicer source management view and breadcrumbs (closes #1946329)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7806
diff
changeset
|
69 |
|
953f224357af
[sources management] nicer source management view and breadcrumbs (closes #1946329)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7806
diff
changeset
|
70 |
_rc = uicfg.reledit_ctrl |
7846
dd3f0871d8b7
[primary view] add 'verbatim' attribute view (closes #1947475)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7832
diff
changeset
|
71 |
_rc.tag_attribute(('CWSource', 'config'), {'rvid': 'verbatimattr'}) |
dd3f0871d8b7
[primary view] add 'verbatim' attribute view (closes #1947475)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7832
diff
changeset
|
72 |
_rc.tag_attribute(('CWSourceHostConfig', 'config'), {'rvid': 'verbatimattr'}) |
dd3f0871d8b7
[primary view] add 'verbatim' attribute view (closes #1947475)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7832
diff
changeset
|
73 |
_rc.tag_attribute(('CWSourceSchemaConfig', 'options'), {'rvid': 'verbatimattr'}) |
6944
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
74 |
|
6724
24bf6f181d0e
[pyro source] store pyro source mapping file into the database
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
75 |
|
24bf6f181d0e
[pyro source] store pyro source mapping file into the database
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
76 |
class CWSourcePrimaryView(tabs.TabbedPrimaryView): |
24bf6f181d0e
[pyro source] store pyro source mapping file into the database
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
77 |
__select__ = is_instance('CWSource') |
7995
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
78 |
tabs = [_('cwsource-main'), _('cwsource-mapping'), _('cwsource-imports')] |
6724
24bf6f181d0e
[pyro source] store pyro source mapping file into the database
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
79 |
default_tab = 'cwsource-main' |
24bf6f181d0e
[pyro source] store pyro source mapping file into the database
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
80 |
|
24bf6f181d0e
[pyro source] store pyro source mapping file into the database
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
81 |
|
24bf6f181d0e
[pyro source] store pyro source mapping file into the database
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
82 |
class CWSourceMainTab(tabs.PrimaryTab): |
24bf6f181d0e
[pyro source] store pyro source mapping file into the database
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
83 |
__regid__ = 'cwsource-main' |
7995
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
84 |
__select__ = is_instance('CWSource') |
6724
24bf6f181d0e
[pyro source] store pyro source mapping file into the database
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
85 |
|
7832
953f224357af
[sources management] nicer source management view and breadcrumbs (closes #1946329)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7806
diff
changeset
|
86 |
def render_entity_attributes(self, entity): |
953f224357af
[sources management] nicer source management view and breadcrumbs (closes #1946329)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7806
diff
changeset
|
87 |
super(CWSourceMainTab, self).render_entity_attributes(entity) |
953f224357af
[sources management] nicer source management view and breadcrumbs (closes #1946329)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7806
diff
changeset
|
88 |
self.w(add_etype_button(self._cw, 'CWSourceHostConfig', |
953f224357af
[sources management] nicer source management view and breadcrumbs (closes #1946329)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7806
diff
changeset
|
89 |
__linkto='cw_host_config_of:%s:subject' % entity.eid, |
953f224357af
[sources management] nicer source management view and breadcrumbs (closes #1946329)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7806
diff
changeset
|
90 |
__redirectpath=entity.rest_path())) |
953f224357af
[sources management] nicer source management view and breadcrumbs (closes #1946329)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7806
diff
changeset
|
91 |
try: |
953f224357af
[sources management] nicer source management view and breadcrumbs (closes #1946329)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7806
diff
changeset
|
92 |
hostconfig = self._cw.execute( |
953f224357af
[sources management] nicer source management view and breadcrumbs (closes #1946329)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7806
diff
changeset
|
93 |
'Any X, XC, XH WHERE X cw_host_config_of S, S eid %(s)s, ' |
953f224357af
[sources management] nicer source management view and breadcrumbs (closes #1946329)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7806
diff
changeset
|
94 |
'X config XC, X match_host XH', {'s': entity.eid}) |
953f224357af
[sources management] nicer source management view and breadcrumbs (closes #1946329)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7806
diff
changeset
|
95 |
except Unauthorized: |
953f224357af
[sources management] nicer source management view and breadcrumbs (closes #1946329)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7806
diff
changeset
|
96 |
pass |
953f224357af
[sources management] nicer source management view and breadcrumbs (closes #1946329)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7806
diff
changeset
|
97 |
else: |
953f224357af
[sources management] nicer source management view and breadcrumbs (closes #1946329)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7806
diff
changeset
|
98 |
if hostconfig: |
953f224357af
[sources management] nicer source management view and breadcrumbs (closes #1946329)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7806
diff
changeset
|
99 |
self.w(u'<h3>%s</h3>' % self._cw._('CWSourceHostConfig_plural')) |
7992
4ff9f25cb06e
[table views] closes #1986413: refactor TableView, EntityAttributesTableView, PyValTableView
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7935
diff
changeset
|
100 |
self._cw.view('table', hostconfig, w=self.w, |
10609
e2d8e81bfe68
[py3k] import range using six.moves
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10244
diff
changeset
|
101 |
displaycols=list(range(2)), |
7992
4ff9f25cb06e
[table views] closes #1986413: refactor TableView, EntityAttributesTableView, PyValTableView
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7935
diff
changeset
|
102 |
cellvids={1: 'editable-final'}) |
7832
953f224357af
[sources management] nicer source management view and breadcrumbs (closes #1946329)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7806
diff
changeset
|
103 |
|
6724
24bf6f181d0e
[pyro source] store pyro source mapping file into the database
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
104 |
|
9445
65d93a4fd11c
[multi-sources-removal] Drop pyrorql and zmqrql sources
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8665
diff
changeset
|
105 |
MAPPED_SOURCE_TYPES = set( ('datafeed',) ) |
6944
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
106 |
|
6724
24bf6f181d0e
[pyro source] store pyro source mapping file into the database
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
107 |
class CWSourceMappingTab(EntityView): |
24bf6f181d0e
[pyro source] store pyro source mapping file into the database
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
108 |
__regid__ = 'cwsource-mapping' |
7995
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
109 |
__select__ = (is_instance('CWSource') |
6944
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
110 |
& match_user_groups('managers') |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
111 |
& score_entity(lambda x:x.type in MAPPED_SOURCE_TYPES)) |
6724
24bf6f181d0e
[pyro source] store pyro source mapping file into the database
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
112 |
|
24bf6f181d0e
[pyro source] store pyro source mapping file into the database
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
113 |
def entity_call(self, entity): |
24bf6f181d0e
[pyro source] store pyro source mapping file into the database
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
114 |
_ = self._cw._ |
6944
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
115 |
self.w('<h3>%s</h3>' % _('Entity and relation supported by this source')) |
7806
aa30c665bd06
[refactoring] introduce add_etype_button function to properly create button to add a new entity
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7804
diff
changeset
|
116 |
self.w(add_etype_button(self._cw, 'CWSourceSchemaConfig', |
aa30c665bd06
[refactoring] introduce add_etype_button function to properly create button to add a new entity
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7804
diff
changeset
|
117 |
__linkto='cw_for_source:%s:subject' % entity.eid)) |
aa30c665bd06
[refactoring] introduce add_etype_button function to properly create button to add a new entity
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7804
diff
changeset
|
118 |
self.w(u'<div class="clear"></div>') |
6944
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
119 |
rset = self._cw.execute( |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
120 |
'Any X, SCH, XO ORDERBY ET WHERE X options XO, X cw_for_source S, S eid %(s)s, ' |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
121 |
'X cw_schema SCH, SCH is ET', {'s': entity.eid}) |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
122 |
self.wview('table', rset, 'noresult') |
9729
1fe9dad662e5
[views] remove reference to the MAPPING_CHECKERS dict (closes #3810219)
David Douard <david.douard@logilab.fr>
parents:
9452
diff
changeset
|
123 |
checker = MappingChecker(entity) |
6944
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
124 |
checker.check() |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
125 |
if (checker.errors or checker.warnings or checker.infos): |
7806
aa30c665bd06
[refactoring] introduce add_etype_button function to properly create button to add a new entity
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7804
diff
changeset
|
126 |
self.w('<h2>%s</h2>' % _('Detected problems')) |
aa30c665bd06
[refactoring] introduce add_etype_button function to properly create button to add a new entity
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7804
diff
changeset
|
127 |
errors = zip(repeat(_('error')), checker.errors) |
aa30c665bd06
[refactoring] introduce add_etype_button function to properly create button to add a new entity
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7804
diff
changeset
|
128 |
warnings = zip(repeat(_('warning')), checker.warnings) |
aa30c665bd06
[refactoring] introduce add_etype_button function to properly create button to add a new entity
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7804
diff
changeset
|
129 |
infos = zip(repeat(_('warning')), checker.infos) |
8136
273d8a03700c
[sources management] fix crash mapping tab because chain() is not indexable. Closes #2124077
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7995
diff
changeset
|
130 |
self.wview('pyvaltable', pyvalue=errors + warnings + infos) |
6724
24bf6f181d0e
[pyro source] store pyro source mapping file into the database
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
131 |
|
6944
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
132 |
|
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
133 |
class MappingChecker(object): |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
134 |
def __init__(self, cwsource): |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
135 |
self.cwsource = cwsource |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
136 |
self.errors = [] |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
137 |
self.warnings = [] |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
138 |
self.infos = [] |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
139 |
self.schema = cwsource._cw.vreg.schema |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
140 |
|
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
141 |
def init(self): |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
142 |
# supported entity types |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
143 |
self.sentities = set() |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
144 |
# supported relations |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
145 |
self.srelations = {} |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
146 |
# avoid duplicated messages |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
147 |
self.seen = set() |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
148 |
# first get mapping as dict/sets |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
149 |
for schemacfg in self.cwsource.reverse_cw_for_source: |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
150 |
self.init_schemacfg(schemacfg) |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
151 |
|
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
152 |
def init_schemacfg(self, schemacfg): |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
153 |
cwerschema = schemacfg.schema |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
154 |
if cwerschema.__regid__ == 'CWEType': |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
155 |
self.sentities.add(cwerschema.name) |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
156 |
elif cwerschema.__regid__ == 'CWRType': |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
157 |
assert not cwerschema.name in self.srelations |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
158 |
self.srelations[cwerschema.name] = None |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
159 |
else: # CWAttribute/CWRelation |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
160 |
self.srelations.setdefault(cwerschema.rtype.name, []).append( |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
161 |
(cwerschema.stype.name, cwerschema.otype.name) ) |
7375
c8a8fb32733b
[cw source ui] fix mapping checking for datafeed source (avoid false positive error, but doesn't check that much things)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7019
diff
changeset
|
162 |
self.sentities.add(cwerschema.stype.name) |
c8a8fb32733b
[cw source ui] fix mapping checking for datafeed source (avoid false positive error, but doesn't check that much things)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7019
diff
changeset
|
163 |
self.sentities.add(cwerschema.otype.name) |
6944
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
164 |
|
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
165 |
def check(self): |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
166 |
self.init() |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
167 |
error = self.errors.append |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
168 |
warning = self.warnings.append |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
169 |
info = self.infos.append |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
170 |
for etype in self.sentities: |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
171 |
eschema = self.schema[etype] |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
172 |
for rschema, ttypes, role in eschema.relation_definitions(): |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
173 |
if rschema in META_RTYPES: |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
174 |
continue |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
175 |
ttypes = [ttype for ttype in ttypes if ttype in self.sentities] |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
176 |
if not rschema in self.srelations: |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
177 |
for ttype in ttypes: |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
178 |
rdef = rschema.role_rdef(etype, ttype, role) |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
179 |
self.seen.add(rdef) |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
180 |
if rdef.role_cardinality(role) in '1+': |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
181 |
error(_('relation %(type)s with %(etype)s as %(role)s ' |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
182 |
'and target type %(target)s is mandatory but ' |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
183 |
'not supported') % |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
184 |
{'rtype': rschema, 'etype': etype, 'role': role, |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
185 |
'target': ttype}) |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
186 |
elif ttype in self.sentities: |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
187 |
warning(_('%s could be supported') % rdef) |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
188 |
elif not ttypes: |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
189 |
warning(_('relation %(rtype)s with %(etype)s as %(role)s is ' |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
190 |
'supported but no target type supported') % |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
191 |
{'rtype': rschema, 'role': role, 'etype': etype}) |
10662
10942ed172de
[py3k] dict.iteritems → dict.items
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10609
diff
changeset
|
192 |
for rtype, rdefs in self.srelations.items(): |
7375
c8a8fb32733b
[cw source ui] fix mapping checking for datafeed source (avoid false positive error, but doesn't check that much things)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7019
diff
changeset
|
193 |
if rdefs is None: |
c8a8fb32733b
[cw source ui] fix mapping checking for datafeed source (avoid false positive error, but doesn't check that much things)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7019
diff
changeset
|
194 |
rschema = self.schema[rtype] |
c8a8fb32733b
[cw source ui] fix mapping checking for datafeed source (avoid false positive error, but doesn't check that much things)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7019
diff
changeset
|
195 |
for subj, obj in rschema.rdefs: |
c8a8fb32733b
[cw source ui] fix mapping checking for datafeed source (avoid false positive error, but doesn't check that much things)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7019
diff
changeset
|
196 |
if subj in self.sentities and obj in self.sentities: |
c8a8fb32733b
[cw source ui] fix mapping checking for datafeed source (avoid false positive error, but doesn't check that much things)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7019
diff
changeset
|
197 |
break |
c8a8fb32733b
[cw source ui] fix mapping checking for datafeed source (avoid false positive error, but doesn't check that much things)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7019
diff
changeset
|
198 |
else: |
c8a8fb32733b
[cw source ui] fix mapping checking for datafeed source (avoid false positive error, but doesn't check that much things)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7019
diff
changeset
|
199 |
error(_('relation %s is supported but none of its definitions ' |
c8a8fb32733b
[cw source ui] fix mapping checking for datafeed source (avoid false positive error, but doesn't check that much things)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7019
diff
changeset
|
200 |
'matches supported entities') % rtype) |
6944
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
201 |
self.custom_check() |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
202 |
|
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
203 |
def custom_check(self): |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
204 |
pass |
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
205 |
|
0cf10429ad39
[sources] rewrite the way pyrorql mapping are stored in the database so it can be reused for other sources (eg datafeed+cwxml)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6724
diff
changeset
|
206 |
|
7995
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
207 |
|
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
208 |
class CWSourceImportsTab(EntityView): |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
209 |
__regid__ = 'cwsource-imports' |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
210 |
__select__ = (is_instance('CWSource') |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
211 |
& has_related_entities('cw_import_of', 'object')) |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
212 |
|
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
213 |
def entity_call(self, entity): |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
214 |
rset = self._cw.execute('Any X, XST, XET, XS ORDERBY XST DESC WHERE ' |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
215 |
'X cw_import_of S, S eid %(s)s, X status XS, ' |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
216 |
'X start_timestamp XST, X end_timestamp XET', |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
217 |
{'s': entity.eid}) |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
218 |
self._cw.view('cw.imports-table', rset, w=self.w) |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
219 |
|
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
220 |
|
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
221 |
class CWImportsTable(tableview.EntityTableView): |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
222 |
__regid__ = 'cw.imports-table' |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
223 |
__select__ = is_instance('CWDataImport') |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
224 |
columns = ['import', 'start_timestamp', 'end_timestamp'] |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
225 |
column_renderers = {'import': tableview.MainEntityColRenderer()} |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
226 |
layout_args = {'display_filter': 'top'} |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
227 |
|
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
228 |
|
10951
ef1cfc80d51c
action, view and service so managers can start source synchronization from the web ui
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10666
diff
changeset
|
229 |
class CWSourceSyncAction(action.Action): |
ef1cfc80d51c
action, view and service so managers can start source synchronization from the web ui
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10666
diff
changeset
|
230 |
__regid__ = 'cw.source-sync' |
ef1cfc80d51c
action, view and service so managers can start source synchronization from the web ui
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10666
diff
changeset
|
231 |
__select__ = (action.Action.__select__ & match_user_groups('managers') |
ef1cfc80d51c
action, view and service so managers can start source synchronization from the web ui
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10666
diff
changeset
|
232 |
& one_line_rset() & is_instance('CWSource') |
ef1cfc80d51c
action, view and service so managers can start source synchronization from the web ui
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10666
diff
changeset
|
233 |
& score_entity(lambda x: x.name != 'system')) |
ef1cfc80d51c
action, view and service so managers can start source synchronization from the web ui
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10666
diff
changeset
|
234 |
|
ef1cfc80d51c
action, view and service so managers can start source synchronization from the web ui
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10666
diff
changeset
|
235 |
title = _('synchronize') |
ef1cfc80d51c
action, view and service so managers can start source synchronization from the web ui
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10666
diff
changeset
|
236 |
category = 'mainactions' |
ef1cfc80d51c
action, view and service so managers can start source synchronization from the web ui
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10666
diff
changeset
|
237 |
order = 20 |
ef1cfc80d51c
action, view and service so managers can start source synchronization from the web ui
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10666
diff
changeset
|
238 |
|
ef1cfc80d51c
action, view and service so managers can start source synchronization from the web ui
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10666
diff
changeset
|
239 |
def url(self): |
ef1cfc80d51c
action, view and service so managers can start source synchronization from the web ui
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10666
diff
changeset
|
240 |
entity = self.cw_rset.get_entity(self.cw_row or 0, self.cw_col or 0) |
ef1cfc80d51c
action, view and service so managers can start source synchronization from the web ui
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10666
diff
changeset
|
241 |
return entity.absolute_url(vid=self.__regid__) |
ef1cfc80d51c
action, view and service so managers can start source synchronization from the web ui
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10666
diff
changeset
|
242 |
|
ef1cfc80d51c
action, view and service so managers can start source synchronization from the web ui
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10666
diff
changeset
|
243 |
|
ef1cfc80d51c
action, view and service so managers can start source synchronization from the web ui
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10666
diff
changeset
|
244 |
class CWSourceSyncView(EntityView): |
ef1cfc80d51c
action, view and service so managers can start source synchronization from the web ui
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10666
diff
changeset
|
245 |
__regid__ = 'cw.source-sync' |
ef1cfc80d51c
action, view and service so managers can start source synchronization from the web ui
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10666
diff
changeset
|
246 |
__select__ = (match_user_groups('managers') |
ef1cfc80d51c
action, view and service so managers can start source synchronization from the web ui
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10666
diff
changeset
|
247 |
& one_line_rset() & is_instance('CWSource') |
ef1cfc80d51c
action, view and service so managers can start source synchronization from the web ui
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10666
diff
changeset
|
248 |
& score_entity(lambda x: x.name != 'system')) |
ef1cfc80d51c
action, view and service so managers can start source synchronization from the web ui
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10666
diff
changeset
|
249 |
|
ef1cfc80d51c
action, view and service so managers can start source synchronization from the web ui
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10666
diff
changeset
|
250 |
title = _('synchronize') |
ef1cfc80d51c
action, view and service so managers can start source synchronization from the web ui
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10666
diff
changeset
|
251 |
|
ef1cfc80d51c
action, view and service so managers can start source synchronization from the web ui
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10666
diff
changeset
|
252 |
def entity_call(self, entity): |
ef1cfc80d51c
action, view and service so managers can start source synchronization from the web ui
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10666
diff
changeset
|
253 |
self._cw.call_service('source-sync', source_eid=entity.eid) |
ef1cfc80d51c
action, view and service so managers can start source synchronization from the web ui
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10666
diff
changeset
|
254 |
msg = self._cw._('Source has been synchronized') |
ef1cfc80d51c
action, view and service so managers can start source synchronization from the web ui
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10666
diff
changeset
|
255 |
url = entity.absolute_url(tab='cwsource-imports', __message=msg) |
ef1cfc80d51c
action, view and service so managers can start source synchronization from the web ui
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10666
diff
changeset
|
256 |
raise Redirect(url) |
ef1cfc80d51c
action, view and service so managers can start source synchronization from the web ui
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10666
diff
changeset
|
257 |
|
ef1cfc80d51c
action, view and service so managers can start source synchronization from the web ui
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
10666
diff
changeset
|
258 |
|
7995
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
259 |
|
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
260 |
|
6962
220e32f058be
[management ui] add views to manage sources similarly to users
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6944
diff
changeset
|
261 |
# sources management view ###################################################### |
220e32f058be
[management ui] add views to manage sources similarly to users
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6944
diff
changeset
|
262 |
|
220e32f058be
[management ui] add views to manage sources similarly to users
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6944
diff
changeset
|
263 |
class ManageSourcesAction(actions.ManagersAction): |
220e32f058be
[management ui] add views to manage sources similarly to users
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6944
diff
changeset
|
264 |
__regid__ = 'cwsource' |
220e32f058be
[management ui] add views to manage sources similarly to users
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6944
diff
changeset
|
265 |
title = _('data sources') |
220e32f058be
[management ui] add views to manage sources similarly to users
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6944
diff
changeset
|
266 |
category = 'manage' |
10244
485c7df50ca7
[web/views] set explicit order for ManageSourcesAction
Julien Cristau <julien.cristau@logilab.fr>
parents:
9729
diff
changeset
|
267 |
order = 100 |
6962
220e32f058be
[management ui] add views to manage sources similarly to users
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6944
diff
changeset
|
268 |
|
7994
af3fb709c061
[management table] upgrade sources groups management table to new api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7992
diff
changeset
|
269 |
|
af3fb709c061
[management table] upgrade sources groups management table to new api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7992
diff
changeset
|
270 |
class CWSourcesManagementView(StartupView): |
af3fb709c061
[management table] upgrade sources groups management table to new api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7992
diff
changeset
|
271 |
__regid__ = 'cw.sources-management' |
af3fb709c061
[management table] upgrade sources groups management table to new api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7992
diff
changeset
|
272 |
rql = ('Any S,ST,SP,SD,SN ORDERBY SN WHERE S is CWSource, S name SN, S type ST, ' |
7455
694b21f0fc62
[views] add columns parser and latest_retrieval to cwsource admin view
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
7375
diff
changeset
|
273 |
'S latest_retrieval SD, S parser SP') |
6962
220e32f058be
[management ui] add views to manage sources similarly to users
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6944
diff
changeset
|
274 |
title = _('data sources management') |
220e32f058be
[management ui] add views to manage sources similarly to users
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6944
diff
changeset
|
275 |
|
220e32f058be
[management ui] add views to manage sources similarly to users
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6944
diff
changeset
|
276 |
def call(self, **kwargs): |
220e32f058be
[management ui] add views to manage sources similarly to users
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6944
diff
changeset
|
277 |
self.w('<h1>%s</h1>' % self._cw._(self.title)) |
7852
cb3f700399b2
[schema, cleanup] one more case for add_etype_button
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7846
diff
changeset
|
278 |
self.w(add_etype_button(self._cw, 'CWSource')) |
cb3f700399b2
[schema, cleanup] one more case for add_etype_button
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7846
diff
changeset
|
279 |
self.w(u'<div class="clear"></div>') |
7994
af3fb709c061
[management table] upgrade sources groups management table to new api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7992
diff
changeset
|
280 |
self.wview('cw.sources-table', self._cw.execute(self.rql)) |
af3fb709c061
[management table] upgrade sources groups management table to new api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7992
diff
changeset
|
281 |
|
af3fb709c061
[management table] upgrade sources groups management table to new api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7992
diff
changeset
|
282 |
|
af3fb709c061
[management table] upgrade sources groups management table to new api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7992
diff
changeset
|
283 |
class CWSourcesTable(tableview.EntityTableView): |
af3fb709c061
[management table] upgrade sources groups management table to new api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7992
diff
changeset
|
284 |
__regid__ = 'cw.sources-table' |
af3fb709c061
[management table] upgrade sources groups management table to new api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7992
diff
changeset
|
285 |
__select__ = is_instance('CWSource') |
7995
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
286 |
columns = ['source', 'type', 'parser', 'latest_retrieval', 'latest_import'] |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
287 |
|
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
288 |
class LatestImportColRenderer(tableview.EntityTableColRenderer): |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
289 |
def render_cell(self, w, rownum): |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
290 |
entity = self.entity(rownum) |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
291 |
rset = self._cw.execute('Any X,XS,XST ORDERBY XST DESC LIMIT 1 WHERE ' |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
292 |
'X cw_import_of S, S eid %(s)s, X status XS, ' |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
293 |
'X start_timestamp XST', {'s': entity.eid}) |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
294 |
if rset: |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
295 |
self._cw.view('incontext', rset, row=0, w=w) |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
296 |
else: |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
297 |
w(self.empty_cell_content) |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
298 |
|
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
299 |
column_renderers = { |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
300 |
'source': tableview.MainEntityColRenderer(), |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
301 |
'latest_import': LatestImportColRenderer(header=_('latest import'), |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
302 |
sortable=False) |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
303 |
} |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
304 |
|
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
305 |
# datafeed source import ####################################################### |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
306 |
|
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
307 |
REVERSE_SEVERITIES = { |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
308 |
logging.DEBUG : _('DEBUG'), |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
309 |
logging.INFO : _('INFO'), |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
310 |
logging.WARNING : _('WARNING'), |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
311 |
logging.ERROR : _('ERROR'), |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
312 |
logging.FATAL : _('FATAL') |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
313 |
} |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
314 |
|
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
315 |
|
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
316 |
def log_to_table(req, rawdata): |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
317 |
data = [] |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
318 |
for msg_idx, msg in enumerate(rawdata.split('<br/>')): |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
319 |
record = msg.strip() |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
320 |
if not record: |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
321 |
continue |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
322 |
try: |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
323 |
severity, url, line, msg = record.split('\t', 3) |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
324 |
except ValueError: |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
325 |
req.warning('badly formated log %s' % record) |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
326 |
url = line = u'' |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
327 |
severity = logging.DEBUG |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
328 |
msg = record |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
329 |
data.append( (severity, url, line, msg) ) |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
330 |
return data |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
331 |
|
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
332 |
|
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
333 |
class LogTableLayout(tableview.TableLayout): |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
334 |
__select__ = match_view('cw.log.table') |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
335 |
needs_js = tableview.TableLayout.needs_js + ('cubicweb.log.js',) |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
336 |
needs_css = tableview.TableLayout.needs_css + ('cubicweb.log.css',) |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
337 |
columns_css = { |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
338 |
0: 'logSeverity', |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
339 |
1: 'logPath', |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
340 |
2: 'logLine', |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
341 |
3: 'logMsg', |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
342 |
} |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
343 |
|
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
344 |
def render_table(self, w, actions, paginate): |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
345 |
default_level = self.view.cw_extra_kwargs['default_level'] |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
346 |
if default_level != 'Debug': |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
347 |
self._cw.add_onload('$("select.logFilter").val("%s").change();' |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
348 |
% self._cw.form.get('logLevel', default_level)) |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
349 |
w(u'\n<form action="#"><fieldset>') |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
350 |
w(u'<label>%s</label>' % self._cw._(u'Message threshold')) |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
351 |
w(u'<select class="log_filter" onchange="filterLog(\'%s\', this.options[this.selectedIndex].value)">' |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
352 |
% self.view.domid) |
8407
6874eb7a08e8
[logs table view] properly translate level buy using the correct msgid. Closes #2356329
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8405
diff
changeset
|
353 |
for level in ('DEBUG', 'INFO', 'WARNING', 'ERROR', 'FATAL'): |
6874eb7a08e8
[logs table view] properly translate level buy using the correct msgid. Closes #2356329
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8405
diff
changeset
|
354 |
w('<option value="%s">%s</option>' % (level.capitalize(), |
6874eb7a08e8
[logs table view] properly translate level buy using the correct msgid. Closes #2356329
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8405
diff
changeset
|
355 |
self._cw._(level))) |
7995
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
356 |
w(u'</select>') |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
357 |
w(u'</fieldset></form>') |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
358 |
super(LogTableLayout, self).render_table(w, actions, paginate) |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
359 |
|
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
360 |
def table_attributes(self): |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
361 |
attrs = super(LogTableLayout, self).table_attributes() |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
362 |
attrs['id'] = 'table'+self.view.domid |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
363 |
return attrs |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
364 |
|
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
365 |
def row_attributes(self, rownum): |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
366 |
attrs = super(LogTableLayout, self).row_attributes(rownum) |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
367 |
attrs['id'] = 'log_msg_%i' % rownum |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
368 |
severityname = REVERSE_SEVERITIES[int(self.view.pyvalue[rownum][0])] |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
369 |
attrs['class'] = 'log%s' % severityname.capitalize() |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
370 |
return attrs |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
371 |
|
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
372 |
def cell_attributes(self, rownum, colnum, colid): |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
373 |
attrs = super(LogTableLayout, self).cell_attributes(rownum, colnum, colid) |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
374 |
attrs['class'] = self.columns_css[colnum] |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
375 |
return attrs |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
376 |
|
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
377 |
|
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
378 |
class LogTable(pyviews.PyValTableView): |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
379 |
__regid__ = 'cw.log.table' |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
380 |
headers = [_('severity'), _('url'), _('line'), _('message')] |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
381 |
|
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
382 |
@cachedproperty |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
383 |
def domid(self): |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
384 |
return make_uid('logTable') |
7994
af3fb709c061
[management table] upgrade sources groups management table to new api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7992
diff
changeset
|
385 |
|
7995
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
386 |
class SeverityRenderer(pyviews.PyValTableColRenderer): |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
387 |
def render_cell(self, w, rownum): |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
388 |
severity = self.data[rownum][0] |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
389 |
w(u'<a class="internallink" href="javascript:;" title="%(title)s" ' |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
390 |
u'''onclick="document.location.hash='%(msg_id)s';">¶</a>''' |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
391 |
u' %(severity)s' % { |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
392 |
'severity': self._cw._(REVERSE_SEVERITIES[int(severity)]), |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
393 |
'title': self._cw._('permalink to this message'), |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
394 |
'msg_id': 'log_msg_%i' % rownum, |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
395 |
}) |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
396 |
def sortvalue(self, rownum): |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
397 |
return int(self.data[rownum][0]) |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
398 |
|
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
399 |
class URLRenderer(pyviews.PyValTableColRenderer): |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
400 |
def render_cell(self, w, rownum): |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
401 |
url = self.data[rownum][1] |
8405
e83725261adf
[logs table view] only put values starting with http in <a> tag
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8166
diff
changeset
|
402 |
if url and url.startswith('http'): |
e83725261adf
[logs table view] only put values starting with http in <a> tag
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8166
diff
changeset
|
403 |
url = tags.a(url, href=url) |
e83725261adf
[logs table view] only put values starting with http in <a> tag
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8166
diff
changeset
|
404 |
w(url or u' ') |
7995
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
405 |
|
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
406 |
class LineRenderer(pyviews.PyValTableColRenderer): |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
407 |
def render_cell(self, w, rownum): |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
408 |
line = self.data[rownum][2] |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
409 |
w(line or u' ') |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
410 |
|
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
411 |
class MessageRenderer(pyviews.PyValTableColRenderer): |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
412 |
snip_over = 7 |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
413 |
def render_cell(self, w, rownum): |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
414 |
msg = self.data[rownum][3] |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
415 |
lines = msg.splitlines() |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
416 |
if len(lines) <= self.snip_over: |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
417 |
w(u'<pre class="rawtext">%s</pre>' % msg) |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
418 |
else: |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
419 |
# The make_uid argument has no specific meaning here. |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
420 |
div_snip_id = make_uid(u'log_snip_') |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
421 |
div_full_id = make_uid(u'log_full_') |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
422 |
divs_id = (div_snip_id, div_full_id) |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
423 |
snip = u'\n'.join((lines[0], lines[1], |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
424 |
u' ...', |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
425 |
u' %i more lines [double click to expand]' % (len(lines)-4), |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
426 |
u' ...', |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
427 |
lines[-2], lines[-1])) |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
428 |
divs = ( |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
429 |
(div_snip_id, snip, u'expand', "class='collapsed'"), |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
430 |
(div_full_id, msg, u'collapse', "class='hidden'") |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
431 |
) |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
432 |
for div_id, content, button, h_class in divs: |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
433 |
text = self._cw._(button) |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
434 |
js = u"toggleVisibility('%s'); toggleVisibility('%s');" % divs_id |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
435 |
w(u'<div id="%s" %s>' % (div_id, h_class)) |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
436 |
w(u'<pre class="raw_test" ondblclick="javascript: %s" ' |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
437 |
u'title="%s" style="display: block;">' % (js, text)) |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
438 |
w(content) |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
439 |
w(u'</pre>') |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
440 |
w(u'</div>') |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
441 |
|
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
442 |
column_renderers = {0: SeverityRenderer(), |
8166
20809488fe56
[datafeed] Don't pretend all columns are sortable in datafeed sources import log view. Closes #2146387
Julien Cristau <julien.cristau@logilab.fr>
parents:
8150
diff
changeset
|
443 |
1: URLRenderer(sortable=False), |
20809488fe56
[datafeed] Don't pretend all columns are sortable in datafeed sources import log view. Closes #2146387
Julien Cristau <julien.cristau@logilab.fr>
parents:
8150
diff
changeset
|
444 |
2: LineRenderer(sortable=False), |
20809488fe56
[datafeed] Don't pretend all columns are sortable in datafeed sources import log view. Closes #2146387
Julien Cristau <julien.cristau@logilab.fr>
parents:
8150
diff
changeset
|
445 |
3: MessageRenderer(sortable=False), |
7995
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
446 |
} |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
447 |
|
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
448 |
|
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
449 |
class DataFeedSourceDataImport(EntityView): |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
450 |
__select__ = EntityView.__select__ & match_kwargs('rtype') |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
451 |
__regid__ = 'cw.formated_log' |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
452 |
|
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
453 |
def cell_call(self, row, col, rtype, loglevel='Info', **kwargs): |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
454 |
if 'dispctrl' in self.cw_extra_kwargs: |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
455 |
loglevel = self.cw_extra_kwargs['dispctrl'].get('loglevel', loglevel) |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
456 |
entity = self.cw_rset.get_entity(row, col) |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
457 |
value = getattr(entity, rtype) |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
458 |
if value: |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
459 |
self._cw.view('cw.log.table', pyvalue=log_to_table(self._cw, value), |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
460 |
default_level=loglevel, w=self.w) |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
461 |
else: |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
462 |
self.w(self._cw._('no log to display')) |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
463 |
|
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
464 |
|
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
465 |
_pvs.tag_attribute(('CWDataImport', 'log'), 'relations') |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
466 |
_pvdc.tag_attribute(('CWDataImport', 'log'), {'vid': 'cw.formated_log'}) |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
467 |
_pvs.tag_subject_of(('CWDataImport', 'cw_import_of', '*'), 'hidden') # in breadcrumbs |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
468 |
_pvs.tag_object_of(('*', 'cw_import_of', 'CWSource'), 'hidden') # in dedicated tab |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
469 |
|
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
470 |
|
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
471 |
class CWDataImportIPrevNextAdapter(navigation.IPrevNextAdapter): |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
472 |
__select__ = is_instance('CWDataImport') |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
473 |
|
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
474 |
def next_entity(self): |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
475 |
if self.entity.start_timestamp is not None: |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
476 |
# add NOT X eid %(e)s because > may not be enough |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
477 |
rset = self._cw.execute( |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
478 |
'Any X,XSTS ORDERBY 2 LIMIT 1 WHERE X is CWDataImport, ' |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
479 |
'X cw_import_of S, S eid %(s)s, NOT X eid %(e)s, ' |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
480 |
'X start_timestamp XSTS, X start_timestamp > %(sts)s', |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
481 |
{'sts': self.entity.start_timestamp, |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
482 |
'e': self.entity.eid, |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
483 |
's': self.entity.cwsource.eid}) |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
484 |
if rset: |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
485 |
return rset.get_entity(0, 0) |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
486 |
|
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
487 |
def previous_entity(self): |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
488 |
if self.entity.start_timestamp is not None: |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
489 |
# add NOT X eid %(e)s because < may not be enough |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
490 |
rset = self._cw.execute( |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
491 |
'Any X,XSTS ORDERBY 2 DESC LIMIT 1 WHERE X is CWDataImport, ' |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
492 |
'X cw_import_of S, S eid %(s)s, NOT X eid %(e)s, ' |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
493 |
'X start_timestamp XSTS, X start_timestamp < %(sts)s', |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
494 |
{'sts': self.entity.start_timestamp, |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
495 |
'e': self.entity.eid, |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
496 |
's': self.entity.cwsource.eid}) |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
497 |
if rset: |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
498 |
return rset.get_entity(0, 0) |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
499 |
|
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
500 |
class CWDataImportStatusFacet(facet.AttributeFacet): |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
501 |
__regid__ = 'datafeed.dataimport.status' |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
502 |
__select__ = is_instance('CWDataImport') |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
503 |
rtype = 'status' |
7832
953f224357af
[sources management] nicer source management view and breadcrumbs (closes #1946329)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7806
diff
changeset
|
504 |
|
953f224357af
[sources management] nicer source management view and breadcrumbs (closes #1946329)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7806
diff
changeset
|
505 |
|
953f224357af
[sources management] nicer source management view and breadcrumbs (closes #1946329)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7806
diff
changeset
|
506 |
# breadcrumbs configuration #################################################### |
953f224357af
[sources management] nicer source management view and breadcrumbs (closes #1946329)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7806
diff
changeset
|
507 |
|
953f224357af
[sources management] nicer source management view and breadcrumbs (closes #1946329)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7806
diff
changeset
|
508 |
class CWsourceConfigIBreadCrumbsAdapter(ibreadcrumbs.IBreadCrumbsAdapter): |
953f224357af
[sources management] nicer source management view and breadcrumbs (closes #1946329)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7806
diff
changeset
|
509 |
__select__ = is_instance('CWSourceHostConfig', 'CWSourceSchemaConfig') |
953f224357af
[sources management] nicer source management view and breadcrumbs (closes #1946329)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7806
diff
changeset
|
510 |
def parent_entity(self): |
953f224357af
[sources management] nicer source management view and breadcrumbs (closes #1946329)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7806
diff
changeset
|
511 |
return self.entity.cwsource |
7995
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
512 |
|
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
513 |
class CWDataImportIBreadCrumbsAdapter(ibreadcrumbs.IBreadCrumbsAdapter): |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
514 |
__select__ = is_instance('CWDataImport') |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
515 |
def parent_entity(self): |
9a9f35ef418c
Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7994
diff
changeset
|
516 |
return self.entity.cw_import_of[0] |