author | Aurelien Campeas <aurelien.campeas@logilab.fr> |
Tue, 22 Dec 2009 13:43:24 +0100 | |
branch | stable |
changeset 4179 | 3a0b2f14e17b |
parent 3983 | e2dc12753436 |
child 3998 | 94cc7cad3d2d |
child 4212 | ab6573088b4a |
permissions | -rw-r--r-- |
628
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
1 |
"""workflow related schemas |
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
2 |
|
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
3 |
:organization: Logilab |
1977
606923dff11b
big bunch of copyright / docstring update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
1572
diff
changeset
|
4 |
:copyright: 2001-2009 LOGILAB S.A. (Paris, FRANCE), license is LGPL v2. |
628
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
5 |
:contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr |
1977
606923dff11b
big bunch of copyright / docstring update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
1572
diff
changeset
|
6 |
:license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses |
628
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
7 |
""" |
2140
1cba3393ba01
update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
8 |
__docformat__ = "restructuredtext en" |
1cba3393ba01
update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
9 |
_ = unicode |
628
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
10 |
|
2140
1cba3393ba01
update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
11 |
from yams.buildobjs import (EntityType, RelationType, SubjectRelation, |
2459
d088d0ff48a1
move RichString and co to yams, keeping only a small monkeypatch for cw-page-template here
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2234
diff
changeset
|
12 |
ObjectRelation, RichString, String) |
2939
a613cc003ab7
make state/transition name unique within a workflow
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2920
diff
changeset
|
13 |
from cubicweb.schema import RQLConstraint, RQLUniqueConstraint |
a613cc003ab7
make state/transition name unique within a workflow
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2920
diff
changeset
|
14 |
from cubicweb.schemas import (META_ETYPE_PERMS, META_RTYPE_PERMS, |
a613cc003ab7
make state/transition name unique within a workflow
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2920
diff
changeset
|
15 |
HOOKS_RTYPE_PERMS) |
2140
1cba3393ba01
update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
16 |
|
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
17 |
class Workflow(EntityType): |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
18 |
permissions = META_ETYPE_PERMS |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
19 |
|
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
20 |
name = String(required=True, indexed=True, internationalizable=True, |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
21 |
maxsize=256) |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
22 |
description = RichString(fulltextindexed=True, default_format='text/rest', |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
23 |
description=_('semantic description of this workflow')) |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
24 |
|
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
25 |
workflow_of = SubjectRelation('CWEType', cardinality='+*', |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
26 |
description=_('entity types which may use this workflow'), |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
27 |
constraints=[RQLConstraint('O final FALSE')]) |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
28 |
|
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
29 |
initial_state = SubjectRelation('State', cardinality='?*', |
3983
e2dc12753436
nicer error message on rql constraints
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3966
diff
changeset
|
30 |
constraints=[RQLConstraint('O state_of S', |
e2dc12753436
nicer error message on rql constraints
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3966
diff
changeset
|
31 |
msg=_('state doesn\'t belong to this workflow'))], |
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
32 |
description=_('initial state for this workflow')) |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
33 |
|
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
34 |
|
2943
77622caef9bd
[schema] default_workflow_of more naturally expressed as default_workflow
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2939
diff
changeset
|
35 |
class default_workflow(RelationType): |
3263
5129918c671b
i18n update
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2977
diff
changeset
|
36 |
"""default workflow for an entity type""" |
2943
77622caef9bd
[schema] default_workflow_of more naturally expressed as default_workflow
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2939
diff
changeset
|
37 |
permissions = META_RTYPE_PERMS |
77622caef9bd
[schema] default_workflow_of more naturally expressed as default_workflow
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2939
diff
changeset
|
38 |
|
77622caef9bd
[schema] default_workflow_of more naturally expressed as default_workflow
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2939
diff
changeset
|
39 |
subject = 'CWEType' |
77622caef9bd
[schema] default_workflow_of more naturally expressed as default_workflow
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2939
diff
changeset
|
40 |
object = 'Workflow' |
77622caef9bd
[schema] default_workflow_of more naturally expressed as default_workflow
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2939
diff
changeset
|
41 |
cardinality = '?*' |
3983
e2dc12753436
nicer error message on rql constraints
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3966
diff
changeset
|
42 |
constraints = [RQLConstraint('S final FALSE, O workflow_of S', |
e2dc12753436
nicer error message on rql constraints
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3966
diff
changeset
|
43 |
msg=_('workflow isn\'t a workflow of this type'))] |
2943
77622caef9bd
[schema] default_workflow_of more naturally expressed as default_workflow
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2939
diff
changeset
|
44 |
|
77622caef9bd
[schema] default_workflow_of more naturally expressed as default_workflow
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2939
diff
changeset
|
45 |
|
2140
1cba3393ba01
update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
46 |
class State(EntityType): |
628
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
47 |
"""used to associate simple states to an entity type and/or to define |
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
48 |
workflows |
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
49 |
""" |
2140
1cba3393ba01
update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
50 |
permissions = META_ETYPE_PERMS |
1cba3393ba01
update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
51 |
|
628
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
52 |
name = String(required=True, indexed=True, internationalizable=True, |
3966
f742c525b7b4
fix workflow consistency: check state/transition name uniqness in the wf when state/transition name is modified ; use the new msg argument of rql constraints to have a nicer error message on failure
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3961
diff
changeset
|
53 |
maxsize=256, |
f742c525b7b4
fix workflow consistency: check state/transition name uniqness in the wf when state/transition name is modified ; use the new msg argument of rql constraints to have a nicer error message on failure
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3961
diff
changeset
|
54 |
constraints=[RQLUniqueConstraint('S name N, S state_of WF, Y state_of WF, Y name N', 'Y', |
f742c525b7b4
fix workflow consistency: check state/transition name uniqness in the wf when state/transition name is modified ; use the new msg argument of rql constraints to have a nicer error message on failure
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3961
diff
changeset
|
55 |
_('workflow already have a state of that name'))]) |
798
0015b33a7336
fix State's RichString definition: 'default' was used instead of 'default_format'
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
628
diff
changeset
|
56 |
description = RichString(fulltextindexed=True, default_format='text/rest', |
628
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
57 |
description=_('semantic description of this state')) |
1572 | 58 |
|
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
59 |
# XXX should be on BaseTransition w/ AND/OR selectors when we will |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
60 |
# implements #345274 |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
61 |
allowed_transition = SubjectRelation('BaseTransition', cardinality='**', |
3983
e2dc12753436
nicer error message on rql constraints
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3966
diff
changeset
|
62 |
constraints=[RQLConstraint('S state_of WF, O transition_of WF', |
e2dc12753436
nicer error message on rql constraints
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3966
diff
changeset
|
63 |
msg=_('state and transition don\'t belong the the same workflow'))], |
628
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
64 |
description=_('allowed transitions from this state')) |
3499
9161c215b954
[schema] set composite on state_of / transition_of
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3444
diff
changeset
|
65 |
state_of = SubjectRelation('Workflow', cardinality='1*', composite='object', |
2939
a613cc003ab7
make state/transition name unique within a workflow
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2920
diff
changeset
|
66 |
description=_('workflow to which this state belongs'), |
3966
f742c525b7b4
fix workflow consistency: check state/transition name uniqness in the wf when state/transition name is modified ; use the new msg argument of rql constraints to have a nicer error message on failure
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3961
diff
changeset
|
67 |
constraints=[RQLUniqueConstraint('S name N, Y state_of O, Y name N', 'Y', |
f742c525b7b4
fix workflow consistency: check state/transition name uniqness in the wf when state/transition name is modified ; use the new msg argument of rql constraints to have a nicer error message on failure
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3961
diff
changeset
|
68 |
_('workflow already have a state of that name'))]) |
1572 | 69 |
|
628
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
70 |
|
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
71 |
class BaseTransition(EntityType): |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
72 |
"""abstract base class for transitions""" |
2140
1cba3393ba01
update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
73 |
permissions = META_ETYPE_PERMS |
1cba3393ba01
update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
74 |
|
628
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
75 |
name = String(required=True, indexed=True, internationalizable=True, |
3966
f742c525b7b4
fix workflow consistency: check state/transition name uniqness in the wf when state/transition name is modified ; use the new msg argument of rql constraints to have a nicer error message on failure
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3961
diff
changeset
|
76 |
maxsize=256, |
f742c525b7b4
fix workflow consistency: check state/transition name uniqness in the wf when state/transition name is modified ; use the new msg argument of rql constraints to have a nicer error message on failure
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3961
diff
changeset
|
77 |
constraints=[RQLUniqueConstraint('S name N, S transition_of WF, Y transition_of WF, Y name N', 'Y', |
f742c525b7b4
fix workflow consistency: check state/transition name uniqness in the wf when state/transition name is modified ; use the new msg argument of rql constraints to have a nicer error message on failure
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3961
diff
changeset
|
78 |
_('workflow already have a transition of that name'))]) |
3528
77a69de16709
support for automatic transition
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3499
diff
changeset
|
79 |
type = String(vocabulary=(_('normal'), _('auto')), default='normal') |
2140
1cba3393ba01
update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
80 |
description = RichString(fulltextindexed=True, |
628
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
81 |
description=_('semantic description of this transition')) |
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
82 |
condition = SubjectRelation('RQLExpression', cardinality='*?', composite='subject', |
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
83 |
description=_('a RQL expression which should return some results, ' |
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
84 |
'else the transition won\'t be available. ' |
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
85 |
'This query may use X and U variables ' |
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
86 |
'that will respectivly represents ' |
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
87 |
'the current entity and the current user')) |
1572 | 88 |
|
1398
5fe84a5f7035
rename internal entity types to have CW prefix instead of E
sylvain.thenault@logilab.fr
parents:
798
diff
changeset
|
89 |
require_group = SubjectRelation('CWGroup', cardinality='**', |
628
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
90 |
description=_('group in which a user should be to be ' |
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
91 |
'allowed to pass this transition')) |
3499
9161c215b954
[schema] set composite on state_of / transition_of
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3444
diff
changeset
|
92 |
transition_of = SubjectRelation('Workflow', cardinality='1*', composite='object', |
2939
a613cc003ab7
make state/transition name unique within a workflow
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2920
diff
changeset
|
93 |
description=_('workflow to which this transition belongs'), |
3966
f742c525b7b4
fix workflow consistency: check state/transition name uniqness in the wf when state/transition name is modified ; use the new msg argument of rql constraints to have a nicer error message on failure
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3961
diff
changeset
|
94 |
constraints=[RQLUniqueConstraint('S name N, Y transition_of O, Y name N', 'Y', |
3983
e2dc12753436
nicer error message on rql constraints
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3966
diff
changeset
|
95 |
_('workflow already have a transition of that name'))]) |
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
96 |
|
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
97 |
|
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
98 |
class Transition(BaseTransition): |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
99 |
"""use to define a transition from one or multiple states to a destination |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
100 |
states in workflow's definitions. |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
101 |
""" |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
102 |
__specializes_schema__ = True |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
103 |
|
3628
440931181322
[wf engine] support for subwf exit point with no destination state: go back to state from which we entered into the subworkflow
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3529
diff
changeset
|
104 |
destination_state = SubjectRelation( |
440931181322
[wf engine] support for subwf exit point with no destination state: go back to state from which we entered into the subworkflow
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3529
diff
changeset
|
105 |
'State', cardinality='1*', |
3983
e2dc12753436
nicer error message on rql constraints
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3966
diff
changeset
|
106 |
constraints=[RQLConstraint('S transition_of WF, O state_of WF', |
e2dc12753436
nicer error message on rql constraints
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3966
diff
changeset
|
107 |
msg=_('state and transition don\'t belong the the same workflow'))], |
3628
440931181322
[wf engine] support for subwf exit point with no destination state: go back to state from which we entered into the subworkflow
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3529
diff
changeset
|
108 |
description=_('destination state for this transition')) |
628
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
109 |
|
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
110 |
|
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
111 |
class WorkflowTransition(BaseTransition): |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
112 |
"""special transition allowing to go through a sub-workflow""" |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
113 |
__specializes_schema__ = True |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
114 |
|
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
115 |
subworkflow = SubjectRelation('Workflow', cardinality='1*', |
3983
e2dc12753436
nicer error message on rql constraints
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3966
diff
changeset
|
116 |
constraints=[RQLConstraint('S transition_of WF, WF workflow_of ET, O workflow_of ET', |
e2dc12753436
nicer error message on rql constraints
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3966
diff
changeset
|
117 |
msg=_('subworkflow isn\'t a workflow for the same types as the transition\'s workflow'))] |
e2dc12753436
nicer error message on rql constraints
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3966
diff
changeset
|
118 |
) |
3628
440931181322
[wf engine] support for subwf exit point with no destination state: go back to state from which we entered into the subworkflow
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3529
diff
changeset
|
119 |
# XXX use exit_of and inline it |
440931181322
[wf engine] support for subwf exit point with no destination state: go back to state from which we entered into the subworkflow
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3529
diff
changeset
|
120 |
subworkflow_exit = SubjectRelation('SubWorkflowExitPoint', cardinality='*1', |
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
121 |
composite='subject') |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
122 |
|
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
123 |
|
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
124 |
class SubWorkflowExitPoint(EntityType): |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
125 |
"""define how we get out from a sub-workflow""" |
3628
440931181322
[wf engine] support for subwf exit point with no destination state: go back to state from which we entered into the subworkflow
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3529
diff
changeset
|
126 |
subworkflow_state = SubjectRelation( |
440931181322
[wf engine] support for subwf exit point with no destination state: go back to state from which we entered into the subworkflow
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3529
diff
changeset
|
127 |
'State', cardinality='1*', |
3983
e2dc12753436
nicer error message on rql constraints
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3966
diff
changeset
|
128 |
constraints=[RQLConstraint('T subworkflow_exit S, T subworkflow WF, O state_of WF', |
e2dc12753436
nicer error message on rql constraints
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3966
diff
changeset
|
129 |
msg=_('exit state must a subworkflow state'))], |
3628
440931181322
[wf engine] support for subwf exit point with no destination state: go back to state from which we entered into the subworkflow
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3529
diff
changeset
|
130 |
description=_('subworkflow state')) |
440931181322
[wf engine] support for subwf exit point with no destination state: go back to state from which we entered into the subworkflow
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3529
diff
changeset
|
131 |
destination_state = SubjectRelation( |
440931181322
[wf engine] support for subwf exit point with no destination state: go back to state from which we entered into the subworkflow
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3529
diff
changeset
|
132 |
'State', cardinality='?*', |
3983
e2dc12753436
nicer error message on rql constraints
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3966
diff
changeset
|
133 |
constraints=[RQLConstraint('T subworkflow_exit S, T transition_of WF, O state_of WF', |
e2dc12753436
nicer error message on rql constraints
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3966
diff
changeset
|
134 |
msg=_('destination state must be in the same workflow as our parent transition'))], |
3628
440931181322
[wf engine] support for subwf exit point with no destination state: go back to state from which we entered into the subworkflow
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3529
diff
changeset
|
135 |
description=_('destination state. No destination state means that transition ' |
440931181322
[wf engine] support for subwf exit point with no destination state: go back to state from which we entered into the subworkflow
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3529
diff
changeset
|
136 |
'should go back to the state from which we\'ve entered the ' |
440931181322
[wf engine] support for subwf exit point with no destination state: go back to state from which we entered into the subworkflow
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3529
diff
changeset
|
137 |
'subworkflow.')) |
2140
1cba3393ba01
update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
138 |
|
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
139 |
|
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
140 |
class TrInfo(EntityType): |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
141 |
"""workflow history item""" |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
142 |
# 'add' security actually done by hooks |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
143 |
permissions = { |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
144 |
'read': ('managers', 'users', 'guests',), # XXX U has_read_permission O ? |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
145 |
'add': ('managers', 'users', 'guests',), |
3529 | 146 |
'delete': (), # XXX should we allow managers to delete TrInfo? |
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
147 |
'update': ('managers', 'owners',), |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
148 |
} |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
149 |
|
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
150 |
from_state = SubjectRelation('State', cardinality='1*') |
628
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
151 |
to_state = SubjectRelation('State', cardinality='1*') |
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
152 |
# make by_transition optional because we want to allow managers to set |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
153 |
# entity into an arbitrary state without having to respect wf transition |
2950
643570a7770f
[schema] oops, should use BaseTransition here
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2943
diff
changeset
|
154 |
by_transition = SubjectRelation('BaseTransition', cardinality='?*') |
2140
1cba3393ba01
update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
155 |
comment = RichString(fulltextindexed=True) |
628
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
156 |
# get actor and date time using owned_by and creation_date |
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
157 |
|
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
158 |
class from_state(RelationType): |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
159 |
permissions = HOOKS_RTYPE_PERMS.copy() |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
160 |
inlined = True |
628
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
161 |
|
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
162 |
class to_state(RelationType): |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
163 |
permissions = { |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
164 |
'read': ('managers', 'users', 'guests',), |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
165 |
'add': ('managers',), |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
166 |
'delete': (), |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
167 |
} |
628
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
168 |
inlined = True |
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
169 |
|
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
170 |
class by_transition(RelationType): |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
171 |
# 'add' security actually done by hooks |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
172 |
permissions = { |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
173 |
'read': ('managers', 'users', 'guests',), |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
174 |
'add': ('managers', 'users', 'guests',), |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
175 |
'delete': (), |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
176 |
} |
628
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
177 |
inlined = True |
2501
fa86d99c2c3a
test and fix wf history security
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2459
diff
changeset
|
178 |
|
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
179 |
class workflow_of(RelationType): |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
180 |
"""link a workflow to one or more entity type""" |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
181 |
permissions = META_RTYPE_PERMS |
1572 | 182 |
|
2140
1cba3393ba01
update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
183 |
class state_of(RelationType): |
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
184 |
"""link a state to one or more workflow""" |
2140
1cba3393ba01
update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
185 |
permissions = META_RTYPE_PERMS |
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
186 |
|
2140
1cba3393ba01
update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
187 |
class transition_of(RelationType): |
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
188 |
"""link a transition to one or more workflow""" |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
189 |
permissions = META_RTYPE_PERMS |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
190 |
|
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
191 |
class subworkflow(RelationType): |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
192 |
"""link a transition to one or more workflow""" |
2140
1cba3393ba01
update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
193 |
permissions = META_RTYPE_PERMS |
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
194 |
inlined = True |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
195 |
|
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
196 |
class exit_point(RelationType): |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
197 |
"""link a transition to one or more workflow""" |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
198 |
permissions = META_RTYPE_PERMS |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
199 |
|
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
200 |
class subworkflow_state(RelationType): |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
201 |
"""link a transition to one or more workflow""" |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
202 |
permissions = META_RTYPE_PERMS |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
203 |
inlined = True |
1572 | 204 |
|
2140
1cba3393ba01
update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
205 |
class initial_state(RelationType): |
628
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
206 |
"""indicate which state should be used by default when an entity using |
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
207 |
states is created |
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
208 |
""" |
2140
1cba3393ba01
update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
209 |
permissions = META_RTYPE_PERMS |
628
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
210 |
inlined = True |
1572 | 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 destination_state(RelationType): |
1cba3393ba01
update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
213 |
"""destination state of a transition""" |
1cba3393ba01
update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
214 |
permissions = META_RTYPE_PERMS |
1cba3393ba01
update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
215 |
inlined = True |
628
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
216 |
|
2140
1cba3393ba01
update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
217 |
class allowed_transition(RelationType): |
1cba3393ba01
update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
218 |
"""allowed transition from this state""" |
1cba3393ba01
update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
219 |
permissions = META_RTYPE_PERMS |
1cba3393ba01
update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
220 |
|
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
221 |
|
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
222 |
# "abstract" relations, set by WorkflowableEntityType ########################## |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
223 |
|
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
224 |
class custom_workflow(RelationType): |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
225 |
"""allow to set a specific workflow for an entity""" |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
226 |
permissions = META_RTYPE_PERMS |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
227 |
|
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
228 |
cardinality = '?*' |
3983
e2dc12753436
nicer error message on rql constraints
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3966
diff
changeset
|
229 |
constraints = [RQLConstraint('S is ET, O workflow_of ET', |
e2dc12753436
nicer error message on rql constraints
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3966
diff
changeset
|
230 |
msg=_('workflow isn\'t a workflow for this type'))] |
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
231 |
object = 'Workflow' |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
232 |
|
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
233 |
|
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
234 |
class wf_info_for(RelationType): |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
235 |
"""link a transition information to its object""" |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
236 |
# 'add' security actually done by hooks |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
237 |
permissions = { |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
238 |
'read': ('managers', 'users', 'guests',), |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
239 |
'add': ('managers', 'users', 'guests',), |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
240 |
'delete': (), |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
241 |
} |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
242 |
inlined = True |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
243 |
|
3444 | 244 |
cardinality = '1*' |
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
245 |
composite = 'object' |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
246 |
fulltext_container = composite |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
247 |
subject = 'TrInfo' |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
248 |
|
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
249 |
|
2140
1cba3393ba01
update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
250 |
class in_state(RelationType): |
628
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
251 |
"""indicate the current state of an entity""" |
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
252 |
permissions = HOOKS_RTYPE_PERMS |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
253 |
|
628
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
254 |
# not inlined intentionnaly since when using ldap sources, user'state |
1398
5fe84a5f7035
rename internal entity types to have CW prefix instead of E
sylvain.thenault@logilab.fr
parents:
798
diff
changeset
|
255 |
# has to be stored outside the CWUser table |
2602
7bfa83772d90
[F schema] set inlined=False to ensure it'is not inlined by accident
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2501
diff
changeset
|
256 |
inlined = False |
1572 | 257 |
|
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
258 |
cardinality = '1*' |
3983
e2dc12753436
nicer error message on rql constraints
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3966
diff
changeset
|
259 |
constraints = [RQLConstraint('S is ET, O state_of WF, WF workflow_of ET', |
e2dc12753436
nicer error message on rql constraints
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3966
diff
changeset
|
260 |
msg=_('state doesn\'t apply to this entity\'s type'))] |
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
261 |
object = 'State' |