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,50 +31,53 @@ 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, )
widget=widget.HiddenWidget(), oid="parent_id", missing=colander.drop, )
parent_nm = colander.SchemaNode(colander.String(), missing=colander.drop,
widget=AutocompleteInputWidget(size=60, min_length=3, ),
oid="parent_nm", title="Induk")
widget=AutocompleteInputWidget(size=60, min_length=3, ),
oid="parent_nm", title="Induk")
parent_kd = colander.SchemaNode(colander.String(),
widget=widget.TextInputWidget(css_class="readonly"),
missing=colander.drop, oid="parent_kd", title="Kode Induk")
widget=widget.TextInputWidget(css_class="readonly"),
missing=colander.drop, oid="parent_kd", title="Kode Induk")
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")
singkat = colander.SchemaNode(colander.String(), missing=colander.drop,
oid="singkat")
oid="singkat")
kategori = colander.SchemaNode(colander.String(), missing=colander.drop,
oid="kategori")
oid="kategori")
alamat = colander.SchemaNode(colander.String(), missing=colander.drop,
oid="alamat")
oid="alamat")
status = colander.SchemaNode(colander.Boolean(), oid="status")
def after_bind(self, schema, kwargs):
request = kwargs["request"]
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",
title="Induk", )
missing=colander.drop,
widget=AutocompleteInputWidget(size=60, min_length=3,
values=f"{request._host}/departemen/hon/act"),
oid="parent_nm",
title="Induk", )
class EditSchema(AddSchema):
id = colander.SchemaNode(colander.String(), missing=colander.drop,
widget=widget.HiddenWidget(readonly=True))
widget=widget.HiddenWidget(readonly=True))
class ViewDepartemen(BaseView):
......@@ -237,11 +241,11 @@ class ViewDepartemen(BaseView):
dep_alias = aliased(Departemen)
if url_dict['act'] == 'grid':
columns = [ColumnDT(Departemen.id, mData='id'),
ColumnDT(Departemen.kode, mData='kode'),
ColumnDT(Departemen.nama, mData='nama'),
ColumnDT(dep_alias.nama, mData='parent'),
ColumnDT(Departemen.status, mData='status'),
ColumnDT(Departemen.level_id, mData='level_id'), ]
ColumnDT(Departemen.kode, mData='kode'),
ColumnDT(Departemen.nama, mData='nama'),
ColumnDT(dep_alias.nama, mData='parent'),
ColumnDT(Departemen.status, mData='status'),
ColumnDT(Departemen.level_id, mData='level_id'), ]
query = DBSession.query().select_from(Departemen).outerjoin(
dep_alias, Departemen.parent_id == dep_alias.id)
row_table = DataTables(request.GET, query, columns)
......@@ -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:
......@@ -473,4 +476,4 @@ def save_upload(request, kode, csv_row):
row.kode = kode
row.nama = csv_row['nama']
DBSession.add(row)
return row
\ No newline at end of file
return row
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)
......@@ -277,7 +291,7 @@ def get_profile(request, data):
auth_from_rpc(request)
user = get_user(data)
if not user or not UserService.check_password(user, data['password']):
raise JsonRpcInvalidLoginError
raise JsonRpcInvalidLoginError
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!