Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
aa.gusti
/
coba
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit 99ad3621
authored
Jun 16, 2023
by
aagusti
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
init
1 parent
cd12e57d
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
189 additions
and
135 deletions
opensipkd/coba/__init__.py
opensipkd/coba/models/__init__.py
opensipkd/coba/views/templates/base.pt
opensipkd/coba/views/view_form.py
opensipkd/coba/views/views.py → opensipkd/coba/views/view_upload.py
opensipkd/coba/__init__.py
View file @
99ad362
from
opensipkd.base
import
get_params
from
opensipkd.base
import
titles
try
:
COBA_UPLOAD
=
get_params
(
'coba_upload'
,
'/tmp/coba/upload'
)
except
:
COBA_UPLOAD
=
'/tmp/coba/upload'
COBA_UPLOAD
=
get_params
(
'coba_upload'
,
'/tmp/coba/upload'
)
routes
=
[
(
"coba-home"
,
"/coba/home"
,
"Home Coba"
),
(
"coba"
,
"/coba"
,
"Daftar"
),
(
"coba-add"
,
"/coba/add"
,
"Tambah"
),
(
"coba-edit"
,
"/coba/{id}/edit"
,
"Koreksi"
),
(
"coba-view"
,
"/coba/{id}/view"
,
"Lihat"
),
(
"coba-delete"
,
"/coba/{id}/delete"
,
"Hapus"
),
(
"coba-act"
,
"/coba/{act}/act"
,
"Koreksi"
),
(
"coba-form"
,
"/coba/form"
,
"Daftar"
),
(
"coba-form-add"
,
"/coba/form/add"
,
"Tambah"
),
(
"coba-form-edit"
,
"/coba/form/{id}/edit"
,
"Koreksi"
),
(
"coba-form-view"
,
"/coba/form/{id}/view"
,
"Lihat"
),
(
"coba-form-delete"
,
"/coba/form/{id}/delete"
,
"Hapus"
),
(
"coba-form-act"
,
"/coba/form/{act}/act"
,
"Koreksi"
),
(
"coba-upload"
,
"/coba/upload"
,
"Daftar"
),
(
"coba-upload-add"
,
"/coba/upload/add"
,
"Tambah"
),
(
"coba-upload-edit"
,
"/coba/upload/{id}/edit"
,
"Koreksi"
),
(
"coba-upload-view"
,
"/coba/upload/{id}/view"
,
"Lihat"
),
(
"coba-upload-delete"
,
"/coba/upload/{id}/delete"
,
"Hapus"
),
(
"coba-upload-act"
,
"/coba/upload/{act}/act"
,
"Koreksi"
),
]
# def init_db(config):
...
...
opensipkd/coba/models/__init__.py
View file @
99ad362
from
sqlalchemy.ext.declarative
import
declarative_base
from
zope.sqlalchemy
import
register
from
sqlalchemy
import
Column
,
ForeignKey
,
Integer
,
String
,
engine_from_config
,
func
from
opensipkd.base.models
import
Base
,
Common
Model
,
DefaultModel
,
TABLE_ARGS
from
opensipkd.base.models
import
Base
,
Nama
Model
,
DefaultModel
,
TABLE_ARGS
from
opensipkd.base
import
get_settings
from
opensipkd.models
import
User
from
sqlalchemy.orm
import
(
scoped_session
,
sessionmaker
)
...
...
@@ -15,7 +15,7 @@ from sqlalchemy.orm import (scoped_session, sessionmaker)
class
Coba
(
Base
,
Default
Model
):
class
Coba
(
Base
,
Nama
Model
):
__tablename__
=
"coba"
__table_args__
=
(
TABLE_ARGS
,)
kode
=
Column
(
String
(
255
))
...
...
opensipkd/coba/views/templates/base.pt
View file @
99ad362
...
...
@@ -3,7 +3,8 @@
tal:omit-tag=
""
tal:define=
"
route_name request.matched_route.name;
coba ['coba','coba-add','coba-edit','coba-delete','coba-view'];
coba_form ['coba-form','coba-form-add','coba-form-edit','coba-form-delete','coba-form-view'];
coba_upload ['coba-upload','coba-upload-add','coba-upload-edit','coba-upload-delete','coba-upload-view'];
"
>
<js
metal:fill-slot=
"js_files"
>
...
...
@@ -29,11 +30,11 @@
<span class="menu-item-parent">Master</span>
</a>
<ul> -->
<li
tal:attributes=
"class route_name in coba and 'active'"
>
<a
href=
"${home}/coba
"
>
List
</a>
<li
tal:attributes=
"class route_name in coba
_form
and 'active'"
>
<a
href=
"${home}/coba
/form"
>
Form
</a>
</li>
<li
tal:attributes=
"class route_name
== 'coba-add'
and 'active'"
>
<a
href=
"${home}/coba/
add"
>
Form Tambah
</a>
<li
tal:attributes=
"class route_name
in coba_upload
and 'active'"
>
<a
href=
"${home}/coba/
upload"
>
Upload
</a>
</li>
<!-- </ul> -->
...
...
opensipkd/coba/views/view_form.py
0 → 100644
View file @
99ad362
import
colander
from
deform
import
widget
from
pyramid.view
import
view_config
from
opensipkd.coba.models
import
Coba
from
.
import
BaseView
from
opensipkd.base.views
import
widget_os
class
AddSchema
(
colander
.
Schema
):
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
validator
=
colander
.
Length
(
min
=
3
,
max
=
10
),
)
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
validator
=
colander
.
Length
(
min
=
3
,
max
=
64
),
)
class
EditSchema
(
AddSchema
):
id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
widget
=
widget
.
HiddenWidget
()
)
class
ListSchema
(
colander
.
Schema
):
id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
title
=
"Action"
)
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
"Kode"
,
)
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
"Nama"
,
field
=
"nama"
)
class
Views
(
BaseView
):
def
__init__
(
self
,
request
):
super
()
.
__init__
(
request
)
self
.
add_schema
=
AddSchema
self
.
edit_schema
=
EditSchema
self
.
list_schema
=
ListSchema
self
.
list_route
=
"coba-form"
self
.
table
=
Coba
self
.
list_buttons
=
self
.
list_buttons
+
self
.
list_report
def
form_validator
(
self
,
form
,
value
):
exc
=
colander
.
Invalid
(
form
,
''
)
def
err_kode
():
exc
[
'kode'
]
=
'Kode
%
s sudah digunakan oleh
%
s'
%
(
value
[
'kode'
],
found
.
nama
)
raise
exc
def
err_nama
():
exc
[
'nama'
]
=
'Nama
%
s sudah digunakan oleh kode
%
s'
%
(
value
[
'nama'
],
found
.
kode
)
raise
exc
if
'id'
in
form
.
request
.
matchdict
:
uid
=
form
.
request
.
matchdict
[
'id'
]
q
=
Coba
.
query_id
(
uid
)
current
=
q
.
first
()
else
:
current
=
None
found
=
Coba
.
query_kode
(
value
[
'kode'
])
.
first
()
if
current
:
if
found
and
found
.
id
!=
current
.
id
:
err_kode
()
elif
found
:
err_kode
()
found
=
Coba
.
query_nama
(
value
[
'nama'
])
.
first
()
if
current
:
if
found
and
found
.
id
!=
current
.
id
:
err_nama
()
elif
found
:
err_nama
()
@view_config
(
route_name
=
'coba-form'
,
renderer
=
'templates/list.pt'
,
permission
=
'view'
)
def
view_list
(
self
):
return
super
(
Views
,
self
)
.
view_list
()
@view_config
(
route_name
=
'coba-form-act'
,
renderer
=
'json'
,
permission
=
'view'
)
def
view_act
(
self
):
return
super
()
.
view_act
()
@view_config
(
route_name
=
'coba-form-add'
,
renderer
=
'templates/form.pt'
,
permission
=
'bphtb-admin'
)
def
view_add
(
self
):
return
super
()
.
view_add
()
@view_config
(
route_name
=
'coba-form-edit'
,
renderer
=
'templates/form.pt'
,
permission
=
'view'
)
def
view_edit
(
self
):
return
super
()
.
view_edit
()
@view_config
(
route_name
=
'coba-form-delete'
,
renderer
=
'templates/form.pt'
,
permission
=
'view'
)
def
view_delete
(
self
):
return
super
()
.
view_delete
()
@view_config
(
route_name
=
'coba-form-view'
,
renderer
=
'templates/form.pt'
,
permission
=
'view'
)
def
view_view
(
self
):
return
super
()
.
view_view
()
def
_coba_list
():
qry
=
Coba
.
query
()
.
order_by
(
Coba
.
nama
)
return
qry
def
coba_list
(
kecamatan_id
=
None
):
qry
=
_coba_list
(
kecamatan_id
)
return
[(
r
.
id
,
r
.
nm_coba
)
for
r
in
qry
]
def
coba_select
(
kecamatan_id
=
None
):
result
=
coba_list
(
kecamatan_id
)
result
.
insert
(
0
,
(
''
,
'Semua Coba'
))
return
result
@colander.deferred
def
coba_widget
(
node
,
kw
):
values
=
kw
.
get
(
'coba_list'
,
[])
url
=
node
and
hasattr
(
node
,
'slave_url'
)
and
node
.
slave_url
or
""
slave
=
node
and
hasattr
(
node
,
'slave'
)
and
node
.
slave
or
""
return
widget_os
.
Select2MsWidget
(
values
=
values
,
url
=
url
,
slave
=
slave
,
placeholder
=
"Pilih Coba"
,
style
=
"width:200px;"
)
class
CobaFilterSchema
():
coba_id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
widget
=
coba_widget
,
title
=
"Coba"
,
oid
=
"coba_id"
,
missing
=
colander
.
drop
,
)
opensipkd/coba/views/view
s
.py
→
opensipkd/coba/views/view
_upload
.py
View file @
99ad362
...
...
@@ -12,14 +12,6 @@ from opensipkd.coba import COBA_UPLOAD
# from sqlalchemy import and_
class
AddSchema
(
colander
.
Schema
):
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
validator
=
colander
.
Length
(
min
=
3
,
max
=
10
),
)
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
validator
=
colander
.
Length
(
min
=
3
,
max
=
64
),
)
file_1
=
colander
.
SchemaNode
(
FileData
(),
widget
=
widget
.
FileUploadWidget
(
tmpstore
=
mem_tmp_store
),
...
...
@@ -46,15 +38,15 @@ class ListSchema(colander.Schema):
colander
.
Integer
(),
title
=
"Action"
)
kode
=
colander
.
SchemaNode
(
file_1
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
"Kode"
,
)
nama
=
colander
.
SchemaNode
(
file_2
=
colander
.
SchemaNode
(
colander
.
String
(),
)
file_3
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
"Nama"
,
field
=
"nama"
)
...
...
@@ -64,15 +56,9 @@ class Views(BaseView):
self
.
add_schema
=
AddSchema
self
.
edit_schema
=
EditSchema
self
.
list_schema
=
ListSchema
self
.
list_route
=
"coba"
self
.
list_route
=
"coba
-upload
"
self
.
table
=
Coba
self
.
list_buttons
=
self
.
list_buttons
+
self
.
list_report
# path = os.path.dirname(__file__)
# self.report_file = os.path.dirname(
# path)+"/reports/master/kelurahan.jrxml"
# def get_bindings(self, row):
# return {"kecamatan_list":Kecamatan.get_list()}
def
form_validator
(
self
,
form
,
value
):
if
"file_1"
in
value
:
...
...
@@ -85,38 +71,6 @@ class Views(BaseView):
upload
=
Upload
(
COBA_UPLOAD
)
value
[
"file_3"
]
=
upload
.
save_fp
(
value
[
"file_3"
])
# exc = colander.Invalid(form, '')
# def err_kode():
# exc['kelurahankd'] = 'Kode %s sudah digunakan oleh %s' % (
# value['kelurahankd'], found.nama)
# raise exc
# def err_nama():
# exc['nm_kelurahan'] = 'Uraian %s sudah digunakan oleh kode %s' % (
# value['nm_kelurahan'], found.kode)
# raise exc
# if 'id' in form.request.matchdict:
# uid = form.request.matchdict['id']
# q =Kelurahan.query_id(uid)
# current = q.first()
# else:
# current = None
# found =Kelurahan.query_kode(value['kelurahankd']).first()
# if current:
# if found and found.id != current.id:
# err_kode()
# elif found:
# err_kode()
# found =Kelurahan.query_nama(value['nm_kelurahan']).first()
# if current:
# if found and found.id != current.id:
# err_nama()
# elif found:
# err_nama()
def
get_values
(
self
,
row
,
istime
=
False
):
d
=
super
()
.
get_values
(
row
,
istime
=
False
)
folder
=
COBA_UPLOAD
+
'/'
...
...
@@ -136,7 +90,7 @@ class Views(BaseView):
"preview_url"
:
preview_url
}
if
"file_3"
in
d
:
filename
=
row
.
file_
1
filename
=
row
.
file_
3
preview_url
=
"/"
.
join
([
url
,
filename
])
d
[
"file_3"
]
=
{
"uid"
:
filename
.
split
(
"."
)[
0
],
"filename"
:
filename
,
...
...
@@ -144,94 +98,32 @@ class Views(BaseView):
}
return
d
@view_config
(
route_name
=
'coba'
,
renderer
=
'templates/list.pt'
,
@view_config
(
route_name
=
'coba
-upload
'
,
renderer
=
'templates/list.pt'
,
permission
=
'view'
)
def
view_list
(
self
):
return
super
(
Views
,
self
)
.
view_list
()
@view_config
(
route_name
=
'coba-act'
,
renderer
=
'json'
,
@view_config
(
route_name
=
'coba-
upload-
act'
,
renderer
=
'json'
,
permission
=
'view'
)
def
view_act
(
self
):
return
super
()
.
view_act
()
@view_config
(
route_name
=
'coba-add'
,
renderer
=
'templates/form.pt'
,
@view_config
(
route_name
=
'coba-
upload-
add'
,
renderer
=
'templates/form.pt'
,
permission
=
'bphtb-admin'
)
def
view_add
(
self
):
return
super
()
.
view_add
()
@view_config
(
route_name
=
'coba-edit'
,
renderer
=
'templates/form.pt'
,
@view_config
(
route_name
=
'coba-
upload-
edit'
,
renderer
=
'templates/form.pt'
,
permission
=
'view'
)
def
view_edit
(
self
):
return
super
()
.
view_edit
()
@view_config
(
route_name
=
'coba-delete'
,
renderer
=
'templates/form.pt'
,
@view_config
(
route_name
=
'coba-
upload-
delete'
,
renderer
=
'templates/form.pt'
,
permission
=
'view'
)
def
view_delete
(
self
):
return
super
()
.
view_delete
()
@view_config
(
route_name
=
'coba-view'
,
renderer
=
'templates/form.pt'
,
@view_config
(
route_name
=
'coba-
upload-
view'
,
renderer
=
'templates/form.pt'
,
permission
=
'view'
)
def
view_view
(
self
):
return
super
()
.
view_view
()
# def next_act(self):
# url_dict = self.req.matchdict
# if url_dict['act'] == 'select':
# kecamatan_id = self.req.GET["kecamatan_id"]
# qry = _kelurahan_list(kecamatan_id)
# return {f"{r.id}": f"{r.kelurahankd}-{r.nm_kelurahan}" for r in qry}
# return super().next_act()
# def list_join(self, query):
# return query.join(Kecamatan,
# and_(Kecamatan.kd_propinsi==Kelurahan.kd_propinsi,
# Kecamatan.kd_dati2==Kelurahan.kd_dati2,
# Kecamatan.kd_kecamatan==Kelurahan.kd_kecamatan))
# def get_values(self, row, istime=False):
# d = row.to_dict(date_format = '%Y-%m-%d')
# for f in d:
# if type(d[f]) is str:
# d[f] = d[f].strip()
# return d
# def _kelurahan_list(kecamatan_id=None):
# qry =Kelurahan.query().order_by(Kelurahan.nm_kelurahan)
# if kecamatan_id:
# qry = qry.filter(Kelurahan.kecamatan_id == kecamatan_id)
# return qry
# def kelurahan_list(kecamatan_id=None):
# qry = _kelurahan_list(kecamatan_id)
# return [(r.id, r.nm_kelurahan) for r in qry]
# def kelurahan_select(kecamatan_id=None):
# result = kelurahan_list(kecamatan_id)
# result.insert(0, ('', 'Semua Kelurahan'))
# return result
# @colander.deferred
# def kelurahan_widget(node, kw):
# # values = kw.get('kecamatan_list', [])
# # return widget.Select2Widget(values=values)
# values = kw.get('kelurahan_list', [])
# url = node and hasattr(node, 'slave_url') and node.slave_url or ""
# slave = node and hasattr(node, 'slave') and node.slave or ""
# return widget_os.Select2MsWidget(values=values,
# url=url,
# slave=slave,
# placeholder="Pilih Kelurahan",
# style="width:200px;")
# class KelurahanFilterSchema(KecamatanFilterSchema):
# kelurahan_id = colander.SchemaNode(
# colander.Integer(),
# widget=kelurahan_widget,
# title="Kelurahan",
# oid="kelurahan_id",
# missing=colander.drop,
# )
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