changeset 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 d65843e07d3c
children 765c2125e4d9
files rhodecode/lib/db_manage.py rhodecode/lib/dbmigrate/versions/003_version_1_2_0.py
diffstat 2 files changed, 91 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/lib/db_manage.py	Fri Dec 31 12:12:19 2010 +0100
+++ b/rhodecode/lib/db_manage.py	Fri Dec 31 18:58:26 2010 +0100
@@ -103,9 +103,8 @@
 
     def upgrade(self):
         """Upgrades given database schema to given revision following 
-        all needed steps,  
+        all needed steps, to perform the upgrade
         
-        :param revision: revision to upgrade to
         """
 
         from rhodecode.lib.dbmigrate.migrate.versioning import api
@@ -142,6 +141,9 @@
         # UPGRADE STEPS
         #======================================================================
         class UpgradeSteps(object):
+            """Those steps follow schema versions so for example schema 
+            for example schema with seq 002 == step_2 and so on.
+            """
 
             def __init__(self, klass):
                 self.klass = klass
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rhodecode/lib/dbmigrate/versions/003_version_1_2_0.py	Fri Dec 31 18:58:26 2010 +0100
@@ -0,0 +1,87 @@
+import logging
+import datetime
+
+from sqlalchemy import *
+from sqlalchemy.exc import DatabaseError
+from sqlalchemy.orm import relation, backref, class_mapper
+from sqlalchemy.orm.session import Session
+from rhodecode.model.meta import Base
+from rhodecode.model.db import BaseModel
+
+from rhodecode.lib.dbmigrate.migrate import *
+
+log = logging.getLogger(__name__)
+
+def upgrade(migrate_engine):
+    """ Upgrade operations go here. 
+    Don't create your own engine; bind migrate_engine to your metadata
+    """
+
+    #==========================================================================
+    # Add table `groups``
+    #==========================================================================
+    tblname = 'groups'
+
+    class Group(Base, BaseModel):
+        __tablename__ = 'groups'
+        __table_args__ = (UniqueConstraint('group_name'), {'useexisting':True},)
+
+        group_id = Column("group_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
+        group_name = Column("group_name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=False, unique=True, default=None)
+        group_parent_id = Column("group_parent_id", Integer(), ForeignKey('groups.group_id'), nullable=True, unique=None, default=None)
+
+        parent_group = relation('Group', remote_side=group_id)
+
+
+        def __init__(self, group_name='', parent_group=None):
+            self.group_name = group_name
+            self.parent_group = parent_group
+
+        def __repr__(self):
+            return "<%s('%s:%s')>" % (self.__class__.__name__, self.group_id,
+                                      self.group_name)
+
+    Base.metadata.tables[tblname].create(migrate_engine)
+
+    #==========================================================================
+    # Add table `group_to_perm`
+    #==========================================================================
+    tblname = 'group_to_perm'
+
+    class GroupToPerm(Base, BaseModel):
+        __tablename__ = 'group_to_perm'
+        __table_args__ = (UniqueConstraint('group_id', 'permission_id'), {'useexisting':True})
+
+        group_to_perm_id = Column("group_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
+        user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None)
+        permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None)
+        group_id = Column("group_id", Integer(), ForeignKey('groups.group_id'), nullable=False, unique=None, default=None)
+
+        user = relation('User')
+        permission = relation('Permission')
+        group = relation('Group')
+
+    Base.metadata.tables[tblname].create(migrate_engine)
+
+    #==========================================================================
+    # Upgrade of `repositories` table
+    #==========================================================================    
+    tblname = 'repositories'
+    tbl = Table(tblname, MetaData(bind=migrate_engine), autoload=True,
+                    autoload_with=migrate_engine)
+
+    #ADD group_id column#
+    group_id = Column("group_id", Integer(), ForeignKey(u'groups.group_id'),
+                  nullable=True, unique=False, default=None)
+
+    group_id.create(tbl, populate_default=True)
+
+
+    return
+
+
+def downgrade(migrate_engine):
+    meta = MetaData()
+    meta.bind = migrate_engine
+
+