Commit 083dd4d3 by aagusti

list act

1 parent 09f1ee33
...@@ -5,6 +5,7 @@ from datetime import datetime ...@@ -5,6 +5,7 @@ from datetime import datetime
from datatables import ColumnDT from datatables import ColumnDT
from dateutil.relativedelta import relativedelta from dateutil.relativedelta import relativedelta
from opensipkd.pbb.eta import nik_url
from opensipkd.tools.api import JsonRpcInvalidLoginError from opensipkd.tools.api import JsonRpcInvalidLoginError
from opensipkd.tools.form_api import formfield2dict from opensipkd.tools.form_api import formfield2dict
...@@ -15,7 +16,8 @@ from pyramid.httpexceptions import HTTPFound ...@@ -15,7 +16,8 @@ from pyramid.httpexceptions import HTTPFound
from .common import DataTables from .common import DataTables
from .. import DBSession, get_params from .. import DBSession, get_params
from opensipkd.tools import dmy, dmy_to_date, get_settings, get_ext from opensipkd.tools import dmy, dmy_to_date, get_settings, get_ext, \
date_from_str
import colander import colander
from deform import (widget, Form, ValidationFailure, Button, ) from deform import (widget, Form, ValidationFailure, Button, )
from email.utils import parseaddr from email.utils import parseaddr
...@@ -85,9 +87,6 @@ class BaseView(object): ...@@ -85,9 +87,6 @@ class BaseView(object):
except: except:
self.dt_akhir = dmy_to_date(self.akhir) self.dt_akhir = dmy_to_date(self.akhir)
self.ses['akhir'] = self.akhir
self.ses['dt_akhir'] = self.dt_akhir
self.tahun_awal = 'tahun_awal' in self.ses and self.ses[ self.tahun_awal = 'tahun_awal' in self.ses and self.ses[
'tahun_awal'] or self.tahun 'tahun_awal'] or self.tahun
self.tahun_awal = 'tahun_awal' in self.params and self.params[ self.tahun_awal = 'tahun_awal' in self.params and self.params[
...@@ -237,13 +236,18 @@ class BaseView(object): ...@@ -237,13 +236,18 @@ class BaseView(object):
def list_join(self, query): def list_join(self, query):
return query return query
def view_act(self): def list_filter(self, query):
return query
def view_act(self, **kwargs):
url_dict = self.req.matchdict url_dict = self.req.matchdict
if url_dict['act'] == 'grid': if url_dict['act'] == 'grid':
url=[]
columns = [] columns = []
for d in self.list_schema(): for d in self.list_schema():
global_search = hasattr(d, "searchable") and hasattr(d, global_search = hasattr(d, "searchable") and \
"searchable") == False and False or True hasattr(d, "searchable") == False and False \
or True
if hasattr(d, "field"): if hasattr(d, "field"):
if type(d.field) == str: if type(d.field) == str:
columns.append( columns.append(
...@@ -254,15 +258,23 @@ class BaseView(object): ...@@ -254,15 +258,23 @@ class BaseView(object):
else: else:
columns.append( columns.append(
ColumnDT(getattr(self.table, d.name), mData=d.name)) ColumnDT(getattr(self.table, d.name), mData=d.name))
if hasattr(d, "url"):
url.append(d.name)
query = DBSession.query().select_from(self.table) query = DBSession.query().select_from(self.table)
query = self.list_join(query) query = self.list_join(query)
if self.req.user and self.req.user.company_id and hasattr( if self.req.user and self.req.user.company_id and hasattr(
self.table, "company_id"): self.table, "company_id"):
query = query.filter( query = query.filter(
self.table.company_id == self.req.user.company_id) self.table.company_id == self.req.user.company_id)
query=self.list_filter(query)
row_table = DataTables(self.req.GET, query, columns) row_table = DataTables(self.req.GET, query, columns)
return row_table.output_result() result = row_table.output_result()
for d in result["data"]:
for k, v in d.items():
if k in url and v:
link = "/".join([self.home, nik_url, v])
d[k] =f'<a href="{link}" target="_blank">View</a>'
return result
else: else:
return self.next_act() return self.next_act()
...@@ -290,7 +302,7 @@ class BaseView(object): ...@@ -290,7 +302,7 @@ class BaseView(object):
elif "cancel" in self.req.POST or 'batal' in self.req.POST: elif "cancel" in self.req.POST or 'batal' in self.req.POST:
self.cancel_act() self.cancel_act()
else: else:
return self.next_add(form) return self.next_add(form, table=table, resources=resources)
return self.route_list() return self.route_list()
values = self.before_add() values = self.before_add()
...@@ -424,8 +436,6 @@ class BaseView(object): ...@@ -424,8 +436,6 @@ class BaseView(object):
return self.route_list() return self.route_list()
@colander.deferred @colander.deferred
def deferred_status(node, kw): def deferred_status(node, kw):
values = kw.get('daftar_status', []) values = kw.get('daftar_status', [])
......
...@@ -82,17 +82,16 @@ class BaseApi(object): ...@@ -82,17 +82,16 @@ class BaseApi(object):
def _view_add(self, **kwargs): def _view_add(self, **kwargs):
form = self.get_form(self.add_schema, **kwargs) form = self.get_form(self.add_schema, **kwargs)
if "action" in self.data: self.action = self.data.get("action","")
self.action = self.data["action"] if 'save' == self.action:
if 'save' == self.action: values = self.validate_field(form)
values = self.validate_field(form) row = self.save_request(values)
row = self.save_request(values) elif "cancel" == self.action or 'batal' == self.action:
elif "cancel" == self.action or 'batal' == self.action: self.cancel_act()
self.cancel_act() else:
else: return self.next_add(form)
return self.next_add(form)
return self.route_list()
return self.route_list()
values = self.before_add() values = self.before_add()
form.set_appstruct(values) form.set_appstruct(values)
return form return form
......
...@@ -9,6 +9,9 @@ from opensipkd.base import log ...@@ -9,6 +9,9 @@ from opensipkd.base import log
class DataTables(BaseDataTables): class DataTables(BaseDataTables):
def __init__(self, request, query, columns, allow_regex_searches=False):
super().__init__(request, query, columns, allow_regex_searches)
def _set_global_filter_expression(self): def _set_global_filter_expression(self):
# global search filter # global search filter
global_search = self.params.get('search[value]', '') global_search = self.params.get('search[value]', '')
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!