Commit 16b427a9 by aa.gusti

config

1 parent 50ea681f
import importlib
import locale
import logging
import re
......@@ -464,6 +465,41 @@ def _set_routes2(config, module="base"):
return q
def add_view_config(config, module, view_name):
"""
Digunakan untuk mengenerate view_config berdasarkan tabel Routes
config: config
module: application module
views: class or file tobe imported
"""
q = DBSession.query(Route).filter(Route.module == module, Route.status == 1)
for row in q.all():
if row.type == 0:
config.add_route(row.kode, row.path)
if row.nama:
titles[row.kode] = row.nama
elif row.type == 1:
config.add_jsonrpc_endpoint(row.kode, row.path,
default_renderer="json_rpc")
if not row.def_func:
continue
class_view = row.class_view and f".{row.class_view}" or ""
class_name = f"{view_name}{class_view}"
attr = f"view_{row.def_func}"
log.debug(f"Class: {class_name} Attr: {attr}")
_views = importlib.import_module(class_name)
views = _views
if row.template == "json":
renderer = row.template
else:
renderer = "views/templates/" + row.template
config.add_view(views.Views, attr=f"{attr}",
route_name=row.kode, permission=row.permission,
renderer=renderer)
config.scan('.')
def set_routes(config, app_id=None):
if app_id and type(app_id) == str:
return _set_routes2(config, app_id)
......
......@@ -108,10 +108,6 @@ def jasper_export(input_file, output_file=None, schema=None,
}
pyreportjasper = PyReportJasper()
# log.info(input_file)
# log.info(output_file)
# log.info(conn)
# log.info(output_formats)
parameters.update({'python_version': python_version()})
pyreportjasper.config(
input_file,
......@@ -122,8 +118,17 @@ def jasper_export(input_file, output_file=None, schema=None,
locale=report_locale
)
# pyreportjasper.compile(write_jasper=True)
pyreportjasper.process_report()
try:
log.info(input_file)
# log.info(output_file)
# log.info(conn)
# log.info(output_formats)
pyreportjasper.compile(write_jasper=True)
pyreportjasper.process_report()
except Exception as e:
log.debug(e)
raise
output_files = [".".join([output_file, f]) for f in output_formats]
log.info(output_files)
return output_files
\ No newline at end of file
......@@ -137,7 +137,7 @@ class BaseView(object):
self.form_params = dict(scripts="")
self.list_url = ''
self.list_route = ''
self.list_schema = ""
self.list_schema = colander.Schema
self.form_scripts = """
$('#parent_nm').bind('typeahead:selected', function(obj, datum) {
$('#parent_id').val(datum.id);
......@@ -146,8 +146,8 @@ class BaseView(object):
});"""
self.form_widget = None
self.edit_schema = ""
self.add_schema = ""
self.edit_schema = colander.Schema()
self.add_schema = colander.Schema()
self.upload_schema = UploadSchema
self.upload_exts = (".csv", ".tsv")
self.upload_keys = ["kode"]
......
......@@ -2,10 +2,11 @@ import logging
import colander
from deform import (widget, )
from opensipkd.models import (DBSession, Route, )
from opensipkd.tools.buttons import btn_view, btn_edit, btn_delete
from pyramid.view import view_config
from sqlalchemy.orm import aliased
from opensipkd.models import (DBSession, Route, )
from opensipkd.tools.buttons import btn_view, btn_edit, btn_delete
from . import BaseView, get_urls
_logging = logging.getLogger(__name__)
......@@ -93,7 +94,10 @@ class EditSchema(colander.Schema):
colander.String(),
widget=widget.CheckboxWidget(false_val="0", true_val="1"))
alias = aliased(Route)
class ListSchema(colander.Schema):
id = colander.SchemaNode(
colander.Integer(), widget=widget.HiddenWidget(), visible=False)
......@@ -102,11 +106,22 @@ class ListSchema(colander.Schema):
parent = colander.SchemaNode(
colander.String(),
field=alias.kode)
order_id = colander.SchemaNode(
colander.String(),
title="Order"
)
is_menu = colander.SchemaNode(
colander.Boolean(),
widget=widget.CheckboxWidget(false_val="0", true_val="1"),
title="Menu"
)
nama = colander.SchemaNode(
colander.String(), title='Nama')
path = colander.SchemaNode(
colander.String(), title='Path')
template = colander.SchemaNode(
colander.String())
type = colander.SchemaNode(
colander.String(), width="50pt")
status = colander.SchemaNode(
......@@ -147,7 +162,8 @@ class Views(BaseView):
permission='edit-title')
def view_list(self):
kwargs = {"allow_view": False,
"allow_delete": False}
"allow_delete": False,
"state_save": True}
return super().view_list(**kwargs)
def form_validator(self, form, values):
......
......@@ -710,13 +710,15 @@ class BootStrapDateTimeInputWidget(Widget):
class TextInputWidget(widget.TextInputWidget):
template = "textinput_btn"
button = None
js = None
def __init__(self, **kw):
super(TextInputWidget, self).__init__(**kw)
# if isinstance(self.button, compat.string_types):
if isinstance(self.button, str):
self.button = Button(self.button, type="button")
if self.button:
if isinstance(self.button, str):
self.button = Button(self.button, type="button")
class DateInputWidget(WidgetDateInputWidget):
......@@ -754,4 +756,4 @@ class MoneyInputWidget(widget.MoneyInputWidget):
# tmpl_values = self.get_template_values(field, cstruct, kw)
# template = readonly and self.readonly_template or self.template
# return field.renderer(template, **tmpl_values)
#
#
\ No newline at end of file
......@@ -5,6 +5,7 @@
button button|field.widget.button;
mask_placeholder mask_placeholder|field.widget.mask_placeholder;
style style|field.widget.style;
js js|field.widget.js;
" tal:omit-tag="">
<input type="text" tal:attributes="class string: form-control ${css_class or ''};
style style;
......@@ -30,6 +31,14 @@
${button.title}
</a>
</span>
<script tal:condition="js" type="text/javascript">
deform.addCallback(
'${oid+button.name}',
function (oid) {
${structure:js}
});
</script>
</div><!-- /input-group -->
<script tal:condition="mask" type="text/javascript">
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!