author | Sylvain Thénault <sylvain.thenault@logilab.fr> |
Fri, 21 Jan 2011 12:51:58 +0100 | |
branch | stable |
changeset 6870 | 658039c5eeac |
parent 6757 | bc878ec35794 |
child 7780 | a1d5365fefc1 |
permissions | -rw-r--r-- |
5421
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4805
diff
changeset
|
1 |
# copyright 2003-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved. |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4805
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:
4805
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:
4805
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:
4805
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:
4805
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:
4805
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:
4805
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:
4805
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:
4805
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:
4805
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:
4805
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:
4805
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:
4805
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:
4805
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:
4805
diff
changeset
|
17 |
# with CubicWeb. If not, see <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
|
18 |
"""workflow related schemas |
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
19 |
|
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
20 |
""" |
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 |
__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
|
22 |
_ = unicode |
628
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
23 |
|
2140
1cba3393ba01
update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
24 |
from yams.buildobjs import (EntityType, RelationType, SubjectRelation, |
6757
bc878ec35794
#1382705 forbid with sql level locking the simultaneous fireing of a transition on a given entity
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
6109
diff
changeset
|
25 |
RichString, String, Int) |
2939
a613cc003ab7
make state/transition name unique within a workflow
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2920
diff
changeset
|
26 |
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
|
27 |
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
|
28 |
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
|
29 |
|
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
30 |
class Workflow(EntityType): |
3877
7ca53fc72a0a
reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3628
diff
changeset
|
31 |
__permissions__ = META_ETYPE_PERMS |
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
32 |
|
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
33 |
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
|
34 |
maxsize=256) |
4805
2d0aa2b7da02
[schema] do not fulltext index workflow entities'description
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4719
diff
changeset
|
35 |
description = RichString(default_format='text/rest', |
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
36 |
description=_('semantic description of this workflow')) |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
37 |
|
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
38 |
workflow_of = SubjectRelation('CWEType', cardinality='+*', |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
39 |
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
|
40 |
constraints=[RQLConstraint('O final FALSE')]) |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
41 |
|
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
42 |
initial_state = SubjectRelation('State', cardinality='?*', |
3983
e2dc12753436
nicer error message on rql constraints
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3966
diff
changeset
|
43 |
constraints=[RQLConstraint('O state_of S', |
e2dc12753436
nicer error message on rql constraints
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3966
diff
changeset
|
44 |
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
|
45 |
description=_('initial state for this workflow')) |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
46 |
|
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
47 |
|
2943
77622caef9bd
[schema] default_workflow_of more naturally expressed as default_workflow
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2939
diff
changeset
|
48 |
class default_workflow(RelationType): |
3263
5129918c671b
i18n update
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2977
diff
changeset
|
49 |
"""default workflow for an entity type""" |
3877
7ca53fc72a0a
reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3628
diff
changeset
|
50 |
__permissions__ = META_RTYPE_PERMS |
2943
77622caef9bd
[schema] default_workflow_of more naturally expressed as default_workflow
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2939
diff
changeset
|
51 |
|
77622caef9bd
[schema] default_workflow_of more naturally expressed as default_workflow
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2939
diff
changeset
|
52 |
subject = 'CWEType' |
77622caef9bd
[schema] default_workflow_of more naturally expressed as default_workflow
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2939
diff
changeset
|
53 |
object = 'Workflow' |
77622caef9bd
[schema] default_workflow_of more naturally expressed as default_workflow
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2939
diff
changeset
|
54 |
cardinality = '?*' |
3983
e2dc12753436
nicer error message on rql constraints
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3966
diff
changeset
|
55 |
constraints = [RQLConstraint('S final FALSE, O workflow_of S', |
4535
71c86a315a9a
update translatable docstring
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4252
diff
changeset
|
56 |
msg=_('workflow isn\'t a workflow for 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
|
57 |
|
77622caef9bd
[schema] default_workflow_of more naturally expressed as default_workflow
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2939
diff
changeset
|
58 |
|
2140
1cba3393ba01
update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
59 |
class State(EntityType): |
628
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
60 |
"""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
|
61 |
workflows |
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
62 |
""" |
3877
7ca53fc72a0a
reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3628
diff
changeset
|
63 |
__permissions__ = META_ETYPE_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
|
64 |
|
628
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
65 |
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
|
66 |
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
|
67 |
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
|
68 |
_('workflow already have a state of that name'))]) |
4805
2d0aa2b7da02
[schema] do not fulltext index workflow entities'description
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4719
diff
changeset
|
69 |
description = RichString(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
|
70 |
description=_('semantic description of this state')) |
1572 | 71 |
|
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
72 |
# 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
|
73 |
# implements #345274 |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
74 |
allowed_transition = SubjectRelation('BaseTransition', cardinality='**', |
3983
e2dc12753436
nicer error message on rql constraints
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3966
diff
changeset
|
75 |
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
|
76 |
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
|
77 |
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
|
78 |
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
|
79 |
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
|
80 |
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
|
81 |
_('workflow already have a state of that name'))]) |
1572 | 82 |
|
628
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
83 |
|
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
84 |
class BaseTransition(EntityType): |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
85 |
"""abstract base class for transitions""" |
3877
7ca53fc72a0a
reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3628
diff
changeset
|
86 |
__permissions__ = META_ETYPE_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
|
87 |
|
628
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
88 |
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
|
89 |
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
|
90 |
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
|
91 |
_('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
|
92 |
type = String(vocabulary=(_('normal'), _('auto')), default='normal') |
4805
2d0aa2b7da02
[schema] do not fulltext index workflow entities'description
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4719
diff
changeset
|
93 |
description = RichString(description=_('semantic description of this transition')) |
628
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
94 |
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
|
95 |
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
|
96 |
'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
|
97 |
'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
|
98 |
'that will respectivly represents ' |
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
99 |
'the current entity and the current user')) |
1572 | 100 |
|
1398
5fe84a5f7035
rename internal entity types to have CW prefix instead of E
sylvain.thenault@logilab.fr
parents:
798
diff
changeset
|
101 |
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
|
102 |
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
|
103 |
'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
|
104 |
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
|
105 |
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
|
106 |
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
|
107 |
_('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
|
108 |
|
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
109 |
|
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
110 |
class Transition(BaseTransition): |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
111 |
"""use to define a transition from one or multiple states to a destination |
4644
021035b9a7ab
introduce 'go back' transition: transition without destination state will go to the state we were coming from
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4589
diff
changeset
|
112 |
states in workflow's definitions. Transition without destination state will |
021035b9a7ab
introduce 'go back' transition: transition without destination state will go to the state we were coming from
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4589
diff
changeset
|
113 |
go back to the state from which we arrived to the current state. |
2920
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 |
__specializes_schema__ = True |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
116 |
|
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
|
117 |
destination_state = SubjectRelation( |
4644
021035b9a7ab
introduce 'go back' transition: transition without destination state will go to the state we were coming from
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4589
diff
changeset
|
118 |
'State', cardinality='?*', |
3983
e2dc12753436
nicer error message on rql constraints
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3966
diff
changeset
|
119 |
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
|
120 |
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
|
121 |
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
|
122 |
|
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
123 |
|
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
124 |
class WorkflowTransition(BaseTransition): |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
125 |
"""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
|
126 |
__specializes_schema__ = True |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
127 |
|
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
128 |
subworkflow = SubjectRelation('Workflow', cardinality='1*', |
3983
e2dc12753436
nicer error message on rql constraints
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3966
diff
changeset
|
129 |
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
|
130 |
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
|
131 |
) |
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
|
132 |
# 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
|
133 |
subworkflow_exit = SubjectRelation('SubWorkflowExitPoint', cardinality='*1', |
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
134 |
composite='subject') |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
135 |
|
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
136 |
|
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
137 |
class SubWorkflowExitPoint(EntityType): |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
138 |
"""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
|
139 |
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
|
140 |
'State', cardinality='1*', |
3983
e2dc12753436
nicer error message on rql constraints
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3966
diff
changeset
|
141 |
constraints=[RQLConstraint('T subworkflow_exit S, T subworkflow WF, O state_of WF', |
6109
47d9c0e0f7b7
integrate Celso's work on translation file: proper/complete spanish translation, fixed some typos in french translation, occured -> occurred fix in various places
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5424
diff
changeset
|
142 |
msg=_('exit state must be 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
|
143 |
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
|
144 |
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
|
145 |
'State', cardinality='?*', |
3983
e2dc12753436
nicer error message on rql constraints
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3966
diff
changeset
|
146 |
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
|
147 |
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
|
148 |
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
|
149 |
'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
|
150 |
'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
|
151 |
|
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
152 |
|
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
153 |
class TrInfo(EntityType): |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
154 |
"""workflow history item""" |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
155 |
# 'add' security actually done by hooks |
3877
7ca53fc72a0a
reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3628
diff
changeset
|
156 |
__permissions__ = { |
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
157 |
'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
|
158 |
'add': ('managers', 'users', 'guests',), |
3529 | 159 |
'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
|
160 |
'update': ('managers', 'owners',), |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
161 |
} |
6757
bc878ec35794
#1382705 forbid with sql level locking the simultaneous fireing of a transition on a given entity
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
6109
diff
changeset
|
162 |
# The unique_together constraint ensures that 2 repositories |
bc878ec35794
#1382705 forbid with sql level locking the simultaneous fireing of a transition on a given entity
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
6109
diff
changeset
|
163 |
# sharing the db won't be able to fire a transition simultaneously |
bc878ec35794
#1382705 forbid with sql level locking the simultaneous fireing of a transition on a given entity
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
6109
diff
changeset
|
164 |
# on the same entity tr_count is filled in the FireTransitionHook |
bc878ec35794
#1382705 forbid with sql level locking the simultaneous fireing of a transition on a given entity
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
6109
diff
changeset
|
165 |
# to the number of TrInfo attached to the entity on which we |
bc878ec35794
#1382705 forbid with sql level locking the simultaneous fireing of a transition on a given entity
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
6109
diff
changeset
|
166 |
# attempt to fire a transition. In other word, it contains the |
bc878ec35794
#1382705 forbid with sql level locking the simultaneous fireing of a transition on a given entity
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
6109
diff
changeset
|
167 |
# rank of the TrInfo for that entity, and the constraint says we |
bc878ec35794
#1382705 forbid with sql level locking the simultaneous fireing of a transition on a given entity
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
6109
diff
changeset
|
168 |
# cannot have 2 TrInfo with the same rank. |
bc878ec35794
#1382705 forbid with sql level locking the simultaneous fireing of a transition on a given entity
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
6109
diff
changeset
|
169 |
__unique_together__ = [('tr_count', 'wf_info_for')] |
bc878ec35794
#1382705 forbid with sql level locking the simultaneous fireing of a transition on a given entity
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
6109
diff
changeset
|
170 |
from_state = SubjectRelation('State', cardinality='1*', inlined=True) |
bc878ec35794
#1382705 forbid with sql level locking the simultaneous fireing of a transition on a given entity
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
6109
diff
changeset
|
171 |
to_state = SubjectRelation('State', cardinality='1*', inlined=True) |
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
172 |
# 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
|
173 |
# 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
|
174 |
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
|
175 |
comment = RichString(fulltextindexed=True) |
6757
bc878ec35794
#1382705 forbid with sql level locking the simultaneous fireing of a transition on a given entity
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
6109
diff
changeset
|
176 |
tr_count = Int(description='autocomputed attribute used to ensure transition coherency') |
628
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
177 |
# 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
|
178 |
|
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
179 |
class from_state(RelationType): |
3877
7ca53fc72a0a
reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3628
diff
changeset
|
180 |
__permissions__ = HOOKS_RTYPE_PERMS.copy() |
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
181 |
inlined = True |
628
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
182 |
|
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
183 |
class to_state(RelationType): |
4187
c29a49d646af
necessary to fix some security test, unclear why did I set perms below at some point...
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4004
diff
changeset
|
184 |
__permissions__ = HOOKS_RTYPE_PERMS.copy() |
628
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
185 |
inlined = True |
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
186 |
|
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
187 |
class by_transition(RelationType): |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
188 |
# 'add' security actually done by hooks |
3877
7ca53fc72a0a
reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3628
diff
changeset
|
189 |
__permissions__ = { |
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
190 |
'read': ('managers', 'users', 'guests',), |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
191 |
'add': ('managers', 'users', 'guests',), |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
192 |
'delete': (), |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
193 |
} |
628
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
194 |
inlined = True |
2501
fa86d99c2c3a
test and fix wf history security
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2459
diff
changeset
|
195 |
|
4589
cc3ec1423ead
fix permission of the condition permission
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4537
diff
changeset
|
196 |
|
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
197 |
class workflow_of(RelationType): |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
198 |
"""link a workflow to one or more entity type""" |
3877
7ca53fc72a0a
reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3628
diff
changeset
|
199 |
__permissions__ = META_RTYPE_PERMS |
1572 | 200 |
|
2140
1cba3393ba01
update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
201 |
class state_of(RelationType): |
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
202 |
"""link a state to one or more workflow""" |
3877
7ca53fc72a0a
reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3628
diff
changeset
|
203 |
__permissions__ = META_RTYPE_PERMS |
3433
401ea5e03e9d
state_of/transition_of could now be inlined
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3303
diff
changeset
|
204 |
inlined = True |
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
205 |
|
2140
1cba3393ba01
update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
206 |
class transition_of(RelationType): |
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
207 |
"""link a transition to one or more workflow""" |
4004
c52619c738a5
api renaming update
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
3998
diff
changeset
|
208 |
__permissions__ = META_RTYPE_PERMS |
3433
401ea5e03e9d
state_of/transition_of could now be inlined
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3303
diff
changeset
|
209 |
inlined = True |
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
210 |
|
4589
cc3ec1423ead
fix permission of the condition permission
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4537
diff
changeset
|
211 |
class destination_state(RelationType): |
cc3ec1423ead
fix permission of the condition permission
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4537
diff
changeset
|
212 |
"""destination state of a transition""" |
3877
7ca53fc72a0a
reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3628
diff
changeset
|
213 |
__permissions__ = META_RTYPE_PERMS |
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
214 |
inlined = True |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
215 |
|
4589
cc3ec1423ead
fix permission of the condition permission
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4537
diff
changeset
|
216 |
class allowed_transition(RelationType): |
cc3ec1423ead
fix permission of the condition permission
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4537
diff
changeset
|
217 |
"""allowed transitions from this state""" |
3877
7ca53fc72a0a
reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3628
diff
changeset
|
218 |
__permissions__ = META_RTYPE_PERMS |
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
219 |
|
2140
1cba3393ba01
update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
220 |
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
|
221 |
"""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
|
222 |
states is created |
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
223 |
""" |
3877
7ca53fc72a0a
reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3628
diff
changeset
|
224 |
__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
|
225 |
inlined = True |
1572 | 226 |
|
4589
cc3ec1423ead
fix permission of the condition permission
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4537
diff
changeset
|
227 |
|
cc3ec1423ead
fix permission of the condition permission
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4537
diff
changeset
|
228 |
class subworkflow(RelationType): |
3877
7ca53fc72a0a
reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3628
diff
changeset
|
229 |
__permissions__ = META_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
|
230 |
inlined = True |
628
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
231 |
|
4589
cc3ec1423ead
fix permission of the condition permission
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4537
diff
changeset
|
232 |
class exit_point(RelationType): |
cc3ec1423ead
fix permission of the condition permission
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4537
diff
changeset
|
233 |
__permissions__ = META_RTYPE_PERMS |
cc3ec1423ead
fix permission of the condition permission
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4537
diff
changeset
|
234 |
|
cc3ec1423ead
fix permission of the condition permission
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4537
diff
changeset
|
235 |
class subworkflow_state(RelationType): |
3877
7ca53fc72a0a
reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3628
diff
changeset
|
236 |
__permissions__ = META_RTYPE_PERMS |
4589
cc3ec1423ead
fix permission of the condition permission
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4537
diff
changeset
|
237 |
inlined = True |
cc3ec1423ead
fix permission of the condition permission
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4537
diff
changeset
|
238 |
|
cc3ec1423ead
fix permission of the condition permission
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4537
diff
changeset
|
239 |
|
cc3ec1423ead
fix permission of the condition permission
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4537
diff
changeset
|
240 |
class condition(RelationType): |
cc3ec1423ead
fix permission of the condition permission
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4537
diff
changeset
|
241 |
__permissions__ = META_RTYPE_PERMS |
cc3ec1423ead
fix permission of the condition permission
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4537
diff
changeset
|
242 |
|
cc3ec1423ead
fix permission of the condition permission
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4537
diff
changeset
|
243 |
# already defined in base.py |
cc3ec1423ead
fix permission of the condition permission
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4537
diff
changeset
|
244 |
# class require_group(RelationType): |
cc3ec1423ead
fix permission of the condition permission
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4537
diff
changeset
|
245 |
# __permissions__ = META_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
|
246 |
|
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
247 |
|
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
248 |
# "abstract" relations, set by WorkflowableEntityType ########################## |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
249 |
|
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
250 |
class custom_workflow(RelationType): |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
251 |
"""allow to set a specific workflow for an entity""" |
3877
7ca53fc72a0a
reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3628
diff
changeset
|
252 |
__permissions__ = META_RTYPE_PERMS |
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
253 |
|
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
254 |
cardinality = '?*' |
3983
e2dc12753436
nicer error message on rql constraints
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3966
diff
changeset
|
255 |
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
|
256 |
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
|
257 |
object = 'Workflow' |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
258 |
|
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
259 |
|
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
260 |
class wf_info_for(RelationType): |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
261 |
"""link a transition information to its object""" |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
262 |
# 'add' security actually done by hooks |
3877
7ca53fc72a0a
reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3628
diff
changeset
|
263 |
__permissions__ = { |
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
264 |
'read': ('managers', 'users', 'guests',), |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
265 |
'add': ('managers', 'users', 'guests',), |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
266 |
'delete': (), |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
267 |
} |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
268 |
inlined = True |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
269 |
|
3444 | 270 |
cardinality = '1*' |
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
271 |
composite = 'object' |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
272 |
fulltext_container = composite |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
273 |
subject = 'TrInfo' |
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
274 |
|
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
275 |
|
2140
1cba3393ba01
update schema definition to avoid deprecation warning with new yams api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
276 |
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
|
277 |
"""indicate the current state of an entity""" |
3877
7ca53fc72a0a
reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3628
diff
changeset
|
278 |
__permissions__ = HOOKS_RTYPE_PERMS |
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
279 |
|
628
3a6f28a1ea21
extract workflow related schema definitions in its own file
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
280 |
# 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
|
281 |
# 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
|
282 |
inlined = False |
1572 | 283 |
|
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2602
diff
changeset
|
284 |
cardinality = '1*' |
3983
e2dc12753436
nicer error message on rql constraints
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3966
diff
changeset
|
285 |
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
|
286 |
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
|
287 |
object = 'State' |