changeset 834:8924ed0e4f36 beta

added current db version into rhodecode, added auto versioning of newly created databases
author Marcin Kuzminski <marcin@python-works.com>
date Sat, 11 Dec 2010 02:15:29 +0100
parents 9753e0907827
children 08d2dcd71666
files rhodecode/__init__.py rhodecode/lib/db_manage.py rhodecode/model/db.py rhodecode/websetup.py
diffstat 4 files changed, 29 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/__init__.py	Sat Dec 11 01:54:12 2010 +0100
+++ b/rhodecode/__init__.py	Sat Dec 11 02:15:29 2010 +0100
@@ -29,6 +29,7 @@
 
 VERSION = (1, 1, 0, 'beta')
 __version__ = '.'.join((str(each) for each in VERSION[:4]))
+__dbversion__ = 1 #defines current db version for migrations
 
 from rhodecode.lib.utils import get_current_revision
 _rev = get_current_revision()
--- a/rhodecode/lib/db_manage.py	Sat Dec 11 01:54:12 2010 +0100
+++ b/rhodecode/lib/db_manage.py	Sat Dec 11 02:15:29 2010 +0100
@@ -80,6 +80,23 @@
         meta.Base.metadata.create_all(checkfirst=checkfirst)
         log.info('Created tables for %s', self.dbname)
 
+
+
+    def set_db_version(self):
+        from rhodecode import __dbversion__
+        from rhodecode.model.db import DbMigrateVersion
+        try:
+            ver = DbMigrateVersion()
+            ver.version = __dbversion__
+            ver.repository_id = 'rhodecode_db_migrations'
+            ver.repository_path = 'versions'
+            self.sa.add(ver)
+            self.sa.commit()
+        except:
+            self.sa.rollback()
+            raise
+        log.info('db version set to: %s', __dbversion__)
+
     def admin_prompt(self, second=False):
         if not self.tests:
             import getpass
--- a/rhodecode/model/db.py	Sat Dec 11 01:54:12 2010 +0100
+++ b/rhodecode/model/db.py	Sat Dec 11 02:15:29 2010 +0100
@@ -3,7 +3,8 @@
     rhodecode.model.db
     ~~~~~~~~~~~~~~~~~~
     
-    Database Models for RhodeCode    
+    Database Models for RhodeCode
+    
     :created_on: Apr 08, 2010
     :author: marcink
     :copyright: (C) 2009-2010 Marcin Kuzminski <marcin@python-works.com>    
@@ -246,3 +247,11 @@
 
     def __repr__(self):
         return "<CacheInvalidation('%s:%s')>" % (self.cache_id, self.cache_key)
+
+class DbMigrateVersion(Base, BaseModel):
+    __tablename__ = 'db_migrate_version'
+    __table_args__ = {'useexisting':True}
+    repository_id = Column('repository_id', String(250), primary_key=True)
+    repository_path = Column('repository_path', Text)
+    version = Column('version', Integer)
+
--- a/rhodecode/websetup.py	Sat Dec 11 01:54:12 2010 +0100
+++ b/rhodecode/websetup.py	Sat Dec 11 02:15:29 2010 +0100
@@ -11,6 +11,7 @@
     dbconf = conf['sqlalchemy.db1.url']
     dbmanage = DbManage(log_sql=True, dbconf=dbconf, root=conf['here'], tests=False)
     dbmanage.create_tables(override=True)
+    dbmanage.set_db_version()
     dbmanage.config_prompt(None)
     dbmanage.create_default_user()
     dbmanage.admin_prompt()