soter/soter/models/__init__.py

56 lines
2.0 KiB
Python

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import scoped_session, sessionmaker
from zope.sqlalchemy import ZopeTransactionExtension
DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension(), expire_on_commit=False))
Base = declarative_base()
def initialize_sql(engine):
DBSession.configure(bind=engine)
Base.metadata.bind = engine
if not schema_exists(engine):
fixtures(engine)
def schema_exists(engine):
from soter.models.master import DbSetting
with engine.connect() as connection:
return engine.dialect.has_table(connection, DbSetting.__tablename__)
def fixtures(engine):
import transaction
import uuid
from soter.models.master import Album, DbSetting, Picture, Tag, picture_tag
from soter.models.auth import Permission, Role, User, role_permission, role_user
Base.metadata.create_all(engine)
user = User('Admin', 'Administrator', 'soter@tanshu.com', '123456', False,
uuid.UUID('8de98592-76d9-c74d-bb3f-d6184d388b5a'))
DBSession.add(user)
no_album = Album('Unclassified', 'Uncategorized images', user, True,
uuid.UUID('1b209cd4-e04e-48ac-a1b0-ec5fdc85b492'), True)
DBSession.add(no_album)
roles = [Role('Owner', uuid.UUID('52e08c0c-048a-784f-be10-6e129ad4b5d4'))]
for role in roles:
DBSession.add(role)
user.roles.append(role)
permissions = [Permission('Albums', uuid.UUID('af4c4258-eb3e-4d50-bc04-54e4c8b02995')),
Permission('Trial Balance', uuid.UUID('3b099fec-ddc5-4243-b30e-afb78d9ca14a')),
Permission('Cash Flow', uuid.UUID('c4d3ae29-420b-ea4c-ae90-00a356263fd9')),
Permission('Cost Centers', uuid.UUID('6fcc1a20-6aec-e840-b334-1632b34aeab8')),
Permission('Users', uuid.UUID('c5b7d9d7-f178-0e45-8ea4-bf4e08ec901b'))]
for permission in permissions:
DBSession.add(permission)
roles[0].permissions.append(permission)
transaction.commit()