Commit cc51e762 by Hamsyah

pembaruan inputan validator dan group by hmzh

2 parents eedc48e4 4c2cb197
......@@ -5,6 +5,7 @@ __pycache__/
.vs/
.vscode/
base.ini
# C extensions
*.so
......
......@@ -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
......
......@@ -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.SelectWidget(
widget=widget.RadioChoiceWidget(
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):
......
......@@ -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")
......
......@@ -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')
......
......@@ -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")
......
......@@ -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']
......
......@@ -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 28 Karakter'))
if (len(username) > 128):
raise colander.Invalid(node, _('Maksimal 20 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)
......
......@@ -27,7 +27,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()),
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!