Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
irul
/
opensipkd-base
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Wiki
Settings
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit df92e247
authored
Nov 28, 2024
by
aa.gusti
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
perbaikan partner
1 parent
324d8d62
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
108 additions
and
23 deletions
opensipkd/base/__init__.py
opensipkd/base/views/base_views.py
opensipkd/base/views/partner.py
opensipkd/base/views/partner_base.py
opensipkd/base/views/widgets/file_upload.pt
opensipkd/base/views/widgets/readonly/file_upload.pt
opensipkd/base/__init__.py
View file @
df92e24
...
@@ -124,6 +124,8 @@ def add_cors_headers_response_callback(event):
...
@@ -124,6 +124,8 @@ def add_cors_headers_response_callback(event):
# https://groups.google.com/forum/#!topic/pylons-discuss/QIj4G82j04c
# https://groups.google.com/forum/#!topic/pylons-discuss/QIj4G82j04c
def
has_permission_
(
request
,
perm_names
,
context
=
None
):
def
has_permission_
(
request
,
perm_names
,
context
=
None
):
if
not
perm_names
:
return
False
if
isinstance
(
perm_names
,
str
):
if
isinstance
(
perm_names
,
str
):
perm_names
=
[
perm_names
]
perm_names
=
[
perm_names
]
for
perm_name
in
perm_names
:
for
perm_name
in
perm_names
:
...
...
opensipkd/base/views/base_views.py
View file @
df92e24
...
@@ -10,7 +10,7 @@ from dateutil.relativedelta import relativedelta
...
@@ -10,7 +10,7 @@ from dateutil.relativedelta import relativedelta
from
deform
import
(
widget
,
Form
,
ValidationFailure
,
FileData
,
)
from
deform
import
(
widget
,
Form
,
ValidationFailure
,
FileData
,
)
from
deform.widget
import
SelectWidget
from
deform.widget
import
SelectWidget
from
opensipkd.tools
import
dmy
,
get_settings
,
get_ext
,
\
from
opensipkd.tools
import
dmy
,
get_settings
,
get_ext
,
\
date_from_str
,
get_random_string
date_from_str
,
get_random_string
,
Upload
,
InvalidExtension
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_unpost
,
btn_post
btn_pdf
,
btn_unpost
,
btn_post
...
@@ -302,8 +302,6 @@ class BaseView(object):
...
@@ -302,8 +302,6 @@ class BaseView(object):
return
False
return
False
def
view_view
(
self
,
**
kwargs
):
# row = query_id(request).first()
def
view_view
(
self
,
**
kwargs
):
# row = query_id(request).first()
request
=
self
.
req
request
=
self
.
req
row
=
self
.
query_id
()
.
first
()
row
=
self
.
query_id
()
.
first
()
if
not
row
:
if
not
row
:
...
@@ -355,7 +353,7 @@ class BaseView(object):
...
@@ -355,7 +353,7 @@ class BaseView(object):
if
not
exts
:
if
not
exts
:
exts
=
self
.
upload_exts
exts
=
self
.
upload_exts
delimiter
=
args
.
get
(
"delimiter"
)
delimiter
=
kw
.
get
(
"delimiter"
)
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
)
resources
=
form
.
get_widget_resources
()
resources
=
form
.
get_widget_resources
()
...
@@ -386,7 +384,7 @@ class BaseView(object):
...
@@ -386,7 +384,7 @@ class BaseView(object):
output_file
.
write
(
data
)
output_file
.
write
(
data
)
output_file
.
close
()
output_file
.
close
()
try
:
try
:
self
.
save_upload
(
fullpath
,
**
args
)
self
.
save_upload
(
fullpath
,
**
kw
)
except
Exception
as
e
:
except
Exception
as
e
:
self
.
req
.
session
.
flash
(
str
(
e
),
'error'
)
self
.
req
.
session
.
flash
(
str
(
e
),
'error'
)
return
dict
(
form
=
form
.
render
(),
return
dict
(
form
=
form
.
render
(),
...
@@ -742,6 +740,50 @@ class BaseView(object):
...
@@ -742,6 +740,50 @@ class BaseView(object):
"""
"""
return
self
.
route_list
()
return
self
.
route_list
()
def
convert_avi_to_mp4
(
self
,
input_name
):
output
=
os
.
path
.
splitext
(
input_name
)[
0
]
+
".mp4"
command
=
"ffmpeg -y -i {input} -c:v mpeg4 {output}"
.
format
(
input
=
input_name
,
output
=
output
)
log
.
debug
(
f
"Convert: {command}"
)
os
.
popen
(
command
)
# os.remove(input_name)
# "ffmpeg -i {input} -ac 2 -b:v 2000k -c:a aac -c:v libx264 -b:a 160k -vprofile high -bf 0 -strict experimental -f mp4 {output}.mp4"
return
output
def
form_error
(
self
,
form
,
error
=
None
):
if
error
is
None
:
error
=
[]
if
not
error
:
return
err
=
colander
.
Invalid
(
form
,
""
)
for
e
in
error
:
err
[
e
[
0
]]
=
e
[
1
]
raise
err
def
save_upload_file
(
self
,
form
,
value
,
folder
,
field
):
file_dict
=
value
[
field
][
"file_name"
]
if
not
os
.
path
.
exists
(
folder
):
os
.
makedirs
(
folder
)
upload
=
Upload
(
folder
)
error
=
[]
if
file_dict
:
input_file
=
file_dict
[
"fp"
]
if
input_file
:
filename
=
file_dict
[
"filename"
]
.
lower
()
ext
=
get_ext
(
filename
)
if
ext
not
in
self
.
upload_exts
:
error
.
append
((
field
,
InvalidExtension
(
self
.
upload_exts
)
.
error
))
else
:
full_file_name
=
upload
.
save_to_file
(
input_file
,
ext
,
filename
)
if
ext
==
".avi"
:
full_file_name
=
self
.
convert_avi_to_mp4
(
full_file_name
)
file_name
=
os
.
path
.
split
(
full_file_name
)[
1
]
return
file_name
self
.
form_error
(
form
,
error
)
@colander.deferred
@colander.deferred
def
deferred_status
(
node
,
kw
):
def
deferred_status
(
node
,
kw
):
...
...
opensipkd/base/views/partner.py
View file @
df92e24
...
@@ -3,7 +3,7 @@ from deform import (
...
@@ -3,7 +3,7 @@ from deform import (
widget
,
Button
,
widget
,
Button
,
)
)
from
opensipkd.base
import
get_id_card_folder
from
opensipkd.base
import
get_id_card_folder
from
opensipkd.models
import
DBSession
,
Partner
from
opensipkd.models
import
DBSession
,
Partner
,
PartnerFiles
from
opensipkd.models
import
(
from
opensipkd.models
import
(
ResProvinsi
,
ResDati2
,
ResKecamatan
,
ResDesa
)
ResProvinsi
,
ResDati2
,
ResKecamatan
,
ResDesa
)
from
opensipkd.models.common
import
ResCompany
from
opensipkd.models.common
import
ResCompany
...
@@ -287,7 +287,8 @@ class ViewPartner(BaseView):
...
@@ -287,7 +287,8 @@ class ViewPartner(BaseView):
}
}
return
d
return
d
def
before_delete
(
self
,
row
):
PartnerFiles
.
query
()
.
filter_by
(
partner_id
=
row
.
id
)
.
delete
()
@colander.deferred
@colander.deferred
def
partner_widget
(
node
,
kw
):
def
partner_widget
(
node
,
kw
):
values
=
kw
.
get
(
'partner_list'
,
[])
values
=
kw
.
get
(
'partner_list'
,
[])
...
...
opensipkd/base/views/partner_base.py
View file @
df92e24
import
colander
import
colander
from
deform
import
FileData
,
widget
from
deform
import
FileData
,
widget
from
opensipkd.tools
import
mem_tmp_store
from
translationstring
import
TranslationStringFactory
from
opensipkd.base.views.dati2
import
dati2_widget
from
opensipkd.base.views.dati2
import
dati2_widget
from
opensipkd.base.views.desa
import
desa_widget
from
opensipkd.base.views.desa
import
desa_widget
from
opensipkd.base.views.kecamatan
import
kecamatan_widget
from
opensipkd.base.views.kecamatan
import
kecamatan_widget
from
opensipkd.base.views.provinsi
import
provinsi_widget
from
opensipkd.base.views.provinsi
import
provinsi_widget
from
opensipkd.models
import
Partner
from
opensipkd.models
import
Partner
from
opensipkd.tools
import
mem_tmp_store
from
translationstring
import
TranslationStringFactory
from
..
import
get_urls
from
.
import
Validator
from
.
import
Validator
from
..
import
get_urls
_
=
TranslationStringFactory
(
'partner'
)
_
=
TranslationStringFactory
(
'partner'
)
class
PartnerEmailValidator
(
colander
.
Email
,
Validator
):
class
PartnerEmailValidator
(
colander
.
Email
,
Validator
):
def
__init__
(
self
,
row
):
def
__init__
(
self
,
row
):
Validator
.
__init__
(
self
,
row
)
Validator
.
__init__
(
self
,
row
)
...
@@ -65,6 +67,7 @@ class PartnerKodeValidator(Validator):
...
@@ -65,6 +67,7 @@ class PartnerKodeValidator(Validator):
def
partner_kode_validator
(
node
,
kw
):
def
partner_kode_validator
(
node
,
kw
):
return
PartnerKodeValidator
(
kw
[
'row'
])
return
PartnerKodeValidator
(
kw
[
'row'
])
class
NamaSchema
(
colander
.
Schema
):
class
NamaSchema
(
colander
.
Schema
):
kode
=
colander
.
SchemaNode
(
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
colander
.
String
(),
...
@@ -76,11 +79,17 @@ class NamaSchema(colander.Schema):
...
@@ -76,11 +79,17 @@ class NamaSchema(colander.Schema):
colander
.
String
(),
colander
.
String
(),
validator
=
colander
.
Length
(
max
=
64
),
validator
=
colander
.
Length
(
max
=
64
),
oid
=
"nama"
)
oid
=
"nama"
)
mobile
=
colander
.
SchemaNode
(
colander
.
String
(),
validator
=
colander
.
Length
(
max
=
16
),
oid
=
"mobile"
)
email
=
colander
.
SchemaNode
(
email
=
colander
.
SchemaNode
(
colander
.
String
(),
colander
.
String
(),
validator
=
partner_email_validator
,
validator
=
partner_email_validator
,
oid
=
"email"
)
oid
=
"email"
)
class
PartnerSchema
(
NamaSchema
):
class
PartnerSchema
(
NamaSchema
):
nip
=
colander
.
SchemaNode
(
nip
=
colander
.
SchemaNode
(
colander
.
String
(),
colander
.
String
(),
...
...
opensipkd/base/views/widgets/file_upload.pt
View file @
df92e24
...
@@ -11,19 +11,23 @@
...
@@ -11,19 +11,23 @@
">
">
${field.start_mapping()}
${field.start_mapping()}
<img tal:condition="ext in img" id="preview-${oid}" alt="" src="${preview_url}"
<img tal:condition="ext in img" id="preview-${oid}" alt="" src="${preview_url}"
style="
width:100px;height:auto;display:block;
"
style="
${style}
"
onload="window.URL.revokeObjectURL(this.src);"></img>
onload="window.URL.revokeObjectURL(this.src);"></img>
<video tal:condition="ext in video"
width="100%" height="100%
" controls
<video tal:condition="ext in video"
style="${style}
" controls
src="${preview_url}" type="video/${ext}">
src="${preview_url}" type="video/${ext}">
Your browser does not support the video tag.
Your browser does not support the video tag.
</video>
</video>
<video tal:condition="ext=='mp4'" width="100%" height="100%" controls
src="${preview_url}" type="video/mp4">
<video tal:condition="ext=='mp4'"
controls
style="${style}"
src="${preview_url}"
type="video/mp4">
Your browser does not support the video tag.
Your browser does not support the video tag.
</video>
</video>
<embed tal:condition="ext=='pdf'" src="${preview_url}"
width="100%" height="400
">
<embed tal:condition="ext=='pdf'" src="${preview_url}"
style="${style}
">
<a id="label-${oid}" tal:condition="preview_url" class="label label-default" href="${preview_url}"
<a id="label-${oid}" tal:condition="preview_url" class="label label-default" href="${preview_url}"
target="_blank"><i class="fa fa-search"></i> View</a>
target="_blank"><i class="fa fa-search"></i> View</a>
...
...
opensipkd/base/views/widgets/readonly/file_upload.pt
View file @
df92e24
<p tal:define="preview_url cstruct.get('preview_url');
<p tal:define="preview_url cstruct.get('preview_url');
ext str(cstruct.get('filename').split('.')[-1:][0]).lower()|[];">
css_class css_class|field.widget.css_class;
<tal:block tal:condition="preview_url and ext in ['jpg','jpeg','png','bmp','gif']">
style style|field.widget.style;
preview_url cstruct.get('preview_url')|'';
ext str(cstruct.get('filename').split('.')[-1:][0]).lower()|[];
fname str(cstruct.get('filename'))|'';
delete cstruct.get('delete')|'';
ext str(cstruct.get('filename').split('.')[-1:][0]).lower()|[];
img ['jpg', 'jpeg', 'gif', 'png', 'svg', 'eps', 'psd'];
video ['avi', 'mov', 'mpv'];
">
<img tal:condition="ext in img" id="preview-${oid}" alt="" src="${preview_url}"
style="${style}"
onload="window.URL.revokeObjectURL(this.src);"></img>
<video tal:condition="ext in video" style="${style}" controls
src="${preview_url}" type="video/${ext}">
Your browser does not support the video tag.
</video>
<video tal:condition="ext=='mp4'"
controls
style="${style}"
src="${preview_url}"
type="video/mp4">
Your browser does not support the video tag.
</video>
<embed tal:condition="ext=='pdf'" src="${preview_url}" style="${style}">
<tal:block tal:condition="preview_url and ext in ['jpg','jpeg','png','bmp','gif']">
<img src="${structure: preview_url}" style="width:100px;height:auto;"></img>
<img src="${structure: preview_url}" style="width:100px;height:auto;"></img>
<br>
<br>
</tal:block>
</tal:block>
<a class="label label-default" href="${structure: preview_url}"
<a class="label label-default" href="${structure: preview_url}"
target="_blank"><i class="fa fa-search"></i> View</a>
target="_blank"><i class="fa fa-search"></i> View</a>
</p>
</p>
\ No newline at end of file
\ No newline at end of file
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