Mercurial > kallithea
changeset 1632:5b2cf21b1947 beta
Synced with latest sqlalchemy-migrate, added new upcomming migration for 1.3
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Wed, 02 Nov 2011 03:04:54 +0200 |
parents | 5cacb51f25f1 |
children | 2c0d35e336b5 |
files | rhodecode/lib/dbmigrate/migrate/__init__.py rhodecode/lib/dbmigrate/migrate/changeset/databases/sqlite.py rhodecode/lib/dbmigrate/migrate/exceptions.py rhodecode/lib/dbmigrate/migrate/versioning/api.py rhodecode/lib/dbmigrate/migrate/versioning/repository.py rhodecode/lib/dbmigrate/migrate/versioning/schemadiff.py rhodecode/lib/dbmigrate/migrate/versioning/templates/manage/default.py_tmpl rhodecode/lib/dbmigrate/migrate/versioning/templates/manage/pylons.py_tmpl rhodecode/lib/dbmigrate/migrate/versioning/version.py rhodecode/lib/dbmigrate/schema/db_1_3_0.py rhodecode/lib/dbmigrate/versions/003_version_1_2_0.py rhodecode/lib/dbmigrate/versions/004_version_1_3_0.py |
diffstat | 12 files changed, 77 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/rhodecode/lib/dbmigrate/migrate/__init__.py Wed Nov 02 02:42:44 2011 +0200 +++ b/rhodecode/lib/dbmigrate/migrate/__init__.py Wed Nov 02 03:04:54 2011 +0200 @@ -8,4 +8,4 @@ from rhodecode.lib.dbmigrate.migrate.versioning import * from rhodecode.lib.dbmigrate.migrate.changeset import * -__version__ = '0.7.2.dev' \ No newline at end of file +__version__ = '0.7.3.dev' \ No newline at end of file
--- a/rhodecode/lib/dbmigrate/migrate/changeset/databases/sqlite.py Wed Nov 02 02:42:44 2011 +0200 +++ b/rhodecode/lib/dbmigrate/migrate/changeset/databases/sqlite.py Wed Nov 02 03:04:54 2011 +0200 @@ -39,7 +39,7 @@ insertion_string = self._modify_table(table, column, delta) - table.create() + table.create(bind=self.connection) self.append(insertion_string % {'table_name': table_name}) self.execute() self.append('DROP TABLE migration_tmp')
--- a/rhodecode/lib/dbmigrate/migrate/exceptions.py Wed Nov 02 02:42:44 2011 +0200 +++ b/rhodecode/lib/dbmigrate/migrate/exceptions.py Wed Nov 02 03:04:54 2011 +0200 @@ -83,6 +83,5 @@ class InvalidConstraintError(Error): """Invalid constraint error""" - class MigrateDeprecationWarning(DeprecationWarning): """Warning for deprecated features in Migrate"""
--- a/rhodecode/lib/dbmigrate/migrate/versioning/api.py Wed Nov 02 02:42:44 2011 +0200 +++ b/rhodecode/lib/dbmigrate/migrate/versioning/api.py Wed Nov 02 03:04:54 2011 +0200 @@ -119,7 +119,7 @@ For instance, manage.py script_sql postgresql description creates: repository/versions/001_description_postgresql_upgrade.sql and - repository/versions/001_description_postgresql_postgres.sql + repository/versions/001_description_postgresql_downgrade.sql """ repo = Repository(repository) repo.create_script_sql(database, description, **opts) @@ -212,14 +212,15 @@ """ engine = opts.pop('engine') repos = Repository(repository) - script = repos.version(None).script() # Upgrade log.info("Upgrading...") + script = repos.version(None).script(engine.name, 'upgrade') script.run(engine, 1) log.info("done") log.info("Downgrading...") + script = repos.version(None).script(engine.name, 'downgrade') script.run(engine, -1) log.info("done") log.info("Success")
--- a/rhodecode/lib/dbmigrate/migrate/versioning/repository.py Wed Nov 02 02:42:44 2011 +0200 +++ b/rhodecode/lib/dbmigrate/migrate/versioning/repository.py Wed Nov 02 03:04:54 2011 +0200 @@ -115,7 +115,7 @@ options.setdefault('version_table', 'migrate_version') options.setdefault('repository_id', name) options.setdefault('required_dbs', []) - options.setdefault('use_timestamp_numbering', '0') + options.setdefault('use_timestamp_numbering', False) tmpl = open(os.path.join(tmpl_dir, cls._config)).read() ret = TempitaTemplate(tmpl).substitute(options) @@ -180,9 +180,9 @@ @property def use_timestamp_numbering(self): """Returns use_timestamp_numbering specified in config""" - ts_numbering = self.config.get('db_settings', 'use_timestamp_numbering', raw=True) - - return ts_numbering + if self.config.has_option('db_settings', 'use_timestamp_numbering'): + return self.config.getboolean('db_settings', 'use_timestamp_numbering') + return False def version(self, *p, **k): """API to :attr:`migrate.versioning.version.Collection.version`"""
--- a/rhodecode/lib/dbmigrate/migrate/versioning/schemadiff.py Wed Nov 02 02:42:44 2011 +0200 +++ b/rhodecode/lib/dbmigrate/migrate/versioning/schemadiff.py Wed Nov 02 03:04:54 2011 +0200 @@ -17,8 +17,16 @@ :return: object which will evaluate to :keyword:`True` if there \ are differences else :keyword:`False`. """ - return SchemaDiff(metadata, - sqlalchemy.MetaData(engine, reflect=True), + db_metadata = sqlalchemy.MetaData(engine, reflect=True) + + # sqlite will include a dynamically generated 'sqlite_sequence' table if + # there are autoincrement sequences in the database; this should not be + # compared. + if engine.dialect.name == 'sqlite': + if 'sqlite_sequence' in db_metadata.tables: + db_metadata.remove(db_metadata.tables['sqlite_sequence']) + + return SchemaDiff(metadata, db_metadata, labelA='model', labelB='database', excludeTables=excludeTables)
--- a/rhodecode/lib/dbmigrate/migrate/versioning/templates/manage/default.py_tmpl Wed Nov 02 02:42:44 2011 +0200 +++ b/rhodecode/lib/dbmigrate/migrate/versioning/templates/manage/default.py_tmpl Wed Nov 02 03:04:54 2011 +0200 @@ -7,4 +7,6 @@ _vars.pop('repository_name', None) defaults = ", ".join(["%s='%s'" % var for var in _vars.iteritems()]) }} -main({{ defaults }}) + +if __name__ == '__main__': + main({{ defaults }})
--- a/rhodecode/lib/dbmigrate/migrate/versioning/templates/manage/pylons.py_tmpl Wed Nov 02 02:42:44 2011 +0200 +++ b/rhodecode/lib/dbmigrate/migrate/versioning/templates/manage/pylons.py_tmpl Wed Nov 02 03:04:54 2011 +0200 @@ -26,4 +26,5 @@ # migrate supports passing url as an existing Engine instance (since 0.6.0) # usage: migrate -c path/to/config.ini COMMANDS -main(url=engine_from_config(conf_dict), repository=migrations.__path__[0],{{ defaults }}) +if __name__ == '__main__': + main(url=engine_from_config(conf_dict), repository=migrations.__path__[0],{{ defaults }})
--- a/rhodecode/lib/dbmigrate/migrate/versioning/version.py Wed Nov 02 02:42:44 2011 +0200 +++ b/rhodecode/lib/dbmigrate/migrate/versioning/version.py Wed Nov 02 03:04:54 2011 +0200 @@ -90,9 +90,7 @@ return max([VerNum(0)] + self.versions.keys()) def _next_ver_num(self, use_timestamp_numbering): - print use_timestamp_numbering if use_timestamp_numbering == True: - print "Creating new timestamp version!" return VerNum(int(datetime.utcnow().strftime('%Y%m%d%H%M%S'))) else: return self.latest + 1
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rhodecode/lib/dbmigrate/schema/db_1_3_0.py Wed Nov 02 03:04:54 2011 +0200 @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +""" + rhodecode.model.db + ~~~~~~~~~~~~~~~~~~ + + Database Models for RhodeCode + + :created_on: Apr 08, 2010 + :author: marcink + :copyright: (C) 2009-2011 Marcin Kuzminski <marcin@python-works.com> + :license: GPLv3, see COPYING for more details. +""" +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. \ No newline at end of file
--- a/rhodecode/lib/dbmigrate/versions/003_version_1_2_0.py Wed Nov 02 02:42:44 2011 +0200 +++ b/rhodecode/lib/dbmigrate/versions/003_version_1_2_0.py Wed Nov 02 03:04:54 2011 +0200 @@ -21,7 +21,7 @@ #========================================================================== # Add table `groups`` #========================================================================== - from rhodecode.lib.dbmigrate.schema.db_1_2_0 import Group + from rhodecode.lib.dbmigrate.schema.db_1_2_0 import RepoGroup as Group Group().__table__.create() #==========================================================================
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rhodecode/lib/dbmigrate/versions/004_version_1_3_0.py Wed Nov 02 03:04:54 2011 +0200 @@ -0,0 +1,28 @@ +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.lib.dbmigrate.migrate import * +from rhodecode.lib.dbmigrate.migrate.changeset import * + +from rhodecode.model.meta import Base + +log = logging.getLogger(__name__) + +def upgrade(migrate_engine): + """ Upgrade operations go here. + Don't create your own engine; bind migrate_engine to your metadata + """ + + + + return + + +def downgrade(migrate_engine): + meta = MetaData() + meta.bind = migrate_engine