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
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
135 additions
and
51 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__/
.vs/
.vscode/
base.ini
# C extensions
*.so
...
...
opensipkd/base/__init__.py
View file @
cc51e76
...
...
@@ -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/dati2.py
View file @
cc51e76
...
...
@@ -35,12 +35,14 @@ class AddSchema(colander.Schema):
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
validator
=
colander
.
Length
(
max
=
32
),
oid
=
"kode"
)
kategori
=
colander
.
SchemaNode
(
colander
.
String
(),
widget
=
widget
.
Select
Widget
(
widget
=
widget
.
RadioChoice
Widget
(
values
=
kategori_dati2
),
validator
=
colander
.
Length
(
max
=
32
),
oid
=
"kode"
)
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
oid
=
"nama"
)
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
validator
=
colander
.
Length
(
max
=
64
),
oid
=
"nama"
)
class
EditSchema
(
AddSchema
):
...
...
opensipkd/base/views/departemen.py
View file @
cc51e76
...
...
@@ -39,41 +39,79 @@ 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
),
requirements
=
((
"typeahead"
,
None
),
(
"deform"
,
None
),
{
"js"
:
"opensipkd.base:static/js/form/departemen.js"
}),
# options={"allowClear": True}
),
oid
=
"parent_nm"
,
title
=
"Induk"
)
oid
=
"parent_nm"
,
title
=
"Induk"
)
parent_kd
=
colander
.
SchemaNode
(
colander
.
String
(),
parent_kd
=
colander
.
SchemaNode
(
colander
.
String
(),
widget
=
widget
.
TextInputWidget
(
css_class
=
"readonly"
),
missing
=
colander
.
drop
,
oid
=
"parent_kd"
,
title
=
"Kode Induk"
)
missing
=
colander
.
drop
,
oid
=
"parent_kd"
,
title
=
"Kode Induk"
)
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
validator
=
colander
.
Length
(
max
=
32
),
oid
=
"kode"
)
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
validator
=
colander
.
Length
(
max
=
32
,
max_err
=
'Maksimal 32 karakter'
),
oid
=
"kode"
)
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
oid
=
"nama"
)
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"
)
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"
)
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"
)
company_id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
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"
)
...
...
opensipkd/base/views/groups.py
View file @
cc51e76
...
...
@@ -27,8 +27,12 @@ def permissions_widget(node, kw):
class
AddSchema
(
colander
.
Schema
):
group_name
=
colander
.
SchemaNode
(
colander
.
String
(),
validator
=
name_validator
)
description
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
)
colander
.
String
(),
validator
=
colander
.
Length
(
max
=
32
))
description
=
colander
.
SchemaNode
(
colander
.
String
(),
validator
=
colander
.
Length
(
max
=
32
),
missing
=
colander
.
drop
)
permissions
=
colander
.
SchemaNode
(
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):
class
NamaSchema
(
colander
.
Schema
):
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
validator
=
partner_kode_validator
,
validator
=
colander
.
Length
(
max
=
32
)
,
oid
=
"kode"
,
title
=
"Kode"
,
width
=
"100pt"
)
...
...
@@ -86,7 +86,7 @@ class NamaSchema(colander.Schema):
email
=
colander
.
SchemaNode
(
colander
.
String
(),
validator
=
partner_email_validator
,
validator
=
colander
.
Length
(
max
=
32
)
,
oid
=
"email"
)
...
...
opensipkd/base/views/provinsi.py
View file @
cc51e76
...
...
@@ -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,7 +20,8 @@ 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
,
return
widget_os
.
Select2MsWidget
(
values
=
values
,
readonly
=
readonly
,
url
=
url
,
slave
=
slave
,
...
...
@@ -27,26 +29,42 @@ def provinsi_widget(node, kw):
class
AddSchema
(
colander
.
Schema
):
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
oid
=
"kode"
,
validator
=
colander
.
Length
(
max
=
32
),
)
kategori
=
colander
.
SchemaNode
(
colander
.
String
(),
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
),
oid
=
"kode"
)
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
,
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 @
cc51e76
...
...
@@ -276,6 +276,13 @@ class EmailValidator(colander.Email, Validator):
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_BEGIN_END_ALPHANUMERIC
=
re
.
compile
(
'^[A-Za-z0-9]+(?:[-][A-Za-z0-9]+)*$'
)
...
...
@@ -286,10 +293,9 @@ class UsernameValidator(Validator):
username
=
value
def
username_max
():
raise
colander
.
Invalid
(
node
,
_
(
'Maksimal 2
8
Karakter'
))
if
(
len
(
username
)
>
128
):
raise
colander
.
Invalid
(
node
,
_
(
'Maksimal 2
0
Karakter'
))
if
(
len
(
username
)
>
20
):
username_max
()
if
self
.
user
and
self
.
user
.
user_name
==
username
:
return
match
=
REGEX_ONLY_CONTAIN
.
search
(
username
)
...
...
@@ -342,20 +348,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'
),
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
)
...
...
opensipkd/base/views/user_area.py
View file @
cc51e76
...
...
@@ -27,7 +27,7 @@ class ListSchema(colander.Schema):
class
AddSchema
(
colander
.
Schema
):
user_id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
widget
=
widget
.
Select
Widget
(
values
=
User
.
get_list
()),
widget
=
widget
.
RadioChoice
Widget
(
values
=
User
.
get_list
()),
oid
=
"user_id"
,
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