author | Julien Cristau <julien.cristau@logilab.fr> |
Mon, 05 Oct 2015 16:54:12 +0200 | |
changeset 10772 | 2ff5afce3216 |
parent 10480 | 770b58f99e66 |
permissions | -rw-r--r-- |
9967
e65873ad0371
[CWEP002] Add support for computed attribute synchronization
Sylvain Thénault
parents:
diff
changeset
|
1 |
# copyright 2014 LOGILAB S.A. (Paris, FRANCE), all rights reserved. |
e65873ad0371
[CWEP002] Add support for computed attribute synchronization
Sylvain Thénault
parents:
diff
changeset
|
2 |
# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr |
e65873ad0371
[CWEP002] Add support for computed attribute synchronization
Sylvain Thénault
parents:
diff
changeset
|
3 |
# |
e65873ad0371
[CWEP002] Add support for computed attribute synchronization
Sylvain Thénault
parents:
diff
changeset
|
4 |
# This file is part of CubicWeb. |
e65873ad0371
[CWEP002] Add support for computed attribute synchronization
Sylvain Thénault
parents:
diff
changeset
|
5 |
# |
e65873ad0371
[CWEP002] Add support for computed attribute synchronization
Sylvain Thénault
parents:
diff
changeset
|
6 |
# CubicWeb is free software: you can redistribute it and/or modify it under the |
e65873ad0371
[CWEP002] Add support for computed attribute synchronization
Sylvain Thénault
parents:
diff
changeset
|
7 |
# terms of the GNU Lesser General Public License as published by the Free |
e65873ad0371
[CWEP002] Add support for computed attribute synchronization
Sylvain Thénault
parents:
diff
changeset
|
8 |
# Software Foundation, either version 2.1 of the License, or (at your option) |
e65873ad0371
[CWEP002] Add support for computed attribute synchronization
Sylvain Thénault
parents:
diff
changeset
|
9 |
# any later version. |
e65873ad0371
[CWEP002] Add support for computed attribute synchronization
Sylvain Thénault
parents:
diff
changeset
|
10 |
# |
e65873ad0371
[CWEP002] Add support for computed attribute synchronization
Sylvain Thénault
parents:
diff
changeset
|
11 |
# CubicWeb is distributed in the hope that it will be useful, but WITHOUT |
e65873ad0371
[CWEP002] Add support for computed attribute synchronization
Sylvain Thénault
parents:
diff
changeset
|
12 |
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
e65873ad0371
[CWEP002] Add support for computed attribute synchronization
Sylvain Thénault
parents:
diff
changeset
|
13 |
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more |
e65873ad0371
[CWEP002] Add support for computed attribute synchronization
Sylvain Thénault
parents:
diff
changeset
|
14 |
# details. |
e65873ad0371
[CWEP002] Add support for computed attribute synchronization
Sylvain Thénault
parents:
diff
changeset
|
15 |
# |
e65873ad0371
[CWEP002] Add support for computed attribute synchronization
Sylvain Thénault
parents:
diff
changeset
|
16 |
# You should have received a copy of the GNU Lesser General Public License along |
e65873ad0371
[CWEP002] Add support for computed attribute synchronization
Sylvain Thénault
parents:
diff
changeset
|
17 |
# with CubicWeb. If not, see <http://www.gnu.org/licenses/>. |
10480
770b58f99e66
[hooks/test] don't rely on RelationDefinition implicitly
Julien Cristau <julien.cristau@logilab.fr>
parents:
10192
diff
changeset
|
18 |
from yams.buildobjs import EntityType, String, Int, SubjectRelation, RelationDefinition |
9967
e65873ad0371
[CWEP002] Add support for computed attribute synchronization
Sylvain Thénault
parents:
diff
changeset
|
19 |
|
e65873ad0371
[CWEP002] Add support for computed attribute synchronization
Sylvain Thénault
parents:
diff
changeset
|
20 |
THISYEAR = 2014 |
e65873ad0371
[CWEP002] Add support for computed attribute synchronization
Sylvain Thénault
parents:
diff
changeset
|
21 |
|
e65873ad0371
[CWEP002] Add support for computed attribute synchronization
Sylvain Thénault
parents:
diff
changeset
|
22 |
class Person(EntityType): |
e65873ad0371
[CWEP002] Add support for computed attribute synchronization
Sylvain Thénault
parents:
diff
changeset
|
23 |
name = String() |
e65873ad0371
[CWEP002] Add support for computed attribute synchronization
Sylvain Thénault
parents:
diff
changeset
|
24 |
salaire = Int() |
e65873ad0371
[CWEP002] Add support for computed attribute synchronization
Sylvain Thénault
parents:
diff
changeset
|
25 |
birth_year = Int(required=True) |
e65873ad0371
[CWEP002] Add support for computed attribute synchronization
Sylvain Thénault
parents:
diff
changeset
|
26 |
travaille = SubjectRelation('Societe') |
e65873ad0371
[CWEP002] Add support for computed attribute synchronization
Sylvain Thénault
parents:
diff
changeset
|
27 |
age = Int(formula='Any %d - D WHERE X birth_year D' % THISYEAR) |
e65873ad0371
[CWEP002] Add support for computed attribute synchronization
Sylvain Thénault
parents:
diff
changeset
|
28 |
|
e65873ad0371
[CWEP002] Add support for computed attribute synchronization
Sylvain Thénault
parents:
diff
changeset
|
29 |
class Societe(EntityType): |
e65873ad0371
[CWEP002] Add support for computed attribute synchronization
Sylvain Thénault
parents:
diff
changeset
|
30 |
nom = String() |
e65873ad0371
[CWEP002] Add support for computed attribute synchronization
Sylvain Thénault
parents:
diff
changeset
|
31 |
salaire_total = Int(formula='Any SUM(SA) GROUPBY X WHERE P travaille X, P salaire SA') |
10192
365e5a0287d6
[computed attribute] ensure attribute's formula apply only to the correct type. Closes #4901163
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9967
diff
changeset
|
32 |
|
365e5a0287d6
[computed attribute] ensure attribute's formula apply only to the correct type. Closes #4901163
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9967
diff
changeset
|
33 |
|
365e5a0287d6
[computed attribute] ensure attribute's formula apply only to the correct type. Closes #4901163
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9967
diff
changeset
|
34 |
class Agent(EntityType): |
365e5a0287d6
[computed attribute] ensure attribute's formula apply only to the correct type. Closes #4901163
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9967
diff
changeset
|
35 |
asalae_id = String(formula='Any E WHERE M mirror_of X, M extid E') |
365e5a0287d6
[computed attribute] ensure attribute's formula apply only to the correct type. Closes #4901163
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9967
diff
changeset
|
36 |
|
365e5a0287d6
[computed attribute] ensure attribute's formula apply only to the correct type. Closes #4901163
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9967
diff
changeset
|
37 |
class MirrorEntity(EntityType): |
365e5a0287d6
[computed attribute] ensure attribute's formula apply only to the correct type. Closes #4901163
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9967
diff
changeset
|
38 |
extid = String(required=True, unique=True, |
365e5a0287d6
[computed attribute] ensure attribute's formula apply only to the correct type. Closes #4901163
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9967
diff
changeset
|
39 |
description=_('external identifier of the object')) |
365e5a0287d6
[computed attribute] ensure attribute's formula apply only to the correct type. Closes #4901163
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9967
diff
changeset
|
40 |
|
365e5a0287d6
[computed attribute] ensure attribute's formula apply only to the correct type. Closes #4901163
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9967
diff
changeset
|
41 |
|
365e5a0287d6
[computed attribute] ensure attribute's formula apply only to the correct type. Closes #4901163
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9967
diff
changeset
|
42 |
class mirror_of(RelationDefinition): |
365e5a0287d6
[computed attribute] ensure attribute's formula apply only to the correct type. Closes #4901163
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9967
diff
changeset
|
43 |
subject = 'MirrorEntity' |
365e5a0287d6
[computed attribute] ensure attribute's formula apply only to the correct type. Closes #4901163
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9967
diff
changeset
|
44 |
object = ('Agent', 'Societe') |
365e5a0287d6
[computed attribute] ensure attribute's formula apply only to the correct type. Closes #4901163
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9967
diff
changeset
|
45 |
cardinality = '?*' |
365e5a0287d6
[computed attribute] ensure attribute's formula apply only to the correct type. Closes #4901163
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9967
diff
changeset
|
46 |
inlined = True |