Commit 89c9884a by aa.gusti

perbaikan menus dan upload

1 parent 7611904f
......@@ -105,6 +105,8 @@ ENV/
opensipkd/base/static/img/*
opensipkd/base/static/icon/*
!opensipkd/base/static/icon/default.png
!opensipkd/base/static/img/pyramid.png
!opensipkd/base/static/img/opensipkd.png
!opensipkd/base/static/img/opensipkd_bg.png
......
......@@ -248,7 +248,13 @@ def get_menus(request):
result = {}
for menu in menus:
if menu.find(':') > -1:
if menu.find(',') > -1:
key, val = menu.strip().split(',')
key = key.strip().strip('/')
val = re.sub('[//-]', ' ', val)
elif menu.find(':') > -1:
key, val = menu.strip().split(':')
key = key.strip().strip('/')
val = re.sub('[//-]', ' ', val)
......
......@@ -52,9 +52,7 @@ def get_file(filename):
return open(fullpath)
def restore_csv(table, filename, get_file_func=get_file, db_session=None):
if not db_session:
db_session = DBSession
def restore_csv(table, filename, get_file_func=get_file, db_session=DBSession):
q = db_session.query(table)
if q.first():
return
......@@ -65,20 +63,36 @@ def restore_csv(table, filename, get_file_func=get_file, db_session=None):
is_first = True
fmap = dict()
for cf in reader:
# print(cf)
# sys.exit()
if is_first:
is_first = False
for fieldname in cf.keys():
t = fieldname.split('/')
if not fieldname:
continue
try:
t = fieldname.split('/')
except Exception as e:
print(fieldname, cf.keys())
raise e
fname_orig = t[0]
schema = "public"
if t[1:]:
foreign_table, foreign_field = t[1].split('.')
foreign_table = Table(foreign_table, Base.metadata, autoload=True)
t_array = t[1].split('.')
if len(t_array) == 2:
foreign_table = t_array[0]
foreign_field = t_array[1]
else:
schema = t_array[0]
foreign_table = t_array[1]
foreign_field = t_array[2]
# foreign_table, foreign_field = t[1].split('.')
foreign_table = Table(foreign_table, Base.metadata,
autoload=True, schema=schema)
foreign_field = getattr(foreign_table.c, foreign_field)
foreigns[fieldname] = (foreign_table, foreign_field)
fmap[fieldname] = fname_orig
is_first = False
row = table()
for fieldname in cf:
......@@ -122,7 +136,6 @@ def append_csv(table, filename, keys, get_file_func=get_file,
foreigns = dict()
is_first = True
fmap = dict()
print(f, reader)
for cf in reader:
if is_first:
is_first = False
......@@ -136,19 +149,19 @@ def append_csv(table, filename, keys, get_file_func=get_file,
raise e
fname_orig = t[0]
schema="public"
schema = "public"
if t[1:]:
t_array = t[1].split('.')
if len(t_array)==2:
foreign_table=t_array[0]
if len(t_array) == 2:
foreign_table = t_array[0]
foreign_field = t_array[1]
else:
schema=t_array[0]
foreign_table=t_array[1]
schema = t_array[0]
foreign_table = t_array[1]
foreign_field = t_array[2]
foreign_table = Table(foreign_table, Base.metadata, autoload=True,
schema=schema)
foreign_table = Table(foreign_table, Base.metadata,
autoload=True, schema=schema)
foreign_field = getattr(foreign_table.c, foreign_field)
foreigns[fname] = (foreign_table, foreign_field)
......@@ -204,6 +217,7 @@ def append_csv(table, filename, keys, get_file_func=get_file,
transaction.commit() # diperlukan commit per record khususnya untuk yang internal link
def ask_password(name):
while True:
pass1 = getpass('Tulis password untuk {}: '.format(name))
......
......@@ -227,9 +227,6 @@ button {
border-color: #f39c12
}
// from application implementation
table.dataTable tr.selected td {
background-color: #9fafd1
......@@ -277,7 +274,7 @@ div.dataTables_length label {
.ui-autocomplete-loading {
padding-right:10px;
background: url(../img/loading.gif) right 10px center no-repeat !important;
background: url("../img/loading.gif") right 10px center no-repeat !important;
}
.ui-autocomplete {
max-height: 200px;
......
......@@ -112,12 +112,13 @@ class BaseView(object):
self.add_schema = ""
self.table = ""
def route_list(self, ):
def route_list(self, msg=None, error=""):
return HTTPFound(location=self.req.route_url(self.list_route))
@staticmethod
def form_validator(form, value):
def form_validator(self, form, value):
pass
def get_params(self, params):
return get_params(params)
......
......@@ -77,6 +77,7 @@ class EditSchema(AddSchema):
missing=colander.drop,
widget=widget.HiddenWidget())
class ViewPartner(BaseView):
def __init__(self, request):
super(ViewPartner, self).__init__(request)
......@@ -165,12 +166,12 @@ class ViewPartner(BaseView):
}])
self.list_cols = [{'title': "ID", 'data': "id"},
{'title': "NIP", 'data': "nik", 'width': '100pt'},
{'title': "Nama", 'data': "nama"},
{'title': "Nama", 'data': "nama"},
{'title': "Unit Kerja", 'data': "departemen"},
{'title': "Jabatan", 'data': "jabatan"},
{'title': "Jenis Jabatan", 'data': "jenis"},
{'title': "Mulai", 'data': "mulai"},
{'title': "Selesai", 'data': "selesai"},]
{'title': "Selesai", 'data': "selesai"}, ]
self.list_buttons = 'btn_view, btn_add, btn_edit, btn_delete, ' \
'btn_close'
self.form_params = dict(scripts="")
......@@ -198,7 +199,6 @@ class ViewPartner(BaseView):
elif not value['partner_id']:
err_partner()
def get_form(self, class_form, row=None, buttons=(btn_save, btn_cancel)):
schema = class_form(validator=self.form_validator)
schema = schema.bind(request=self.req)
......@@ -215,7 +215,6 @@ class ViewPartner(BaseView):
PartnerDBSession.flush()
return row
def save_request(self, values, row=None):
request = self.req
if 'id' in request.matchdict:
......@@ -230,32 +229,27 @@ class ViewPartner(BaseView):
values['selesai'] = date_from_str(values['selesai'])
else:
values['selesai'] = None
query_struktural = DBSession.query(Jabatan.jenis).\
query_struktural = DBSession.query(Jabatan.jenis). \
filter(Jabatan.id == values['jabatan_id']).scalar()
values['struktural_id'] = query_struktural
row = self.save(values, request.user, row)
request.session.flash('Posisi Partner sudah disimpan.')
def route_list(self, ):
return HTTPFound(location=self.req.route_url(self.list_route))
def session_failed(self, session_name):
r = dict(form=self.request.session[session_name])
del self.request.session[session_name]
return r
def query_id(self):
return PartnerDBSession.query(PartnerDepartemen).filter_by(id=self.req.matchdict['id'])
def id_not_found(self):
msg = 'Posisi Partner ID %s Tidak Ditemukan.' % self.req.matchdict['id']
self.request.session.flash(msg, 'error')
return route_list()
self.req.session.flash(msg, 'error')
return self.route_list()
########
# List #
......@@ -414,7 +408,6 @@ class ViewPartner(BaseView):
form.set_appstruct(self.get_values(row, values))
return dict(form=form.render(readonly=True), scripts=self.form_scripts)
#########
# Add #
#########
......@@ -430,7 +423,7 @@ class ViewPartner(BaseView):
try:
controls = form.validate(controls)
except ValidationFailure as e:
form.render(appstruct = e.cstruct)
form.render(appstruct=e.cstruct)
return dict(form=form.render(), scripts=self.form_scripts)
self.save_request(dict(controls))
return self.route_list()
......@@ -522,10 +515,10 @@ class ViewPartner(BaseView):
if jb:
values['struktural_nm'] = jb.nama
form.set_appstruct(self.get_values(row, values))
return dict(row=row,form=form.render(readonly=True), scripts=self.form_scripts)
return dict(row=row, form=form.render(readonly=True), scripts=self.form_scripts)
def get_values(self, row, values=None):
if not values:
values = row.to_dict()
return values
\ No newline at end of file
return values
......@@ -37,18 +37,6 @@
<div id="content" class="container">
<div class="row">
<div class="col-sm-10 col-sm-offset-1">
<!--div class="col-sm-4 padding-thin">
<div class="box about">
<a href="#" data-toggle="modal"
data-target="#about-us"
style="color:#fff; text-decoration:none;">
<i class="fa fa-info-circle"></i>
<span class="about-text">Powered by</span>
<img id="" src="${home}static/img/opensipkd.png"
alt="">
</a>
</div>
</div-->
<div class="col-sm-12 padding-thin">
<div class="box appname">
<div class="col-sm-3 padding-medium" align="center">
......@@ -64,10 +52,17 @@
</div>
<div class="col-sm-12 no-padding" align="center">
<div tal:repeat="modul modules" class="col-sm-3 col-xs-6 module padding-thin">
<a href="${home}${modul}" icon="${modul.replace('/','_')}" class="box">
<a tal:condition="modul.find('://')<0"
href="${home}${modul}" icon="${modul.replace('/','_')}" class="box">
<img alt="" class="icon-modul" src="${home}static/icon/${modul.replace('/','_')}.png">
<span>${modules[modul]}</span>
</a>
<a tal:condition="modul.find('://')>-1" target="_blank"
href="${modul}" class="box">
<img alt="" class="icon-modul"
src="${home}static/icon/${modul.replace('://','').replace('https','').replace('http','')}.png">
<span>${modules[modul]}</span>
</a>
</div>
</div>
......
<html metal:use-macro="load: main.pt">
<!-- content -->
<div metal:fill-slot="content">
<!-- content -->
<div metal:fill-slot="content">
<div class="row">
<div class="row">
<div class="panel panel-default">
<div class="panel panel-default">
<div class="panel-body">
<div class="col-md-10 col-md-offset-1">
<blockquote>
<p>Untuk Background, beri nama background pada file<br>Untuk Logo beri nama logo pada file</p>
</blockquote>
<div tal:content="structure form"/>
</div>
</div>
<div class="panel-body">
<div class="col-md-10 col-md-offset-1">
<blockquote>
<p>Untuk Background, beri nama background pada file<br>Untuk Logo beri nama logo pada file</p>
</blockquote>
<div tal:content="structure form"/>
</div>
</div>
</div>
</div>
<!-- end content -->
</div>
<!-- end content -->
</html>
\ No newline at end of file
......@@ -51,11 +51,15 @@ class AddSchema(colander.Schema):
FileData(),
widget=widget.FileUploadWidget(tmpstore),
title='Unggah')
typ = colander.SchemaNode(
colander.String(),
widget=widget.SelectWidget(values=(('img', "Image"), ('icon', "Icon"))),
title='Jenis')
def get_form(schema_cls):
schema = schema_cls()
return Form(schema, buttons=('simpan', 'batalkan'))
return Form(schema, buttons=('simpan', 'batal'))
@view_config(route_name='upload-logo',
......@@ -65,7 +69,6 @@ def view_file(request):
form = get_form(AddSchema)
if request.POST:
if 'simpan' in request.POST:
settings = get_settings()
input_file = request.POST['upload'].file
filename = request.POST['upload'].filename.lower()
ext = get_ext(filename).lower()
......@@ -81,8 +84,13 @@ def view_file(request):
elif filename.startswith('background'):
fname = f"background{ext}"
else:
fname=filename
fullpath = os.path.join( static_path, 'img/'+fname)
fname = filename
folder = os.path.join(static_path, request.POST['typ'])
if not os.path.exists(folder):
os.makedirs(folder)
fullpath = os.path.join(folder, fname)
output_file = open(fullpath, 'wb')
input_file.seek(0)
while True:
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!