schemas/base.py
author Rémi Cardona <remi.cardona@logilab.fr>
Wed, 19 Nov 2014 12:13:32 +0100
changeset 10090 0aebb1c0f849
parent 9541 e8040107b97e
child 10371 88577b10b31e
child 10386 82071f767cb8
permissions -rw-r--r--
[utils] Add a '_cwtracehtml' GET parameter to trace self._cw.w() calls (closes #4601327) The core of this patch is in UStringIO.write(). When tracing is enabled, write() doesn't just append the 'value' argument to the underlying list. Instead, a stack trace is recorded and a special HTML "source" is formatted. The output with tracing enabled is an HTML page, with the original HTML escaped, and made clickable to show the stack trace when the write() call was done. This allows answering the recurring question: "who wrote this tag here?!"
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8190
2a3c1b787688 [vreg] move base registry implementation to logilab.common. Closes #1916014
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 8158
diff changeset
     1
# copyright 2003-2012 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
5421
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4759
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: 4759
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: 4759
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: 4759
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: 4759
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: 4759
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: 4759
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: 4759
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: 4759
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: 4759
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: 4759
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: 4759
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: 4759
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: 4759
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: 4759
diff changeset
    17
# with CubicWeb.  If not, see <http://www.gnu.org/licenses/>.
5896
67683b7e591a cleanups
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5577
diff changeset
    18
"""core CubicWeb schema, but not necessary at bootstrap time"""
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    19
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    20
__docformat__ = "restructuredtext en"
2140
1cba3393ba01 update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 1977
diff changeset
    21
_ = unicode
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    22
6427
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
    23
from yams.buildobjs import (EntityType, RelationType, RelationDefinition,
7456
c54038622fc9 [datafeed] use a boolean flag on CWSource to ensure we don't have concurrent synchronizations. Closes #1725690
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7399
diff changeset
    24
                            SubjectRelation,
7927
44d6e41c0b62 [schema] add missing import (trigger warning)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7922
diff changeset
    25
                            String, TZDatetime, Datetime, Password, Interval,
44d6e41c0b62 [schema] add missing import (trigger warning)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7922
diff changeset
    26
                            Boolean)
4754
6bf17f810975 [schema] new constants for permissions definitions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4719
diff changeset
    27
from cubicweb.schema import (
6bf17f810975 [schema] new constants for permissions definitions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4719
diff changeset
    28
    RQLConstraint, WorkflowableEntityType, ERQLExpression, RRQLExpression,
6bf17f810975 [schema] new constants for permissions definitions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4719
diff changeset
    29
    PUB_SYSTEM_ENTITY_PERMS, PUB_SYSTEM_REL_PERMS, PUB_SYSTEM_ATTR_PERMS)
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    30
1398
5fe84a5f7035 rename internal entity types to have CW prefix instead of E
sylvain.thenault@logilab.fr
parents: 1303
diff changeset
    31
class CWUser(WorkflowableEntityType):
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    32
    """define a CubicWeb user"""
3877
7ca53fc72a0a reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 3277
diff changeset
    33
    __permissions__ = {
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    34
        'read':   ('managers', 'users', ERQLExpression('X identity U')),
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    35
        'add':    ('managers',),
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    36
        'delete': ('managers',),
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    37
        'update': ('managers', ERQLExpression('X identity U, NOT U in_group G, G name "guests"'),),
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    38
        }
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    39
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    40
    login     = String(required=True, unique=True, maxsize=64,
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    41
                       description=_('unique identifier used to connect to the application'))
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    42
    upassword = Password(required=True) # password is a reserved word for mysql
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    43
    firstname = String(maxsize=64)
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    44
    surname   = String(maxsize=64)
7922
d307c3817782 [repository] use utcnow instead of now for some internal timetamps (closes #1988458)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7921
diff changeset
    45
    last_login_time = TZDatetime(description=_('last connection date'))
1398
5fe84a5f7035 rename internal entity types to have CW prefix instead of E
sylvain.thenault@logilab.fr
parents: 1303
diff changeset
    46
    in_group = SubjectRelation('CWGroup', cardinality='+*',
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    47
                               constraints=[RQLConstraint('NOT O name "owners"')],
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    48
                               description=_('groups grant permissions to the user'))
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    49
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    50
2140
1cba3393ba01 update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 1977
diff changeset
    51
class EmailAddress(EntityType):
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    52
    """an electronic mail address associated to a short alias"""
3877
7ca53fc72a0a reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 3277
diff changeset
    53
    __permissions__ = {
8158
2ee254e74382 [schema] restrictive email address read permission. Closes #2148141
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7995
diff changeset
    54
        # application that wishes public email, or use it for something else
2ee254e74382 [schema] restrictive email address read permission. Closes #2148141
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7995
diff changeset
    55
        # than users (eg Company, Person), should explicitly change permissions
2ee254e74382 [schema] restrictive email address read permission. Closes #2148141
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7995
diff changeset
    56
        'read':   ('managers', ERQLExpression('U use_email X')),
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    57
        'add':    ('managers', 'users',),
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    58
        'delete': ('managers', 'owners', ERQLExpression('P use_email X, U has_update_permission P')),
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    59
        'update': ('managers', 'owners', ERQLExpression('P use_email X, U has_update_permission P')),
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    60
        }
1451
982e8616d9a2 delete-trailing-whitespaces
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
    61
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    62
    alias   = String(fulltextindexed=True, maxsize=56)
6427
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
    63
    address = String(required=True,  fulltextindexed=True,
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    64
                     indexed=True, unique=True, maxsize=128)
3204
0b766b8a13e1 #370578: change EmailAddress identical_to/canonical to prefered_form
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2656
diff changeset
    65
    prefered_form = SubjectRelation('EmailAddress', cardinality='?*',
0b766b8a13e1 #370578: change EmailAddress identical_to/canonical to prefered_form
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2656
diff changeset
    66
                                    description=_('when multiple addresses are equivalent \
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    67
(such as python-projects@logilab.org and python-projects@lists.logilab.org), set this \
3204
0b766b8a13e1 #370578: change EmailAddress identical_to/canonical to prefered_form
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2656
diff changeset
    68
to indicate which is the preferred form.'))
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    69
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    70
class use_email(RelationType):
7733
432e1f0d4857 [schema] use definition for `use_email` relation instead of type declaration (closes: #1894929)
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 7690
diff changeset
    71
    fulltext_container = 'subject'
432e1f0d4857 [schema] use definition for `use_email` relation instead of type declaration (closes: #1894929)
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 7690
diff changeset
    72
7739
12a802ba5311 [base schema] do similar changes as use_email for primary_email
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7733
diff changeset
    73
7733
432e1f0d4857 [schema] use definition for `use_email` relation instead of type declaration (closes: #1894929)
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 7690
diff changeset
    74
class use_email_relation(RelationDefinition):
432e1f0d4857 [schema] use definition for `use_email` relation instead of type declaration (closes: #1894929)
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 7690
diff changeset
    75
    """user's email account"""
432e1f0d4857 [schema] use definition for `use_email` relation instead of type declaration (closes: #1894929)
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 7690
diff changeset
    76
    name = "use_email"
3877
7ca53fc72a0a reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 3277
diff changeset
    77
    __permissions__ = {
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    78
        'read':   ('managers', 'users', 'guests',),
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    79
        'add':    ('managers', RRQLExpression('U has_update_permission S'),),
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    80
        'delete': ('managers', RRQLExpression('U has_update_permission S'),),
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    81
        }
7733
432e1f0d4857 [schema] use definition for `use_email` relation instead of type declaration (closes: #1894929)
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 7690
diff changeset
    82
    subject = "CWUser"
432e1f0d4857 [schema] use definition for `use_email` relation instead of type declaration (closes: #1894929)
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 7690
diff changeset
    83
    object = "EmailAddress"
432e1f0d4857 [schema] use definition for `use_email` relation instead of type declaration (closes: #1894929)
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 7690
diff changeset
    84
    cardinality = '*?'
432e1f0d4857 [schema] use definition for `use_email` relation instead of type declaration (closes: #1894929)
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 7690
diff changeset
    85
    composite = 'subject'
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    86
7739
12a802ba5311 [base schema] do similar changes as use_email for primary_email
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7733
diff changeset
    87
12a802ba5311 [base schema] do similar changes as use_email for primary_email
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7733
diff changeset
    88
class primary_email(RelationDefinition):
7745
1013c31bfbee [.po generation] closes #1902315: c i18ncube doesn't consider relation definition description
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7739
diff changeset
    89
    """the prefered email"""
7739
12a802ba5311 [base schema] do similar changes as use_email for primary_email
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7733
diff changeset
    90
    __permissions__ = {
12a802ba5311 [base schema] do similar changes as use_email for primary_email
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7733
diff changeset
    91
        'read':   ('managers', 'users', 'guests',),
12a802ba5311 [base schema] do similar changes as use_email for primary_email
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7733
diff changeset
    92
        'add':    ('managers', RRQLExpression('U has_update_permission S'),),
12a802ba5311 [base schema] do similar changes as use_email for primary_email
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7733
diff changeset
    93
        'delete': ('managers', RRQLExpression('U has_update_permission S'),),
12a802ba5311 [base schema] do similar changes as use_email for primary_email
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7733
diff changeset
    94
        }
12a802ba5311 [base schema] do similar changes as use_email for primary_email
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7733
diff changeset
    95
    subject = "CWUser"
12a802ba5311 [base schema] do similar changes as use_email for primary_email
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7733
diff changeset
    96
    object = "EmailAddress"
12a802ba5311 [base schema] do similar changes as use_email for primary_email
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7733
diff changeset
    97
    cardinality = '??'
12a802ba5311 [base schema] do similar changes as use_email for primary_email
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7733
diff changeset
    98
    constraints= [RQLConstraint('S use_email O')]
12a802ba5311 [base schema] do similar changes as use_email for primary_email
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7733
diff changeset
    99
1451
982e8616d9a2 delete-trailing-whitespaces
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
   100
3204
0b766b8a13e1 #370578: change EmailAddress identical_to/canonical to prefered_form
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2656
diff changeset
   101
class prefered_form(RelationType):
3877
7ca53fc72a0a reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 3277
diff changeset
   102
    __permissions__ = {
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   103
        'read':   ('managers', 'users', 'guests',),
3877
7ca53fc72a0a reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 3277
diff changeset
   104
        # XXX should have update __permissions__ on both subject and object,
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   105
        #     though by doing this we will probably have no way to add
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   106
        #     this relation in the web ui. The easiest way to acheive this
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   107
        #     is probably to be able to have "U has_update_permission O" as
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   108
        #     RQLConstraint of the relation definition, though this is not yet
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   109
        #     possible
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   110
        'add':    ('managers', RRQLExpression('U has_update_permission S'),),
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   111
        'delete': ('managers', RRQLExpression('U has_update_permission S'),),
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   112
        }
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   113
2140
1cba3393ba01 update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 1977
diff changeset
   114
class in_group(RelationType):
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   115
    """core relation indicating a user's groups"""
4754
6bf17f810975 [schema] new constants for permissions definitions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4719
diff changeset
   116
    __permissions__ = PUB_SYSTEM_REL_PERMS
1451
982e8616d9a2 delete-trailing-whitespaces
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
   117
2140
1cba3393ba01 update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 1977
diff changeset
   118
class owned_by(RelationType):
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   119
    """core relation indicating owners of an entity. This relation
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   120
    implicitly put the owner into the owners group for the entity
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   121
    """
3877
7ca53fc72a0a reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 3277
diff changeset
   122
    __permissions__ = {
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   123
        'read':   ('managers', 'users', 'guests'),
1451
982e8616d9a2 delete-trailing-whitespaces
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
   124
        'add':    ('managers', RRQLExpression('S owned_by U'),),
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   125
        'delete': ('managers', RRQLExpression('S owned_by U'),),
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   126
        }
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   127
    # 0..n cardinality for entities created by internal session (no attached user)
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   128
    # and to support later deletion of a user which has created some entities
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   129
    cardinality = '**'
2438
576f4d51f826 [cleanup] fix deprecation warnings
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2297
diff changeset
   130
    subject = '*'
1398
5fe84a5f7035 rename internal entity types to have CW prefix instead of E
sylvain.thenault@logilab.fr
parents: 1303
diff changeset
   131
    object = 'CWUser'
1451
982e8616d9a2 delete-trailing-whitespaces
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
   132
2140
1cba3393ba01 update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 1977
diff changeset
   133
class created_by(RelationType):
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   134
    """core relation indicating the original creator of an entity"""
3877
7ca53fc72a0a reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 3277
diff changeset
   135
    __permissions__ = {
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   136
        'read':   ('managers', 'users', 'guests'),
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   137
        'add':    ('managers',),
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   138
        'delete': ('managers',),
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   139
        }
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   140
    # 0..1 cardinality for entities created by internal session (no attached user)
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   141
    # and to support later deletion of a user which has created some entities
1451
982e8616d9a2 delete-trailing-whitespaces
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
   142
    cardinality = '?*'
2438
576f4d51f826 [cleanup] fix deprecation warnings
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2297
diff changeset
   143
    subject = '*'
1398
5fe84a5f7035 rename internal entity types to have CW prefix instead of E
sylvain.thenault@logilab.fr
parents: 1303
diff changeset
   144
    object = 'CWUser'
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   145
1451
982e8616d9a2 delete-trailing-whitespaces
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
   146
2140
1cba3393ba01 update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 1977
diff changeset
   147
class creation_date(RelationType):
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   148
    """creation time of an entity"""
4755
13a5d3a7410e [schema] tweaks meta-relations and schema/workflow entities attributes permissions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4754
diff changeset
   149
    __permissions__ = PUB_SYSTEM_ATTR_PERMS
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   150
    cardinality = '11'
2438
576f4d51f826 [cleanup] fix deprecation warnings
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2297
diff changeset
   151
    subject = '*'
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   152
    object = 'Datetime'
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   153
2140
1cba3393ba01 update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 1977
diff changeset
   154
class modification_date(RelationType):
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   155
    """latest modification time of an entity"""
4755
13a5d3a7410e [schema] tweaks meta-relations and schema/workflow entities attributes permissions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4754
diff changeset
   156
    __permissions__ = PUB_SYSTEM_ATTR_PERMS
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   157
    cardinality = '11'
2438
576f4d51f826 [cleanup] fix deprecation warnings
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 2297
diff changeset
   158
    subject = '*'
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   159
    object = 'Datetime'
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   160
2456
aa25d6b244c8 new cwuri metadata + a few tests fixes on the way
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 2441
diff changeset
   161
class cwuri(RelationType):
aa25d6b244c8 new cwuri metadata + a few tests fixes on the way
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 2441
diff changeset
   162
    """internal entity uri"""
4755
13a5d3a7410e [schema] tweaks meta-relations and schema/workflow entities attributes permissions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4754
diff changeset
   163
    __permissions__ = PUB_SYSTEM_ATTR_PERMS
2456
aa25d6b244c8 new cwuri metadata + a few tests fixes on the way
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 2441
diff changeset
   164
    cardinality = '11'
2464
926696e38502 usage of '**' is deprecated in RelationType declaration, use '*' instead
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 2456
diff changeset
   165
    subject = '*'
2456
aa25d6b244c8 new cwuri metadata + a few tests fixes on the way
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 2441
diff changeset
   166
    object = 'String'
aa25d6b244c8 new cwuri metadata + a few tests fixes on the way
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 2441
diff changeset
   167
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   168
3392
36bcf206e157 [schema] CWProperty is required at bootstrap time
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3277
diff changeset
   169
# XXX find a better relation name
2140
1cba3393ba01 update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 1977
diff changeset
   170
class for_user(RelationType):
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   171
    """link a property to the user which want this property customization. Unless
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   172
    you're a site manager, this relation will be handled automatically.
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   173
    """
3877
7ca53fc72a0a reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 3277
diff changeset
   174
    __permissions__ = {
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   175
        'read':   ('managers', 'users', 'guests'),
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   176
        'add':    ('managers',),
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   177
        'delete': ('managers',),
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   178
        }
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   179
    inlined = True
3392
36bcf206e157 [schema] CWProperty is required at bootstrap time
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3277
diff changeset
   180
    subject = 'CWProperty'
36bcf206e157 [schema] CWProperty is required at bootstrap time
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3277
diff changeset
   181
    object = 'CWUser'
36bcf206e157 [schema] CWProperty is required at bootstrap time
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3277
diff changeset
   182
    composite = 'object'
36bcf206e157 [schema] CWProperty is required at bootstrap time
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3277
diff changeset
   183
    cardinality = '?*'
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   184
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   185
1451
982e8616d9a2 delete-trailing-whitespaces
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
   186
2434
ed85d69576b4 add sameAs support in cubicweb standard schema
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 2297
diff changeset
   187
class ExternalUri(EntityType):
ed85d69576b4 add sameAs support in cubicweb standard schema
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 2297
diff changeset
   188
    """a URI representing an object in external data store"""
ed85d69576b4 add sameAs support in cubicweb standard schema
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 2297
diff changeset
   189
    uri = String(required=True, unique=True, maxsize=256,
ed85d69576b4 add sameAs support in cubicweb standard schema
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 2297
diff changeset
   190
                 description=_('the URI of the object'))
ed85d69576b4 add sameAs support in cubicweb standard schema
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 2297
diff changeset
   191
6427
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   192
2434
ed85d69576b4 add sameAs support in cubicweb standard schema
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 2297
diff changeset
   193
class same_as(RelationType):
ed85d69576b4 add sameAs support in cubicweb standard schema
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 2297
diff changeset
   194
    """generic relation to specify that an external entity represent the same
ed85d69576b4 add sameAs support in cubicweb standard schema
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 2297
diff changeset
   195
    object as a local one:
ed85d69576b4 add sameAs support in cubicweb standard schema
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 2297
diff changeset
   196
       http://www.w3.org/TR/owl-ref/#sameAs-def
ed85d69576b4 add sameAs support in cubicweb standard schema
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 2297
diff changeset
   197
    """
4535
71c86a315a9a update translatable docstring
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4467
diff changeset
   198
    #NOTE: You'll have to explicitly declare which entity types can have a
71c86a315a9a update translatable docstring
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4467
diff changeset
   199
    #same_as relation
3877
7ca53fc72a0a reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 3277
diff changeset
   200
    __permissions__ = {
2434
ed85d69576b4 add sameAs support in cubicweb standard schema
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 2297
diff changeset
   201
        'read':   ('managers', 'users', 'guests',),
ed85d69576b4 add sameAs support in cubicweb standard schema
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 2297
diff changeset
   202
        'add':    ('managers', 'users'),
ed85d69576b4 add sameAs support in cubicweb standard schema
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 2297
diff changeset
   203
        'delete': ('managers', 'owners'),
ed85d69576b4 add sameAs support in cubicweb standard schema
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 2297
diff changeset
   204
        }
5577
4e3ca117c275 [schema] fix same_as cardinality and bump Bookmark.path max length to approximative max url size
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5424
diff changeset
   205
    cardinality = '**'
4467
0e73d299730a fix long-waiting symetric typo: should be spelled symmetric. Add auto database migration on schema deserialization
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4252
diff changeset
   206
    symmetric = True
2434
ed85d69576b4 add sameAs support in cubicweb standard schema
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 2297
diff changeset
   207
    # NOTE: the 'object = ExternalUri' declaration will still be mandatory
ed85d69576b4 add sameAs support in cubicweb standard schema
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 2297
diff changeset
   208
    #       in the cube's schema.
ed85d69576b4 add sameAs support in cubicweb standard schema
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 2297
diff changeset
   209
    object = 'ExternalUri'
1477
b056a49c16dc backport default branch
sylvain.thenault@logilab.fr
parents: 1451 1445
diff changeset
   210
6427
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   211
2140
1cba3393ba01 update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 1977
diff changeset
   212
class CWCache(EntityType):
59
9660bd221553 ECache should be a meta entity
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6
diff changeset
   213
    """a simple cache entity characterized by a name and
9660bd221553 ECache should be a meta entity
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6
diff changeset
   214
    a validity date.
9660bd221553 ECache should be a meta entity
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6
diff changeset
   215
9660bd221553 ECache should be a meta entity
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6
diff changeset
   216
    The target application is responsible for updating timestamp
9660bd221553 ECache should be a meta entity
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6
diff changeset
   217
    when necessary to invalidate the cache (typically in hooks).
9660bd221553 ECache should be a meta entity
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6
diff changeset
   218
2656
a93ae0f6c0ad R [base classes] only AppObject remaning, no more AppRsetObject
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2464
diff changeset
   219
    Also, checkout the AppObject.get_cache() method.
59
9660bd221553 ECache should be a meta entity
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6
diff changeset
   220
    """
4759
af2e6c377c71 cleanups
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4755
diff changeset
   221
    # XXX only handle by hooks, shouldn't be readable/editable at all through
af2e6c377c71 cleanups
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4755
diff changeset
   222
    # the ui and so no permissions should be granted, no?
3877
7ca53fc72a0a reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 3277
diff changeset
   223
    __permissions__ = {
6
29ab115b9fcb change permissions for Ecache
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 0
diff changeset
   224
        'read':   ('managers', 'users', 'guests'),
29ab115b9fcb change permissions for Ecache
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 0
diff changeset
   225
        'add':    ('managers',),
2140
1cba3393ba01 update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 1977
diff changeset
   226
        'update': ('managers', 'users',), # XXX
6
29ab115b9fcb change permissions for Ecache
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 0
diff changeset
   227
        'delete': ('managers',),
29ab115b9fcb change permissions for Ecache
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 0
diff changeset
   228
        }
29ab115b9fcb change permissions for Ecache
Stephanie Marcu <stephanie.marcu@logilab.fr>
parents: 0
diff changeset
   229
6427
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   230
    name = String(required=True, unique=True, maxsize=128,
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   231
                  description=_('name of the cache'))
7922
d307c3817782 [repository] use utcnow instead of now for some internal timetamps (closes #1988458)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7921
diff changeset
   232
    timestamp = TZDatetime(default='NOW')
3204
0b766b8a13e1 #370578: change EmailAddress identical_to/canonical to prefered_form
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2656
diff changeset
   233
0b766b8a13e1 #370578: change EmailAddress identical_to/canonical to prefered_form
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2656
diff changeset
   234
6427
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   235
class CWSource(EntityType):
6853
584679872fd7 [schema] fix CWSource permissions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6622
diff changeset
   236
    __permissions__ = {
584679872fd7 [schema] fix CWSource permissions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6622
diff changeset
   237
        'read':   ('managers', 'users', 'guests'),
584679872fd7 [schema] fix CWSource permissions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6622
diff changeset
   238
        'add':    ('managers',),
584679872fd7 [schema] fix CWSource permissions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6622
diff changeset
   239
        'update': ('managers',),
584679872fd7 [schema] fix CWSource permissions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6622
diff changeset
   240
        'delete': ('managers',),
584679872fd7 [schema] fix CWSource permissions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6622
diff changeset
   241
        }
6427
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   242
    name = String(required=True, unique=True, maxsize=128,
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   243
                  description=_('name of the source'))
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   244
    type = String(required=True, maxsize=20, description=_('type of the source'))
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   245
    config = String(description=_('source\'s configuration. One key=value per '
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   246
                                  'line, authorized keys depending on the '
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   247
                                  'source\'s type'),
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   248
                    __permissions__={
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   249
                        'read':   ('managers',),
9541
e8040107b97e [schema] explicitly declare 'add' permissions for a couple attributes
Julien Cristau <julien.cristau@logilab.fr>
parents: 8190
diff changeset
   250
                        'add':    ('managers',),
6427
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   251
                        'update': ('managers',),
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   252
                        })
6957
ffda12be2e9f [repository] #1460066: backport datafeed cube as cubicweb source
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6944
diff changeset
   253
    # put this here and not in a subclass even if it's only for some sources
ffda12be2e9f [repository] #1460066: backport datafeed cube as cubicweb source
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6944
diff changeset
   254
    # since having subclasses on generic relation (cw_source) double the number
ffda12be2e9f [repository] #1460066: backport datafeed cube as cubicweb source
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6944
diff changeset
   255
    # of rdef in the schema, and make ms planning harder since queries solutions
ffda12be2e9f [repository] #1460066: backport datafeed cube as cubicweb source
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6944
diff changeset
   256
    # may changes when sources are specified
ffda12be2e9f [repository] #1460066: backport datafeed cube as cubicweb source
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6944
diff changeset
   257
    url = String(description=_('URLs from which content will be imported. You can put one url per line'))
ffda12be2e9f [repository] #1460066: backport datafeed cube as cubicweb source
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6944
diff changeset
   258
    parser = String(description=_('parser to use to extract entities from content retrieved at given URLs.'))
7922
d307c3817782 [repository] use utcnow instead of now for some internal timetamps (closes #1988458)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7921
diff changeset
   259
    latest_retrieval = TZDatetime(description=_('latest synchronization time'))
7930
664d52cb936d [schema] drop erroneous default on CWSource.in_synchronization. Closes #1990585
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7927
diff changeset
   260
    in_synchronization = TZDatetime(description=_('start timestamp of the currently in synchronization, or NULL when no synchronization in progress.'))
7921
a93e2ed5877a [datafeed] add max-lifetime for concurrent synchronization lock (closes #1908676)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7826
diff changeset
   261
6427
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   262
6942
18bdddd3740f [source schema] fix permission pb on cw_host_config_of relation + add composite on cw_source, so entities from a source are properly removed when the source is removed
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6882
diff changeset
   263
ENTITY_MANAGERS_PERMISSIONS = {
18bdddd3740f [source schema] fix permission pb on cw_host_config_of relation + add composite on cw_source, so entities from a source are properly removed when the source is removed
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6882
diff changeset
   264
    'read':   ('managers',),
18bdddd3740f [source schema] fix permission pb on cw_host_config_of relation + add composite on cw_source, so entities from a source are properly removed when the source is removed
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6882
diff changeset
   265
    'add':    ('managers',),
18bdddd3740f [source schema] fix permission pb on cw_host_config_of relation + add composite on cw_source, so entities from a source are properly removed when the source is removed
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6882
diff changeset
   266
    'update': ('managers',),
18bdddd3740f [source schema] fix permission pb on cw_host_config_of relation + add composite on cw_source, so entities from a source are properly removed when the source is removed
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6882
diff changeset
   267
    'delete': ('managers',),
18bdddd3740f [source schema] fix permission pb on cw_host_config_of relation + add composite on cw_source, so entities from a source are properly removed when the source is removed
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6882
diff changeset
   268
    }
18bdddd3740f [source schema] fix permission pb on cw_host_config_of relation + add composite on cw_source, so entities from a source are properly removed when the source is removed
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6882
diff changeset
   269
RELATION_MANAGERS_PERMISSIONS = {
18bdddd3740f [source schema] fix permission pb on cw_host_config_of relation + add composite on cw_source, so entities from a source are properly removed when the source is removed
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6882
diff changeset
   270
    'read':   ('managers',),
18bdddd3740f [source schema] fix permission pb on cw_host_config_of relation + add composite on cw_source, so entities from a source are properly removed when the source is removed
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6882
diff changeset
   271
    'add':    ('managers',),
18bdddd3740f [source schema] fix permission pb on cw_host_config_of relation + add composite on cw_source, so entities from a source are properly removed when the source is removed
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6882
diff changeset
   272
    'delete': ('managers',),
18bdddd3740f [source schema] fix permission pb on cw_host_config_of relation + add composite on cw_source, so entities from a source are properly removed when the source is removed
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6882
diff changeset
   273
    }
18bdddd3740f [source schema] fix permission pb on cw_host_config_of relation + add composite on cw_source, so entities from a source are properly removed when the source is removed
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6882
diff changeset
   274
6957
ffda12be2e9f [repository] #1460066: backport datafeed cube as cubicweb source
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6944
diff changeset
   275
6427
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   276
class CWSourceHostConfig(EntityType):
6942
18bdddd3740f [source schema] fix permission pb on cw_host_config_of relation + add composite on cw_source, so entities from a source are properly removed when the source is removed
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6882
diff changeset
   277
    __permissions__ = ENTITY_MANAGERS_PERMISSIONS
6622
27402fe6a94a [core schema] CWSourceHostConfig.match_host only unique per source
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6427
diff changeset
   278
    __unique_together__ = [('match_host', 'cw_host_config_of')]
27402fe6a94a [core schema] CWSourceHostConfig.match_host only unique per source
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6427
diff changeset
   279
    match_host = String(required=True, maxsize=128,
6427
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   280
                        description=_('regexp matching host(s) to which this config applies'))
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   281
    config = String(required=True,
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   282
                    description=_('Source\'s configuration for a particular host. '
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   283
                                  'One key=value per line, authorized keys '
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   284
                                  'depending on the source\'s type, overriding '
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   285
                                  'values defined on the source.'),
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   286
                    __permissions__={
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   287
                        'read':   ('managers',),
9541
e8040107b97e [schema] explicitly declare 'add' permissions for a couple attributes
Julien Cristau <julien.cristau@logilab.fr>
parents: 8190
diff changeset
   288
                        'add':    ('managers',),
6427
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   289
                        'update': ('managers',),
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   290
                        })
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   291
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   292
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   293
class cw_host_config_of(RelationDefinition):
6942
18bdddd3740f [source schema] fix permission pb on cw_host_config_of relation + add composite on cw_source, so entities from a source are properly removed when the source is removed
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6882
diff changeset
   294
    __permissions__ = RELATION_MANAGERS_PERMISSIONS
6427
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   295
    subject = 'CWSourceHostConfig'
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   296
    object = 'CWSource'
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   297
    cardinality = '1*'
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   298
    composite = 'object'
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   299
    inlined = True
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   300
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   301
class cw_source(RelationDefinition):
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   302
    __permissions__ = {
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   303
        'read':   ('managers', 'users', 'guests'),
7399
972ed1843bd8 [multi-sources] support for moving an entity from an external source (closes #343818)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6957
diff changeset
   304
        'add':    ('managers',),
972ed1843bd8 [multi-sources] support for moving an entity from an external source (closes #343818)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6957
diff changeset
   305
        'delete': ('managers',),
6427
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   306
        }
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   307
    subject = '*'
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   308
    object = 'CWSource'
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   309
    cardinality = '1*'
6942
18bdddd3740f [source schema] fix permission pb on cw_host_config_of relation + add composite on cw_source, so entities from a source are properly removed when the source is removed
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6882
diff changeset
   310
    composite = 'object'
6427
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   311
7995
9a9f35ef418c Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents: 7931
diff changeset
   312
9a9f35ef418c Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents: 7931
diff changeset
   313
class CWDataImport(EntityType):
9a9f35ef418c Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents: 7931
diff changeset
   314
    __permissions__ = ENTITY_MANAGERS_PERMISSIONS
9a9f35ef418c Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents: 7931
diff changeset
   315
    start_timestamp = TZDatetime()
9a9f35ef418c Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents: 7931
diff changeset
   316
    end_timestamp = TZDatetime()
9a9f35ef418c Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents: 7931
diff changeset
   317
    log = String()
9a9f35ef418c Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents: 7931
diff changeset
   318
    status = String(required=True, internationalizable=True, indexed=True,
9a9f35ef418c Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents: 7931
diff changeset
   319
                    default='in progress',
9a9f35ef418c Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents: 7931
diff changeset
   320
                    vocabulary=[_('in progress'), _('success'), _('failed')])
9a9f35ef418c Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents: 7931
diff changeset
   321
9a9f35ef418c Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents: 7931
diff changeset
   322
class cw_import_of(RelationDefinition):
9a9f35ef418c Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents: 7931
diff changeset
   323
    __permissions__ = RELATION_MANAGERS_PERMISSIONS
9a9f35ef418c Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents: 7931
diff changeset
   324
    subject = 'CWDataImport'
9a9f35ef418c Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents: 7931
diff changeset
   325
    object = 'CWSource'
9a9f35ef418c Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents: 7931
diff changeset
   326
    cardinality = '1*'
9a9f35ef418c Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents: 7931
diff changeset
   327
    composite = 'object'
9a9f35ef418c Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents: 7931
diff changeset
   328
9a9f35ef418c Record a log of datafeed source imports (closes #2026097)
Julien Cristau <julien.cristau@logilab.fr>
parents: 7931
diff changeset
   329
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: 6942
diff changeset
   330
class CWSourceSchemaConfig(EntityType):
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: 6942
diff changeset
   331
    __permissions__ = ENTITY_MANAGERS_PERMISSIONS
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: 6942
diff changeset
   332
    cw_for_source = SubjectRelation(
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: 6942
diff changeset
   333
        'CWSource', inlined=True, cardinality='1*', composite='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: 6942
diff changeset
   334
        __permissions__=RELATION_MANAGERS_PERMISSIONS)
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: 6942
diff changeset
   335
    options = String(description=_('allowed options depends on the source type'))
6427
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   336
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   337
7690
015396b6e417 [schema] rephrase relation definition since constraint doesn't apply to CWRelation
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7688
diff changeset
   338
class rtype_cw_schema(RelationDefinition):
015396b6e417 [schema] rephrase relation definition since constraint doesn't apply to CWRelation
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7688
diff changeset
   339
    __permissions__ = RELATION_MANAGERS_PERMISSIONS
015396b6e417 [schema] rephrase relation definition since constraint doesn't apply to CWRelation
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7688
diff changeset
   340
    name = 'cw_schema'
015396b6e417 [schema] rephrase relation definition since constraint doesn't apply to CWRelation
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7688
diff changeset
   341
    subject = 'CWSourceSchemaConfig'
015396b6e417 [schema] rephrase relation definition since constraint doesn't apply to CWRelation
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7688
diff changeset
   342
    object = ('CWEType', 'CWRType')
015396b6e417 [schema] rephrase relation definition since constraint doesn't apply to CWRelation
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7688
diff changeset
   343
    inlined = True
015396b6e417 [schema] rephrase relation definition since constraint doesn't apply to CWRelation
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7688
diff changeset
   344
    cardinality = '1*'
015396b6e417 [schema] rephrase relation definition since constraint doesn't apply to CWRelation
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7688
diff changeset
   345
    composite = 'object'
015396b6e417 [schema] rephrase relation definition since constraint doesn't apply to CWRelation
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7688
diff changeset
   346
    constraints = [RQLConstraint('NOT O final TRUE')]
015396b6e417 [schema] rephrase relation definition since constraint doesn't apply to CWRelation
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7688
diff changeset
   347
015396b6e417 [schema] rephrase relation definition since constraint doesn't apply to CWRelation
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7688
diff changeset
   348
class rdef_cw_schema(RelationDefinition):
015396b6e417 [schema] rephrase relation definition since constraint doesn't apply to CWRelation
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7688
diff changeset
   349
    __permissions__ = RELATION_MANAGERS_PERMISSIONS
015396b6e417 [schema] rephrase relation definition since constraint doesn't apply to CWRelation
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7688
diff changeset
   350
    name = 'cw_schema'
015396b6e417 [schema] rephrase relation definition since constraint doesn't apply to CWRelation
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7688
diff changeset
   351
    subject = 'CWSourceSchemaConfig'
015396b6e417 [schema] rephrase relation definition since constraint doesn't apply to CWRelation
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7688
diff changeset
   352
    object = 'CWRelation'
015396b6e417 [schema] rephrase relation definition since constraint doesn't apply to CWRelation
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7688
diff changeset
   353
    inlined = True
015396b6e417 [schema] rephrase relation definition since constraint doesn't apply to CWRelation
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7688
diff changeset
   354
    cardinality = '1*'
015396b6e417 [schema] rephrase relation definition since constraint doesn't apply to CWRelation
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7688
diff changeset
   355
    composite = 'object'
015396b6e417 [schema] rephrase relation definition since constraint doesn't apply to CWRelation
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7688
diff changeset
   356
6427
c8a5ac2d1eaa [schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5896
diff changeset
   357
# "abtract" relation types, no definition in cubicweb itself ###################
3204
0b766b8a13e1 #370578: change EmailAddress identical_to/canonical to prefered_form
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2656
diff changeset
   358
0b766b8a13e1 #370578: change EmailAddress identical_to/canonical to prefered_form
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2656
diff changeset
   359
class identical_to(RelationType):
0b766b8a13e1 #370578: change EmailAddress identical_to/canonical to prefered_form
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2656
diff changeset
   360
    """identical to"""
4467
0e73d299730a fix long-waiting symetric typo: should be spelled symmetric. Add auto database migration on schema deserialization
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4252
diff changeset
   361
    symmetric = True
3877
7ca53fc72a0a reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 3277
diff changeset
   362
    __permissions__ = {
3204
0b766b8a13e1 #370578: change EmailAddress identical_to/canonical to prefered_form
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2656
diff changeset
   363
        'read':   ('managers', 'users', 'guests',),
3877
7ca53fc72a0a reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 3277
diff changeset
   364
        # XXX should have update __permissions__ on both subject and object,
3204
0b766b8a13e1 #370578: change EmailAddress identical_to/canonical to prefered_form
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2656
diff changeset
   365
        #     though by doing this we will probably have no way to add
0b766b8a13e1 #370578: change EmailAddress identical_to/canonical to prefered_form
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2656
diff changeset
   366
        #     this relation in the web ui. The easiest way to acheive this
0b766b8a13e1 #370578: change EmailAddress identical_to/canonical to prefered_form
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2656
diff changeset
   367
        #     is probably to be able to have "U has_update_permission O" as
0b766b8a13e1 #370578: change EmailAddress identical_to/canonical to prefered_form
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2656
diff changeset
   368
        #     RQLConstraint of the relation definition, though this is not yet
0b766b8a13e1 #370578: change EmailAddress identical_to/canonical to prefered_form
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2656
diff changeset
   369
        #     possible
0b766b8a13e1 #370578: change EmailAddress identical_to/canonical to prefered_form
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2656
diff changeset
   370
        'add':    ('managers', RRQLExpression('U has_update_permission S'),),
0b766b8a13e1 #370578: change EmailAddress identical_to/canonical to prefered_form
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2656
diff changeset
   371
        'delete': ('managers', RRQLExpression('U has_update_permission S'),),
0b766b8a13e1 #370578: change EmailAddress identical_to/canonical to prefered_form
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2656
diff changeset
   372
        }
0b766b8a13e1 #370578: change EmailAddress identical_to/canonical to prefered_form
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2656
diff changeset
   373
0b766b8a13e1 #370578: change EmailAddress identical_to/canonical to prefered_form
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2656
diff changeset
   374
class see_also(RelationType):
0b766b8a13e1 #370578: change EmailAddress identical_to/canonical to prefered_form
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2656
diff changeset
   375
    """generic relation to link one entity to another"""
4467
0e73d299730a fix long-waiting symetric typo: should be spelled symmetric. Add auto database migration on schema deserialization
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4252
diff changeset
   376
    symmetric = True
3877
7ca53fc72a0a reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 3277
diff changeset
   377
    __permissions__ = {
3277
4fdb165ae3de fix see_also permissions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 3204
diff changeset
   378
        'read':   ('managers', 'users', 'guests',),
4fdb165ae3de fix see_also permissions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 3204
diff changeset
   379
        'add':    ('managers', RRQLExpression('U has_update_permission S'),),
4fdb165ae3de fix see_also permissions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 3204
diff changeset
   380
        'delete': ('managers', RRQLExpression('U has_update_permission S'),),
4fdb165ae3de fix see_also permissions
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 3204
diff changeset
   381
        }
7797
a71618a75b53 backport stable
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7782
diff changeset
   382
a71618a75b53 backport stable
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7782
diff changeset
   383