diff --git a/rhodecode/lib/dbmigrate/migrate/__init__.py b/rhodecode/lib/dbmigrate/migrate/__init__.py --- a/rhodecode/lib/dbmigrate/migrate/__init__.py +++ b/rhodecode/lib/dbmigrate/migrate/__init__.py @@ -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 diff --git a/rhodecode/lib/dbmigrate/migrate/changeset/databases/sqlite.py b/rhodecode/lib/dbmigrate/migrate/changeset/databases/sqlite.py --- a/rhodecode/lib/dbmigrate/migrate/changeset/databases/sqlite.py +++ b/rhodecode/lib/dbmigrate/migrate/changeset/databases/sqlite.py @@ -39,7 +39,7 @@ class SQLiteHelper(SQLiteCommon): 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') diff --git a/rhodecode/lib/dbmigrate/migrate/exceptions.py b/rhodecode/lib/dbmigrate/migrate/exceptions.py --- a/rhodecode/lib/dbmigrate/migrate/exceptions.py +++ b/rhodecode/lib/dbmigrate/migrate/exceptions.py @@ -83,6 +83,5 @@ class NotSupportedError(Error): class InvalidConstraintError(Error): """Invalid constraint error""" - class MigrateDeprecationWarning(DeprecationWarning): """Warning for deprecated features in Migrate""" diff --git a/rhodecode/lib/dbmigrate/migrate/versioning/api.py b/rhodecode/lib/dbmigrate/migrate/versioning/api.py --- a/rhodecode/lib/dbmigrate/migrate/versioning/api.py +++ b/rhodecode/lib/dbmigrate/migrate/versioning/api.py @@ -119,7 +119,7 @@ def script_sql(database, description, re 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 @@ def test(url, repository, **opts): """ 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") diff --git a/rhodecode/lib/dbmigrate/migrate/versioning/repository.py b/rhodecode/lib/dbmigrate/migrate/versioning/repository.py --- a/rhodecode/lib/dbmigrate/migrate/versioning/repository.py +++ b/rhodecode/lib/dbmigrate/migrate/versioning/repository.py @@ -115,7 +115,7 @@ class Repository(pathed.Pathed): 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 @@ class Repository(pathed.Pathed): @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`""" diff --git a/rhodecode/lib/dbmigrate/migrate/versioning/schemadiff.py b/rhodecode/lib/dbmigrate/migrate/versioning/schemadiff.py --- a/rhodecode/lib/dbmigrate/migrate/versioning/schemadiff.py +++ b/rhodecode/lib/dbmigrate/migrate/versioning/schemadiff.py @@ -17,8 +17,16 @@ def getDiffOfModelAgainstDatabase(metada :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) diff --git a/rhodecode/lib/dbmigrate/migrate/versioning/templates/manage/default.py_tmpl b/rhodecode/lib/dbmigrate/migrate/versioning/templates/manage/default.py_tmpl --- a/rhodecode/lib/dbmigrate/migrate/versioning/templates/manage/default.py_tmpl +++ b/rhodecode/lib/dbmigrate/migrate/versioning/templates/manage/default.py_tmpl @@ -7,4 +7,6 @@ del _vars['__template_name__'] _vars.pop('repository_name', None) defaults = ", ".join(["%s='%s'" % var for var in _vars.iteritems()]) }} -main({{ defaults }}) + +if __name__ == '__main__': + main({{ defaults }}) diff --git a/rhodecode/lib/dbmigrate/migrate/versioning/templates/manage/pylons.py_tmpl b/rhodecode/lib/dbmigrate/migrate/versioning/templates/manage/pylons.py_tmpl --- a/rhodecode/lib/dbmigrate/migrate/versioning/templates/manage/pylons.py_tmpl +++ b/rhodecode/lib/dbmigrate/migrate/versioning/templates/manage/pylons.py_tmpl @@ -26,4 +26,5 @@ conf_dict = ConfigLoader(conf_path).pars # 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 }}) diff --git a/rhodecode/lib/dbmigrate/migrate/versioning/version.py b/rhodecode/lib/dbmigrate/migrate/versioning/version.py --- a/rhodecode/lib/dbmigrate/migrate/versioning/version.py +++ b/rhodecode/lib/dbmigrate/migrate/versioning/version.py @@ -90,9 +90,7 @@ class Collection(pathed.Pathed): 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 diff --git a/rhodecode/lib/dbmigrate/schema/db_1_3_0.py b/rhodecode/lib/dbmigrate/schema/db_1_3_0.py new file mode 100644 --- /dev/null +++ b/rhodecode/lib/dbmigrate/schema/db_1_3_0.py @@ -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 + :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 . \ No newline at end of file diff --git a/rhodecode/lib/dbmigrate/versions/003_version_1_2_0.py b/rhodecode/lib/dbmigrate/versions/003_version_1_2_0.py --- a/rhodecode/lib/dbmigrate/versions/003_version_1_2_0.py +++ b/rhodecode/lib/dbmigrate/versions/003_version_1_2_0.py @@ -21,7 +21,7 @@ def upgrade(migrate_engine): #========================================================================== # 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() #========================================================================== diff --git a/rhodecode/lib/dbmigrate/versions/004_version_1_3_0.py b/rhodecode/lib/dbmigrate/versions/004_version_1_3_0.py new file mode 100644 --- /dev/null +++ b/rhodecode/lib/dbmigrate/versions/004_version_1_3_0.py @@ -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