misc/migration/bootstrapmigration_repository.py
author Pierre-Yves David <pierre-yves.david@logilab.fr>
Mon, 24 Jun 2013 11:59:45 +0200 (2013-06-24)
changeset 9033 614bf73cc126
parent 8830 7fd6c52ef878
child 9163 fe4c1c1982e7
permissions -rw-r--r--
[service] drop the asynchronous execution possibility Call_service was able of both sync and sync execution making the API confusing. There is not user of the async case. We drop the async argument in favor of synchronous execution only. This makes call_service the official API to call server side code from the client side. This is a remplacement for the usual monkey patching of the repo object. The zmq notification bus is a solid alternative for codes that needs to start an async execution.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8279
fa167153d384 [migration] fix migration jumping from pre 3.12 to post 3.13
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7797
diff changeset
     1
# copyright 2003-2012 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
5421
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4944
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: 4944
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: 4944
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: 4944
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: 4944
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: 4944
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: 4944
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: 4944
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: 4944
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: 4944
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: 4944
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: 4944
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: 4944
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: 4944
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: 4944
diff changeset
    17
# with CubicWeb.  If not, see <http://www.gnu.org/licenses/>.
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    18
"""allways executed before all others in server migration
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    19
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    20
it should only include low level schema changes
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    21
"""
4944
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
    22
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
    23
from cubicweb.server.session import hooks_control
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
    24
from cubicweb.server import schemaserial as ss
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    25
2275
bc0bed0616a3 fix #344387, remember upgraded version step by step
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 1977
diff changeset
    26
applcubicwebversion, cubicwebversion = versions_map['cubicweb']
bc0bed0616a3 fix #344387, remember upgraded version step by step
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 1977
diff changeset
    27
4570
ede247bbbf62 follow yams api change: attributes permissions are now defined for
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4252
diff changeset
    28
def _add_relation_definition_no_perms(subjtype, rtype, objtype):
ede247bbbf62 follow yams api change: attributes permissions are now defined for
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4252
diff changeset
    29
    rschema = fsschema.rschema(rtype)
4944
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
    30
    rdef = rschema.rdefs[(subjtype, objtype)]
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
    31
    rdef.rtype = schema.rschema(rtype)
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
    32
    rdef.subject = schema.eschema(subjtype)
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
    33
    rdef.object = schema.eschema(objtype)
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
    34
    ss.execschemarql(rql, rdef, ss.rdef2rql(rdef, CSTRMAP, groupmap=None))
4570
ede247bbbf62 follow yams api change: attributes permissions are now defined for
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4252
diff changeset
    35
    commit(ask_confirm=False)
ede247bbbf62 follow yams api change: attributes permissions are now defined for
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4252
diff changeset
    36
8800
8ca1a0da5a29 [web/views] extract cube sioc (closes #1916018)
Simon Chabot <simon.chabot@logilab.fr>
parents: 8696
diff changeset
    37
if applcubicwebversion < (3, 17, 0) and cubicwebversion >= (3, 17, 0):
8ca1a0da5a29 [web/views] extract cube sioc (closes #1916018)
Simon Chabot <simon.chabot@logilab.fr>
parents: 8696
diff changeset
    38
    try:
8ca1a0da5a29 [web/views] extract cube sioc (closes #1916018)
Simon Chabot <simon.chabot@logilab.fr>
parents: 8696
diff changeset
    39
        add_cube('sioc', update_database=False)
8ca1a0da5a29 [web/views] extract cube sioc (closes #1916018)
Simon Chabot <simon.chabot@logilab.fr>
parents: 8696
diff changeset
    40
    except ImportError:
8ca1a0da5a29 [web/views] extract cube sioc (closes #1916018)
Simon Chabot <simon.chabot@logilab.fr>
parents: 8696
diff changeset
    41
        if not confirm('In cubicweb 3.17 sioc views have been moved to the sioc '
8ca1a0da5a29 [web/views] extract cube sioc (closes #1916018)
Simon Chabot <simon.chabot@logilab.fr>
parents: 8696
diff changeset
    42
                       'cube, which is not installed.  Continue anyway?'):
8ca1a0da5a29 [web/views] extract cube sioc (closes #1916018)
Simon Chabot <simon.chabot@logilab.fr>
parents: 8696
diff changeset
    43
            raise
8803
47dd517d6c6f [web/views] extract cube embed (closes #1916015)
Vladimir Popescu <vladimir.popescu@logilab.fr>
parents: 8800
diff changeset
    44
    try:
47dd517d6c6f [web/views] extract cube embed (closes #1916015)
Vladimir Popescu <vladimir.popescu@logilab.fr>
parents: 8800
diff changeset
    45
        add_cube('embed', update_database=False)
47dd517d6c6f [web/views] extract cube embed (closes #1916015)
Vladimir Popescu <vladimir.popescu@logilab.fr>
parents: 8800
diff changeset
    46
    except ImportError:
47dd517d6c6f [web/views] extract cube embed (closes #1916015)
Vladimir Popescu <vladimir.popescu@logilab.fr>
parents: 8800
diff changeset
    47
        if not confirm('In cubicweb 3.17 embedding views have been moved to the embed '
47dd517d6c6f [web/views] extract cube embed (closes #1916015)
Vladimir Popescu <vladimir.popescu@logilab.fr>
parents: 8800
diff changeset
    48
                       'cube, which is not installed.  Continue anyway?'):
47dd517d6c6f [web/views] extract cube embed (closes #1916015)
Vladimir Popescu <vladimir.popescu@logilab.fr>
parents: 8800
diff changeset
    49
            raise
8830
7fd6c52ef878 [web/views] extract cube geocoding (closes #353000)
Julien Cristau <julien.cristau@logilab.fr>
parents: 8803
diff changeset
    50
    try:
7fd6c52ef878 [web/views] extract cube geocoding (closes #353000)
Julien Cristau <julien.cristau@logilab.fr>
parents: 8803
diff changeset
    51
        add_cube('geocoding', update_database=False)
7fd6c52ef878 [web/views] extract cube geocoding (closes #353000)
Julien Cristau <julien.cristau@logilab.fr>
parents: 8803
diff changeset
    52
    except ImportError:
7fd6c52ef878 [web/views] extract cube geocoding (closes #353000)
Julien Cristau <julien.cristau@logilab.fr>
parents: 8803
diff changeset
    53
        if not confirm('In cubicweb 3.17 geocoding views have been moved to the geocoding '
7fd6c52ef878 [web/views] extract cube geocoding (closes #353000)
Julien Cristau <julien.cristau@logilab.fr>
parents: 8803
diff changeset
    54
                       'cube, which is not installed.  Continue anyway?'):
7fd6c52ef878 [web/views] extract cube geocoding (closes #353000)
Julien Cristau <julien.cristau@logilab.fr>
parents: 8803
diff changeset
    55
            raise
8800
8ca1a0da5a29 [web/views] extract cube sioc (closes #1916018)
Simon Chabot <simon.chabot@logilab.fr>
parents: 8696
diff changeset
    56
7547
3d654a7df823 fix 3.13.1 migration
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7543
diff changeset
    57
if applcubicwebversion <= (3, 13, 0) and cubicwebversion >= (3, 13, 1):
7736
8767d03dab17 [3.13 migration] closes #1896724: some db backend (eg sqlserver) doesn't support ADD COLUMN
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7562
diff changeset
    58
    sql('ALTER TABLE entities ADD asource VARCHAR(64)')
7547
3d654a7df823 fix 3.13.1 migration
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7543
diff changeset
    59
    sql('UPDATE entities SET asource=cw_name  '
3d654a7df823 fix 3.13.1 migration
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7543
diff changeset
    60
        'FROM cw_CWSource, cw_source_relation '
7543
570522300e22 [ms, entity metas] add 'actual source' to entities table / base entity metadata cache. Closes #1767090
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7398
diff changeset
    61
        'WHERE entities.eid=cw_source_relation.eid_from AND cw_source_relation.eid_to=cw_CWSource.cw_eid')
8279
fa167153d384 [migration] fix migration jumping from pre 3.12 to post 3.13
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7797
diff changeset
    62
    commit()
fa167153d384 [migration] fix migration jumping from pre 3.12 to post 3.13
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7797
diff changeset
    63
fa167153d384 [migration] fix migration jumping from pre 3.12 to post 3.13
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7797
diff changeset
    64
if schema['TZDatetime'].eid is None:
fa167153d384 [migration] fix migration jumping from pre 3.12 to post 3.13
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7797
diff changeset
    65
    add_entity_type('TZDatetime', auto=False)
fa167153d384 [migration] fix migration jumping from pre 3.12 to post 3.13
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7797
diff changeset
    66
if schema['TZTime'].eid is None:
fa167153d384 [migration] fix migration jumping from pre 3.12 to post 3.13
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7797
diff changeset
    67
    add_entity_type('TZTime', auto=False)
fa167153d384 [migration] fix migration jumping from pre 3.12 to post 3.13
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7797
diff changeset
    68
7543
570522300e22 [ms, entity metas] add 'actual source' to entities table / base entity metadata cache. Closes #1767090
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7398
diff changeset
    69
7797
a71618a75b53 backport stable
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7782
diff changeset
    70
if applcubicwebversion <= (3, 14, 0) and cubicwebversion >= (3, 14, 0):
a71618a75b53 backport stable
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7782
diff changeset
    71
    if 'require_permission' in schema and not 'localperms'in repo.config.cubes():
a71618a75b53 backport stable
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7782
diff changeset
    72
        from cubicweb import ExecutionError
a71618a75b53 backport stable
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7782
diff changeset
    73
        try:
a71618a75b53 backport stable
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7782
diff changeset
    74
            add_cube('localperms', update_database=False)
a71618a75b53 backport stable
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7782
diff changeset
    75
        except ImportError:
a71618a75b53 backport stable
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7782
diff changeset
    76
            raise ExecutionError('In cubicweb 3.14, CWPermission and related stuff '
a71618a75b53 backport stable
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7782
diff changeset
    77
                                 'has been moved to cube localperms. Install it first.')
a71618a75b53 backport stable
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7782
diff changeset
    78
4570
ede247bbbf62 follow yams api change: attributes permissions are now defined for
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4252
diff changeset
    79
if applcubicwebversion == (3, 6, 0) and cubicwebversion >= (3, 6, 0):
4944
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
    80
    CSTRMAP = dict(rql('Any T, X WHERE X is CWConstraintType, X name T',
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
    81
                       ask_confirm=False))
4570
ede247bbbf62 follow yams api change: attributes permissions are now defined for
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4252
diff changeset
    82
    _add_relation_definition_no_perms('CWAttribute', 'update_permission', 'CWGroup')
ede247bbbf62 follow yams api change: attributes permissions are now defined for
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4252
diff changeset
    83
    _add_relation_definition_no_perms('CWAttribute', 'update_permission', 'RQLExpression')
4835
13b0b96d7982 [repo] enhanced security handling: deprecates unsafe_execute, in favor of explicit read/write security control using the `enabled_security` context manager. Also code executed on the repository side is now unsafe by default.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4834
diff changeset
    84
    rql('SET X update_permission Y WHERE X is CWAttribute, X add_permission Y')
4570
ede247bbbf62 follow yams api change: attributes permissions are now defined for
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4252
diff changeset
    85
    drop_relation_definition('CWAttribute', 'add_permission', 'CWGroup')
ede247bbbf62 follow yams api change: attributes permissions are now defined for
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4252
diff changeset
    86
    drop_relation_definition('CWAttribute', 'add_permission', 'RQLExpression')
ede247bbbf62 follow yams api change: attributes permissions are now defined for
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4252
diff changeset
    87
    drop_relation_definition('CWAttribute', 'delete_permission', 'CWGroup')
ede247bbbf62 follow yams api change: attributes permissions are now defined for
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4252
diff changeset
    88
    drop_relation_definition('CWAttribute', 'delete_permission', 'RQLExpression')
ede247bbbf62 follow yams api change: attributes permissions are now defined for
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4252
diff changeset
    89
ede247bbbf62 follow yams api change: attributes permissions are now defined for
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4252
diff changeset
    90
elif applcubicwebversion < (3, 6, 0) and cubicwebversion >= (3, 6, 0):
4944
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
    91
    CSTRMAP = dict(rql('Any T, X WHERE X is CWConstraintType, X name T',
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
    92
                       ask_confirm=False))
7398
26695dd703d8 [repository api] definitly kill usage of word 'pool' to refer to connections set used by a session
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6896
diff changeset
    93
    session.set_cnxset()
4011
394f853bb653 [migration] write migration instructions for permissions handling on relation definition
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3890
diff changeset
    94
    permsdict = ss.deserialize_ertype_permissions(session)
394f853bb653 [migration] write migration instructions for permissions handling on relation definition
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3890
diff changeset
    95
4944
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
    96
    with hooks_control(session, session.HOOKS_ALLOW_ALL, 'integrity'):
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
    97
        for rschema in repo.schema.relations():
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
    98
            rpermsdict = permsdict.get(rschema.eid, {})
8696
0bb18407c053 [toward py3k] rewrite dict.keys() and dict.values() (part of #2711624)
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 8694
diff changeset
    99
            for rdef in rschema.rdefs.itervalues():
4944
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   100
                for action in rdef.ACTIONS:
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   101
                    actperms = []
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   102
                    for something in rpermsdict.get(action == 'update' and 'add' or action, ()):
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   103
                        if isinstance(something, tuple):
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   104
                            actperms.append(rdef.rql_expression(*something))
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   105
                        else: # group name
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   106
                            actperms.append(something)
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   107
                    rdef.set_action_permissions(action, actperms)
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   108
        for action in ('read', 'add', 'delete'):
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   109
            _add_relation_definition_no_perms('CWRelation', '%s_permission' % action, 'CWGroup')
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   110
            _add_relation_definition_no_perms('CWRelation', '%s_permission' % action, 'RQLExpression')
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   111
        for action in ('read', 'update'):
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   112
            _add_relation_definition_no_perms('CWAttribute', '%s_permission' % action, 'CWGroup')
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   113
            _add_relation_definition_no_perms('CWAttribute', '%s_permission' % action, 'RQLExpression')
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   114
        for action in ('read', 'add', 'delete'):
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   115
            rql('SET X %s_permission Y WHERE X is CWRelation, '
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   116
                'RT %s_permission Y, X relation_type RT, Y is CWGroup' % (action, action))
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   117
            rql('INSERT RQLExpression Y: Y exprtype YET, Y mainvars YMV, Y expression YEX, '
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   118
                'X %s_permission Y WHERE X is CWRelation, '
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   119
                'X relation_type RT, RT %s_permission Y2, Y2 exprtype YET, '
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   120
                'Y2 mainvars YMV, Y2 expression YEX' % (action, action))
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   121
        rql('SET X read_permission Y WHERE X is CWAttribute, '
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   122
            'RT read_permission Y, X relation_type RT, Y is CWGroup')
4011
394f853bb653 [migration] write migration instructions for permissions handling on relation definition
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3890
diff changeset
   123
        rql('INSERT RQLExpression Y: Y exprtype YET, Y mainvars YMV, Y expression YEX, '
4944
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   124
            'X read_permission Y WHERE X is CWAttribute, '
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   125
            'X relation_type RT, RT read_permission Y2, Y2 exprtype YET, '
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   126
            'Y2 mainvars YMV, Y2 expression YEX')
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   127
        rql('SET X update_permission Y WHERE X is CWAttribute, '
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   128
            'RT add_permission Y, X relation_type RT, Y is CWGroup')
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   129
        rql('INSERT RQLExpression Y: Y exprtype YET, Y mainvars YMV, Y expression YEX, '
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   130
            'X update_permission Y WHERE X is CWAttribute, '
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   131
            'X relation_type RT, RT add_permission Y2, Y2 exprtype YET, '
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   132
            'Y2 mainvars YMV, Y2 expression YEX')
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   133
        for action in ('read', 'add', 'delete'):
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   134
            drop_relation_definition('CWRType', '%s_permission' % action, 'CWGroup', commit=False)
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   135
            drop_relation_definition('CWRType', '%s_permission' % action, 'RQLExpression')
6222
21772f4e41d9 [migration] attempt to fix pre 3.6 migration
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6208
diff changeset
   136
    sync_schema_props_perms('read_permission', syncperms=False) # fix read_permission cardinality
21772f4e41d9 [migration] attempt to fix pre 3.6 migration
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6208
diff changeset
   137
7549
465009397d91 [migration] don't add CWUniqueConstraint if already there (may occurs when running a migration in multiple times
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6896
diff changeset
   138
if applcubicwebversion < (3, 9, 6) and cubicwebversion >= (3, 9, 6) and not 'CWUniqueTogetherConstraint' in schema:
6222
21772f4e41d9 [migration] attempt to fix pre 3.6 migration
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6208
diff changeset
   139
    add_entity_type('CWUniqueTogetherConstraint')
4011
394f853bb653 [migration] write migration instructions for permissions handling on relation definition
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3890
diff changeset
   140
6896
784d5df35af1 [migration] cwunique constraint schema fix must be done in bootstrap migration
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6222
diff changeset
   141
if not ('CWUniqueTogetherConstraint', 'CWRType') in schema['relations'].rdefs:
784d5df35af1 [migration] cwunique constraint schema fix must be done in bootstrap migration
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6222
diff changeset
   142
    add_relation_definition('CWUniqueTogetherConstraint', 'relations', 'CWRType')
784d5df35af1 [migration] cwunique constraint schema fix must be done in bootstrap migration
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6222
diff changeset
   143
    rql('SET C relations RT WHERE C relations RDEF, RDEF relation_type RT')
784d5df35af1 [migration] cwunique constraint schema fix must be done in bootstrap migration
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6222
diff changeset
   144
    commit()
784d5df35af1 [migration] cwunique constraint schema fix must be done in bootstrap migration
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6222
diff changeset
   145
    drop_relation_definition('CWUniqueTogetherConstraint', 'relations', 'CWAttribute')
784d5df35af1 [migration] cwunique constraint schema fix must be done in bootstrap migration
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6222
diff changeset
   146
    drop_relation_definition('CWUniqueTogetherConstraint', 'relations', 'CWRelation')
784d5df35af1 [migration] cwunique constraint schema fix must be done in bootstrap migration
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6222
diff changeset
   147
784d5df35af1 [migration] cwunique constraint schema fix must be done in bootstrap migration
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6222
diff changeset
   148
2463
5200c0f7d2d5 add migration script for the new cwuri metadata attribute
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 2462
diff changeset
   149
if applcubicwebversion < (3, 4, 0) and cubicwebversion >= (3, 4, 0):
2892
7ae3d62a8328 hooks have been refactored, call [re|de]activate_verification_hooks
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2696
diff changeset
   150
4944
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   151
    with hooks_control(session, session.HOOKS_ALLOW_ALL, 'integrity'):
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   152
        session.set_shared_data('do-not-insert-cwuri', True)
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   153
        add_relation_type('cwuri')
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   154
        base_url = session.base_url()
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   155
        for eid, in rql('Any X', ask_confirm=False):
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   156
            type, source, extid = session.describe(eid)
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   157
            if source == 'system':
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   158
                rql('SET X cwuri %(u)s WHERE X eid %(x)s',
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   159
                    {'x': eid, 'u': base_url + u'eid/%s' % eid})
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   160
        isession.commit()
65533aee8d0a fix migration when upgrading from cw < 3.6 to cw 3.7
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4843
diff changeset
   161
        session.set_shared_data('do-not-insert-cwuri', False)
2463
5200c0f7d2d5 add migration script for the new cwuri metadata attribute
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 2462
diff changeset
   162
2965
75ad5cb00b88 3.5 migration script
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2955
diff changeset
   163
if applcubicwebversion < (3, 5, 0) and cubicwebversion >= (3, 5, 0):
3788
3d5abcd7c852 [migration] warn if 3.5 workflow migration is going to fail
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 3305
diff changeset
   164
    # check that migration is not doomed
3d5abcd7c852 [migration] warn if 3.5 workflow migration is going to fail
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 3305
diff changeset
   165
    rset = rql('Any X,Y WHERE X transition_of E, Y transition_of E, '
3d5abcd7c852 [migration] warn if 3.5 workflow migration is going to fail
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 3305
diff changeset
   166
               'X name N, Y name N, NOT X identity Y',
3d5abcd7c852 [migration] warn if 3.5 workflow migration is going to fail
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 3305
diff changeset
   167
               ask_confirm=False)
3d5abcd7c852 [migration] warn if 3.5 workflow migration is going to fail
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 3305
diff changeset
   168
    if rset:
3d5abcd7c852 [migration] warn if 3.5 workflow migration is going to fail
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 3305
diff changeset
   169
        from logilab.common.shellutils import ASK
3d5abcd7c852 [migration] warn if 3.5 workflow migration is going to fail
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 3305
diff changeset
   170
        if not ASK.confirm('Migration will fail because of transitions with the same name. '
3d5abcd7c852 [migration] warn if 3.5 workflow migration is going to fail
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 3305
diff changeset
   171
                           'Continue anyway ?'):
3d5abcd7c852 [migration] warn if 3.5 workflow migration is going to fail
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 3305
diff changeset
   172
            import sys
3d5abcd7c852 [migration] warn if 3.5 workflow migration is going to fail
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 3305
diff changeset
   173
            sys.exit(1)
3d5abcd7c852 [migration] warn if 3.5 workflow migration is going to fail
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 3305
diff changeset
   174
    # proceed with migration
2965
75ad5cb00b88 3.5 migration script
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2955
diff changeset
   175
    add_entity_type('Workflow')
75ad5cb00b88 3.5 migration script
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2955
diff changeset
   176
    add_entity_type('BaseTransition')
75ad5cb00b88 3.5 migration script
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2955
diff changeset
   177
    add_entity_type('WorkflowTransition')
75ad5cb00b88 3.5 migration script
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2955
diff changeset
   178
    add_entity_type('SubWorkflowExitPoint')
3218
2a4bbe3fa4f3 [3.5 migration] avoid removing defined transitions...
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2965
diff changeset
   179
    # drop explicit 'State allowed_transition Transition' since it should be
2a4bbe3fa4f3 [3.5 migration] avoid removing defined transitions...
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2965
diff changeset
   180
    # infered due to yams inheritance.  However we've to disable the schema
2a4bbe3fa4f3 [3.5 migration] avoid removing defined transitions...
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2965
diff changeset
   181
    # sync hook first to avoid to destroy existing data...
2a4bbe3fa4f3 [3.5 migration] avoid removing defined transitions...
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2965
diff changeset
   182
    try:
3395
405f393bcac0 [migration] fix bootstrap migration of 3.5 : need to support old-style and new-style hooks to migrate from 3.4 to 3.6
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3369
diff changeset
   183
        from cubicweb.hooks import syncschema
405f393bcac0 [migration] fix bootstrap migration of 3.5 : need to support old-style and new-style hooks to migrate from 3.4 to 3.6
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3369
diff changeset
   184
        repo.vreg.unregister(syncschema.AfterDelRelationTypeHook)
405f393bcac0 [migration] fix bootstrap migration of 3.5 : need to support old-style and new-style hooks to migrate from 3.4 to 3.6
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3369
diff changeset
   185
        try:
405f393bcac0 [migration] fix bootstrap migration of 3.5 : need to support old-style and new-style hooks to migrate from 3.4 to 3.6
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3369
diff changeset
   186
            drop_relation_definition('State', 'allowed_transition', 'Transition')
405f393bcac0 [migration] fix bootstrap migration of 3.5 : need to support old-style and new-style hooks to migrate from 3.4 to 3.6
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3369
diff changeset
   187
        finally:
405f393bcac0 [migration] fix bootstrap migration of 3.5 : need to support old-style and new-style hooks to migrate from 3.4 to 3.6
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3369
diff changeset
   188
            repo.vreg.register(syncschema.AfterDelRelationTypeHook)
405f393bcac0 [migration] fix bootstrap migration of 3.5 : need to support old-style and new-style hooks to migrate from 3.4 to 3.6
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3369
diff changeset
   189
    except ImportError: # syncschema is in CW >= 3.6 only
405f393bcac0 [migration] fix bootstrap migration of 3.5 : need to support old-style and new-style hooks to migrate from 3.4 to 3.6
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3369
diff changeset
   190
        from cubicweb.server.schemahooks import after_del_relation_type
405f393bcac0 [migration] fix bootstrap migration of 3.5 : need to support old-style and new-style hooks to migrate from 3.4 to 3.6
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3369
diff changeset
   191
        repo.hm.unregister_hook(after_del_relation_type,
405f393bcac0 [migration] fix bootstrap migration of 3.5 : need to support old-style and new-style hooks to migrate from 3.4 to 3.6
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3369
diff changeset
   192
                                'after_delete_relation', 'relation_type')
405f393bcac0 [migration] fix bootstrap migration of 3.5 : need to support old-style and new-style hooks to migrate from 3.4 to 3.6
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3369
diff changeset
   193
        try:
405f393bcac0 [migration] fix bootstrap migration of 3.5 : need to support old-style and new-style hooks to migrate from 3.4 to 3.6
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3369
diff changeset
   194
            drop_relation_definition('State', 'allowed_transition', 'Transition')
405f393bcac0 [migration] fix bootstrap migration of 3.5 : need to support old-style and new-style hooks to migrate from 3.4 to 3.6
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3369
diff changeset
   195
        finally:
405f393bcac0 [migration] fix bootstrap migration of 3.5 : need to support old-style and new-style hooks to migrate from 3.4 to 3.6
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3369
diff changeset
   196
            repo.hm.register_hook(after_del_relation_type,
405f393bcac0 [migration] fix bootstrap migration of 3.5 : need to support old-style and new-style hooks to migrate from 3.4 to 3.6
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3369
diff changeset
   197
                                  'after_delete_relation', 'relation_type')
2965
75ad5cb00b88 3.5 migration script
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2955
diff changeset
   198
    schema.rebuild_infered_relations() # need to be explicitly called once everything is in place
75ad5cb00b88 3.5 migration script
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2955
diff changeset
   199
75ad5cb00b88 3.5 migration script
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2955
diff changeset
   200
    for et in rql('DISTINCT Any ET,ETN WHERE S state_of ET, ET name ETN',
75ad5cb00b88 3.5 migration script
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2955
diff changeset
   201
                  ask_confirm=False).entities():
75ad5cb00b88 3.5 migration script
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2955
diff changeset
   202
        wf = add_workflow(u'default %s workflow' % et.name, et.name,
75ad5cb00b88 3.5 migration script
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2955
diff changeset
   203
                          ask_confirm=False)
75ad5cb00b88 3.5 migration script
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2955
diff changeset
   204
        rql('SET S state_of WF WHERE S state_of ET, ET eid %(et)s, WF eid %(wf)s',
75ad5cb00b88 3.5 migration script
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2955
diff changeset
   205
            {'et': et.eid, 'wf': wf.eid}, 'et', ask_confirm=False)
75ad5cb00b88 3.5 migration script
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2955
diff changeset
   206
        rql('SET T transition_of WF WHERE T transition_of ET, ET eid %(et)s, WF eid %(wf)s',
75ad5cb00b88 3.5 migration script
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2955
diff changeset
   207
            {'et': et.eid, 'wf': wf.eid}, 'et', ask_confirm=False)
3305
abae9045d2e4 [migration] fix initial_state migration: at this point, S state_of ET is no more true (but we don't need it...)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 3218
diff changeset
   208
        rql('SET WF initial_state S WHERE ET initial_state S, ET eid %(et)s, WF eid %(wf)s',
2965
75ad5cb00b88 3.5 migration script
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2955
diff changeset
   209
            {'et': et.eid, 'wf': wf.eid}, 'et', ask_confirm=False)
75ad5cb00b88 3.5 migration script
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2955
diff changeset
   210
75ad5cb00b88 3.5 migration script
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2955
diff changeset
   211
75ad5cb00b88 3.5 migration script
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2955
diff changeset
   212
    rql('DELETE TrInfo TI WHERE NOT TI from_state S')
75ad5cb00b88 3.5 migration script
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2955
diff changeset
   213
    rql('SET TI by_transition T WHERE TI from_state FS, TI to_state TS, '
75ad5cb00b88 3.5 migration script
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2955
diff changeset
   214
        'FS allowed_transition T, T destination_state TS')
4042
f85a4c846aad 3.6 api update
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4011
diff changeset
   215
    commit()
2965
75ad5cb00b88 3.5 migration script
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2955
diff changeset
   216
75ad5cb00b88 3.5 migration script
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2955
diff changeset
   217
    drop_relation_definition('State', 'state_of', 'CWEType')
75ad5cb00b88 3.5 migration script
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2955
diff changeset
   218
    drop_relation_definition('Transition', 'transition_of', 'CWEType')
75ad5cb00b88 3.5 migration script
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2955
diff changeset
   219
    drop_relation_definition('CWEType', 'initial_state', 'State')
75ad5cb00b88 3.5 migration script
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2955
diff changeset
   220
75ad5cb00b88 3.5 migration script
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2955
diff changeset
   221
    sync_schema_props_perms()
75ad5cb00b88 3.5 migration script
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2955
diff changeset
   222
1952
8e19c813750d fix extid handling: ensure encoded string is given, and store them as base64 (see note in native.py).
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 1501
diff changeset
   223
if applcubicwebversion < (3, 2, 2) and cubicwebversion >= (3, 2, 1):
2462
9e670072884d fix indentation problems in bootstrap_migration (use 4 spaces instead of 3)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 2275
diff changeset
   224
    from base64 import b64encode
9e670072884d fix indentation problems in bootstrap_migration (use 4 spaces instead of 3)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 2275
diff changeset
   225
    for table in ('entities', 'deleted_entities'):
9e670072884d fix indentation problems in bootstrap_migration (use 4 spaces instead of 3)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 2275
diff changeset
   226
        for eid, extid in sql('SELECT eid, extid FROM %s WHERE extid is NOT NULL'
9e670072884d fix indentation problems in bootstrap_migration (use 4 spaces instead of 3)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 2275
diff changeset
   227
                              % table, ask_confirm=False):
9e670072884d fix indentation problems in bootstrap_migration (use 4 spaces instead of 3)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 2275
diff changeset
   228
            sql('UPDATE %s SET extid=%%(extid)s WHERE eid=%%(eid)s' % table,
9e670072884d fix indentation problems in bootstrap_migration (use 4 spaces instead of 3)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 2275
diff changeset
   229
                {'extid': b64encode(extid), 'eid': eid}, ask_confirm=False)
4042
f85a4c846aad 3.6 api update
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4011
diff changeset
   230
    commit()
1952
8e19c813750d fix extid handling: ensure encoded string is given, and store them as base64 (see note in native.py).
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 1501
diff changeset
   231
1501
c80ca83a382f migrate card cube in bootstrap migration
sylvain.thenault@logilab.fr
parents: 1399
diff changeset
   232
if applcubicwebversion < (3, 2, 0) and cubicwebversion >= (3, 2, 0):
2462
9e670072884d fix indentation problems in bootstrap_migration (use 4 spaces instead of 3)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 2275
diff changeset
   233
    add_cube('card', update_database=False)