Commit 0a7163a5 by aa.gusti

perbaikan posisi pegawai

1 parent 1fc51a77
...@@ -367,7 +367,8 @@ def save_request(request, values, row=None): ...@@ -367,7 +367,8 @@ def save_request(request, values, row=None):
values['selesai'] = date_from_str(values['selesai']) values['selesai'] = date_from_str(values['selesai'])
else: else:
values['selesai'] = None values['selesai'] = None
query_struktural = PartnerDBSession.query(Jabatan.jenis).filter(Jabatan.id == values['jabatan_id']).first() query_struktural = DBSession.query(Jabatan.jenis).\
filter(Jabatan.id == values['jabatan_id']).scalar()
values['struktural_id'] = query_struktural values['struktural_id'] = query_struktural
row = save(values, request, row) row = save(values, request, row)
request.session.flash('Posisi Partner sudah disimpan.') request.session.flash('Posisi Partner sudah disimpan.')
......
...@@ -22,6 +22,7 @@ from ..views import ColumnDT, DataTables, BaseView ...@@ -22,6 +22,7 @@ from ..views import ColumnDT, DataTables, BaseView
SESS_ADD_FAILED = 'Tambah departemen gagal' SESS_ADD_FAILED = 'Tambah departemen gagal'
SESS_EDIT_FAILED = 'Edit departemen gagal' SESS_EDIT_FAILED = 'Edit departemen gagal'
def get_departemen_list(): def get_departemen_list():
r = [] r = []
q = DBSession.query(Departemen).order_by(Departemen.nama) q = DBSession.query(Departemen).order_by(Departemen.nama)
...@@ -30,50 +31,53 @@ def get_departemen_list(): ...@@ -30,50 +31,53 @@ def get_departemen_list():
r.append(g) r.append(g)
return r return r
@colander.deferred @colander.deferred
def departemen_widget(node, kw): def departemen_widget(node, kw):
values = kw.get('departemen_list', []) values = kw.get('departemen_list', [])
return widget.Select2Widget(values=values) return widget.Select2Widget(values=values)
class AddSchema(colander.Schema): class AddSchema(colander.Schema):
parent_id = colander.SchemaNode(colander.Integer(), parent_id = colander.SchemaNode(colander.Integer(),
widget=widget.HiddenWidget(), oid="parent_id", missing=colander.drop, ) widget=widget.HiddenWidget(), oid="parent_id", missing=colander.drop, )
parent_nm = colander.SchemaNode(colander.String(), missing=colander.drop, parent_nm = colander.SchemaNode(colander.String(), missing=colander.drop,
widget=AutocompleteInputWidget(size=60, min_length=3, ), widget=AutocompleteInputWidget(size=60, min_length=3, ),
oid="parent_nm", title="Induk") oid="parent_nm", title="Induk")
parent_kd = colander.SchemaNode(colander.String(), parent_kd = colander.SchemaNode(colander.String(),
widget=widget.TextInputWidget(css_class="readonly"), widget=widget.TextInputWidget(css_class="readonly"),
missing=colander.drop, oid="parent_kd", title="Kode Induk") missing=colander.drop, oid="parent_kd", title="Kode Induk")
kode = colander.SchemaNode(colander.String(), kode = colander.SchemaNode(colander.String(),
validator=colander.Length(max=32), oid="kode") validator=colander.Length(max=32), oid="kode")
nama = colander.SchemaNode(colander.String(), oid="nama") nama = colander.SchemaNode(colander.String(), oid="nama")
singkat = colander.SchemaNode(colander.String(), missing=colander.drop, singkat = colander.SchemaNode(colander.String(), missing=colander.drop,
oid="singkat") oid="singkat")
kategori = colander.SchemaNode(colander.String(), missing=colander.drop, kategori = colander.SchemaNode(colander.String(), missing=colander.drop,
oid="kategori") oid="kategori")
alamat = colander.SchemaNode(colander.String(), missing=colander.drop, alamat = colander.SchemaNode(colander.String(), missing=colander.drop,
oid="alamat") oid="alamat")
status = colander.SchemaNode(colander.Boolean(), oid="status") status = colander.SchemaNode(colander.Boolean(), oid="status")
def after_bind(self, schema, kwargs): def after_bind(self, schema, kwargs):
request = kwargs["request"] request = kwargs["request"]
self["parent_nm"] = colander.SchemaNode(colander.String(), self["parent_nm"] = colander.SchemaNode(colander.String(),
missing=colander.drop, missing=colander.drop,
widget=AutocompleteInputWidget(size=60, min_length=3, widget=AutocompleteInputWidget(size=60, min_length=3,
values=f"{request._host}/departemen/hon/act"), oid="parent_nm", values=f"{request._host}/departemen/hon/act"),
title="Induk", ) oid="parent_nm",
title="Induk", )
class EditSchema(AddSchema): class EditSchema(AddSchema):
id = colander.SchemaNode(colander.String(), missing=colander.drop, id = colander.SchemaNode(colander.String(), missing=colander.drop,
widget=widget.HiddenWidget(readonly=True)) widget=widget.HiddenWidget(readonly=True))
class ViewDepartemen(BaseView): class ViewDepartemen(BaseView):
...@@ -237,11 +241,11 @@ class ViewDepartemen(BaseView): ...@@ -237,11 +241,11 @@ class ViewDepartemen(BaseView):
dep_alias = aliased(Departemen) dep_alias = aliased(Departemen)
if url_dict['act'] == 'grid': if url_dict['act'] == 'grid':
columns = [ColumnDT(Departemen.id, mData='id'), columns = [ColumnDT(Departemen.id, mData='id'),
ColumnDT(Departemen.kode, mData='kode'), ColumnDT(Departemen.kode, mData='kode'),
ColumnDT(Departemen.nama, mData='nama'), ColumnDT(Departemen.nama, mData='nama'),
ColumnDT(dep_alias.nama, mData='parent'), ColumnDT(dep_alias.nama, mData='parent'),
ColumnDT(Departemen.status, mData='status'), ColumnDT(Departemen.status, mData='status'),
ColumnDT(Departemen.level_id, mData='level_id'), ] ColumnDT(Departemen.level_id, mData='level_id'), ]
query = DBSession.query().select_from(Departemen).outerjoin( query = DBSession.query().select_from(Departemen).outerjoin(
dep_alias, Departemen.parent_id == dep_alias.id) dep_alias, Departemen.parent_id == dep_alias.id)
row_table = DataTables(request.GET, query, columns) row_table = DataTables(request.GET, query, columns)
...@@ -249,10 +253,10 @@ class ViewDepartemen(BaseView): ...@@ -249,10 +253,10 @@ class ViewDepartemen(BaseView):
elif url_dict['act'] == 'hon': elif url_dict['act'] == 'hon':
term = 'term' in params and params['term'] or '' term = 'term' in params and params['term'] or ''
q = DBSession.query(Departemen).filter(Departemen.status == 1, q = DBSession.query(Departemen). \
Departemen.nama.ilike( filter(Departemen.status == 1,
'%%%s%%' % Departemen.nama.ilike('%%%s%%' % term)) \
term)).order_by( .order_by(
Departemen.nama) Departemen.nama)
rows = q.all() rows = q.all()
r = [] r = []
...@@ -264,13 +268,12 @@ class ViewDepartemen(BaseView): ...@@ -264,13 +268,12 @@ class ViewDepartemen(BaseView):
elif url_dict['act'] == 'honk': elif url_dict['act'] == 'honk':
term = 'term' in params and params['term'] or '' term = 'term' in params and params['term'] or ''
q = DBSession.query(Departemen).filter(Departemen.status == 1, q = DBSession.query(Departemen) \
func.concat(Departemen.nama, .filter(Departemen.status == 1,
';', func.concat(Departemen.nama, ';',
Departemen.kode).ilike( Departemen.kode) \
'%%%s%%' % .ilike('%%%s%%' % term)) \
term)).order_by( .order_by(Departemen.nama)
Departemen.nama)
rows = q.all() rows = q.all()
r = [] r = []
for k in rows: for k in rows:
...@@ -473,4 +476,4 @@ def save_upload(request, kode, csv_row): ...@@ -473,4 +476,4 @@ def save_upload(request, kode, csv_row):
row.kode = kode row.kode = kode
row.nama = csv_row['nama'] row.nama = csv_row['nama']
DBSession.add(row) DBSession.add(row)
return row
\ No newline at end of file \ No newline at end of file
return row
import re import re
from datetime import datetime
from email.utils import parseaddr from email.utils import parseaddr
import transaction import transaction
...@@ -17,9 +18,8 @@ from .user import add_member_count ...@@ -17,9 +18,8 @@ from .user import add_member_count
from .user import save_user from .user import save_user
from .user_group import save as save_groups from .user_group import save as save_groups
from .. import get_params, log from .. import get_params, log
from ..models import DBSession, UserService from ..models import DBSession, UserService, Departemen
from ..models import ( from ..models import (User, Partner, Group, UserGroup, PartnerDepartemen)
User, Partner, Group, UserGroup)
from opensipkd.tools import create_now, get_settings from opensipkd.tools import create_now, get_settings
from opensipkd.tools.api import custom_error from opensipkd.tools.api import custom_error
from opensipkd.base.tools.api import ( from opensipkd.base.tools.api import (
...@@ -229,13 +229,27 @@ def login_(request, data): ...@@ -229,13 +229,27 @@ def login_(request, data):
for group in groups: for group in groups:
group = group.to_dict() group = group.to_dict()
group_data.append(dict(group_name=group['group_name'])) group_data.append(dict(group_name=group['group_name']))
now = datetime.now().date()
partner_dep = Departemen.query() \
.join(PartnerDepartemen, Departemen.id == PartnerDepartemen.departemen_id) \
.join(Partner, Partner.id == PartnerDepartemen.partner_id) \
.filter(Partner.email == row.email,
PartnerDepartemen.mulai <= now,
PartnerDepartemen.selesai >= now).first()
if partner_dep:
departemen = dict(id=partner_dep.id,
kode=partner_dep.kode,
nama=partner_dep.nama)
else:
departemen = None
result = dict(user_name=row.user_name, result = dict(user_name=row.user_name,
token=row.security_code, token=row.security_code,
nik=partner and partner.kode or '', nik=partner and partner.kode or '',
nama=partner and partner.nama or '', nama=partner and partner.nama or '',
is_pegawai=is_pegawai, is_pegawai=is_pegawai,
group=group_data) group=group_data,
departemens=departemen)
result = is_list and [result] or result result = is_list and [result] or result
return dict(data=result) return dict(data=result)
...@@ -277,7 +291,7 @@ def get_profile(request, data): ...@@ -277,7 +291,7 @@ def get_profile(request, data):
auth_from_rpc(request) auth_from_rpc(request)
user = get_user(data) user = get_user(data)
if not user or not UserService.check_password(user, data['password']): if not user or not UserService.check_password(user, data['password']):
raise JsonRpcInvalidLoginError raise JsonRpcInvalidLoginError
return get_profile_(user) return get_profile_(user)
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!