Mercurial > kallithea
comparison rhodecode/lib/dbmigrate/versions/003_version_1_2_0.py @ 900:07f248329a3b beta
updated migration for version 1.2
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Fri, 31 Dec 2010 18:58:26 +0100 |
parents | |
children | 2f83756f3041 |
comparison
equal
deleted
inserted
replaced
899:d65843e07d3c | 900:07f248329a3b |
---|---|
1 import logging | |
2 import datetime | |
3 | |
4 from sqlalchemy import * | |
5 from sqlalchemy.exc import DatabaseError | |
6 from sqlalchemy.orm import relation, backref, class_mapper | |
7 from sqlalchemy.orm.session import Session | |
8 from rhodecode.model.meta import Base | |
9 from rhodecode.model.db import BaseModel | |
10 | |
11 from rhodecode.lib.dbmigrate.migrate import * | |
12 | |
13 log = logging.getLogger(__name__) | |
14 | |
15 def upgrade(migrate_engine): | |
16 """ Upgrade operations go here. | |
17 Don't create your own engine; bind migrate_engine to your metadata | |
18 """ | |
19 | |
20 #========================================================================== | |
21 # Add table `groups`` | |
22 #========================================================================== | |
23 tblname = 'groups' | |
24 | |
25 class Group(Base, BaseModel): | |
26 __tablename__ = 'groups' | |
27 __table_args__ = (UniqueConstraint('group_name'), {'useexisting':True},) | |
28 | |
29 group_id = Column("group_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) | |
30 group_name = Column("group_name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=False, unique=True, default=None) | |
31 group_parent_id = Column("group_parent_id", Integer(), ForeignKey('groups.group_id'), nullable=True, unique=None, default=None) | |
32 | |
33 parent_group = relation('Group', remote_side=group_id) | |
34 | |
35 | |
36 def __init__(self, group_name='', parent_group=None): | |
37 self.group_name = group_name | |
38 self.parent_group = parent_group | |
39 | |
40 def __repr__(self): | |
41 return "<%s('%s:%s')>" % (self.__class__.__name__, self.group_id, | |
42 self.group_name) | |
43 | |
44 Base.metadata.tables[tblname].create(migrate_engine) | |
45 | |
46 #========================================================================== | |
47 # Add table `group_to_perm` | |
48 #========================================================================== | |
49 tblname = 'group_to_perm' | |
50 | |
51 class GroupToPerm(Base, BaseModel): | |
52 __tablename__ = 'group_to_perm' | |
53 __table_args__ = (UniqueConstraint('group_id', 'permission_id'), {'useexisting':True}) | |
54 | |
55 group_to_perm_id = Column("group_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) | |
56 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None) | |
57 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None) | |
58 group_id = Column("group_id", Integer(), ForeignKey('groups.group_id'), nullable=False, unique=None, default=None) | |
59 | |
60 user = relation('User') | |
61 permission = relation('Permission') | |
62 group = relation('Group') | |
63 | |
64 Base.metadata.tables[tblname].create(migrate_engine) | |
65 | |
66 #========================================================================== | |
67 # Upgrade of `repositories` table | |
68 #========================================================================== | |
69 tblname = 'repositories' | |
70 tbl = Table(tblname, MetaData(bind=migrate_engine), autoload=True, | |
71 autoload_with=migrate_engine) | |
72 | |
73 #ADD group_id column# | |
74 group_id = Column("group_id", Integer(), ForeignKey(u'groups.group_id'), | |
75 nullable=True, unique=False, default=None) | |
76 | |
77 group_id.create(tbl, populate_default=True) | |
78 | |
79 | |
80 return | |
81 | |
82 | |
83 def downgrade(migrate_engine): | |
84 meta = MetaData() | |
85 meta.bind = migrate_engine | |
86 | |
87 |