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 cc51e762
authored
Mar 04, 2025
by
Hamsyah
Browse Files
Options
Browse Files
Tag
Download
Plain Diff
pembaruan inputan validator dan group by hmzh
2 parents
eedc48e4
4c2cb197
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
156 additions
and
72 deletions
.gitignore
opensipkd/base/__init__.py
opensipkd/base/views/dati2.py
opensipkd/base/views/departemen.py
opensipkd/base/views/groups.py
opensipkd/base/views/partner_base.py
opensipkd/base/views/provinsi.py
opensipkd/base/views/user.py
opensipkd/base/views/user_area.py
.gitignore
View file @
cc51e76
...
@@ -5,6 +5,7 @@ __pycache__/
...
@@ -5,6 +5,7 @@ __pycache__/
.vs/
.vs/
.vscode/
.vscode/
base.ini
base.ini
# C extensions
# C extensions
*.so
*.so
...
...
opensipkd/base/__init__.py
View file @
cc51e76
...
@@ -698,9 +698,9 @@ def main(global_config, **settings):
...
@@ -698,9 +698,9 @@ def main(global_config, **settings):
if
'localization'
not
in
settings
:
if
'localization'
not
in
settings
:
settings
[
'localization'
]
=
'id_ID.UTF-8'
settings
[
'localization'
]
=
'id_ID.UTF-8'
locale
.
setlocale
(
locale
.
LC_ALL
,
settings
[
'localization'
])
#
locale.setlocale(locale.LC_ALL, settings['localization'])
if
'timezone'
not
in
settings
:
#
if 'timezone' not in settings:
settings
[
'timezone'
]
=
DefaultTimeZone
#
settings['timezone'] = DefaultTimeZone
# modules = get_modules(settings)
# modules = get_modules(settings)
# from importlib import import_module
# from importlib import import_module
...
...
opensipkd/base/views/dati2.py
View file @
cc51e76
...
@@ -35,12 +35,14 @@ class AddSchema(colander.Schema):
...
@@ -35,12 +35,14 @@ class AddSchema(colander.Schema):
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
validator
=
colander
.
Length
(
max
=
32
),
oid
=
"kode"
)
validator
=
colander
.
Length
(
max
=
32
),
oid
=
"kode"
)
kategori
=
colander
.
SchemaNode
(
colander
.
String
(),
kategori
=
colander
.
SchemaNode
(
colander
.
String
(),
widget
=
widget
.
Select
Widget
(
widget
=
widget
.
RadioChoice
Widget
(
values
=
kategori_dati2
),
values
=
kategori_dati2
),
validator
=
colander
.
Length
(
max
=
32
),
validator
=
colander
.
Length
(
max
=
32
),
oid
=
"kode"
)
oid
=
"kode"
)
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
oid
=
"nama"
)
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
validator
=
colander
.
Length
(
max
=
64
),
oid
=
"nama"
)
class
EditSchema
(
AddSchema
):
class
EditSchema
(
AddSchema
):
...
...
opensipkd/base/views/departemen.py
View file @
cc51e76
...
@@ -39,44 +39,82 @@ def departemen_widget_form():
...
@@ -39,44 +39,82 @@ def departemen_widget_form():
{
"js"
:
"opensipkd.base:static/js/form/departemen_form.js"
}),
{
"js"
:
"opensipkd.base:static/js/form/departemen_form.js"
}),
)
)
# Mencoba membuat validator sendiri
class
Validator
:
def
__init__
(
self
,
user
):
self
.
user
=
user
# Validator nama
class
NameValidator
(
Validator
):
def
__call__
(
self
,
node
,
value
):
name
=
value
if
(
len
(
name
)
>
128
):
raise
colander
.
Invalid
(
node
,
_
(
'Maksimal 128 karakter'
))
@colander.deferred
def
name_validator
(
node
,
kw
):
return
NameValidator
(
kw
[
'user'
])
class
AddSchema
(
colander
.
Schema
):
class
AddSchema
(
colander
.
Schema
):
parent_id
=
colander
.
SchemaNode
(
parent_id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
colander
.
Integer
(),
widget
=
widget
.
HiddenWidget
(),
oid
=
"parent_id"
,
missing
=
colander
.
drop
,
widget
=
widget
.
HiddenWidget
(),
)
oid
=
"parent_id"
,
missing
=
colander
.
drop
,)
parent_nm
=
colander
.
SchemaNode
(
parent_nm
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
,
colander
.
String
(),
missing
=
colander
.
drop
,
widget
=
widget
.
AutocompleteInputWidget
(
widget
=
widget
.
AutocompleteInputWidget
(
size
=
60
,
min_length
=
3
,
size
=
60
,
min_length
=
3
,
requirements
=
((
"typeahead"
,
None
),
(
"deform"
,
None
),
requirements
=
((
"typeahead"
,
None
),
{
"js"
:
"opensipkd.base:static/js/form/departemen.js"
}),
(
"deform"
,
None
),
{
"js"
:
"opensipkd.base:static/js/form/departemen.js"
}),
# options={"allowClear": True}
# options={"allowClear": True}
),
),
oid
=
"parent_nm"
,
title
=
"Induk"
)
oid
=
"parent_nm"
,
title
=
"Induk"
)
parent_kd
=
colander
.
SchemaNode
(
colander
.
String
(),
widget
=
widget
.
TextInputWidget
(
css_class
=
"readonly"
),
parent_kd
=
colander
.
SchemaNode
(
missing
=
colander
.
drop
,
oid
=
"parent_kd"
,
title
=
"Kode Induk"
)
colander
.
String
(),
widget
=
widget
.
TextInputWidget
(
css_class
=
"readonly"
),
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
,
validator
=
colander
.
Length
(
max
=
32
),
oid
=
"kode"
)
oid
=
"parent_kd"
,
title
=
"Kode Induk"
)
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
oid
=
"nama"
)
kode
=
colander
.
SchemaNode
(
singkat
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
,
colander
.
String
(),
oid
=
"singkat"
)
validator
=
colander
.
Length
(
max
=
32
,
max_err
=
'Maksimal 32 karakter'
),
oid
=
"kode"
)
kategori
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
,
oid
=
"kategori"
)
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
alamat
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
,
oid
=
"nama"
,
oid
=
"alamat"
)
validator
=
colander
.
Length
(
min
=
1
,
max
=
128
,
max_err
=
"Maksimal 128 karakter"
,
min_err
=
'Minimal 1 karakter'
))
company_id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
widget
=
company_widget
,
singkat
=
colander
.
SchemaNode
(
missing
=
colander
.
drop
,
colander
.
String
(),
oid
=
"company_id"
)
missing
=
colander
.
drop
,
oid
=
"singkat"
,
validator
=
colander
.
Length
(
max
=
32
,
max_err
=
'Maksimal 32 karakter'
))
kategori
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
,
oid
=
"kategori"
,
validator
=
colander
.
Length
(
max
=
32
,
max_err
=
'Maksimal 32 karakter'
))
alamat
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
,
oid
=
"alamat"
,
validator
=
colander
.
Length
(
max
=
255
,
max_err
=
'Maksimal 255 karakter'
))
company_id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
widget
=
company_widget
,
missing
=
colander
.
drop
,
oid
=
"company_id"
)
status
=
colander
.
SchemaNode
(
status
=
colander
.
SchemaNode
(
colander
.
Integer
(),
colander
.
Integer
(),
...
@@ -407,4 +445,4 @@ class ViewDepartemen(BaseView):
...
@@ -407,4 +445,4 @@ class ViewDepartemen(BaseView):
# row.kode = kode
# row.kode = kode
# row.nama = csv_row['nama']
# row.nama = csv_row['nama']
# DBSession.add(row)
# DBSession.add(row)
# return row
# return row
\ No newline at end of file
\ No newline at end of file
opensipkd/base/views/groups.py
View file @
cc51e76
...
@@ -27,8 +27,12 @@ def permissions_widget(node, kw):
...
@@ -27,8 +27,12 @@ def permissions_widget(node, kw):
class
AddSchema
(
colander
.
Schema
):
class
AddSchema
(
colander
.
Schema
):
group_name
=
colander
.
SchemaNode
(
group_name
=
colander
.
SchemaNode
(
colander
.
String
(),
validator
=
name_validator
)
colander
.
String
(),
description
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
)
validator
=
colander
.
Length
(
max
=
32
))
description
=
colander
.
SchemaNode
(
colander
.
String
(),
validator
=
colander
.
Length
(
max
=
32
),
missing
=
colander
.
drop
)
permissions
=
colander
.
SchemaNode
(
permissions
=
colander
.
SchemaNode
(
colander
.
Set
(),
widget
=
permissions_widget
,
title
=
'Hak akses'
)
colander
.
Set
(),
widget
=
permissions_widget
,
title
=
'Hak akses'
)
...
...
opensipkd/base/views/partner_base.py
View file @
cc51e76
...
@@ -71,7 +71,7 @@ def partner_kode_validator(node, kw):
...
@@ -71,7 +71,7 @@ def partner_kode_validator(node, kw):
class
NamaSchema
(
colander
.
Schema
):
class
NamaSchema
(
colander
.
Schema
):
kode
=
colander
.
SchemaNode
(
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
colander
.
String
(),
validator
=
partner_kode_validator
,
validator
=
colander
.
Length
(
max
=
32
)
,
oid
=
"kode"
,
oid
=
"kode"
,
title
=
"Kode"
,
title
=
"Kode"
,
width
=
"100pt"
)
width
=
"100pt"
)
...
@@ -86,7 +86,7 @@ class NamaSchema(colander.Schema):
...
@@ -86,7 +86,7 @@ class NamaSchema(colander.Schema):
email
=
colander
.
SchemaNode
(
email
=
colander
.
SchemaNode
(
colander
.
String
(),
colander
.
String
(),
validator
=
partner_email_validator
,
validator
=
colander
.
Length
(
max
=
32
)
,
oid
=
"email"
)
oid
=
"email"
)
...
...
opensipkd/base/views/provinsi.py
View file @
cc51e76
...
@@ -6,6 +6,7 @@ from pyramid.view import (view_config, )
...
@@ -6,6 +6,7 @@ from pyramid.view import (view_config, )
from
.
import
widget_os
from
.
import
widget_os
from
opensipkd.models
import
DBSession
,
ResProvinsi
,
kategori_provinsi
from
opensipkd.models
import
DBSession
,
ResProvinsi
,
kategori_provinsi
from
..views
import
BaseView
from
..views
import
BaseView
_
=
TranslationStringFactory
(
"opensipkd"
)
_
=
TranslationStringFactory
(
"opensipkd"
)
SESS_ADD_FAILED
=
'Tambah provinsi gagal'
SESS_ADD_FAILED
=
'Tambah provinsi gagal'
...
@@ -19,34 +20,51 @@ def provinsi_widget(node, kw):
...
@@ -19,34 +20,51 @@ def provinsi_widget(node, kw):
slave
=
node
and
hasattr
(
node
,
'slave'
)
and
node
.
slave
or
""
slave
=
node
and
hasattr
(
node
,
'slave'
)
and
node
.
slave
or
""
values
.
insert
(
0
,
(
""
,
"Pilih Propinsi..."
))
values
.
insert
(
0
,
(
""
,
"Pilih Propinsi..."
))
readonly
=
kw
.
get
(
"readonly"
,
False
)
readonly
=
kw
.
get
(
"readonly"
,
False
)
return
widget_os
.
Select2MsWidget
(
values
=
values
,
return
widget_os
.
Select2MsWidget
(
readonly
=
readonly
,
values
=
values
,
url
=
url
,
readonly
=
readonly
,
slave
=
slave
,
url
=
url
,
placeholder
=
"Pilih Provinsi"
)
slave
=
slave
,
placeholder
=
"Pilih Provinsi"
)
class
AddSchema
(
colander
.
Schema
):
class
AddSchema
(
colander
.
Schema
):
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
kode
=
colander
.
SchemaNode
(
oid
=
"kode"
,
colander
.
String
(),
validator
=
colander
.
Length
(
max
=
32
),
)
oid
=
"kode"
,
kategori
=
colander
.
SchemaNode
(
colander
.
String
(),
validator
=
colander
.
Length
(
max
=
32
,
max_err
=
'Maksimal 32 karakter'
))
widget
=
widget
.
SelectWidget
(
values
=
kategori_provinsi
),
validator
=
colander
.
Length
(
max
=
32
),
oid
=
"kode"
)
kategori
=
colander
.
SchemaNode
(
colander
.
String
(),
widget
=
widget
.
SelectWidget
(
values
=
kategori_provinsi
),
validator
=
colander
.
Length
(
max
=
32
,
max_err
=
'Maksimal 32 karakter'
),
oid
=
"kode"
)
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
oid
=
"nama"
,
validator
=
colander
.
Length
(
max
=
128
,
max_err
=
'Maksimal 128 karakter'
))
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
oid
=
"nama"
)
ibu_kota
=
colander
.
SchemaNode
(
ibu_kota
=
colander
.
SchemaNode
(
colander
.
String
(),
oid
=
"nama"
,
missing
=
colander
.
drop
)
colander
.
String
(),
oid
=
"nama"
,
missing
=
colander
.
drop
,
validator
=
colander
.
Length
(
max
=
64
,
max_err
=
'Maksimal 64 karakter'
))
class
EditSchema
(
AddSchema
):
class
EditSchema
(
AddSchema
):
id
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
,
id
=
colander
.
SchemaNode
(
widget
=
widget
.
HiddenWidget
(
readonly
=
True
),
colander
.
String
(),
visible
=
False
)
missing
=
colander
.
drop
,
widget
=
widget
.
HiddenWidget
(
readonly
=
True
),
visible
=
False
)
class
ListSchema
(
colander
.
Schema
):
class
ListSchema
(
colander
.
Schema
):
id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
id
=
colander
.
SchemaNode
(
title
=
_
(
"action"
,
default
=
"Action"
))
colander
.
Integer
(),
title
=
_
(
"action"
,
default
=
"Action"
))
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
width
=
100
)
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
width
=
100
)
nama
=
colander
.
SchemaNode
(
colander
.
String
())
nama
=
colander
.
SchemaNode
(
colander
.
String
())
ibu_kota
=
colander
.
SchemaNode
(
colander
.
String
())
ibu_kota
=
colander
.
SchemaNode
(
colander
.
String
())
...
@@ -69,13 +87,14 @@ class ViewProvinsi(BaseView):
...
@@ -69,13 +87,14 @@ class ViewProvinsi(BaseView):
def
form_validator
(
self
,
form
,
value
):
def
form_validator
(
self
,
form
,
value
):
def
err_kode
():
def
err_kode
():
raise
colander
.
Invalid
(
form
,
'Kode
%
s sudah digunakan oleh
%
s'
%
(
raise
colander
.
Invalid
(
value
[
'kode'
],
found
.
nama
))
form
,
'Kode
%
s sudah digunakan oleh
%
s'
%
(
value
[
'kode'
],
found
.
nama
))
def
err_nama
():
def
err_nama
():
raise
colander
.
Invalid
(
form
,
raise
colander
.
Invalid
(
'Uraian
%
s sudah digunakan oleh kode
%
s'
%
(
form
,
value
[
'nama'
],
found
.
kode
))
'Uraian
%
s sudah digunakan oleh kode
%
s'
%
(
value
[
'nama'
],
found
.
kode
))
if
'id'
in
form
.
request
.
matchdict
:
if
'id'
in
form
.
request
.
matchdict
:
uid
=
form
.
request
.
matchdict
[
'id'
]
uid
=
form
.
request
.
matchdict
[
'id'
]
...
...
opensipkd/base/views/user.py
View file @
cc51e76
...
@@ -276,6 +276,13 @@ class EmailValidator(colander.Email, Validator):
...
@@ -276,6 +276,13 @@ class EmailValidator(colander.Email, Validator):
raise
colander
.
Invalid
(
node
,
_
(
'Email tidak boleh lebih dari 100 karakter.'
))
raise
colander
.
Invalid
(
node
,
_
(
'Email tidak boleh lebih dari 100 karakter.'
))
# Cek karakter
def
email_max
():
raise
colander
.
Invalid
(
node
,
_
(
'Maksimal 100 karakter'
))
if
(
len
(
email
)
>
100
):
email_max
()
REGEX_ONLY_CONTAIN
=
re
.
compile
(
'([A-Za-z0-9-]*)'
)
REGEX_ONLY_CONTAIN
=
re
.
compile
(
'([A-Za-z0-9-]*)'
)
REGEX_BEGIN_END_ALPHANUMERIC
=
re
.
compile
(
'^[A-Za-z0-9]+(?:[-][A-Za-z0-9]+)*$'
)
REGEX_BEGIN_END_ALPHANUMERIC
=
re
.
compile
(
'^[A-Za-z0-9]+(?:[-][A-Za-z0-9]+)*$'
)
...
@@ -286,10 +293,9 @@ class UsernameValidator(Validator):
...
@@ -286,10 +293,9 @@ class UsernameValidator(Validator):
username
=
value
username
=
value
def
username_max
():
def
username_max
():
raise
colander
.
Invalid
(
node
,
_
(
'Maksimal 2
8
Karakter'
))
raise
colander
.
Invalid
(
node
,
_
(
'Maksimal 2
0
Karakter'
))
if
(
len
(
username
)
>
128
):
if
(
len
(
username
)
>
20
):
username_max
()
username_max
()
if
self
.
user
and
self
.
user
.
user_name
==
username
:
if
self
.
user
and
self
.
user
.
user_name
==
username
:
return
return
match
=
REGEX_ONLY_CONTAIN
.
search
(
username
)
match
=
REGEX_ONLY_CONTAIN
.
search
(
username
)
...
@@ -342,20 +348,34 @@ def save_user(values, user, row=None):
...
@@ -342,20 +348,34 @@ def save_user(values, user, row=None):
class
AddSchema
(
colander
.
Schema
):
class
AddSchema
(
colander
.
Schema
):
email
=
colander
.
SchemaNode
(
email
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
_
(
'Email'
),
colander
.
String
(),
title
=
_
(
'Email'
),
validator
=
email_validator
)
validator
=
email_validator
)
user_name
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
_
(
'Username'
),
validator
=
username_validator
)
user_name
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
_
(
'Username tetst'
),
validator
=
username_validator
)
groups
=
colander
.
SchemaNode
(
groups
=
colander
.
SchemaNode
(
colander
.
Set
(),
widget
=
group_widget
,
title
=
_
(
'Group'
))
colander
.
Set
(),
widget
=
group_widget
,
title
=
_
(
'Group'
))
is_api_key
=
colander
.
SchemaNode
(
is_api_key
=
colander
.
SchemaNode
(
colander
.
String
(),
widget
=
api_key_widget
,
title
=
_
(
'API Key'
),
colander
.
String
(),
widget
=
api_key_widget
,
title
=
_
(
'API Key'
),
missing
=
colander
.
drop
)
missing
=
colander
.
drop
)
password
=
colander
.
SchemaNode
(
password
=
colander
.
SchemaNode
(
colander
.
String
(),
widget
=
widget
.
CheckedPasswordWidget
(),
colander
.
String
(),
widget
=
widget
.
CheckedPasswordWidget
(),
missing
=
colander
.
drop
)
missing
=
colander
.
drop
)
company_id
=
colander
.
SchemaNode
(
company_id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
widget
=
company_widget
,
colander
.
Integer
(),
widget
=
company_widget
,
title
=
"Company"
,
title
=
"Company"
,
missing
=
colander
.
drop
)
missing
=
colander
.
drop
)
...
...
opensipkd/base/views/user_area.py
View file @
cc51e76
...
@@ -27,7 +27,7 @@ class ListSchema(colander.Schema):
...
@@ -27,7 +27,7 @@ class ListSchema(colander.Schema):
class
AddSchema
(
colander
.
Schema
):
class
AddSchema
(
colander
.
Schema
):
user_id
=
colander
.
SchemaNode
(
user_id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
colander
.
Integer
(),
widget
=
widget
.
Select
Widget
(
values
=
User
.
get_list
()),
widget
=
widget
.
RadioChoice
Widget
(
values
=
User
.
get_list
()),
oid
=
"user_id"
,
oid
=
"user_id"
,
title
=
"User"
,
title
=
"User"
,
)
)
...
...
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