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