Commit 7b78d4ba by aagusti

perbaikan next_act

1 parent 82d99d70
...@@ -135,7 +135,7 @@ def restore_csv(table, filename, get_file_func=get_file, db_session=DBSession): ...@@ -135,7 +135,7 @@ def restore_csv(table, filename, get_file_func=get_file, db_session=DBSession):
# penambahan parameter db_sesion apabila caller mempunyai db_sesion yang berbeda # penambahan parameter db_sesion apabila caller mempunyai db_sesion yang berbeda
# modified by tatang 12-02-2019 # modified by tatang 12-02-2019
# alasan: bila terjadi kesalahan append, # alasan: bila terjadi kesalahan append,
# masih memungkinkan update yg sudah ada dgn syarat is value dari keys masih sama # masih memungkinkan update yg sudah ada dgn syarat is value dari keys masih sama
# sperti salah route url asalkan kode msh sama # sperti salah route url asalkan kode msh sama
def append_csv(table, filename, keys, get_file_func=get_file, def append_csv(table, filename, keys, get_file_func=get_file,
db_session=DBSession, update_exist=False): db_session=DBSession, update_exist=False):
......
...@@ -8,12 +8,13 @@ from dateutil.relativedelta import relativedelta ...@@ -8,12 +8,13 @@ from dateutil.relativedelta import relativedelta
from opensipkd.base.views.upload import tmpstore from opensipkd.base.views.upload import tmpstore
from opensipkd.tools.captcha import get_captcha from opensipkd.tools.captcha import get_captcha
from pyramid.httpexceptions import HTTPFound from opensipkd.tools.report import csv_response
from pyramid.httpexceptions import HTTPFound, HTTPNotFound
from .common import DataTables from .common import DataTables
from .. import DBSession, get_params, get_urls from .. import DBSession, get_params, get_urls
from opensipkd.tools import dmy, date_from_str, get_settings, get_ext, \ from opensipkd.tools import dmy, date_from_str, get_settings, get_ext, \
date_from_str date_from_str, get_random_string
import colander import colander
from deform import (widget, Form, ValidationFailure, Button, FileData, ) from deform import (widget, Form, ValidationFailure, Button, FileData, )
from email.utils import parseaddr from email.utils import parseaddr
...@@ -185,7 +186,7 @@ class BaseView(object): ...@@ -185,7 +186,7 @@ class BaseView(object):
if "bindings" in kwargs and kwargs["bindings"]: if "bindings" in kwargs and kwargs["bindings"]:
bindings = kwargs["bindings"] bindings = kwargs["bindings"]
else: else:
bindings = self.get_bindings() bindings = self.get_bindings(row)
form_params = {} form_params = {}
# form_params["after_bind"] = after_bind # form_params["after_bind"] = after_bind
if "validator" in kwargs and kwargs["validator"]: if "validator" in kwargs and kwargs["validator"]:
...@@ -332,7 +333,19 @@ class BaseView(object): ...@@ -332,7 +333,19 @@ class BaseView(object):
return return
def next_act(self): def next_act(self):
raise NotImplementedError url_dict = self.req.matchdict
if url_dict['act'] == 'csv':
query = self.table.query_register()
row = query.first()
header = row.keys()
rows = [list(item) for item in query.all()]
filename = f"{get_random_string(16)}.csv"
value = {
'header': header,
'rows': rows,
}
return csv_response(self.req, value, filename)
raise HTTPNotFound
def list_join(self, query): def list_join(self, query):
return query return query
...@@ -484,14 +497,14 @@ class BaseView(object): ...@@ -484,14 +497,14 @@ class BaseView(object):
def before_edit(self, form): def before_edit(self, form):
return form return form
def view_edit(self): def view_edit(self, **kwargs):
request = self.req request = self.req
row = self.query_id().first() row = self.query_id().first()
if not row: if not row:
return self.id_not_found() return self.id_not_found()
if not self.bindings: if not self.bindings:
self.bindings = self.get_bindings(row) self.bindings = self.get_bindings(row)
form = self.get_form(self.edit_schema) form = self.get_form(self.edit_schema, **kwargs)
table = self.get_item_table(row) table = self.get_item_table(row)
resources = form.get_widget_resources() resources = form.get_widget_resources()
if request.POST: if request.POST:
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!