56 lines
2.0 KiB
Python
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()
|