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