test/data/views.py
author Julien Cristau <julien.cristau@logilab.fr>
Tue, 28 Jul 2015 09:25:26 +0200
changeset 10553 1d824df4f2bd
parent 8366 6599f69bb846
permissions -rw-r--r--
Fix (de)serialization of ComputedRelation read permissions For normal relation types, permissions don't need to be stored since they're just default values for the relation definitions. However, computed relations are serialized (as CWComputedRType), while their relation definitions are added at schema finalization time, and are only in memory. So add the 'read_permission' relation to CWComputedRType, and the appropriate hooks to save and restore those permissions. To avoid having to touch yams, we drop the 'add' and 'delete' permissions from the default computed relation permissions; this should probably be backported there. The actual permissions (set on the relation definitions) are hardcoded in finalize_computed_relations anyway. In deserialize_schema, the CWComputedRType handling needs to be delayed a little bit, until after we've called deserialize_ertype_permissions. The rql2sql test is adjusted because CWComputedRType has a 'name' attribute and the 'read_permission' relation, which generates ambiguity vs CWEType. We add an explicit CubicWebRelationSchema.check_permission_definitions, since we need to check both that computed and non-computed rtypes are defined properly. Based on report and initial patch from Christophe de Vienne (thanks!). Closes #5706307
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5421
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4487
diff changeset
     1
# copyright 2003-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4487
diff changeset
     2
# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4487
diff changeset
     3
#
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4487
diff changeset
     4
# This file is part of CubicWeb.
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4487
diff changeset
     5
#
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4487
diff changeset
     6
# CubicWeb is free software: you can redistribute it and/or modify it under the
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4487
diff changeset
     7
# terms of the GNU Lesser General Public License as published by the Free
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4487
diff changeset
     8
# Software Foundation, either version 2.1 of the License, or (at your option)
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4487
diff changeset
     9
# any later version.
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4487
diff changeset
    10
#
5424
8ecbcbff9777 replace logilab-common by CubicWeb in disclaimer
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5421
diff changeset
    11
# CubicWeb is distributed in the hope that it will be useful, but WITHOUT
5421
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4487
diff changeset
    12
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4487
diff changeset
    13
# FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4487
diff changeset
    14
# details.
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4487
diff changeset
    15
#
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4487
diff changeset
    16
# You should have received a copy of the GNU Lesser General Public License along
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4487
diff changeset
    17
# with CubicWeb.  If not, see <http://www.gnu.org/licenses/>.
4487
632369f43baf missing test data
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff changeset
    18
from cubicweb.web.views import xmlrss
632369f43baf missing test data
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff changeset
    19
xmlrss.RSSIconBox.visible = True
8366
6599f69bb846 fix ``call_service`` API and add test service API
Florent Cayré <florent.cayre@logilab.fr>
parents: 5424
diff changeset
    20
6599f69bb846 fix ``call_service`` API and add test service API
Florent Cayré <florent.cayre@logilab.fr>
parents: 5424
diff changeset
    21
6599f69bb846 fix ``call_service`` API and add test service API
Florent Cayré <florent.cayre@logilab.fr>
parents: 5424
diff changeset
    22
from cubicweb.predicates import match_user_groups
6599f69bb846 fix ``call_service`` API and add test service API
Florent Cayré <florent.cayre@logilab.fr>
parents: 5424
diff changeset
    23
from cubicweb.server import Service
6599f69bb846 fix ``call_service`` API and add test service API
Florent Cayré <florent.cayre@logilab.fr>
parents: 5424
diff changeset
    24
6599f69bb846 fix ``call_service`` API and add test service API
Florent Cayré <florent.cayre@logilab.fr>
parents: 5424
diff changeset
    25
6599f69bb846 fix ``call_service`` API and add test service API
Florent Cayré <florent.cayre@logilab.fr>
parents: 5424
diff changeset
    26
class TestService(Service):
6599f69bb846 fix ``call_service`` API and add test service API
Florent Cayré <florent.cayre@logilab.fr>
parents: 5424
diff changeset
    27
    __regid__ = 'test_service'
6599f69bb846 fix ``call_service`` API and add test service API
Florent Cayré <florent.cayre@logilab.fr>
parents: 5424
diff changeset
    28
    __select__ = Service.__select__ & match_user_groups('managers')
6599f69bb846 fix ``call_service`` API and add test service API
Florent Cayré <florent.cayre@logilab.fr>
parents: 5424
diff changeset
    29
    passed_here = []
6599f69bb846 fix ``call_service`` API and add test service API
Florent Cayré <florent.cayre@logilab.fr>
parents: 5424
diff changeset
    30
6599f69bb846 fix ``call_service`` API and add test service API
Florent Cayré <florent.cayre@logilab.fr>
parents: 5424
diff changeset
    31
    def call(self, msg):
6599f69bb846 fix ``call_service`` API and add test service API
Florent Cayré <florent.cayre@logilab.fr>
parents: 5424
diff changeset
    32
        self.passed_here.append(msg)
6599f69bb846 fix ``call_service`` API and add test service API
Florent Cayré <florent.cayre@logilab.fr>
parents: 5424
diff changeset
    33
        return 'babar'