Commit 0a7163a5 by aa.gusti

perbaikan posisi pegawai

1 parent 1fc51a77
......@@ -367,7 +367,8 @@ def save_request(request, values, row=None):
values['selesai'] = date_from_str(values['selesai'])
else:
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
row = save(values, request, row)
request.session.flash('Posisi Partner sudah disimpan.')
......
......@@ -22,6 +22,7 @@ from ..views import ColumnDT, DataTables, BaseView
SESS_ADD_FAILED = 'Tambah departemen gagal'
SESS_EDIT_FAILED = 'Edit departemen gagal'
def get_departemen_list():
r = []
q = DBSession.query(Departemen).order_by(Departemen.nama)
......@@ -30,11 +31,13 @@ def get_departemen_list():
r.append(g)
return r
@colander.deferred
def departemen_widget(node, kw):
values = kw.get('departemen_list', [])
return widget.Select2Widget(values=values)
class AddSchema(colander.Schema):
parent_id = colander.SchemaNode(colander.Integer(),
widget=widget.HiddenWidget(), oid="parent_id", missing=colander.drop, )
......@@ -67,7 +70,8 @@ class AddSchema(colander.Schema):
self["parent_nm"] = colander.SchemaNode(colander.String(),
missing=colander.drop,
widget=AutocompleteInputWidget(size=60, min_length=3,
values=f"{request._host}/departemen/hon/act"), oid="parent_nm",
values=f"{request._host}/departemen/hon/act"),
oid="parent_nm",
title="Induk", )
......@@ -249,10 +253,10 @@ class ViewDepartemen(BaseView):
elif url_dict['act'] == 'hon':
term = 'term' in params and params['term'] or ''
q = DBSession.query(Departemen).filter(Departemen.status == 1,
Departemen.nama.ilike(
'%%%s%%' %
term)).order_by(
q = DBSession.query(Departemen). \
filter(Departemen.status == 1,
Departemen.nama.ilike('%%%s%%' % term)) \
.order_by(
Departemen.nama)
rows = q.all()
r = []
......@@ -264,13 +268,12 @@ class ViewDepartemen(BaseView):
elif url_dict['act'] == 'honk':
term = 'term' in params and params['term'] or ''
q = DBSession.query(Departemen).filter(Departemen.status == 1,
func.concat(Departemen.nama,
';',
Departemen.kode).ilike(
'%%%s%%' %
term)).order_by(
Departemen.nama)
q = DBSession.query(Departemen) \
.filter(Departemen.status == 1,
func.concat(Departemen.nama, ';',
Departemen.kode) \
.ilike('%%%s%%' % term)) \
.order_by(Departemen.nama)
rows = q.all()
r = []
for k in rows:
......
import re
from datetime import datetime
from email.utils import parseaddr
import transaction
......@@ -17,9 +18,8 @@ from .user import add_member_count
from .user import save_user
from .user_group import save as save_groups
from .. import get_params, log
from ..models import DBSession, UserService
from ..models import (
User, Partner, Group, UserGroup)
from ..models import DBSession, UserService, Departemen
from ..models import (User, Partner, Group, UserGroup, PartnerDepartemen)
from opensipkd.tools import create_now, get_settings
from opensipkd.tools.api import custom_error
from opensipkd.base.tools.api import (
......@@ -229,13 +229,27 @@ def login_(request, data):
for group in groups:
group = group.to_dict()
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,
token=row.security_code,
nik=partner and partner.kode or '',
nama=partner and partner.nama or '',
is_pegawai=is_pegawai,
group=group_data)
group=group_data,
departemens=departemen)
result = is_list and [result] or result
return dict(data=result)
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!