Commit 87ad06b5 by aagusti

perbaikan render list act

1 parent 462a00fc
...@@ -8,6 +8,7 @@ import colander ...@@ -8,6 +8,7 @@ import colander
from datatables import ColumnDT from datatables import ColumnDT
from dateutil.relativedelta import relativedelta from dateutil.relativedelta import relativedelta
from deform import (widget, Form, ValidationFailure, FileData, ) from deform import (widget, Form, ValidationFailure, FileData, )
from deform.widget import SelectWidget
from opensipkd.base.views.upload import tmpstore from opensipkd.base.views.upload import tmpstore
from opensipkd.tools import dmy, get_settings, get_ext, \ from opensipkd.tools import dmy, get_settings, get_ext, \
date_from_str, get_random_string date_from_str, get_random_string
...@@ -274,7 +275,8 @@ class BaseView(object): ...@@ -274,7 +275,8 @@ class BaseView(object):
def returned_form(self, form, table, **kwargs): def returned_form(self, form, table, **kwargs):
resources = form.get_widget_resources() resources = form.get_widget_resources()
readonly = "readonly" in kwargs and kwargs["readonly"] readonly = "readonly" in kwargs and kwargs["readonly"] or False
kwargs["readonly"]=readonly
is_object = kwargs.get("is_object") is_object = kwargs.get("is_object")
if is_object: if is_object:
return dict(form=form, return dict(form=form,
...@@ -433,6 +435,7 @@ class BaseView(object): ...@@ -433,6 +435,7 @@ class BaseView(object):
def get_list(self): def get_list(self):
url = [] url = []
select_list = {}
if not self.columns: if not self.columns:
columns = [] columns = []
for d in self.list_schema(): for d in self.list_schema():
...@@ -456,6 +459,12 @@ class BaseView(object): ...@@ -456,6 +459,12 @@ class BaseView(object):
columns.append( columns.append(
ColumnDT(getattr(self.table, d.name), mData=d.name, ColumnDT(getattr(self.table, d.name), mData=d.name,
global_search=global_search)) global_search=global_search))
if hasattr(d, "widget"):
if d.widget:
log.debug(d.widget)
if type(d.widget) is SelectWidget:
select_list[d.name] = d.widget.values
if hasattr(d, "url"): if hasattr(d, "url"):
url.append(d.name) url.append(d.name)
else: else:
...@@ -470,6 +479,15 @@ class BaseView(object): ...@@ -470,6 +479,15 @@ class BaseView(object):
query = self.list_filter(query) query = self.list_filter(query)
row_table = DataTables(self.req.GET, query, columns) row_table = DataTables(self.req.GET, query, columns)
result = row_table.output_result() result = row_table.output_result()
data = result and "data" in result and result["data"] or {}
for res in data:
for k in res:
if k in select_list.keys():
vals = select_list[k]
for r in vals:
if r[0] == res[k]:
res[k] = r[1]
""
# for k, v in d.items(): # for k, v in d.items():
# if k in url and v: # if k in url and v:
# link = "/".join([self.home, nik_url, v]) # link = "/".join([self.home, nik_url, v])
......
...@@ -715,3 +715,33 @@ class TextInputWidget(widget.TextInputWidget): ...@@ -715,3 +715,33 @@ class TextInputWidget(widget.TextInputWidget):
class DateInputWidget(WidgetDateInputWidget): class DateInputWidget(WidgetDateInputWidget):
type_name = "text" type_name = "text"
# class AutocompleteInputWidget(widget.AutocompleteInputWidget):
# targets = None
# def serialize(self, field, cstruct, **kw):
# item_id = kw.get("item_id", None)
# super().serialize(field, cstruct, **kw)
# if "delay" in kw or getattr(self, "delay", None):
# raise ValueError(
# "AutocompleteWidget does not support *delay* parameter "
# "any longer."
# )
# if cstruct in (null, None):
# cstruct = ""
# self.values = self.values or []
# readonly = kw.get("readonly", self.readonly)
#
# options = {}
# if isinstance(self.values, string_types):
# options["remote"] = "%s?term=%%QUERY" % self.values
# else:
# options["local"] = self.values
#
# options["minLength"] = kw.pop("min_length", self.min_length)
# options["limit"] = kw.pop("items", self.items)
# kw["options"] = json.dumps(options)
# tmpl_values = self.get_template_values(field, cstruct, kw)
# template = readonly and self.readonly_template or self.template
# return field.renderer(template, **tmpl_values)
#
<span tal:define="name name|field.name; <span tal:define="name name|field.name;
css_class css_class|field.widget.css_class; css_class css_class|field.widget.css_class;
oid oid|field.oid; oid oid|field.oid;
style style|field.widget.style" style style|field.widget.style;
tal:omit-tag=""> js js|field.widget.js"
tal:omit-tag="">
<input type="text" <input type="text"
name="${name}" name="${name}"
value="${cstruct}" value="${cstruct}"
data-provide="typeahead" data-provide="typeahead"
tal:attributes="class string: form-control ${css_class or ''}; tal:attributes="class string: form-control ${css_class or ''};
style style; style style;
attributes|field.widget.attributes|{};" attributes|field.widget.attributes|{};"
id="${oid}"/> id="${oid}"/>
<script tal:condition="field.widget.values" type="text/javascript"> <script tal:condition="field.widget.values" type="text/javascript">
deform.addCallback( deform.addCallback(
'${field.oid}', '${field.oid}',
function (oid) { function (oid) {
$('#' + oid).typeahead(${options}); $('#' + oid).typeahead(${options});
} ${structure:js}
}
); );
</script> </script>
</span> </span>
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!