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 d5f9767b
authored
Aug 30, 2024
by
aagusti
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
Perhitungan pph
1 parent
f7e42dc6
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
22 additions
and
17 deletions
opensipkd/base/scripts/initializedb.py
opensipkd/base/views/base_views.py
opensipkd/base/views/departemen.py
opensipkd/models/base.py
opensipkd/base/scripts/initializedb.py
View file @
d5f9767
...
...
@@ -13,10 +13,10 @@ from opensipkd.models import (
from
opensipkd.models.handlers
import
LogDBSession
from
pyramid.paster
import
(
get_appsettings
,
setup_logging
,
)
from
sqlalchemy
import
(
engine_from_config
,
select
,
Table
,
inspect
)
from
sqlalchemy.sql.sqltypes
import
BOOLEAN
from
sqlalchemy
import
text
from
sqlalchemy.dialects
import
oracle
from
sqlalchemy.schema
import
CreateSchema
from
sqlalchemy.sql.sqltypes
import
BOOLEAN
from
ziggurat_foundations.models.services.user
import
UserService
log
=
logging
.
getLogger
(
__name__
)
...
...
@@ -138,9 +138,9 @@ def restore_csv(table, filename, get_file_func=get_file, db_session=DBSession):
# masih memungkinkan update yg sudah ada dgn syarat is value dari keys masih sama
# sperti salah route url asalkan kode msh sama
def
append_csv
(
table
,
filename
,
keys
,
get_file_func
=
get_file
,
db_session
=
DBSession
,
update_exist
=
False
,
delimiter
=
","
):
db_session
=
DBSession
,
update_exist
=
False
,
delimiter
=
","
,
**
args
):
insp
=
inspect
(
DBSession
.
connection
())
callback
=
args
.
get
(
"callback"
)
columns_table
=
insp
.
get_columns
(
table
.
__tablename__
)
fields
=
{}
...
...
@@ -192,7 +192,12 @@ def append_csv(table, filename, keys, get_file_func=get_file,
if
fname
in
foreigns
:
foreign_table
,
foreign_field
=
foreigns
[
fname
]
value
=
cf
[
fname
]
if
callback
:
value
=
callback
(
"mapping"
,
table
=
foreign_table
,
field
=
foreign_field
,
value
=
value
)
sql
=
select
([
foreign_table
])
.
where
(
foreign_field
==
value
)
log
.
debug
(
f
"Query Foreignkey: {str(sql)}"
)
# connection = DBSession.connection()
q
=
Base
.
metadata
.
bind
.
execute
(
sql
)
# q = connection.execute(sql)
...
...
opensipkd/base/views/base_views.py
View file @
d5f9767
...
...
@@ -324,7 +324,7 @@ class BaseView(object):
buttons
=
(
btn_post
,
btn_close
)
return
self
.
view_view
(
buttons
=
buttons
)
def
view_upload
(
self
,
exts
=
(
'.png'
,
'.ico'
),
delimiter
=
","
):
def
view_upload
(
self
,
exts
=
(
'.png'
,
'.ico'
),
delimiter
=
","
,
**
args
):
bindings
=
self
.
get_bindings
()
form
=
self
.
get_form
(
self
.
upload_schema
,
bindings
=
bindings
)
resources
=
form
.
get_widget_resources
()
...
...
@@ -355,7 +355,7 @@ class BaseView(object):
output_file
.
write
(
data
)
output_file
.
close
()
try
:
self
.
save_upload
(
fullpath
,
delimiter
=
delimiter
)
self
.
save_upload
(
fullpath
,
delimiter
=
delimiter
,
**
args
)
except
Exception
as
e
:
self
.
req
.
session
.
flash
(
str
(
e
),
'error'
)
return
dict
(
form
=
form
.
render
(),
...
...
@@ -364,8 +364,6 @@ class BaseView(object):
elif
"cancel"
in
self
.
req
.
POST
or
'batal'
in
self
.
req
.
POST
or
"close"
in
self
.
req
.
POST
:
self
.
cancel_act
()
else
:
return
self
.
next_add
(
form
,
resources
=
resources
)
return
self
.
route_list
()
return
dict
(
form
=
form
.
render
(),
...
...
@@ -375,9 +373,9 @@ class BaseView(object):
def
get_file
(
self
,
filename
):
return
open
(
filename
)
def
save_upload
(
self
,
file_name
,
delimiter
=
","
):
def
save_upload
(
self
,
file_name
,
delimiter
=
","
,
**
args
):
return
append_csv
(
self
.
table
,
file_name
,
self
.
upload_keys
,
get_file_func
=
self
.
get_file
,
update_exist
=
True
,
delimiter
=
delimiter
)
get_file_func
=
self
.
get_file
,
update_exist
=
True
,
delimiter
=
delimiter
,
**
args
)
def
before_add
(
self
):
return
{}
...
...
@@ -531,7 +529,7 @@ class BaseView(object):
elif
"cancel"
in
self
.
req
.
POST
or
'batal'
in
self
.
req
.
POST
or
"close"
in
self
.
req
.
POST
:
self
.
cancel_act
()
else
:
return
self
.
next_add
(
form
,
table
=
table
,
resources
=
resources
)
return
self
.
next_add
(
form
,
table
=
table
,
resources
=
resources
,
**
kwargs
)
return
self
.
route_list
(
**
kwargs
)
values
=
self
.
before_add
()
...
...
opensipkd/base/views/departemen.py
View file @
d5f9767
...
...
@@ -18,7 +18,7 @@ SESS_EDIT_FAILED = 'Edit departemen gagal'
def
get_departemen_list
():
r
=
[]
r
=
[
(
""
,
"--Pilih Departemen--"
)
]
q
=
DBSession
.
query
(
Departemen
)
.
order_by
(
Departemen
.
nama
)
for
row
in
q
:
g
=
(
str
(
row
.
id
),
(
f
"{row.kode}/ {row.nama}"
))
...
...
opensipkd/models/base.py
View file @
d5f9767
import
logging
from
datetime
import
datetime
import
ziggurat_foundations.models
from
sqlalchemy
import
Column
,
String
,
SmallInteger
,
Integer
,
DateTime
,
func
from
opensipkd.tools
import
as_timezone
from
sqlalchemy
import
Column
,
String
,
SmallInteger
,
Integer
,
DateTime
,
func
,
Numeric
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
):
...
...
@@ -33,7 +33,7 @@ class CommonModel(object):
def
to_dict_hybrid
(
self
):
values
=
{}
for
item
in
sa_inspect
(
self
.
__class__
)
.
all_orm_descriptors
:
if
type
(
item
)
==
hybrid_property
:
if
hybrid_property
==
type
(
item
)
:
value
=
getattr
(
self
,
item
.
__name__
)
print
(
item
.
__name__
,
value
)
if
value
:
...
...
@@ -44,13 +44,15 @@ class CommonModel(object):
values
=
{}
for
column
in
self
.
__table__
.
columns
:
value
=
getattr
(
self
,
column
.
name
)
if
value
or
null
:
if
value
:
if
type
(
column
.
type
)
is
DateTime
and
date_format
:
if
value
:
values
[
column
.
name
]
=
value
.
strftime
(
date_format
)
else
:
values
[
column
.
name
]
=
value
else
:
if
Integer
in
type
(
column
.
type
)
.
__mro__
or
Numeric
in
type
(
column
.
type
)
.
__mro__
:
values
[
column
.
name
]
=
0
return
values
def
to_dict_without_none
(
self
):
...
...
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