Commit 32d487bf by Hamsyah

pembaruan inputan validator dan group by hmzh

1 parent db49460f
...@@ -180,4 +180,4 @@ two_minutes = timedelta(1.0 / 24 / 60) ...@@ -180,4 +180,4 @@ two_minutes = timedelta(1.0 / 24 / 60)
@colander.deferred @colander.deferred
def deferred_jenis(node, kw): def deferred_jenis(node, kw):
values = kw.get('daftar_jenis', []) values = kw.get('daftar_jenis', [])
return widget.RadioChoiceWidget(values=values)
\ No newline at end of file \ No newline at end of file
\ No newline at end of file \ No newline at end of file
...@@ -23,10 +23,12 @@ class AddSchema(colander.Schema): ...@@ -23,10 +23,12 @@ class AddSchema(colander.Schema):
oid="kode") oid="kode")
nama = colander.SchemaNode( nama = colander.SchemaNode(
colander.String(), colander.String(),
validator=colander.Length(max=128),
oid="nama") oid="nama")
status = colander.SchemaNode( status = colander.SchemaNode(
colander.Boolean(), colander.Integer(),
widget=widget.CheckboxWidget(true_val=1, false_val=0), widget=widget.CheckboxWidget(true_val='1', false_val='0'),
default=1,
oid="status") oid="status")
......
...@@ -40,6 +40,7 @@ class AddSchema(colander.Schema): ...@@ -40,6 +40,7 @@ class AddSchema(colander.Schema):
oid="kode") oid="kode")
nama = colander.SchemaNode( nama = colander.SchemaNode(
colander.String(), colander.String(),
validator=colander.Length(max=32),
oid="nama") oid="nama")
nama_pendek = colander.SchemaNode( nama_pendek = colander.SchemaNode(
colander.String(), colander.String(),
...@@ -84,7 +85,8 @@ class ListSchema(colander.Schema): ...@@ -84,7 +85,8 @@ class ListSchema(colander.Schema):
oid="nama") oid="nama")
status = colander.SchemaNode( status = colander.SchemaNode(
colander.Integer(), colander.Integer(),
widget=widget.CheckboxWidget(), widget=widget.CheckboxWidget(true_val='1', false_val='0'),
default=1,
oid="status") oid="status")
......
...@@ -46,7 +46,10 @@ class AddSchema(colander.Schema): ...@@ -46,7 +46,10 @@ class AddSchema(colander.Schema):
kode = colander.SchemaNode( kode = colander.SchemaNode(
colander.String(), colander.String(),
validator=colander.Length(max=32), oid="kode") validator=colander.Length(max=32), oid="kode")
nama = colander.SchemaNode(colander.String(), oid="nama") nama = colander.SchemaNode(colander.String(),
validator=colander.Length(max=128),
oid="nama")
class EditSchema(AddSchema): class EditSchema(AddSchema):
......
from colander import Length
import colander import colander
from deform import (widget, ) from deform import (widget, )
from pyramid.view import (view_config, ) from pyramid.view import (view_config, )
...@@ -8,15 +9,18 @@ from opensipkd.models import ( ...@@ -8,15 +9,18 @@ from opensipkd.models import (
from . import BaseView from . import BaseView
class AddSchema(colander.Schema): class AddSchema(colander.Schema):
kode = colander.SchemaNode( kode = colander.SchemaNode(
colander.String(), colander.String(),
oid="kode", oid="kode",
title="Kode") validator=colander.Length(max=32),
title="Kode") # Validasi panjang maksimal 32 karakter
nama = colander.SchemaNode( nama = colander.SchemaNode(
colander.String(), colander.String(),
oid="nama", oid="nama",
validator=colander.Length(max=128),
title="Nama") title="Nama")
value = colander.SchemaNode( value = colander.SchemaNode(
......
...@@ -12,6 +12,9 @@ from opensipkd.tools import dmy, date_from_str ...@@ -12,6 +12,9 @@ from opensipkd.tools import dmy, date_from_str
from . import widget_os from . import widget_os
from ..views import ColumnDT, DataTables, BaseView from ..views import ColumnDT, DataTables, BaseView
from deform.widget import RadioChoiceWidget
SESS_ADD_FAILED = 'Tambah posisi partner gagal' SESS_ADD_FAILED = 'Tambah posisi partner gagal'
SESS_EDIT_FAILED = 'Edit posisi partner gagal' SESS_EDIT_FAILED = 'Edit posisi partner gagal'
...@@ -31,12 +34,14 @@ class AddSchema(colander.Schema): ...@@ -31,12 +34,14 @@ class AddSchema(colander.Schema):
style="z-index: 100001 !important;") style="z-index: 100001 !important;")
jabatan_widget = widget.AutocompleteInputWidget( # Widget untuk jabatan diubah menjadi RadioChoiceWidget
size=60, @colander.deferred
values='/jabatan/hon/act', def jabatan_widget(node, kw):
min_length=2, # Ambil daftar jabatan dari database
jabatan_list = DBSession.query(Jabatan.id, Jabatan.nama).all()
style="z-index: 99999 !important;") # Format data untuk RadioChoiceWidget: [(value, label), ...]
choices = [(str(jabatan.id), jabatan.nama) for jabatan in jabatan_list]
return RadioChoiceWidget(values=choices)
partner_id = colander.SchemaNode( partner_id = colander.SchemaNode(
colander.Integer(), colander.Integer(),
...@@ -61,10 +66,11 @@ class AddSchema(colander.Schema): ...@@ -61,10 +66,11 @@ class AddSchema(colander.Schema):
colander.Integer(), colander.Integer(),
oid="jabatan_id", oid="jabatan_id",
widget=widget.HiddenWidget(), widget=widget.HiddenWidget(),
tittle="Jabatan"
) )
jabatan = colander.SchemaNode( jabatan = colander.SchemaNode(
colander.String(), colander.Integer(),
widget=jabatan_widget, widget=jabatan_widget,
oid="jabatan_nm", oid="jabatan_nm",
title="Jabatan") title="Jabatan")
mulai = colander.SchemaNode( mulai = colander.SchemaNode(
......
...@@ -272,6 +272,9 @@ class EmailValidator(colander.Email, Validator): ...@@ -272,6 +272,9 @@ class EmailValidator(colander.Email, Validator):
found = q.first() found = q.first()
if found and (not self.user or self.user.email != found.email): if found and (not self.user or self.user.email != found.email):
email_found() email_found()
if len(email) > 100:
raise colander.Invalid(node, _('Email tidak boleh lebih dari 100 karakter.'))
REGEX_ONLY_CONTAIN = re.compile('([A-Za-z0-9-]*)') REGEX_ONLY_CONTAIN = re.compile('([A-Za-z0-9-]*)')
...@@ -281,6 +284,12 @@ REGEX_BEGIN_END_ALPHANUMERIC = re.compile('^[A-Za-z0-9]+(?:[-][A-Za-z0-9]+)*$') ...@@ -281,6 +284,12 @@ REGEX_BEGIN_END_ALPHANUMERIC = re.compile('^[A-Za-z0-9]+(?:[-][A-Za-z0-9]+)*$')
class UsernameValidator(Validator): class UsernameValidator(Validator):
def __call__(self, node, value): def __call__(self, node, value):
username = value username = value
def username_max():
raise colander.Invalid(node, _('Maksimal 28 Karakter'))
if (len(username) > 128):
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)
......
...@@ -24,7 +24,7 @@ class ListSchema(colander.Schema): ...@@ -24,7 +24,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.SelectWidget(values=User.get_list()), widget=widget.RadioChoiceWidget(values=User.get_list()), # Menggunakan CheckboxChoiceWidget
oid="user_id", oid="user_id",
title="User", title="User",
) )
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!