annotate rhodecode/lib/dbmigrate/versions/003_version_1_2_0.py @ 1982:87f0800abc7b beta

#227 Initial version of repository groups permissions system - implemented none/read/write/admin permissions for groups - wrote more tests for permissions, and new permissions groups - a lot of code garden, splitted logic into proper models - permissions on groups doesn't propagate yet to repositories - deprecated some methods on api for managing permissions on repositories for users, and users groups
author Marcin Kuzminski <marcin@python-works.com>
date Sat, 28 Jan 2012 01:06:29 +0200
parents cf51bbfb120e
children 72c525a7e7ad
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
900
07f248329a3b updated migration for version 1.2
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1 import logging
07f248329a3b updated migration for version 1.2
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
2 import datetime
07f248329a3b updated migration for version 1.2
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
3
07f248329a3b updated migration for version 1.2
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
4 from sqlalchemy import *
07f248329a3b updated migration for version 1.2
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
5 from sqlalchemy.exc import DatabaseError
07f248329a3b updated migration for version 1.2
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
6 from sqlalchemy.orm import relation, backref, class_mapper
07f248329a3b updated migration for version 1.2
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
7 from sqlalchemy.orm.session import Session
907
2f83756f3041 Fixed dbmigrate issues.
Marcin Kuzminski <marcin@python-works.com>
parents: 900
diff changeset
8
2f83756f3041 Fixed dbmigrate issues.
Marcin Kuzminski <marcin@python-works.com>
parents: 900
diff changeset
9 from rhodecode.lib.dbmigrate.migrate import *
2f83756f3041 Fixed dbmigrate issues.
Marcin Kuzminski <marcin@python-works.com>
parents: 900
diff changeset
10 from rhodecode.lib.dbmigrate.migrate.changeset import *
2f83756f3041 Fixed dbmigrate issues.
Marcin Kuzminski <marcin@python-works.com>
parents: 900
diff changeset
11
900
07f248329a3b updated migration for version 1.2
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
12 from rhodecode.model.meta import Base
07f248329a3b updated migration for version 1.2
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
13
07f248329a3b updated migration for version 1.2
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
14 log = logging.getLogger(__name__)
07f248329a3b updated migration for version 1.2
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
15
07f248329a3b updated migration for version 1.2
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
16 def upgrade(migrate_engine):
1203
6832ef664673 source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents: 1133
diff changeset
17 """ Upgrade operations go here.
900
07f248329a3b updated migration for version 1.2
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
18 Don't create your own engine; bind migrate_engine to your metadata
07f248329a3b updated migration for version 1.2
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
19 """
07f248329a3b updated migration for version 1.2
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
20
07f248329a3b updated migration for version 1.2
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
21 #==========================================================================
07f248329a3b updated migration for version 1.2
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
22 # Add table `groups``
07f248329a3b updated migration for version 1.2
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
23 #==========================================================================
1632
5b2cf21b1947 Synced with latest sqlalchemy-migrate, added new upcomming migration for 1.3
Marcin Kuzminski <marcin@python-works.com>
parents: 1631
diff changeset
24 from rhodecode.lib.dbmigrate.schema.db_1_2_0 import RepoGroup as Group
1026
3c80eb712a78 uncommented migrate tables, docfix
Marcin Kuzminski <marcin@python-works.com>
parents: 1023
diff changeset
25 Group().__table__.create()
900
07f248329a3b updated migration for version 1.2
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
26
07f248329a3b updated migration for version 1.2
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
27 #==========================================================================
07f248329a3b updated migration for version 1.2
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
28 # Add table `group_to_perm`
07f248329a3b updated migration for version 1.2
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
29 #==========================================================================
1631
5cacb51f25f1 freeze of models for future migrations using small schema files snapshoting current model state
Marcin Kuzminski <marcin@python-works.com>
parents: 1509
diff changeset
30 from rhodecode.lib.dbmigrate.schema.db_1_2_0 import UserRepoGroupToPerm
5cacb51f25f1 freeze of models for future migrations using small schema files snapshoting current model state
Marcin Kuzminski <marcin@python-works.com>
parents: 1509
diff changeset
31 UserRepoGroupToPerm().__table__.create()
1023
e7478ac19f9f updated db migrations to schema 3
Marcin Kuzminski <marcin@python-works.com>
parents: 908
diff changeset
32
e7478ac19f9f updated db migrations to schema 3
Marcin Kuzminski <marcin@python-works.com>
parents: 908
diff changeset
33 #==========================================================================
e7478ac19f9f updated db migrations to schema 3
Marcin Kuzminski <marcin@python-works.com>
parents: 908
diff changeset
34 # Add table `users_groups`
e7478ac19f9f updated db migrations to schema 3
Marcin Kuzminski <marcin@python-works.com>
parents: 908
diff changeset
35 #==========================================================================
1631
5cacb51f25f1 freeze of models for future migrations using small schema files snapshoting current model state
Marcin Kuzminski <marcin@python-works.com>
parents: 1509
diff changeset
36 from rhodecode.lib.dbmigrate.schema.db_1_2_0 import UsersGroup
1026
3c80eb712a78 uncommented migrate tables, docfix
Marcin Kuzminski <marcin@python-works.com>
parents: 1023
diff changeset
37 UsersGroup().__table__.create()
1023
e7478ac19f9f updated db migrations to schema 3
Marcin Kuzminski <marcin@python-works.com>
parents: 908
diff changeset
38
e7478ac19f9f updated db migrations to schema 3
Marcin Kuzminski <marcin@python-works.com>
parents: 908
diff changeset
39 #==========================================================================
e7478ac19f9f updated db migrations to schema 3
Marcin Kuzminski <marcin@python-works.com>
parents: 908
diff changeset
40 # Add table `users_groups_members`
e7478ac19f9f updated db migrations to schema 3
Marcin Kuzminski <marcin@python-works.com>
parents: 908
diff changeset
41 #==========================================================================
1631
5cacb51f25f1 freeze of models for future migrations using small schema files snapshoting current model state
Marcin Kuzminski <marcin@python-works.com>
parents: 1509
diff changeset
42 from rhodecode.lib.dbmigrate.schema.db_1_2_0 import UsersGroupMember
1023
e7478ac19f9f updated db migrations to schema 3
Marcin Kuzminski <marcin@python-works.com>
parents: 908
diff changeset
43 UsersGroupMember().__table__.create()
e7478ac19f9f updated db migrations to schema 3
Marcin Kuzminski <marcin@python-works.com>
parents: 908
diff changeset
44
e7478ac19f9f updated db migrations to schema 3
Marcin Kuzminski <marcin@python-works.com>
parents: 908
diff changeset
45 #==========================================================================
1271
aa7e45ad0cea Fixed permissions for users groups, group can have create repo permission now.
Marcin Kuzminski <marcin@python-works.com>
parents: 1260
diff changeset
46 # Add table `users_group_repo_to_perm`
aa7e45ad0cea Fixed permissions for users groups, group can have create repo permission now.
Marcin Kuzminski <marcin@python-works.com>
parents: 1260
diff changeset
47 #==========================================================================
1631
5cacb51f25f1 freeze of models for future migrations using small schema files snapshoting current model state
Marcin Kuzminski <marcin@python-works.com>
parents: 1509
diff changeset
48 from rhodecode.lib.dbmigrate.schema.db_1_2_0 import UsersGroupRepoToPerm
1271
aa7e45ad0cea Fixed permissions for users groups, group can have create repo permission now.
Marcin Kuzminski <marcin@python-works.com>
parents: 1260
diff changeset
49 UsersGroupRepoToPerm().__table__.create()
aa7e45ad0cea Fixed permissions for users groups, group can have create repo permission now.
Marcin Kuzminski <marcin@python-works.com>
parents: 1260
diff changeset
50
aa7e45ad0cea Fixed permissions for users groups, group can have create repo permission now.
Marcin Kuzminski <marcin@python-works.com>
parents: 1260
diff changeset
51 #==========================================================================
1023
e7478ac19f9f updated db migrations to schema 3
Marcin Kuzminski <marcin@python-works.com>
parents: 908
diff changeset
52 # Add table `users_group_to_perm`
e7478ac19f9f updated db migrations to schema 3
Marcin Kuzminski <marcin@python-works.com>
parents: 908
diff changeset
53 #==========================================================================
1631
5cacb51f25f1 freeze of models for future migrations using small schema files snapshoting current model state
Marcin Kuzminski <marcin@python-works.com>
parents: 1509
diff changeset
54 from rhodecode.lib.dbmigrate.schema.db_1_2_0 import UsersGroupToPerm
1023
e7478ac19f9f updated db migrations to schema 3
Marcin Kuzminski <marcin@python-works.com>
parents: 908
diff changeset
55 UsersGroupToPerm().__table__.create()
e7478ac19f9f updated db migrations to schema 3
Marcin Kuzminski <marcin@python-works.com>
parents: 908
diff changeset
56
e7478ac19f9f updated db migrations to schema 3
Marcin Kuzminski <marcin@python-works.com>
parents: 908
diff changeset
57 #==========================================================================
e7478ac19f9f updated db migrations to schema 3
Marcin Kuzminski <marcin@python-works.com>
parents: 908
diff changeset
58 # Upgrade of `users` table
e7478ac19f9f updated db migrations to schema 3
Marcin Kuzminski <marcin@python-works.com>
parents: 908
diff changeset
59 #==========================================================================
1631
5cacb51f25f1 freeze of models for future migrations using small schema files snapshoting current model state
Marcin Kuzminski <marcin@python-works.com>
parents: 1509
diff changeset
60 from rhodecode.lib.dbmigrate.schema.db_1_2_0 import User
1023
e7478ac19f9f updated db migrations to schema 3
Marcin Kuzminski <marcin@python-works.com>
parents: 908
diff changeset
61
e7478ac19f9f updated db migrations to schema 3
Marcin Kuzminski <marcin@python-works.com>
parents: 908
diff changeset
62 #add column
1762
a69d0029bd27 migration fix for mysql
Marcin Kuzminski <marcin@python-works.com>
parents: 1632
diff changeset
63 ldap_dn = Column("ldap_dn", String(length=255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
1023
e7478ac19f9f updated db migrations to schema 3
Marcin Kuzminski <marcin@python-works.com>
parents: 908
diff changeset
64 ldap_dn.create(User().__table__)
e7478ac19f9f updated db migrations to schema 3
Marcin Kuzminski <marcin@python-works.com>
parents: 908
diff changeset
65
1133
07fcf1683503 updated migration schema
Marcin Kuzminski <marcin@python-works.com>
parents: 1026
diff changeset
66 api_key = Column("api_key", String(length=255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
07fcf1683503 updated migration schema
Marcin Kuzminski <marcin@python-works.com>
parents: 1026
diff changeset
67 api_key.create(User().__table__)
1023
e7478ac19f9f updated db migrations to schema 3
Marcin Kuzminski <marcin@python-works.com>
parents: 908
diff changeset
68
e7478ac19f9f updated db migrations to schema 3
Marcin Kuzminski <marcin@python-works.com>
parents: 908
diff changeset
69 #remove old column
e7478ac19f9f updated db migrations to schema 3
Marcin Kuzminski <marcin@python-works.com>
parents: 908
diff changeset
70 is_ldap = Column("is_ldap", Boolean(), nullable=False, unique=None, default=False)
e7478ac19f9f updated db migrations to schema 3
Marcin Kuzminski <marcin@python-works.com>
parents: 908
diff changeset
71 is_ldap.drop(User().__table__)
e7478ac19f9f updated db migrations to schema 3
Marcin Kuzminski <marcin@python-works.com>
parents: 908
diff changeset
72
900
07f248329a3b updated migration for version 1.2
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
73
07f248329a3b updated migration for version 1.2
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
74 #==========================================================================
07f248329a3b updated migration for version 1.2
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
75 # Upgrade of `repositories` table
1203
6832ef664673 source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents: 1133
diff changeset
76 #==========================================================================
1631
5cacb51f25f1 freeze of models for future migrations using small schema files snapshoting current model state
Marcin Kuzminski <marcin@python-works.com>
parents: 1509
diff changeset
77 from rhodecode.lib.dbmigrate.schema.db_1_2_0 import Repository
900
07f248329a3b updated migration for version 1.2
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
78
1509
da886cc79907 migration schema fix
Marcin Kuzminski <marcin@python-works.com>
parents: 1442
diff changeset
79 #ADD clone_uri column#
da886cc79907 migration schema fix
Marcin Kuzminski <marcin@python-works.com>
parents: 1442
diff changeset
80
da886cc79907 migration schema fix
Marcin Kuzminski <marcin@python-works.com>
parents: 1442
diff changeset
81 clone_uri = Column("clone_uri", String(length=255, convert_unicode=False,
da886cc79907 migration schema fix
Marcin Kuzminski <marcin@python-works.com>
parents: 1442
diff changeset
82 assert_unicode=None),
da886cc79907 migration schema fix
Marcin Kuzminski <marcin@python-works.com>
parents: 1442
diff changeset
83 nullable=True, unique=False, default=None)
da886cc79907 migration schema fix
Marcin Kuzminski <marcin@python-works.com>
parents: 1442
diff changeset
84
da886cc79907 migration schema fix
Marcin Kuzminski <marcin@python-works.com>
parents: 1442
diff changeset
85 clone_uri.create(Repository().__table__)
1818
cf51bbfb120e auto white-space removal
Marcin Kuzminski <marcin@python-works.com>
parents: 1762
diff changeset
86
1023
e7478ac19f9f updated db migrations to schema 3
Marcin Kuzminski <marcin@python-works.com>
parents: 908
diff changeset
87 #ADD downloads column#
e7478ac19f9f updated db migrations to schema 3
Marcin Kuzminski <marcin@python-works.com>
parents: 908
diff changeset
88 enable_downloads = Column("downloads", Boolean(), nullable=True, unique=None, default=True)
e7478ac19f9f updated db migrations to schema 3
Marcin Kuzminski <marcin@python-works.com>
parents: 908
diff changeset
89 enable_downloads.create(Repository().__table__)
e7478ac19f9f updated db migrations to schema 3
Marcin Kuzminski <marcin@python-works.com>
parents: 908
diff changeset
90
1442
7f31de1584c6 update migrations for 1.2
Marcin Kuzminski <marcin@python-works.com>
parents: 1271
diff changeset
91 #ADD column created_on
7f31de1584c6 update migrations for 1.2
Marcin Kuzminski <marcin@python-works.com>
parents: 1271
diff changeset
92 created_on = Column('created_on', DateTime(timezone=False), nullable=True,
7f31de1584c6 update migrations for 1.2
Marcin Kuzminski <marcin@python-works.com>
parents: 1271
diff changeset
93 unique=None, default=datetime.datetime.now)
7f31de1584c6 update migrations for 1.2
Marcin Kuzminski <marcin@python-works.com>
parents: 1271
diff changeset
94 created_on.create(Repository().__table__)
7f31de1584c6 update migrations for 1.2
Marcin Kuzminski <marcin@python-works.com>
parents: 1271
diff changeset
95
900
07f248329a3b updated migration for version 1.2
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
96 #ADD group_id column#
908
de560c47dd03 Added missing FK to migration
Marcin Kuzminski <marcin@python-works.com>
parents: 907
diff changeset
97 group_id = Column("group_id", Integer(), ForeignKey('groups.group_id'),
900
07f248329a3b updated migration for version 1.2
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
98 nullable=True, unique=False, default=None)
07f248329a3b updated migration for version 1.2
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
99
908
de560c47dd03 Added missing FK to migration
Marcin Kuzminski <marcin@python-works.com>
parents: 907
diff changeset
100 group_id.create(Repository().__table__)
900
07f248329a3b updated migration for version 1.2
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
101
1133
07fcf1683503 updated migration schema
Marcin Kuzminski <marcin@python-works.com>
parents: 1026
diff changeset
102
1442
7f31de1584c6 update migrations for 1.2
Marcin Kuzminski <marcin@python-works.com>
parents: 1271
diff changeset
103 #==========================================================================
7f31de1584c6 update migrations for 1.2
Marcin Kuzminski <marcin@python-works.com>
parents: 1271
diff changeset
104 # Upgrade of `user_followings` table
7f31de1584c6 update migrations for 1.2
Marcin Kuzminski <marcin@python-works.com>
parents: 1271
diff changeset
105 #==========================================================================
7f31de1584c6 update migrations for 1.2
Marcin Kuzminski <marcin@python-works.com>
parents: 1271
diff changeset
106
1631
5cacb51f25f1 freeze of models for future migrations using small schema files snapshoting current model state
Marcin Kuzminski <marcin@python-works.com>
parents: 1509
diff changeset
107 from rhodecode.lib.dbmigrate.schema.db_1_2_0 import UserFollowing
1509
da886cc79907 migration schema fix
Marcin Kuzminski <marcin@python-works.com>
parents: 1442
diff changeset
108
1818
cf51bbfb120e auto white-space removal
Marcin Kuzminski <marcin@python-works.com>
parents: 1762
diff changeset
109 follows_from = Column('follows_from', DateTime(timezone=False),
cf51bbfb120e auto white-space removal
Marcin Kuzminski <marcin@python-works.com>
parents: 1762
diff changeset
110 nullable=True, unique=None,
1509
da886cc79907 migration schema fix
Marcin Kuzminski <marcin@python-works.com>
parents: 1442
diff changeset
111 default=datetime.datetime.now)
da886cc79907 migration schema fix
Marcin Kuzminski <marcin@python-works.com>
parents: 1442
diff changeset
112 follows_from.create(UserFollowing().__table__)
1442
7f31de1584c6 update migrations for 1.2
Marcin Kuzminski <marcin@python-works.com>
parents: 1271
diff changeset
113
900
07f248329a3b updated migration for version 1.2
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
114 return
07f248329a3b updated migration for version 1.2
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
115
07f248329a3b updated migration for version 1.2
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
116
07f248329a3b updated migration for version 1.2
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
117 def downgrade(migrate_engine):
07f248329a3b updated migration for version 1.2
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
118 meta = MetaData()
07f248329a3b updated migration for version 1.2
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
119 meta.bind = migrate_engine