Commit 3005a754 by aagusti

perbaikan to_dict

1 parent 747fe5d7
venv/bin/activate
\ No newline at end of file
......@@ -15,7 +15,7 @@ from opensipkd.tools import dmy, get_settings, get_ext, \
date_from_str, get_random_string
from opensipkd.tools.buttons import btn_save, btn_cancel, btn_close, btn_delete, \
btn_add, btn_csv, \
btn_pdf
btn_pdf, btn_unpost, btn_post
from opensipkd.tools.captcha import get_captcha
from opensipkd.tools.report import csv_response, file_response
from .common import DataTables
......@@ -211,6 +211,7 @@ class BaseView(object):
schema.request = self.req
if row:
schema.deserialize(row)
return Form(schema, buttons=buttons, autocomplete=self.autocomplete)
def session_failed(self, session_name):
......@@ -222,8 +223,8 @@ class BaseView(object):
if self.list_schema:
allow_edit = kwargs.get("allow_edit", True)
allow_delete = kwargs.get("allow_delete", True)
allow_post = kwargs.get("allow_delete", False)
allow_unpost = kwargs.get("allow_delete", False)
allow_post = kwargs.get("allow_post", False)
allow_unpost = kwargs.get("allow_unpost", False)
state_save = kwargs.get("state_save", False)
schema = self.list_schema()
schema = schema.bind(request=self.req)
......@@ -266,7 +267,8 @@ class BaseView(object):
if not row:
return self.id_not_found()
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)
if request.POST:
result = self.next_view(form, row=row)
......@@ -298,6 +300,22 @@ class BaseView(object):
**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')):
bindings = self.get_bindings()
form = self.get_form(self.upload_schema, bindings=bindings)
......
......@@ -68,60 +68,66 @@
if (value === true) {
return '<i class="fas fa-check-square" aria-hidden="true">';
}
return 'Archived';
if (value === false) {
return 'Archived';
}
return 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) {
if (${tableid}Columns[co].checkbox === true) {
${tableid}Columns[co].className = "text-center";
${tableid}Columns[co].width = "30pt";
${tableid}Columns[co].render = function (val) {
if (["", false, 0].indexOf(val) === -1) {
return render_checkbox(true);
} else return render_checkbox(false);
${tableid}Columns[co].className = "text-center";
${tableid}Columns[co].width = "30pt";
${tableid}Columns[co].render = function (value) {
if (typeof value === "string" && value.length>0) {
return render_checkbox(value)
}
if (["", false, 0].indexOf(value) === -1) {
return render_checkbox(true);
}
return render_checkbox(false);
}
else if (${tableid}Columns[co].hasOwnProperty("url")) {
let url = ${tableid}Columns[co].url;
${tableid}Columns[co].render = function (data) {
let result = "No Data"
if (data != null) {
result = '<a href="' + url + data + '" target="_blank">Link</a>&nbsp;';
}
return result;
} else if (${tableid}Columns[co].hasOwnProperty("url")) {
let url = ${tableid}Columns[co].url;
${tableid}Columns[co].render = function (data) {
let result = "No Data"
if (data != null) {
result = '<a href="' + url + data + '" target="_blank">Link</a>&nbsp;';
}
return result;
}
else if (${tableid}Columns[co].data === "id" && ${tableid}Columns[co].action === true) {
${tableid}Columns[co].render = function (id) {
let result = ""
if (${allow_view}) {
result = '<a href="${url}/' + id + '/view"><i class="fas fa-eye" aria-hidden="true" title="View"></i></a>&nbsp;';
}
if (${allow_edit}) {
result += '<a href="${url}/' + id + '/edit"><i class="fas fa-edit" aria-hidden="true" title="Edit"></i></a>&nbsp;'
}
if (${allow_delete}) {
result += '<a href="${url}/' + id + '/delete"><i class="fas fa-trash" aria-hidden="true" title="Delete"></i></a>';
}
if (${allow_post}) {
result += '<a href="${url}/' + id + '/post"><i class="fas fa-signs-post" aria-hidden="true" title="Post"></i></a>';
}
if (${allow_unpost}) {
result += '<a href="${url}/' + id + '/unpost"><i class="fas fa-delete-left" aria-hidden="true" title="Unpost"></i></a>';
}
return result;
} else if (${tableid}Columns[co].data === "id" && ${tableid}Columns[co].action === true) {
${tableid}Columns[co].render = function (id) {
let result = ""
if (${allow_view}) {
result = '<a href="${url}/' + id + '/view"><i class="fas fa-eye" aria-hidden="true" title="View"></i></a>&nbsp;';
}
${tableid}Columns[co].width = "30pt";
${tableid}Columns[co].orderable = false;
${tableid}Columns[co].className = "text-center";
${tableid}Columns[co].visible = true;
//columns[1].order = "order_asc";
if (${allow_edit}) {
result += '<a href="${url}/' + id + '/edit"><i class="fas fa-edit" aria-hidden="true" title="Edit"></i></a>&nbsp;'
}
if (${allow_delete}) {
result += '<a href="${url}/' + id + '/delete"><i class="fas fa-trash" aria-hidden="true" title="Delete"></i></a>';
}
if (${allow_post}) {
result += '<a href="${url}/' + id + '/post"><i class="fas fa-signs-post" aria-hidden="true" title="Post"></i></a>';
}
if (${allow_unpost}) {
result += '<a href="${url}/' + id + '/unpost"><i class="fas fa-delete-left" aria-hidden="true" title="Unpost"></i></a>';
}
return result;
}
${tableid}Columns[co].width = "30pt";
${tableid}Columns[co].orderable = false;
${tableid}Columns[co].className = "text-center";
${tableid}Columns[co].visible = true;
//columns[1].order = "order_asc";
}
}
let ${tableid}Language = {
......@@ -157,8 +163,7 @@
}
if (!${server_side}) {
${tableid}Params.data = ${data};
}
else {
} else {
${tableid}Params.ajax = o${tableid}Url;
}
o${tableid} = $('#${tableid}').DataTable(${tableid}Params);
......
from datetime import datetime
from opensipkd.tools import as_timezone
from sqlalchemy.ext.hybrid import hybrid_property
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 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):
def execute(self, clause, params=None, mapper=None, **kw):
# Your magic with clause here
print("Session:", clause, params, mapper, kw)
return Session.execute(self, clause, params) #, mapper
# print("Session:", clause, params, mapper, kw)
return Session.execute(self, clause, params) # , mapper
session_factory = sessionmaker(class_=MySession)
......@@ -60,10 +61,14 @@ class CommonModel(object):
values[column.name] = value
return values
def from_dict(self, values):
def from_dict(self, values, date_format="%d-%m-%Y"):
for column in self.__table__.columns:
if column.name in values:
setattr(self, column.name, values[column.name])
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])
def as_timezone(self, fieldname):
date_ = getattr(self, fieldname)
......@@ -104,7 +109,7 @@ class DefaultModel(CommonModel):
for c in columns:
query = query.add_columns(c)
return query
@classmethod
def query_id(cls, row_id, db_session=DBSession):
return cls.query(db_session).filter_by(id=row_id)
......@@ -117,7 +122,7 @@ class DefaultModel(CommonModel):
def flush(cls, row, db_session=DBSession):
db_session.add(row)
db_session.flush()
class StandarModel(DefaultModel):
status = Column(SmallInteger, nullable=False, default=0)
......
......@@ -51,5 +51,6 @@ class ResCompany(Base, NamaModel):
parent_id = Column(Integer, ForeignKey("company.id"))
children = relationship("ResCompany")
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):
class ExternalIdentity(ExternalIdentityMixin, CommonModel, Base):
user = relationship(User, backref=backref("external"))
user = relationship(User, backref=backref("external"),
overlaps="external_identities,owner")
@classmethod
def query(cls):
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!