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 db87b664
authored
Mar 04, 2025
by
Prismana
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
pembaruan validator pada user, departemen dan provinsi
1 parent
db49460f
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
151 additions
and
62 deletions
.gitignore
base.ini:Zone.Identifier
opensipkd/base/__init__.py
opensipkd/base/views/departemen.py
opensipkd/base/views/provinsi.py
opensipkd/base/views/user.py
.gitignore
View file @
db87b66
...
...
@@ -4,6 +4,8 @@ __pycache__/
*$py.class
.vs/
.vscode/
base.ini
# C extensions
*.so
...
...
base.ini:Zone.Identifier
0 → 100644
View file @
db87b66
File mode changed
opensipkd/base/__init__.py
View file @
db87b66
...
...
@@ -698,9 +698,9 @@ def main(global_config, **settings):
if
'localization'
not
in
settings
:
settings
[
'localization'
]
=
'id_ID.UTF-8'
locale
.
setlocale
(
locale
.
LC_ALL
,
settings
[
'localization'
])
if
'timezone'
not
in
settings
:
settings
[
'timezone'
]
=
DefaultTimeZone
#
locale.setlocale(locale.LC_ALL, settings['localization'])
#
if 'timezone' not in settings:
#
settings['timezone'] = DefaultTimeZone
# modules = get_modules(settings)
# from importlib import import_module
...
...
opensipkd/base/views/departemen.py
View file @
db87b66
...
...
@@ -39,44 +39,82 @@ def departemen_widget_form():
{
"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
):
parent_id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
widget
=
widget
.
HiddenWidget
(),
oid
=
"parent_id"
,
missing
=
colander
.
drop
,
)
widget
=
widget
.
HiddenWidget
(),
oid
=
"parent_id"
,
missing
=
colander
.
drop
,)
parent_nm
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
,
colander
.
String
(),
missing
=
colander
.
drop
,
widget
=
widget
.
AutocompleteInputWidget
(
size
=
60
,
min_length
=
3
,
requirements
=
((
"typeahead"
,
None
),
(
"deform"
,
None
),
{
"js"
:
"opensipkd.base:static/js/form/departemen.js"
}),
requirements
=
((
"typeahead"
,
None
),
(
"deform"
,
None
),
{
"js"
:
"opensipkd.base:static/js/form/departemen.js"
}),
# options={"allowClear": True}
),
oid
=
"parent_nm"
,
title
=
"Induk"
)
parent_kd
=
colander
.
SchemaNode
(
colander
.
String
(),
widget
=
widget
.
TextInputWidget
(
css_class
=
"readonly"
),
missing
=
colander
.
drop
,
oid
=
"parent_kd"
,
title
=
"Kode Induk"
)
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
validator
=
colander
.
Length
(
max
=
32
),
oid
=
"kode"
)
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
oid
=
"nama"
)
singkat
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
,
oid
=
"singkat"
)
kategori
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
,
oid
=
"kategori"
)
alamat
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
,
oid
=
"alamat"
)
company_id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
widget
=
company_widget
,
missing
=
colander
.
drop
,
oid
=
"company_id"
)
oid
=
"parent_nm"
,
title
=
"Induk"
)
parent_kd
=
colander
.
SchemaNode
(
colander
.
String
(),
widget
=
widget
.
TextInputWidget
(
css_class
=
"readonly"
),
missing
=
colander
.
drop
,
oid
=
"parent_kd"
,
title
=
"Kode Induk"
)
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
validator
=
colander
.
Length
(
max
=
32
,
max_err
=
'Maksimal 32 karakter'
),
oid
=
"kode"
)
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
oid
=
"nama"
,
validator
=
colander
.
Length
(
min
=
1
,
max
=
128
,
max_err
=
"Maksimal 128 karakter"
,
min_err
=
'Minimal 1 karakter'
))
singkat
=
colander
.
SchemaNode
(
colander
.
String
(),
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
(
colander
.
Integer
(),
...
...
@@ -407,4 +445,4 @@ class ViewDepartemen(BaseView):
# row.kode = kode
# row.nama = csv_row['nama']
# DBSession.add(row)
# return row
# return row
\ No newline at end of file
opensipkd/base/views/provinsi.py
View file @
db87b66
...
...
@@ -6,6 +6,7 @@ from pyramid.view import (view_config, )
from
.
import
widget_os
from
opensipkd.models
import
DBSession
,
ResProvinsi
,
kategori_provinsi
from
..views
import
BaseView
_
=
TranslationStringFactory
(
"opensipkd"
)
SESS_ADD_FAILED
=
'Tambah provinsi gagal'
...
...
@@ -19,34 +20,51 @@ def provinsi_widget(node, kw):
slave
=
node
and
hasattr
(
node
,
'slave'
)
and
node
.
slave
or
""
values
.
insert
(
0
,
(
""
,
"Pilih Propinsi..."
))
readonly
=
kw
.
get
(
"readonly"
,
False
)
return
widget_os
.
Select2MsWidget
(
values
=
values
,
readonly
=
readonly
,
url
=
url
,
slave
=
slave
,
placeholder
=
"Pilih Provinsi"
)
return
widget_os
.
Select2MsWidget
(
values
=
values
,
readonly
=
readonly
,
url
=
url
,
slave
=
slave
,
placeholder
=
"Pilih Provinsi"
)
class
AddSchema
(
colander
.
Schema
):
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
oid
=
"kode"
,
validator
=
colander
.
Length
(
max
=
32
),
)
kategori
=
colander
.
SchemaNode
(
colander
.
String
(),
widget
=
widget
.
SelectWidget
(
values
=
kategori_provinsi
),
validator
=
colander
.
Length
(
max
=
32
),
oid
=
"kode"
)
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
oid
=
"kode"
,
validator
=
colander
.
Length
(
max
=
32
,
max_err
=
'Maksimal 32 karakter'
))
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
(
colander
.
String
(),
oid
=
"nama"
,
missing
=
colander
.
drop
)
ibu_kota
=
colander
.
SchemaNode
(
colander
.
String
(),
oid
=
"nama"
,
missing
=
colander
.
drop
,
validator
=
colander
.
Length
(
max
=
64
,
max_err
=
'Maksimal 64 karakter'
))
class
EditSchema
(
AddSchema
):
id
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
,
widget
=
widget
.
HiddenWidget
(
readonly
=
True
),
visible
=
False
)
id
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
,
widget
=
widget
.
HiddenWidget
(
readonly
=
True
),
visible
=
False
)
class
ListSchema
(
colander
.
Schema
):
id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
title
=
_
(
"action"
,
default
=
"Action"
))
id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
title
=
_
(
"action"
,
default
=
"Action"
))
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
width
=
100
)
nama
=
colander
.
SchemaNode
(
colander
.
String
())
ibu_kota
=
colander
.
SchemaNode
(
colander
.
String
())
...
...
@@ -69,13 +87,14 @@ class ViewProvinsi(BaseView):
def
form_validator
(
self
,
form
,
value
):
def
err_kode
():
raise
colander
.
Invalid
(
form
,
'Kode
%
s sudah digunakan oleh
%
s'
%
(
value
[
'kode'
],
found
.
nama
))
raise
colander
.
Invalid
(
form
,
'Kode
%
s sudah digunakan oleh
%
s'
%
(
value
[
'kode'
],
found
.
nama
))
def
err_nama
():
raise
colander
.
Invalid
(
form
,
'Uraian
%
s sudah digunakan oleh kode
%
s'
%
(
value
[
'nama'
],
found
.
kode
))
raise
colander
.
Invalid
(
form
,
'Uraian
%
s sudah digunakan oleh kode
%
s'
%
(
value
[
'nama'
],
found
.
kode
))
if
'id'
in
form
.
request
.
matchdict
:
uid
=
form
.
request
.
matchdict
[
'id'
]
...
...
opensipkd/base/views/user.py
View file @
db87b66
...
...
@@ -273,6 +273,13 @@ class EmailValidator(colander.Email, Validator):
if
found
and
(
not
self
.
user
or
self
.
user
.
email
!=
found
.
email
):
email_found
()
# 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_BEGIN_END_ALPHANUMERIC
=
re
.
compile
(
'^[A-Za-z0-9]+(?:[-][A-Za-z0-9]+)*$'
)
...
...
@@ -281,6 +288,15 @@ REGEX_BEGIN_END_ALPHANUMERIC = re.compile('^[A-Za-z0-9]+(?:[-][A-Za-z0-9]+)*$')
class
UsernameValidator
(
Validator
):
def
__call__
(
self
,
node
,
value
):
username
=
value
# Fungsi menampilkan error pada field form
def
username_max
():
raise
colander
.
Invalid
(
node
,
_
(
'Maksimal 128 karakter'
))
# Jika karakter melebihi 128 karakter maka, panggil fungsi
if
(
len
(
username
)
>
128
):
username_max
()
if
self
.
user
and
self
.
user
.
user_name
==
username
:
return
match
=
REGEX_ONLY_CONTAIN
.
search
(
username
)
...
...
@@ -333,20 +349,34 @@ def save_user(values, user, row=None):
class
AddSchema
(
colander
.
Schema
):
email
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
_
(
'Email'
),
colander
.
String
(),
title
=
_
(
'Email'
),
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
(
colander
.
Set
(),
widget
=
group_widget
,
title
=
_
(
'Group'
))
colander
.
Set
(),
widget
=
group_widget
,
title
=
_
(
'Group'
))
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
)
password
=
colander
.
SchemaNode
(
colander
.
String
(),
widget
=
widget
.
CheckedPasswordWidget
(),
colander
.
String
(),
widget
=
widget
.
CheckedPasswordWidget
(),
missing
=
colander
.
drop
)
company_id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
widget
=
company_widget
,
colander
.
Integer
(),
widget
=
company_widget
,
title
=
"Company"
,
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