Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
aa.gusti
/
opensipkd-base
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Settings
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit 3005a754
authored
May 06, 2024
by
aagusti
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
perbaikan to_dict
1 parent
747fe5d7
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
53 additions
and
22 deletions
activate
opensipkd/base/views/base_views.py
opensipkd/detable/templates/detable.pt
opensipkd/models/base.py
opensipkd/models/common.py
opensipkd/models/users.py
activate
0 → 120000
View file @
3005a75
venv/bin/activate
\ No newline at end of file
\ No newline at end of file
opensipkd/base/views/base_views.py
View file @
3005a75
...
@@ -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
)
...
...
opensipkd/detable/templates/detable.pt
View file @
3005a75
...
@@ -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);
...
...
opensipkd/models/base.py
View file @
3005a75
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
):
...
...
opensipkd/models/common.py
View file @
3005a75
...
@@ -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"
)
)
opensipkd/models/users.py
View file @
3005a75
...
@@ -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
):
...
...
Write
Preview
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment