Add error handling for table creation in Alembic migrations

1 parent 884d29c3
......@@ -19,7 +19,8 @@ schema=None
# schema = 'public'
def upgrade():
# ### 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('id', sa.Integer(), sa.Identity(always=True),
primary_key=True, nullable=False, ),
......@@ -30,13 +31,19 @@ def upgrade():
mysql_charset='utf8',
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('id', sa.Integer(), sa.Identity(always=True),
primary_key=True, nullable=False),
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),
primary_key=True, nullable=False),
sa.Column('line_id', sa.String(length=32), nullable=False),
......@@ -48,7 +55,10 @@ def upgrade():
sa.PrimaryKeyConstraint('id', name=op.f('pk_logs')),
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('nama', sa.String(length=128), nullable=False),
sa.Column('kode', sa.String(length=32), nullable=False),
......@@ -61,7 +71,10 @@ def upgrade():
primary_key=True, nullable=False),
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),
primary_key=True, nullable=False),
sa.Column('parent_id', sa.Integer(), nullable=True),
......@@ -81,7 +94,10 @@ def upgrade():
# 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),
primary_key=True, nullable=False),
sa.Column('perm_name', sa.String(length=64), nullable=False),
......@@ -91,7 +107,10 @@ def upgrade():
sa.UniqueConstraint('perm_name', name=op.f('uq_permissions_perm_name')),
# 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('ibu_kota', sa.String(length=64), nullable=True),
sa.Column('nama', sa.String(length=128), nullable=False),
......@@ -106,7 +125,10 @@ def upgrade():
sa.PrimaryKeyConstraint('id', name=op.f('pk_res_provinsi')),
# 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),
primary_key=True, nullable=False),
sa.Column('kode', sa.String(length=128), nullable=True),
......@@ -133,7 +155,10 @@ def upgrade():
sa.UniqueConstraint('kode', name=op.f('uq_routes_kode')),
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('kode', sa.String(length=32), nullable=False),
sa.Column('status', sa.SmallInteger(), nullable=False),
......@@ -145,7 +170,10 @@ def upgrade():
primary_key=True, nullable=False),
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('jenis', sa.Integer(), nullable=False),
sa.Column('m01', sa.BigInteger(), nullable=False),
......@@ -171,7 +199,10 @@ def upgrade():
primary_key=True, nullable=False),
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('registered_date', sa.DateTime(timezone=True), nullable=False),
# sa.Column('security_code_date', sa.DateTime(timezone=True),
......@@ -196,7 +227,10 @@ def upgrade():
mysql_charset='utf8',
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_user_name', sa.Unicode(length=255), nullable=True),
sa.Column('local_user_id', sa.Integer(), nullable=False),
......@@ -209,7 +243,10 @@ def upgrade():
mysql_charset='utf8',
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('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'),
......@@ -218,7 +255,10 @@ def upgrade():
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('ibu_kota', sa.String(length=64), nullable=True),
sa.Column('provinsi_id', sa.SmallInteger(), nullable=True),
......@@ -235,7 +275,10 @@ def upgrade():
sa.PrimaryKeyConstraint('id', name=op.f('pk_res_dati2')),
# 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),
primary_key=True, autoincrement=True, nullable=False),
sa.Column('parent_id', sa.Integer(), nullable=True),
......@@ -251,9 +294,18 @@ def upgrade():
mysql_charset='utf8',
mysql_engine='InnoDB'
)
op.create_index(op.f('ix_resources_owner_group_id'), 'resources', ['owner_group_id'], unique=False)
op.create_index(op.f('ix_resources_owner_user_id'), 'resources', ['owner_user_id'], unique=False)
op.create_table('user_device',
except Exception as e:
print(str(e))
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('kode', sa.String(length=256), nullable=True),
sa.Column('token', sa.String(length=256), nullable=True),
......@@ -270,7 +322,10 @@ def upgrade():
sa.ForeignKeyConstraint(['user_id'], ['users.id'], name=op.f('fk_user_device_user_id_users')),
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('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'),
......@@ -279,7 +334,10 @@ def upgrade():
mysql_charset='utf8',
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('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'),
......@@ -287,7 +345,10 @@ def upgrade():
mysql_charset='utf8',
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('resource_id', sa.Integer(), autoincrement=False, nullable=False),
sa.Column('perm_name', sa.Unicode(length=50), nullable=False),
......@@ -297,7 +358,10 @@ def upgrade():
mysql_charset='utf8',
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('dati2_id', sa.SmallInteger(), nullable=True),
sa.Column('nama', sa.String(length=128), nullable=False),
......@@ -313,7 +377,10 @@ def upgrade():
sa.PrimaryKeyConstraint('id', name=op.f('pk_res_kecamatan')),
# 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('resource_id', sa.Integer(), autoincrement=False, nullable=False),
sa.Column('perm_name', sa.Unicode(length=64), nullable=False),
......@@ -323,7 +390,10 @@ def upgrade():
mysql_charset='utf8',
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('kecamatan_id', sa.SmallInteger(), nullable=True),
sa.Column('nama', sa.String(length=128), nullable=False),
......@@ -339,7 +409,10 @@ def upgrade():
sa.PrimaryKeyConstraint('id', name=op.f('pk_res_desa')),
# 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('kecamatan', sa.String(length=128), nullable=True),
sa.Column('kota', sa.String(length=128), nullable=True),
......@@ -385,7 +458,10 @@ def upgrade():
sa.ForeignKeyConstraint(['provinsi_id'], ['res_provinsi.id'], name=op.f('fk_partner_provinsi_id_res_provinsi')),
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('desa_id', sa.Integer(), nullable=True),
sa.Column('id', sa.Integer(), sa.Identity(always=True),
......@@ -394,7 +470,10 @@ def upgrade():
sa.ForeignKeyConstraint(['user_id'], ['users.id'], name=op.f('fk_user_area_user_id_users')),
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('file_name', sa.String(length=256), nullable=False),
sa.Column('description', sa.String(length=256), nullable=True),
......@@ -408,37 +487,121 @@ def upgrade():
sa.ForeignKeyConstraint(['partner_id'], ['partner.id'], name=op.f('fk_partner_files_partner_id_partner')),
sa.PrimaryKeyConstraint('id', name=op.f('pk_partner_files'))
)
except Exception as e:
print(str(e))
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_table('partner_files')
op.drop_table('user_area')
op.drop_table('partner')
op.drop_table('res_desa') #, schema=schema
op.drop_table('users_resources_permissions')
op.drop_table('res_kecamatan'), # schema = schema
op.drop_table('groups_resources_permissions')
op.drop_table('users_permissions')
op.drop_table('users_groups')
op.drop_table('user_device')
op.drop_index(op.f('ix_resources_owner_user_id'), table_name='resources')
op.drop_index(op.f('ix_resources_owner_group_id'), table_name='resources')
op.drop_table('resources')
op.drop_table('res_dati2')
op.drop_table('groups_permissions')
op.drop_table('external_identities')
op.drop_table('users')
op.drop_table('targets')
op.drop_table('target_jenis')
op.drop_table('routes')
op.drop_table('res_provinsi')
op.drop_table('permissions')
op.drop_table('departemen')
op.drop_table('parameters')
op.drop_table('logs')
op.drop_table('holiday')
op.drop_table('groups')
try:
op.drop_table('partner_files')
except Exception as e:
print(str(e))
try:
op.drop_table('user_area')
except Exception as e:
print(str(e))
try:
op.drop_table('partner')
except Exception as e:
print(str(e))
try:
op.drop_table('res_desa') #, schema=schema
except Exception as e:
print(str(e))
try:
op.drop_table('users_resources_permissions')
except Exception as e:
print(str(e))
try:
op.drop_table('res_kecamatan'), # schema = schema
except Exception as e:
print(str(e))
try:
op.drop_table('groups_resources_permissions')
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 ###
......@@ -18,7 +18,8 @@ depends_on = None
def upgrade():
# ### 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('ruang', sa.String(length=1), nullable=True),
sa.Column('tunjangan', sa.BigInteger(), nullable=True),
......@@ -29,11 +30,15 @@ def upgrade():
sa.Column('updated', sa.DateTime(), nullable=True),
sa.Column('create_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')),
# 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('ruang', sa.String(length=1), nullable=True),
sa.Column('nama', sa.String(length=128), nullable=False),
......@@ -43,11 +48,15 @@ def upgrade():
sa.Column('updated', sa.DateTime(), nullable=True),
sa.Column('create_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')),
# 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('nama_lain', sa.String(
length=128), nullable=True),
......@@ -61,19 +70,24 @@ def upgrade():
sa.Column('updated', sa.DateTime(), nullable=True),
sa.Column('create_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(
'fk_jabatan_eselon_id_eselon')),
sa.PrimaryKeyConstraint('id', name=op.f('pk_jabatan')),
# 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('departemen_id', sa.Integer(), nullable=True),
sa.Column('jabatan_id', sa.SmallInteger(), nullable=True),
sa.Column('mulai', 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(
'fk_partner_departemen_departemen_id_departemen')),
sa.ForeignKeyConstraint(['jabatan_id'], ['jabatan.id'], name=op.f(
......@@ -86,6 +100,9 @@ def upgrade():
'jabatan_id', 'mulai', name='partner_dept_uq'),
# schema='public'
)
except Exception as e:
print(str(e))
# ### end Alembic commands ###
......
......@@ -30,7 +30,8 @@ def upgrade():
sa.Column('updated', sa.DateTime(), nullable=True),
sa.Column('create_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')),
# 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 .common import *
from .base import *
......
......@@ -59,72 +59,66 @@ class _Departemen(NamaModel):
eng = cls.db_session.get_bind()
if eng.dialect.name.lower() == "oracle":
sql = """
SELECT
--LPAD(' ', (LEVEL - 1) * 2) || nama AS hierarchy,
SYS_CONNECT_BY_PATH(nama, '/') AS hierarchy,
id,
kode,
nama,
parent_id,
status,
(LEVEL - 1) AS lvl,
SYS_CONNECT_BY_PATH(id, ',') AS path
FROM
departemen
START WITH
parent_id IS NULL
CONNECT BY
PRIOR id = parent_id
ORDER SIBLINGS BY
id"""
SELECT
--LPAD(' ', (LEVEL - 1) * 2) || nama AS hierarchy,
SYS_CONNECT_BY_PATH(nama, '/') AS hierarchy,
id,
kode,
nama,
parent_id,
status,
(LEVEL - 1) AS lvl,
SYS_CONNECT_BY_PATH(id, ',') AS path
FROM
departemen
START WITH
parent_id IS NULL
CONNECT BY
PRIOR id = parent_id
ORDER SIBLINGS BY
id """
else:
sql = """
WITH RECURSIVE dep_tree AS (
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
WITH RECURSIVE dep_tree AS (
SELECT
id,
kode,
nama,
nama::text AS nama,
parent_id,
status,
level,
path
FROM
dep_tree
""".format(str_where=str_where)
0 AS lvl,
ARRAY[id] AS path
FROM departemen
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:
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()
......
from datetime import datetime
import logging
from math import log
from requests import session
import pytz
import sqlalchemy as sa
from pyramid.authorization import (Allow, Authenticated, ALL_PERMISSIONS)
# from sqlalchemy import TIMESTAMP
from sqlalchemy import (
Column, Integer, DateTime, SmallInteger, String)
from sqlalchemy.orm import (relationship, backref)
......@@ -28,7 +26,7 @@ from opensipkd.tools import as_timezone
from .base import CommonModel, DBSession, DefaultModel
from .meta import Base
from .base import TABLE_ARGS
from . import ForceUTCDatetime
log = logging.getLogger(__name__)
class _GroupPermission(GroupPermissionMixin):
pass
......@@ -93,7 +91,7 @@ class _UserResourcePermission(UserResourcePermissionMixin):
class UserResourcePermission(_UserResourcePermission, Base):
pass
from sqlalchemy import TIMESTAMP
class _User(UserMixin, BaseModel):
db_session = DBSession
last_login_date = Column(DateTime(timezone=True), nullable=True)
......@@ -106,7 +104,8 @@ class _User(UserMixin, BaseModel):
# 'Asia/Jakarta')),
# 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))
partner_id = Column(Integer) # , ForeignKey(Partner.id))
company_id = Column(Integer) # , ForeignKey(Partner.id))
......
......@@ -179,7 +179,10 @@ class Views(BaseView):
url_dict = request.matchdict
if url_dict['act'] == 'grid':
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]
return {
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!