Commit 3005a754 by aagusti

perbaikan to_dict

1 parent 747fe5d7
venv/bin/activate
\ No newline at end of file \ No newline at end of file
...@@ -15,7 +15,7 @@ from opensipkd.tools import dmy, get_settings, get_ext, \ ...@@ -15,7 +15,7 @@ from opensipkd.tools import dmy, get_settings, get_ext, \
date_from_str, get_random_string date_from_str, get_random_string
from opensipkd.tools.buttons import btn_save, btn_cancel, btn_close, btn_delete, \ from opensipkd.tools.buttons import btn_save, btn_cancel, btn_close, btn_delete, \
btn_add, btn_csv, \ btn_add, btn_csv, \
btn_pdf btn_pdf, btn_unpost, btn_post
from opensipkd.tools.captcha import get_captcha from opensipkd.tools.captcha import get_captcha
from opensipkd.tools.report import csv_response, file_response from opensipkd.tools.report import csv_response, file_response
from .common import DataTables from .common import DataTables
...@@ -211,6 +211,7 @@ class BaseView(object): ...@@ -211,6 +211,7 @@ class BaseView(object):
schema.request = self.req schema.request = self.req
if row: if row:
schema.deserialize(row) schema.deserialize(row)
return Form(schema, buttons=buttons, autocomplete=self.autocomplete) return Form(schema, buttons=buttons, autocomplete=self.autocomplete)
def session_failed(self, session_name): def session_failed(self, session_name):
...@@ -222,8 +223,8 @@ class BaseView(object): ...@@ -222,8 +223,8 @@ class BaseView(object):
if self.list_schema: if self.list_schema:
allow_edit = kwargs.get("allow_edit", True) allow_edit = kwargs.get("allow_edit", True)
allow_delete = kwargs.get("allow_delete", True) allow_delete = kwargs.get("allow_delete", True)
allow_post = kwargs.get("allow_delete", False) allow_post = kwargs.get("allow_post", False)
allow_unpost = kwargs.get("allow_delete", False) allow_unpost = kwargs.get("allow_unpost", False)
state_save = kwargs.get("state_save", False) state_save = kwargs.get("state_save", False)
schema = self.list_schema() schema = self.list_schema()
schema = schema.bind(request=self.req) schema = schema.bind(request=self.req)
...@@ -266,7 +267,8 @@ class BaseView(object): ...@@ -266,7 +267,8 @@ class BaseView(object):
if not row: if not row:
return self.id_not_found() return self.id_not_found()
bindings = self.get_bindings(row) bindings = self.get_bindings(row)
form = self.get_form(self.edit_schema, buttons=(btn_close,), buttons = kwargs.get("buttons", (btn_close,))
form = self.get_form(self.edit_schema, buttons=buttons,
bindings=bindings) bindings=bindings)
if request.POST: if request.POST:
result = self.next_view(form, row=row) result = self.next_view(form, row=row)
...@@ -298,6 +300,22 @@ class BaseView(object): ...@@ -298,6 +300,22 @@ class BaseView(object):
**kwargs **kwargs
) )
def set_post(self, **kwargs):
pass
def set_unpost(self, **kwargs):
pass
def view_post(self, post_field="status", **kwargs):
request = self.req
row = self.query_id().first()
if not row:
return self.id_not_found()
if getattr(row, post_field):
buttons = (btn_unpost, btn_close)
else:
buttons = (btn_post, btn_close)
return self.view_view(buttons=buttons)
def view_upload(self, exts=('.png', '.ico')): def view_upload(self, exts=('.png', '.ico')):
bindings = self.get_bindings() bindings = self.get_bindings()
form = self.get_form(self.upload_schema, bindings=bindings) form = self.get_form(self.upload_schema, bindings=bindings)
......
...@@ -68,24 +68,31 @@ ...@@ -68,24 +68,31 @@
if (value === true) { if (value === true) {
return '<i class="fas fa-check-square" aria-hidden="true">'; return '<i class="fas fa-check-square" aria-hidden="true">';
} }
if (value === false) {
return 'Archived'; return 'Archived';
} }
return value;
}
function render_checklist(value) { function render_checklist(value) {
return '<input type="checkbox" checked="'+{value}+'"></input>'; return '<input type="checkbox" checked="' + {value} + '"></input>';
} }
for (let co in ${tableid}Columns) { for (let co in ${tableid}Columns) {
if (${tableid}Columns[co].checkbox === true) { if (${tableid}Columns[co].checkbox === true) {
${tableid}Columns[co].className = "text-center"; ${tableid}Columns[co].className = "text-center";
${tableid}Columns[co].width = "30pt"; ${tableid}Columns[co].width = "30pt";
${tableid}Columns[co].render = function (val) { ${tableid}Columns[co].render = function (value) {
if (["", false, 0].indexOf(val) === -1) { if (typeof value === "string" && value.length>0) {
return render_checkbox(value)
}
if (["", false, 0].indexOf(value) === -1) {
return render_checkbox(true); return render_checkbox(true);
} else return render_checkbox(false);
} }
return render_checkbox(false);
} }
else if (${tableid}Columns[co].hasOwnProperty("url")) { } else if (${tableid}Columns[co].hasOwnProperty("url")) {
let url = ${tableid}Columns[co].url; let url = ${tableid}Columns[co].url;
${tableid}Columns[co].render = function (data) { ${tableid}Columns[co].render = function (data) {
let result = "No Data" let result = "No Data"
...@@ -94,8 +101,7 @@ ...@@ -94,8 +101,7 @@
} }
return result; return result;
} }
} } else if (${tableid}Columns[co].data === "id" && ${tableid}Columns[co].action === true) {
else if (${tableid}Columns[co].data === "id" && ${tableid}Columns[co].action === true) {
${tableid}Columns[co].render = function (id) { ${tableid}Columns[co].render = function (id) {
let result = "" let result = ""
if (${allow_view}) { if (${allow_view}) {
...@@ -157,8 +163,7 @@ ...@@ -157,8 +163,7 @@
} }
if (!${server_side}) { if (!${server_side}) {
${tableid}Params.data = ${data}; ${tableid}Params.data = ${data};
} } else {
else {
${tableid}Params.ajax = o${tableid}Url; ${tableid}Params.ajax = o${tableid}Url;
} }
o${tableid} = $('#${tableid}').DataTable(${tableid}Params); o${tableid} = $('#${tableid}').DataTable(${tableid}Params);
......
from datetime import datetime from datetime import datetime
from opensipkd.tools import as_timezone
from sqlalchemy.ext.hybrid import hybrid_property
import ziggurat_foundations.models import ziggurat_foundations.models
from sqlalchemy.orm import (scoped_session, sessionmaker, Session)
from zope.sqlalchemy import register
from sqlalchemy import Column, String, SmallInteger, Integer, DateTime, func from sqlalchemy import Column, String, SmallInteger, Integer, DateTime, func
from sqlalchemy import inspect as sa_inspect from sqlalchemy import inspect as sa_inspect
from sqlalchemy.ext.hybrid import hybrid_property
from sqlalchemy.orm import (scoped_session, sessionmaker, Session)
from zope.sqlalchemy import register
from opensipkd.tools import as_timezone
class MySession(Session): class MySession(Session):
def execute(self, clause, params=None, mapper=None, **kw): def execute(self, clause, params=None, mapper=None, **kw):
# Your magic with clause here # Your magic with clause here
print("Session:", clause, params, mapper, kw) # print("Session:", clause, params, mapper, kw)
return Session.execute(self, clause, params) #, mapper return Session.execute(self, clause, params) # , mapper
session_factory = sessionmaker(class_=MySession) session_factory = sessionmaker(class_=MySession)
...@@ -60,9 +61,13 @@ class CommonModel(object): ...@@ -60,9 +61,13 @@ class CommonModel(object):
values[column.name] = value values[column.name] = value
return values return values
def from_dict(self, values): def from_dict(self, values, date_format="%d-%m-%Y"):
for column in self.__table__.columns: for column in self.__table__.columns:
if column.name in values: if column.name in values:
if type(column.type) == DateTime and date_format:
if values[column.name]:
setattr(self, column.name, datetime.strptime(values[column.name], date_format))
else:
setattr(self, column.name, values[column.name]) setattr(self, column.name, values[column.name])
def as_timezone(self, fieldname): def as_timezone(self, fieldname):
......
...@@ -51,5 +51,6 @@ class ResCompany(Base, NamaModel): ...@@ -51,5 +51,6 @@ class ResCompany(Base, NamaModel):
parent_id = Column(Integer, ForeignKey("company.id")) parent_id = Column(Integer, ForeignKey("company.id"))
children = relationship("ResCompany") children = relationship("ResCompany")
parent = relationship( parent = relationship(
"ResCompany", remote_side=[id], primaryjoin="ResCompany.parent_id==ResCompany.id" "ResCompany", remote_side=[id], primaryjoin="ResCompany.parent_id==ResCompany.id",
overlaps="children"
) )
...@@ -166,7 +166,8 @@ class User(UserMixin, BaseModel, DefaultModel, Base): ...@@ -166,7 +166,8 @@ class User(UserMixin, BaseModel, DefaultModel, Base):
class ExternalIdentity(ExternalIdentityMixin, CommonModel, Base): class ExternalIdentity(ExternalIdentityMixin, CommonModel, Base):
user = relationship(User, backref=backref("external")) user = relationship(User, backref=backref("external"),
overlaps="external_identities,owner")
@classmethod @classmethod
def query(cls): def query(cls):
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!