From d4ba46a3294a46934f557a6699948613f7fa0a64 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Sun, 2 Aug 2009 21:01:19 +0200 Subject: [PATCH] add a organization table (addresses #40) * development.ini: - change testing database to PostgreSQL - set required database version to 4 * data/dbrepo/versions/004_Add_organization_table.py: - create/drop organization table - add organizationid foreign key reference to client table * gnuviechadmin/backend/tables.py: - add reflected organization_table --- .../versions/004_Add_organization_table.py | 29 +++++++++++++++++++ development.ini | 4 +-- gnuviechadmin/backend/tables.py | 7 ++++- 3 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 data/dbrepo/versions/004_Add_organization_table.py diff --git a/data/dbrepo/versions/004_Add_organization_table.py b/data/dbrepo/versions/004_Add_organization_table.py new file mode 100644 index 0000000..277abbe --- /dev/null +++ b/data/dbrepo/versions/004_Add_organization_table.py @@ -0,0 +1,29 @@ +from sqlalchemy import MetaData, Table, Column, Integer, Unicode, ForeignKey +from migrate import migrate_engine +from migrate.changeset.schema import create_column +from gnuviechadmin.config import config + +dbschema = None +if 'database.schema' in config: + dbschema = config['database.schema'] + +meta = MetaData(migrate_engine) +client = Table('client', meta, schema = dbschema, autoload = True) +organization = Table( + 'organization', meta, + Column('organizationid', Integer, primary_key = True), + Column('name', Unicode(200), nullable = False, unique = True), + schema = dbschema, + useexisting = True) + +def upgrade(): + organization.create() + col = Column('organizationid', Integer, + ForeignKey(organization.c.organizationid), + nullable = True) + create_column(col, client) + + +def downgrade(): + client.c.organizationid.drop() + organization.drop() diff --git a/development.ini b/development.ini index bd6aee7..9e6127d 100644 --- a/development.ini +++ b/development.ini @@ -12,11 +12,11 @@ use = egg:gnuviechadmin#cli # sqlalchemy. The default is an sqlite in memory database which is not # very usable for a real installation. # -sqlalchemy.uri = sqlite:///%(here)s/gva.db +sqlalchemy.uri = postgres://localhost/gvatest sqlalchemy.echo = false database.repository = %(here)s/data/dbrepo -migrate.required_version = 3 +migrate.required_version = 4 templatedir = %(here)s/data/templates mailtemplates = %(templatedir)s/mails diff --git a/gnuviechadmin/backend/tables.py b/gnuviechadmin/backend/tables.py index 58c9f2c..27bccb2 100644 --- a/gnuviechadmin/backend/tables.py +++ b/gnuviechadmin/backend/tables.py @@ -19,7 +19,7 @@ # # Version: $Id$ -from sqlalchemy import MetaData, Table +from sqlalchemy import MetaData, Table, Column, Unicode from sqlalchemy.orm import mapper, relation from sqlalchemy.exceptions import NoSuchTableError import sys @@ -68,6 +68,11 @@ Trying automatic versioning.""") dbschema = None if 'database.schema' in config: dbschema = config['database.schema'] + + organization_table = Table( + 'organization', meta, + Column('name', Unicode(200)), + schema = dbschema, autoload = True) (client_table, sysuser_table, domain_table, \ record_table, supermaster_table, mailaccount_table, \