Add error handling for table creation in Alembic migrations

1 parent 884d29c3
...@@ -19,7 +19,8 @@ schema=None ...@@ -19,7 +19,8 @@ schema=None
# schema = 'public' # schema = 'public'
def upgrade(): def upgrade():
# ### commands auto generated by Alembic - please adjust! ### # ### commands auto generated by Alembic - please adjust! ###
op.create_table('groups', try:
op.create_table('groups',
sa.Column('member_count', sa.Integer(), nullable=True), sa.Column('member_count', sa.Integer(), nullable=True),
sa.Column('id', sa.Integer(), sa.Identity(always=True), sa.Column('id', sa.Integer(), sa.Identity(always=True),
primary_key=True, nullable=False, ), primary_key=True, nullable=False, ),
...@@ -30,13 +31,19 @@ def upgrade(): ...@@ -30,13 +31,19 @@ def upgrade():
mysql_charset='utf8', mysql_charset='utf8',
mysql_engine='InnoDB' mysql_engine='InnoDB'
) )
op.create_table('holiday', except Exception as e:
print(str(e))
try:
op.create_table('holiday',
sa.Column('tanggal', sa.DateTime(), nullable=True), sa.Column('tanggal', sa.DateTime(), nullable=True),
sa.Column('id', sa.Integer(), sa.Identity(always=True), sa.Column('id', sa.Integer(), sa.Identity(always=True),
primary_key=True, nullable=False), primary_key=True, nullable=False),
sa.PrimaryKeyConstraint('id', name=op.f('pk_holiday')) sa.PrimaryKeyConstraint('id', name=op.f('pk_holiday'))
) )
op.create_table('logs', except Exception as e:
print(str(e))
try:
op.create_table('logs',
sa.Column('id', sa.Integer(), sa.Identity(always=True), sa.Column('id', sa.Integer(), sa.Identity(always=True),
primary_key=True, nullable=False), primary_key=True, nullable=False),
sa.Column('line_id', sa.String(length=32), nullable=False), sa.Column('line_id', sa.String(length=32), nullable=False),
...@@ -48,7 +55,10 @@ def upgrade(): ...@@ -48,7 +55,10 @@ def upgrade():
sa.PrimaryKeyConstraint('id', name=op.f('pk_logs')), sa.PrimaryKeyConstraint('id', name=op.f('pk_logs')),
sa.UniqueConstraint('line_id', name=op.f('uq_logs_line_id')) sa.UniqueConstraint('line_id', name=op.f('uq_logs_line_id'))
) )
op.create_table('parameters', except Exception as e:
print(str(e))
try:
op.create_table('parameters',
sa.Column('value', sa.String(length=256), nullable=False), sa.Column('value', sa.String(length=256), nullable=False),
sa.Column('nama', sa.String(length=128), nullable=False), sa.Column('nama', sa.String(length=128), nullable=False),
sa.Column('kode', sa.String(length=32), nullable=False), sa.Column('kode', sa.String(length=32), nullable=False),
...@@ -61,7 +71,10 @@ def upgrade(): ...@@ -61,7 +71,10 @@ def upgrade():
primary_key=True, nullable=False), primary_key=True, nullable=False),
sa.PrimaryKeyConstraint('id', name=op.f('pk_parameters')) sa.PrimaryKeyConstraint('id', name=op.f('pk_parameters'))
) )
op.create_table('departemen', except Exception as e:
print(str(e))
try:
op.create_table('departemen',
sa.Column('id', sa.Integer(), sa.Identity(always=True), sa.Column('id', sa.Integer(), sa.Identity(always=True),
primary_key=True, nullable=False), primary_key=True, nullable=False),
sa.Column('parent_id', sa.Integer(), nullable=True), sa.Column('parent_id', sa.Integer(), nullable=True),
...@@ -81,7 +94,10 @@ def upgrade(): ...@@ -81,7 +94,10 @@ def upgrade():
# schema=schema # schema=schema
) )
op.create_table('permissions', except Exception as e:
print(str(e))
try:
op.create_table('permissions',
sa.Column('id', sa.Integer(), sa.Identity(always=True), sa.Column('id', sa.Integer(), sa.Identity(always=True),
primary_key=True, nullable=False), primary_key=True, nullable=False),
sa.Column('perm_name', sa.String(length=64), nullable=False), sa.Column('perm_name', sa.String(length=64), nullable=False),
...@@ -91,7 +107,10 @@ def upgrade(): ...@@ -91,7 +107,10 @@ def upgrade():
sa.UniqueConstraint('perm_name', name=op.f('uq_permissions_perm_name')), sa.UniqueConstraint('perm_name', name=op.f('uq_permissions_perm_name')),
# schema=schema # schema=schema
) )
op.create_table('res_provinsi', except Exception as e:
print(str(e))
try:
op.create_table('res_provinsi',
sa.Column('kategori', sa.String(length=32), nullable=True), sa.Column('kategori', sa.String(length=32), nullable=True),
sa.Column('ibu_kota', sa.String(length=64), nullable=True), sa.Column('ibu_kota', sa.String(length=64), nullable=True),
sa.Column('nama', sa.String(length=128), nullable=False), sa.Column('nama', sa.String(length=128), nullable=False),
...@@ -106,7 +125,10 @@ def upgrade(): ...@@ -106,7 +125,10 @@ def upgrade():
sa.PrimaryKeyConstraint('id', name=op.f('pk_res_provinsi')), sa.PrimaryKeyConstraint('id', name=op.f('pk_res_provinsi')),
# schema=schema # schema=schema
) )
op.create_table('routes', except Exception as e:
print(str(e))
try:
op.create_table('routes',
sa.Column('id', sa.Integer(), sa.Identity(always=True), sa.Column('id', sa.Integer(), sa.Identity(always=True),
primary_key=True, nullable=False), primary_key=True, nullable=False),
sa.Column('kode', sa.String(length=128), nullable=True), sa.Column('kode', sa.String(length=128), nullable=True),
...@@ -133,7 +155,10 @@ def upgrade(): ...@@ -133,7 +155,10 @@ def upgrade():
sa.UniqueConstraint('kode', name=op.f('uq_routes_kode')), sa.UniqueConstraint('kode', name=op.f('uq_routes_kode')),
sa.UniqueConstraint('path', name=op.f('uq_routes_path')) sa.UniqueConstraint('path', name=op.f('uq_routes_path'))
) )
op.create_table('target_jenis', except Exception as e:
print(str(e))
try:
op.create_table('target_jenis',
sa.Column('nama', sa.String(length=128), nullable=False), sa.Column('nama', sa.String(length=128), nullable=False),
sa.Column('kode', sa.String(length=32), nullable=False), sa.Column('kode', sa.String(length=32), nullable=False),
sa.Column('status', sa.SmallInteger(), nullable=False), sa.Column('status', sa.SmallInteger(), nullable=False),
...@@ -145,7 +170,10 @@ def upgrade(): ...@@ -145,7 +170,10 @@ def upgrade():
primary_key=True, nullable=False), primary_key=True, nullable=False),
sa.PrimaryKeyConstraint('id', name=op.f('pk_target_jenis')) sa.PrimaryKeyConstraint('id', name=op.f('pk_target_jenis'))
) )
op.create_table('targets', except Exception as e:
print(str(e))
try:
op.create_table('targets',
sa.Column('tahun', sa.Integer(), nullable=False), sa.Column('tahun', sa.Integer(), nullable=False),
sa.Column('jenis', sa.Integer(), nullable=False), sa.Column('jenis', sa.Integer(), nullable=False),
sa.Column('m01', sa.BigInteger(), nullable=False), sa.Column('m01', sa.BigInteger(), nullable=False),
...@@ -171,7 +199,10 @@ def upgrade(): ...@@ -171,7 +199,10 @@ def upgrade():
primary_key=True, nullable=False), primary_key=True, nullable=False),
sa.PrimaryKeyConstraint('id', name=op.f('pk_targets')) sa.PrimaryKeyConstraint('id', name=op.f('pk_targets'))
) )
op.create_table('users', except Exception as e:
print(str(e))
try:
op.create_table('users',
sa.Column('last_login_date', sa.DateTime(timezone=True), nullable=True), sa.Column('last_login_date', sa.DateTime(timezone=True), nullable=True),
sa.Column('registered_date', sa.DateTime(timezone=True), nullable=False), sa.Column('registered_date', sa.DateTime(timezone=True), nullable=False),
# sa.Column('security_code_date', sa.DateTime(timezone=True), # sa.Column('security_code_date', sa.DateTime(timezone=True),
...@@ -196,7 +227,10 @@ def upgrade(): ...@@ -196,7 +227,10 @@ def upgrade():
mysql_charset='utf8', mysql_charset='utf8',
mysql_engine='InnoDB' mysql_engine='InnoDB'
) )
op.create_table('external_identities', except Exception as e:
print(str(e))
try:
op.create_table('external_identities',
sa.Column('external_id', sa.Unicode(length=255), nullable=False), sa.Column('external_id', sa.Unicode(length=255), nullable=False),
sa.Column('external_user_name', sa.Unicode(length=255), nullable=True), sa.Column('external_user_name', sa.Unicode(length=255), nullable=True),
sa.Column('local_user_id', sa.Integer(), nullable=False), sa.Column('local_user_id', sa.Integer(), nullable=False),
...@@ -209,7 +243,10 @@ def upgrade(): ...@@ -209,7 +243,10 @@ def upgrade():
mysql_charset='utf8', mysql_charset='utf8',
mysql_engine='InnoDB' mysql_engine='InnoDB'
) )
op.create_table('groups_permissions', except Exception as e:
print(str(e))
try:
op.create_table('groups_permissions',
sa.Column('group_id', sa.Integer(), nullable=False), sa.Column('group_id', sa.Integer(), nullable=False),
sa.Column('perm_name', sa.Unicode(length=64), nullable=False), sa.Column('perm_name', sa.Unicode(length=64), nullable=False),
sa.ForeignKeyConstraint(['group_id'], ['groups.id'], name=op.f('fk_groups_permissions_group_id_groups'), onupdate='CASCADE', ondelete='CASCADE'), sa.ForeignKeyConstraint(['group_id'], ['groups.id'], name=op.f('fk_groups_permissions_group_id_groups'), onupdate='CASCADE', ondelete='CASCADE'),
...@@ -218,7 +255,10 @@ def upgrade(): ...@@ -218,7 +255,10 @@ def upgrade():
mysql_engine='InnoDB' mysql_engine='InnoDB'
) )
op.create_table('res_dati2', except Exception as e:
print(str(e))
try:
op.create_table('res_dati2',
sa.Column('kategori', sa.String(length=32), nullable=True), sa.Column('kategori', sa.String(length=32), nullable=True),
sa.Column('ibu_kota', sa.String(length=64), nullable=True), sa.Column('ibu_kota', sa.String(length=64), nullable=True),
sa.Column('provinsi_id', sa.SmallInteger(), nullable=True), sa.Column('provinsi_id', sa.SmallInteger(), nullable=True),
...@@ -235,7 +275,10 @@ def upgrade(): ...@@ -235,7 +275,10 @@ def upgrade():
sa.PrimaryKeyConstraint('id', name=op.f('pk_res_dati2')), sa.PrimaryKeyConstraint('id', name=op.f('pk_res_dati2')),
# schema=schema # schema=schema
) )
op.create_table('resources', except Exception as e:
print(str(e))
try:
op.create_table('resources',
sa.Column('resource_id', sa.Integer(), sa.Identity(always=True), sa.Column('resource_id', sa.Integer(), sa.Identity(always=True),
primary_key=True, autoincrement=True, nullable=False), primary_key=True, autoincrement=True, nullable=False),
sa.Column('parent_id', sa.Integer(), nullable=True), sa.Column('parent_id', sa.Integer(), nullable=True),
...@@ -251,9 +294,18 @@ def upgrade(): ...@@ -251,9 +294,18 @@ def upgrade():
mysql_charset='utf8', mysql_charset='utf8',
mysql_engine='InnoDB' mysql_engine='InnoDB'
) )
op.create_index(op.f('ix_resources_owner_group_id'), 'resources', ['owner_group_id'], unique=False) except Exception as e:
op.create_index(op.f('ix_resources_owner_user_id'), 'resources', ['owner_user_id'], unique=False) print(str(e))
op.create_table('user_device', try:
op.create_index(op.f('ix_resources_owner_group_id'), 'resources', ['owner_group_id'], unique=False)
except Exception as e:
print(str(e))
try:
op.create_index(op.f('ix_resources_owner_user_id'), 'resources', ['owner_user_id'], unique=False)
except Exception as e:
print(str(e))
try:
op.create_table('user_device',
sa.Column('user_id', sa.Integer(), nullable=True), sa.Column('user_id', sa.Integer(), nullable=True),
sa.Column('kode', sa.String(length=256), nullable=True), sa.Column('kode', sa.String(length=256), nullable=True),
sa.Column('token', sa.String(length=256), nullable=True), sa.Column('token', sa.String(length=256), nullable=True),
...@@ -270,7 +322,10 @@ def upgrade(): ...@@ -270,7 +322,10 @@ def upgrade():
sa.ForeignKeyConstraint(['user_id'], ['users.id'], name=op.f('fk_user_device_user_id_users')), sa.ForeignKeyConstraint(['user_id'], ['users.id'], name=op.f('fk_user_device_user_id_users')),
sa.PrimaryKeyConstraint('id', name=op.f('pk_user_device')) sa.PrimaryKeyConstraint('id', name=op.f('pk_user_device'))
) )
op.create_table('users_groups', except Exception as e:
print(str(e))
try:
op.create_table('users_groups',
sa.Column('group_id', sa.Integer(), nullable=False), sa.Column('group_id', sa.Integer(), nullable=False),
sa.Column('user_id', sa.Integer(), nullable=False), sa.Column('user_id', sa.Integer(), nullable=False),
sa.ForeignKeyConstraint(['group_id'], ['groups.id'], name=op.f('fk_users_groups_group_id_groups'), onupdate='CASCADE', ondelete='CASCADE'), sa.ForeignKeyConstraint(['group_id'], ['groups.id'], name=op.f('fk_users_groups_group_id_groups'), onupdate='CASCADE', ondelete='CASCADE'),
...@@ -279,7 +334,10 @@ def upgrade(): ...@@ -279,7 +334,10 @@ def upgrade():
mysql_charset='utf8', mysql_charset='utf8',
mysql_engine='InnoDB' mysql_engine='InnoDB'
) )
op.create_table('users_permissions', except Exception as e:
print(str(e))
try:
op.create_table('users_permissions',
sa.Column('user_id', sa.Integer(), nullable=False), sa.Column('user_id', sa.Integer(), nullable=False),
sa.Column('perm_name', sa.Unicode(length=64), nullable=False), sa.Column('perm_name', sa.Unicode(length=64), nullable=False),
sa.ForeignKeyConstraint(['user_id'], ['users.id'], name=op.f('fk_users_permissions_user_id_users'), onupdate='CASCADE', ondelete='CASCADE'), sa.ForeignKeyConstraint(['user_id'], ['users.id'], name=op.f('fk_users_permissions_user_id_users'), onupdate='CASCADE', ondelete='CASCADE'),
...@@ -287,7 +345,10 @@ def upgrade(): ...@@ -287,7 +345,10 @@ def upgrade():
mysql_charset='utf8', mysql_charset='utf8',
mysql_engine='InnoDB' mysql_engine='InnoDB'
) )
op.create_table('groups_resources_permissions', except Exception as e:
print(str(e))
try:
op.create_table('groups_resources_permissions',
sa.Column('group_id', sa.Integer(), nullable=False), sa.Column('group_id', sa.Integer(), nullable=False),
sa.Column('resource_id', sa.Integer(), autoincrement=False, nullable=False), sa.Column('resource_id', sa.Integer(), autoincrement=False, nullable=False),
sa.Column('perm_name', sa.Unicode(length=50), nullable=False), sa.Column('perm_name', sa.Unicode(length=50), nullable=False),
...@@ -297,7 +358,10 @@ def upgrade(): ...@@ -297,7 +358,10 @@ def upgrade():
mysql_charset='utf8', mysql_charset='utf8',
mysql_engine='InnoDB' mysql_engine='InnoDB'
) )
op.create_table('res_kecamatan', except Exception as e:
print(str(e))
try:
op.create_table('res_kecamatan',
sa.Column('ibu_kota', sa.String(length=64), nullable=True), sa.Column('ibu_kota', sa.String(length=64), nullable=True),
sa.Column('dati2_id', sa.SmallInteger(), nullable=True), sa.Column('dati2_id', sa.SmallInteger(), nullable=True),
sa.Column('nama', sa.String(length=128), nullable=False), sa.Column('nama', sa.String(length=128), nullable=False),
...@@ -313,7 +377,10 @@ def upgrade(): ...@@ -313,7 +377,10 @@ def upgrade():
sa.PrimaryKeyConstraint('id', name=op.f('pk_res_kecamatan')), sa.PrimaryKeyConstraint('id', name=op.f('pk_res_kecamatan')),
# schema=schema # schema=schema
) )
op.create_table('users_resources_permissions', except Exception as e:
print(str(e))
try:
op.create_table('users_resources_permissions',
sa.Column('user_id', sa.Integer(), nullable=False), sa.Column('user_id', sa.Integer(), nullable=False),
sa.Column('resource_id', sa.Integer(), autoincrement=False, nullable=False), sa.Column('resource_id', sa.Integer(), autoincrement=False, nullable=False),
sa.Column('perm_name', sa.Unicode(length=64), nullable=False), sa.Column('perm_name', sa.Unicode(length=64), nullable=False),
...@@ -323,7 +390,10 @@ def upgrade(): ...@@ -323,7 +390,10 @@ def upgrade():
mysql_charset='utf8', mysql_charset='utf8',
mysql_engine='InnoDB' mysql_engine='InnoDB'
) )
op.create_table('res_desa', except Exception as e:
print(str(e))
try:
op.create_table('res_desa',
sa.Column('kategori', sa.String(length=32), nullable=True), sa.Column('kategori', sa.String(length=32), nullable=True),
sa.Column('kecamatan_id', sa.SmallInteger(), nullable=True), sa.Column('kecamatan_id', sa.SmallInteger(), nullable=True),
sa.Column('nama', sa.String(length=128), nullable=False), sa.Column('nama', sa.String(length=128), nullable=False),
...@@ -339,7 +409,10 @@ def upgrade(): ...@@ -339,7 +409,10 @@ def upgrade():
sa.PrimaryKeyConstraint('id', name=op.f('pk_res_desa')), sa.PrimaryKeyConstraint('id', name=op.f('pk_res_desa')),
# schema=schema # schema=schema
) )
op.create_table('partner', except Exception as e:
print(str(e))
try:
op.create_table('partner',
sa.Column('kelurahan', sa.String(length=128), nullable=True), sa.Column('kelurahan', sa.String(length=128), nullable=True),
sa.Column('kecamatan', sa.String(length=128), nullable=True), sa.Column('kecamatan', sa.String(length=128), nullable=True),
sa.Column('kota', sa.String(length=128), nullable=True), sa.Column('kota', sa.String(length=128), nullable=True),
...@@ -385,7 +458,10 @@ def upgrade(): ...@@ -385,7 +458,10 @@ def upgrade():
sa.ForeignKeyConstraint(['provinsi_id'], ['res_provinsi.id'], name=op.f('fk_partner_provinsi_id_res_provinsi')), sa.ForeignKeyConstraint(['provinsi_id'], ['res_provinsi.id'], name=op.f('fk_partner_provinsi_id_res_provinsi')),
sa.PrimaryKeyConstraint('id', name=op.f('pk_partner')) sa.PrimaryKeyConstraint('id', name=op.f('pk_partner'))
) )
op.create_table('user_area', except Exception as e:
print(str(e))
try:
op.create_table('user_area',
sa.Column('user_id', sa.Integer(), nullable=True), sa.Column('user_id', sa.Integer(), nullable=True),
sa.Column('desa_id', sa.Integer(), nullable=True), sa.Column('desa_id', sa.Integer(), nullable=True),
sa.Column('id', sa.Integer(), sa.Identity(always=True), sa.Column('id', sa.Integer(), sa.Identity(always=True),
...@@ -394,7 +470,10 @@ def upgrade(): ...@@ -394,7 +470,10 @@ def upgrade():
sa.ForeignKeyConstraint(['user_id'], ['users.id'], name=op.f('fk_user_area_user_id_users')), sa.ForeignKeyConstraint(['user_id'], ['users.id'], name=op.f('fk_user_area_user_id_users')),
sa.PrimaryKeyConstraint('id', name=op.f('pk_user_area')) sa.PrimaryKeyConstraint('id', name=op.f('pk_user_area'))
) )
op.create_table('partner_files', except Exception as e:
print(str(e))
try:
op.create_table('partner_files',
sa.Column('partner_id', sa.Integer(), nullable=False), sa.Column('partner_id', sa.Integer(), nullable=False),
sa.Column('file_name', sa.String(length=256), nullable=False), sa.Column('file_name', sa.String(length=256), nullable=False),
sa.Column('description', sa.String(length=256), nullable=True), sa.Column('description', sa.String(length=256), nullable=True),
...@@ -408,37 +487,121 @@ def upgrade(): ...@@ -408,37 +487,121 @@ def upgrade():
sa.ForeignKeyConstraint(['partner_id'], ['partner.id'], name=op.f('fk_partner_files_partner_id_partner')), sa.ForeignKeyConstraint(['partner_id'], ['partner.id'], name=op.f('fk_partner_files_partner_id_partner')),
sa.PrimaryKeyConstraint('id', name=op.f('pk_partner_files')) sa.PrimaryKeyConstraint('id', name=op.f('pk_partner_files'))
) )
except Exception as e:
print(str(e))
# ### end Alembic commands ### # ### end Alembic commands ###
def downgrade(): def downgrade():
# ### commands auto generated by Alembic - please adjust! ### # ### commands auto generated by Alembic - please adjust! ###
op.drop_table('partner_files') try:
op.drop_table('user_area') op.drop_table('partner_files')
op.drop_table('partner') except Exception as e:
op.drop_table('res_desa') #, schema=schema print(str(e))
op.drop_table('users_resources_permissions') try:
op.drop_table('res_kecamatan'), # schema = schema op.drop_table('user_area')
op.drop_table('groups_resources_permissions') except Exception as e:
op.drop_table('users_permissions') print(str(e))
op.drop_table('users_groups') try:
op.drop_table('user_device') op.drop_table('partner')
op.drop_index(op.f('ix_resources_owner_user_id'), table_name='resources') except Exception as e:
op.drop_index(op.f('ix_resources_owner_group_id'), table_name='resources') print(str(e))
op.drop_table('resources') try:
op.drop_table('res_dati2') op.drop_table('res_desa') #, schema=schema
op.drop_table('groups_permissions') except Exception as e:
op.drop_table('external_identities') print(str(e))
op.drop_table('users') try:
op.drop_table('targets') op.drop_table('users_resources_permissions')
op.drop_table('target_jenis') except Exception as e:
op.drop_table('routes') print(str(e))
op.drop_table('res_provinsi') try:
op.drop_table('permissions') op.drop_table('res_kecamatan'), # schema = schema
op.drop_table('departemen') except Exception as e:
op.drop_table('parameters') print(str(e))
op.drop_table('logs') try:
op.drop_table('holiday') op.drop_table('groups_resources_permissions')
op.drop_table('groups') except Exception as e:
print(str(e))
try:
op.drop_table('users_permissions')
except Exception as e:
print(str(e))
try:
op.drop_table('users_groups')
except Exception as e:
print(str(e))
try:
op.drop_table('user_device')
except Exception as e:
print(str(e))
try:
op.drop_index(op.f('ix_resources_owner_user_id'), table_name='resources')
except Exception as e:
print(str(e))
try:
op.drop_index(op.f('ix_resources_owner_group_id'), table_name='resources')
except Exception as e:
print(str(e))
try:
op.drop_table('resources')
except Exception as e:
print(str(e))
try:
op.drop_table('res_dati2')
except Exception as e:
print(str(e))
try:
op.drop_table('groups_permissions')
except Exception as e:
print(str(e))
try:
op.drop_table('external_identities')
except Exception as e:
print(str(e))
try:
op.drop_table('users')
except Exception as e:
print(str(e))
try:
op.drop_table('targets')
except Exception as e:
print(str(e))
try:
op.drop_table('target_jenis')
except Exception as e:
print(str(e))
try:
op.drop_table('routes')
except Exception as e:
print(str(e))
try:
op.drop_table('res_provinsi')
except Exception as e:
print(str(e))
try:
op.drop_table('permissions')
except Exception as e:
print(str(e))
try:
op.drop_table('departemen')
except Exception as e:
print(str(e))
try:
op.drop_table('parameters')
except Exception as e:
print(str(e))
try:
op.drop_table('logs')
except Exception as e:
print(str(e))
try:
op.drop_table('holiday')
except Exception as e:
print(str(e))
try:
op.drop_table('groups')
except Exception as e:
print(str(e))
# ### end Alembic commands ### # ### end Alembic commands ###
...@@ -18,7 +18,8 @@ depends_on = None ...@@ -18,7 +18,8 @@ depends_on = None
def upgrade(): def upgrade():
# ### commands auto generated by Alembic - please adjust! ### # ### commands auto generated by Alembic - please adjust! ###
op.create_table('eselon', try:
op.create_table('eselon',
sa.Column('pangkat', sa.String(length=32), nullable=True), sa.Column('pangkat', sa.String(length=32), nullable=True),
sa.Column('ruang', sa.String(length=1), nullable=True), sa.Column('ruang', sa.String(length=1), nullable=True),
sa.Column('tunjangan', sa.BigInteger(), nullable=True), sa.Column('tunjangan', sa.BigInteger(), nullable=True),
...@@ -29,11 +30,15 @@ def upgrade(): ...@@ -29,11 +30,15 @@ def upgrade():
sa.Column('updated', sa.DateTime(), nullable=True), sa.Column('updated', sa.DateTime(), nullable=True),
sa.Column('create_uid', sa.Integer(), nullable=True), sa.Column('create_uid', sa.Integer(), nullable=True),
sa.Column('update_uid', sa.Integer(), nullable=True), sa.Column('update_uid', sa.Integer(), nullable=True),
sa.Column('id', sa.Integer(), nullable=False), sa.Column('id', sa.Integer(), sa.Identity(always=True),
primary_key=True, nullable=False),
sa.PrimaryKeyConstraint('id', name=op.f('pk_eselon')), sa.PrimaryKeyConstraint('id', name=op.f('pk_eselon')),
# schema='public' # schema='public'
) )
op.create_table('pangkat', except Exception as e:
print(str(e))
try:
op.create_table('pangkat',
sa.Column('pangkat', sa.String(length=32), nullable=True), sa.Column('pangkat', sa.String(length=32), nullable=True),
sa.Column('ruang', sa.String(length=1), nullable=True), sa.Column('ruang', sa.String(length=1), nullable=True),
sa.Column('nama', sa.String(length=128), nullable=False), sa.Column('nama', sa.String(length=128), nullable=False),
...@@ -43,11 +48,15 @@ def upgrade(): ...@@ -43,11 +48,15 @@ def upgrade():
sa.Column('updated', sa.DateTime(), nullable=True), sa.Column('updated', sa.DateTime(), nullable=True),
sa.Column('create_uid', sa.Integer(), nullable=True), sa.Column('create_uid', sa.Integer(), nullable=True),
sa.Column('update_uid', sa.Integer(), nullable=True), sa.Column('update_uid', sa.Integer(), nullable=True),
sa.Column('id', sa.Integer(), nullable=False), sa.Column('id', sa.Integer(), sa.Identity(always=True),
primary_key=True, nullable=False),
sa.PrimaryKeyConstraint('id', name=op.f('pk_pangkat')), sa.PrimaryKeyConstraint('id', name=op.f('pk_pangkat')),
# schema='public' # schema='public'
) )
op.create_table('jabatan', except Exception as e:
print(str(e))
try:
op.create_table('jabatan',
sa.Column('jenis', sa.SmallInteger(), nullable=True), sa.Column('jenis', sa.SmallInteger(), nullable=True),
sa.Column('nama_lain', sa.String( sa.Column('nama_lain', sa.String(
length=128), nullable=True), length=128), nullable=True),
...@@ -61,19 +70,24 @@ def upgrade(): ...@@ -61,19 +70,24 @@ def upgrade():
sa.Column('updated', sa.DateTime(), nullable=True), sa.Column('updated', sa.DateTime(), nullable=True),
sa.Column('create_uid', sa.Integer(), nullable=True), sa.Column('create_uid', sa.Integer(), nullable=True),
sa.Column('update_uid', sa.Integer(), nullable=True), sa.Column('update_uid', sa.Integer(), nullable=True),
sa.Column('id', sa.Integer(), nullable=False), sa.Column('id', sa.Integer(), sa.Identity(always=True),
primary_key=True, nullable=False),
sa.ForeignKeyConstraint(['eselon_id'], ['eselon.id'], name=op.f( sa.ForeignKeyConstraint(['eselon_id'], ['eselon.id'], name=op.f(
'fk_jabatan_eselon_id_eselon')), 'fk_jabatan_eselon_id_eselon')),
sa.PrimaryKeyConstraint('id', name=op.f('pk_jabatan')), sa.PrimaryKeyConstraint('id', name=op.f('pk_jabatan')),
# schema='public' # schema='public'
) )
op.create_table('partner_departemen', except Exception as e:
print(str(e))
try:
op.create_table('partner_departemen',
sa.Column('partner_id', sa.Integer(), nullable=True), sa.Column('partner_id', sa.Integer(), nullable=True),
sa.Column('departemen_id', sa.Integer(), nullable=True), sa.Column('departemen_id', sa.Integer(), nullable=True),
sa.Column('jabatan_id', sa.SmallInteger(), nullable=True), sa.Column('jabatan_id', sa.SmallInteger(), nullable=True),
sa.Column('mulai', sa.DateTime(), nullable=True), sa.Column('mulai', sa.DateTime(), nullable=True),
sa.Column('selesai', sa.DateTime(), nullable=True), sa.Column('selesai', sa.DateTime(), nullable=True),
sa.Column('id', sa.Integer(), nullable=False), sa.Column('id', sa.Integer(), sa.Identity(always=True),
primary_key=True, nullable=False),
sa.ForeignKeyConstraint(['departemen_id'], ['departemen.id'], name=op.f( sa.ForeignKeyConstraint(['departemen_id'], ['departemen.id'], name=op.f(
'fk_partner_departemen_departemen_id_departemen')), 'fk_partner_departemen_departemen_id_departemen')),
sa.ForeignKeyConstraint(['jabatan_id'], ['jabatan.id'], name=op.f( sa.ForeignKeyConstraint(['jabatan_id'], ['jabatan.id'], name=op.f(
...@@ -86,6 +100,9 @@ def upgrade(): ...@@ -86,6 +100,9 @@ def upgrade():
'jabatan_id', 'mulai', name='partner_dept_uq'), 'jabatan_id', 'mulai', name='partner_dept_uq'),
# schema='public' # schema='public'
) )
except Exception as e:
print(str(e))
# ### end Alembic commands ### # ### end Alembic commands ###
......
...@@ -30,7 +30,8 @@ def upgrade(): ...@@ -30,7 +30,8 @@ def upgrade():
sa.Column('updated', sa.DateTime(), nullable=True), sa.Column('updated', sa.DateTime(), nullable=True),
sa.Column('create_uid', sa.Integer(), nullable=True), sa.Column('create_uid', sa.Integer(), nullable=True),
sa.Column('update_uid', sa.Integer(), nullable=True), sa.Column('update_uid', sa.Integer(), nullable=True),
sa.Column('id', sa.Integer(), nullable=False), sa.Column('id', sa.Integer(), sa.Identity(always=True),
primary_key=True , nullable=False),
sa.PrimaryKeyConstraint('id', name=op.f('pk_text_printers')), sa.PrimaryKeyConstraint('id', name=op.f('pk_text_printers')),
# schema='public' # schema='public'
) )
......
from datetime import datetime, timezone
import sqlalchemy as sa
class ForceUTCDatetime(sa.TypeDecorator):
"""Ensures datetimes are timezone-aware UTC objects across both DBs."""
impl = sa.TIMESTAMP(timezone=True)
cache_ok = True
def process_bind_param(self, value, dialect):
if value is not None:
if value.tzinfo is None:
# Interpret naive datetime as UTC or handle according to business logic
value = value.replace(tzinfo=timezone.utc)
else:
# Convert any other timezone directly to UTC
value = value.astimezone(timezone.utc)
return value
def process_result_value(self, value, dialect):
if value is not None and value.tzinfo is None:
# Force the Python object to be aware if Oracle stripped the offset
return value.replace(tzinfo=timezone.utc)
return value
from .meta import * from .meta import *
from .common import * from .common import *
from .base import * from .base import *
......
...@@ -59,72 +59,66 @@ class _Departemen(NamaModel): ...@@ -59,72 +59,66 @@ class _Departemen(NamaModel):
eng = cls.db_session.get_bind() eng = cls.db_session.get_bind()
if eng.dialect.name.lower() == "oracle": if eng.dialect.name.lower() == "oracle":
sql = """ sql = """
SELECT SELECT
--LPAD(' ', (LEVEL - 1) * 2) || nama AS hierarchy, --LPAD(' ', (LEVEL - 1) * 2) || nama AS hierarchy,
SYS_CONNECT_BY_PATH(nama, '/') AS hierarchy, SYS_CONNECT_BY_PATH(nama, '/') AS hierarchy,
id, id,
kode, kode,
nama, nama,
parent_id, parent_id,
status, status,
(LEVEL - 1) AS lvl, (LEVEL - 1) AS lvl,
SYS_CONNECT_BY_PATH(id, ',') AS path SYS_CONNECT_BY_PATH(id, ',') AS path
FROM FROM
departemen departemen
START WITH START WITH
parent_id IS NULL parent_id IS NULL
CONNECT BY CONNECT BY
PRIOR id = parent_id PRIOR id = parent_id
ORDER SIBLINGS BY ORDER SIBLINGS BY
id""" id """
else: else:
sql = """ sql = """
WITH RECURSIVE dep_tree AS ( WITH RECURSIVE dep_tree AS (
SELECT SELECT
id,
kode,
nama,
parent_id,
status,
0 AS lvl,
ARRAY[id] AS path
FROM
public.departemen
WHERE
{str_where}
UNION ALL
SELECT
c.id,
c.kode,
c.nama,
c.parent_id,
c.status,
ct.level + 1,
ct.path || c.id
FROM
public.departemen c
JOIN
dep_tree ct ON c.parent_id = ct.id
)
SELECT
REPEAT(' ', lvl) || nama AS hierarchy, -- Indent names based on level
id, id,
kode, kode,
nama, nama::text AS nama,
parent_id, parent_id,
status, status,
level, 0 AS lvl,
path ARRAY[id] AS path
FROM FROM departemen
dep_tree
""".format(str_where=str_where) UNION ALL
SELECT
c.id,
c.kode,
ct.nama || '/' || c.nama::text AS nama,
c.parent_id,
c.status,
ct.lvl + 1,
ct.path || c.id
FROM departemen c
JOIN dep_tree ct ON c.parent_id = ct.id
)
SELECT DISTINCT ON (kode)
id,
kode,
nama as hierarchy,
parent_id,
status,
lvl,
path
FROM dep_tree
"""
#.format(str_where=str_where)
if search: if search:
sql = f"{sql} WHERE nama ILIKE '%{search}%' " sql = f"{sql} WHERE nama ILIKE '%{search}%' "
sql = sql+"""ORDER BY path;""" sql = sql+"""ORDER BY kode, path """
return cls.db_session.execute(text(sql)).fetchall() return cls.db_session.execute(text(sql)).fetchall()
......
from datetime import datetime from datetime import datetime
import logging import logging
from math import log
from requests import session
import pytz
import sqlalchemy as sa import sqlalchemy as sa
from pyramid.authorization import (Allow, Authenticated, ALL_PERMISSIONS) from pyramid.authorization import (Allow, Authenticated, ALL_PERMISSIONS)
# from sqlalchemy import TIMESTAMP
from sqlalchemy import ( from sqlalchemy import (
Column, Integer, DateTime, SmallInteger, String) Column, Integer, DateTime, SmallInteger, String)
from sqlalchemy.orm import (relationship, backref) from sqlalchemy.orm import (relationship, backref)
...@@ -28,7 +26,7 @@ from opensipkd.tools import as_timezone ...@@ -28,7 +26,7 @@ from opensipkd.tools import as_timezone
from .base import CommonModel, DBSession, DefaultModel from .base import CommonModel, DBSession, DefaultModel
from .meta import Base from .meta import Base
from .base import TABLE_ARGS from .base import TABLE_ARGS
from . import ForceUTCDatetime
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
class _GroupPermission(GroupPermissionMixin): class _GroupPermission(GroupPermissionMixin):
pass pass
...@@ -93,7 +91,7 @@ class _UserResourcePermission(UserResourcePermissionMixin): ...@@ -93,7 +91,7 @@ class _UserResourcePermission(UserResourcePermissionMixin):
class UserResourcePermission(_UserResourcePermission, Base): class UserResourcePermission(_UserResourcePermission, Base):
pass pass
from sqlalchemy import TIMESTAMP
class _User(UserMixin, BaseModel): class _User(UserMixin, BaseModel):
db_session = DBSession db_session = DBSession
last_login_date = Column(DateTime(timezone=True), nullable=True) last_login_date = Column(DateTime(timezone=True), nullable=True)
...@@ -106,7 +104,8 @@ class _User(UserMixin, BaseModel): ...@@ -106,7 +104,8 @@ class _User(UserMixin, BaseModel):
# 'Asia/Jakarta')), # 'Asia/Jakarta')),
# server_default="2000-01-01 01:01+7", # server_default="2000-01-01 01:01+7",
# ) # )
security_code_date = Column(TIMESTAMP(timezone=True)) # security_code_date = Column(TIMESTAMP(timezone=True))
security_code_date = Column(ForceUTCDatetime)
api_key = Column(String(256)) api_key = Column(String(256))
partner_id = Column(Integer) # , ForeignKey(Partner.id)) partner_id = Column(Integer) # , ForeignKey(Partner.id))
company_id = Column(Integer) # , ForeignKey(Partner.id)) company_id = Column(Integer) # , ForeignKey(Partner.id))
......
...@@ -179,7 +179,10 @@ class Views(BaseView): ...@@ -179,7 +179,10 @@ class Views(BaseView):
url_dict = request.matchdict url_dict = request.matchdict
if url_dict['act'] == 'grid': if url_dict['act'] == 'grid':
query = Departemen.cte_get() query = Departemen.cte_get()
data = [{"id": d.id, "kode": d.kode, "nama": d.hierarchy[1:], "status": d.status, data = [{"id": d.id, "kode": d.kode,
"nama": d.hierarchy.startswith(
'/') and d.hierarchy[1:] or d.hierarchy,
"status": d.status,
"level_id": d.lvl, "parent_id": d.parent_id} for d in query] "level_id": d.lvl, "parent_id": d.parent_id} for d in query]
return { return {
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!