Refactor .gitignore, enhance __init__.py with mimetypes import, add upload metho…

…d in base.py, update routes.csv with new route, modify initializedb.py comments, improve base_views.py with deferred status, clean up 500.pt and maps.pt templates, and implement departemen_chg.py for department management.
1 parent d8777b0b
......@@ -25,7 +25,7 @@ sdist/
var/
wheels/
inventori/
local/*
local/
*.egg-info/
.installed.cfg
*.egg
......
......@@ -7,6 +7,8 @@ import re
import datetime
import decimal
import deform
import mimetypes
from pkg_resources import resource_filename
from pyramid.renderers import JSON
from pyramid_beaker import session_factory_from_settings
......
......@@ -3,6 +3,8 @@ from datetime import datetime
import ziggurat_foundations.models
from opensipkd.tools import as_timezone
from opensipkd.tools.upload import append_csv
from sqlalchemy import Column, String, SmallInteger, Integer, DateTime, func, Numeric
from sqlalchemy import inspect as sa_inspect
from sqlalchemy.ext.hybrid import hybrid_property
......@@ -18,6 +20,7 @@ class MySession(Session):
session_factory = sessionmaker(class_=MySession)
DBSession = scoped_session(session_factory)
register(DBSession)
ziggurat_foundations.models.DBSession = DBSession
TABLE_ARGS = dict(extend_existing=True, schema="public")
......@@ -77,6 +80,11 @@ class CommonModel(object):
def as_timezone(self, fieldname):
date_ = getattr(self, fieldname)
return date_ and as_timezone(date_) or None
@classmethod
def upload(cls, file, keys, **kwargs):
append_csv(cls, file, keys, get_file_func=get_file,
db_session=cls.db_session, dbase=Base, **kwargs)
class DefaultModel(CommonModel):
......
......@@ -46,6 +46,7 @@ base-departemen-edit,/departemen/{id}/edit,base,departemen,,,,admin,base-departe
base-departemen-view,/departemen/{id}/view,base,departemen,,,,admin,base-departemen,Departemen View,1,0,,,form6.pt,
base-departemen-delete,/departemen/{id}/delete,base,departemen,,,,admin,base-departemen,Departemen Delete,1,0,,,form6.pt,
base-departemen-upload,/departemen/upload,base,departemen,,,,admin,base-departemen,Departemen Uload,1,0,,,form6.pt,
departemen-chg,/departemen/change,base,departemen_chg,,view_change,,dept-change,,Ubah Departemen,1,0,,,form.pt,
base-provinsi,/provinsi,base,provinsi,,view_list,,admin,base-admin,Provinsi,1,0,,1,form.pt,
base-provinsi-act,/provinsi/{act}/act,base,provinsi,,,,admin,base-provinsi,Provinsi Action,1,0,,,json,
base-provinsi-add,/provinsi/add,base,provinsi,,,,admin,base-provinsi,Provinsi Add,1,0,,,form6.pt,
......
......@@ -189,7 +189,7 @@ def restore_csv(table, filename, get_file_func=get_file, db_session=DBSession):
return True
# def append_csv(table, filename, keys, get_file_func=get_file):
# def append_csv(table, filename, keys, t_func=get_file):
# def append_csv(table, filename, keys, get_file_func=get_file, db_session=DBSession):
# Feb 10, 2018 by aagusti
# penambahan parameter db_sesion apabila caller mempunyai db_sesion yang berbeda
......
......@@ -1198,11 +1198,13 @@ class BaseView(object):
def get_partner(self):
return Partner.query_email(self.req.user.email).first()
@colander.deferred
def deferred_status(node, kw):
values = kw.get('daftar_status', [])
return widget.SelectWidget(values=values)
"""
# @colander.deferred
# def deferred_status(node, kw):
# values = kw.get('daftar_status', [])
# return widget.SelectWidget(values=values)
# def email_validator(node, value):
......
import colander
from deform import (widget, )
from opensipkd.models import Departemen
from deform.exception import (ValidationFailure)
from pyramid.httpexceptions import (HTTPFound)
from urllib3 import request
from ..views import BaseView
SESS_ADD_FAILED = 'Tambah departemen gagal'
SESS_EDIT_FAILED = 'Edit departemen gagal'
class AddSchema(colander.Schema):
departemen_id = colander.SchemaNode(
colander.Integer(),
widget = widget.Select2Widget(),
)
def after_bind(self, schema, kwargs):
request = kwargs["request"]
schema["departemen_id"].widget.values = kwargs.get("departemens", [])
class Views(BaseView):
def __init__(self, request):
super().__init__(request)
self.add_schema = AddSchema
self.table = Departemen
def get_bindings(self, row=None):
departemens = self.table.get_list()
return {"departemens": departemens}
def view_change(self):
next_url = self.req.params.get('next')
if not next_url:
next_url = self.req.referrer or self.req.route_url('base-home')
return HTTPFound(self.req.route_url('departemen-chg', _query={'next': next_url}))
if self.req.POST:
if 'save' in self.req.POST:
form = self.get_form(self.add_schema)
controls = self.req.POST.items()
try:
appstruct = form.validate(controls)
except ValidationFailure as e:
return self.returned_form(e)
departemen_id = appstruct['departemen_id']
row = self.table.query_id(departemen_id).first()
self.ses['departemen_id'] = departemen_id
self.ses['departemen_nm'] = row and row.nama or "Select Departemen"
self.ses['departemen_kd']= row and row.kode or ""
self.ses["dept_id"] = departemen_id
return HTTPFound(next_url)
return super().view_add()
\ No newline at end of file
<html>
<body>
<div class="well">
<h3>Internal Server Error</h3>
<!-- Error session flash -->
<div tal:condition="request.session.peek_flash()">
<div class="alert alert-success" tal:repeat="message request.session.pop_flash()"><i class="fa fa-fw fa-lg fa-check-circle"></i>&nbsp;${message}</div>
<div class="alert alert-success" tal:repeat="message request.session.pop_flash()"><i
class="fa fa-fw fa-lg fa-check-circle"></i>&nbsp;${message}</div>
</div>
<div tal:condition="request.session.peek_flash('error')">
<div class="alert alert-danger" tal:repeat="message request.session.pop_flash('error')"><i class="fa fa-fw fa-lg fa-times-circle"></i>&nbsp;${message}</div>
<div class="alert alert-danger" tal:repeat="message request.session.pop_flash('error')"><i
class="fa fa-fw fa-lg fa-times-circle"></i>&nbsp;${message}</div>
</div>
<!-- Error session flash -->
<p><img src="${request._host}/static/img/logo.png" class="img-float img-thumbnail"/></p>
<p><img src="${home}/static/img/logo.png" class="img-float img-thumbnail" /></p>
Halaman yang anda cari tidak ada
</div>
</body>
</html>
</html>
\ No newline at end of file
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!