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 c1c0479e
authored
Oct 21, 2024
by
aa.gusti
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
user departemen
1 parent
55152ca0
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
104 additions
and
17 deletions
opensipkd/base/__init__.py
opensipkd/base/routes.py
opensipkd/base/views/base_views.py
opensipkd/base/views/templates/base3.1.pt
opensipkd/base/views/user_dep.py
opensipkd/base/views/widget_os.py
opensipkd/base/views/widgets/readonly/checkbox.pt
opensipkd/models/user_area.py
opensipkd/models/user_dep.py
opensipkd/base/__init__.py
View file @
c1c0479
...
...
@@ -58,7 +58,9 @@ renderer = ZPTRendererFactory(search_path)
Form
.
set_zpt_renderer
(
search_path
)
main_title
=
'openSIPKD'
titles
=
{}
static_route
=
[
]
# http://stackoverflow.com/questions/9845669/pyramid-inverse-to-add-notfound-viewappend-slash-true
# class RemoveSlashNotFoundViewFactory(object):
...
...
opensipkd/base/routes.py
View file @
c1c0479
...
...
@@ -5,5 +5,12 @@ routes = [
(
"user-area-delete"
,
"/user/area/{id}/delete"
,
"Hapus User Area"
),
(
"user-area-view"
,
"/user/area/{id}/view"
,
"Lihat User Area"
),
(
"user-area-act"
,
"/user/area/{act}/act"
,
"Action User Area"
),
(
"user-area-upload"
,
"/user/area/upload"
,
"Upload User Area"
),
(
"user-area-upload"
,
"/user/area/upload"
,
"Upload User Area"
),
(
"user-departemen"
,
"/user/departemen"
,
"User Departemen"
),
(
"user-departemen-add"
,
"/user/departemen/add"
,
"Tambah User Departemen"
),
(
"user-departemen-edit"
,
"/user/departemen/{id}/edit"
,
"Edit User Departemen"
),
(
"user-departemen-delete"
,
"/user/departemen/{id}/delete"
,
"Hapus User Departemen"
),
(
"user-departemen-view"
,
"/user/departemen/{id}/view"
,
"Lihat User Departemen"
),
(
"user-departemen-act"
,
"/user/departemen/{act}/act"
,
"Action User Departemen"
),
(
"user-departemen-upload"
,
"/user/departemen/upload"
,
"Upload User Departemen"
),
]
\ No newline at end of file
opensipkd/base/views/base_views.py
View file @
c1c0479
...
...
@@ -558,16 +558,16 @@ class BaseView(object):
row
.
update_uid
=
user
and
user
.
id
or
None
row
.
from_dict
(
values
)
if
hasattr
(
row
,
"status"
):
status
=
"status"
in
values
and
values
[
"status"
]
or
0
log
.
debug
(
status
)
try
:
status
=
int
(
status
)
except
:
status
=
status
and
1
or
0
log
.
debug
(
status
)
row
.
status
=
status
#
if hasattr(row, "status"):
#
status = "status" in values and values["status"] or 0
#
log.debug(status)
#
try:
#
status = int(status)
#
except:
#
status = status and 1 or 0
#
#
log.debug(status)
#
row.status = status
self
.
db_session
.
add
(
row
)
self
.
db_session
.
flush
()
return
row
...
...
@@ -577,7 +577,7 @@ class BaseView(object):
if
k
not
in
values
:
if
v
:
values
[
k
]
=
v
log
.
debug
(
values
)
log
.
debug
(
f
"Base save_request: {values}"
)
return
self
.
save
(
values
,
self
.
req
.
user
,
row
)
def
id_not_found
(
self
,
**
kwargs
):
...
...
@@ -599,17 +599,23 @@ class BaseView(object):
return
None
def
before_edit
(
self
,
form
):
"""
Digunakan saat form edit ditampilkan
:param form:
:return: form
"""
return
form
def
view_edit
(
self
,
**
kwargs
):
request
=
self
.
req
row
=
self
.
query_id
()
.
first
()
is_object
=
kwargs
.
get
(
"is_object"
,
False
)
if
not
row
:
return
self
.
id_not_found
(
**
kwargs
)
if
not
self
.
bindings
:
self
.
bindings
=
self
.
get_bindings
(
row
)
form
=
self
.
get_form
(
self
.
edit_schema
,
**
kwargs
)
table
=
self
.
get_item_table
(
row
)
resources
=
form
.
get_widget_resources
()
...
...
opensipkd/base/views/templates/base3.1.pt
View file @
c1c0479
...
...
@@ -4,6 +4,7 @@
home request._host;
user_path ['user', 'user-add', 'user-edit', 'user-view', 'user-delete'];
user_area_path ['user-area', 'user-area-add', 'user-area-edit', 'user-area-view', 'user-area-delete'];
user_dep_path ['user-departemen', 'user-departemen-add', 'user-departemen-edit', 'user-departemen-view', 'user-departemen-delete'];
user_ext_path ['user-ext', 'user-ext-view', 'user-ext-delete'];
group_path ['group', 'group-add', 'group-edit', 'group-view', 'group-delete'];
param_path ['parameter', 'parameter-add', 'parameter-edit', 'parameter-view', 'parameter-delete'];
...
...
@@ -165,6 +166,10 @@
tal:attributes=
"class request.matched_route.name in user_area_path and 'active'"
>
<a
href=
"${home}/user/area"
>
User Area
</a>
</li>
<li
tal:condition=
"has_permission(request, ['user-view', 'user-edit'])"
tal:attributes=
"class request.matched_route.name in user_dep_path and 'active'"
>
<a
href=
"${home}/user/departemen"
>
User Departemen
</a>
</li>
<li
tal:condition=
"has_permission(request, ['user-view', 'user-edit'])"
tal:attributes=
"class request.matched_route.name in user_ext_path and 'active'"
>
<a
href=
"${home}/user/ext"
>
External User
</a>
...
...
opensipkd/base/views/user_dep.py
View file @
c1c0479
This diff is collapsed.
Click to expand it.
opensipkd/base/views/widget_os.py
View file @
c1c0479
...
...
@@ -555,6 +555,8 @@ class BootStrapDateInputWidget(Widget):
)
default_options
=
(
(
"format"
,
"yyyy-mm-dd"
),
(
"zIndexOffset"
,
"910"
),
)
# ("selectMonths", True),
# ("selectYears", True),
...
...
opensipkd/base/views/widgets/readonly/checkbox.pt
View file @
c1c0479
...
...
@@ -5,9 +5,9 @@
<p class="deform-readonly-true"
id="${oid}"
tal:condition="cstruct == true_val"
i18n:translate=""><i class="fas fa-check-square" aria-hidden="true"></i></p>
i18n:translate=""><i class="fas fa-check-square" aria-hidden="true"
style="color:green;"
></i></p>
<p class="deform-readonly-false"
id="${oid}"
tal:condition="cstruct != true_val"
i18n:translate=""><i class="fas fa-window-close" aria-hidden="true"></i></p>
i18n:translate=""><i class="fas fa-window-close" aria-hidden="true"
style="color:red;"
></i></p>
</div>
opensipkd/models/user_area.py
View file @
c1c0479
...
...
@@ -17,9 +17,10 @@ class UserArea(DefaultModel, Base):
@classmethod
def
allow_area
(
cls
,
user_id
,
desa_id
=
None
,
desa_kd
=
None
,
group_names
=
(
"Superuser"
,
"pbbm-admin"
),
):
user
=
UserGroup
.
query
()
.
filter_by
(
user_id
=
=
user_id
)
.
outerjoin
(
user
=
UserGroup
.
query
()
.
filter_by
(
user_id
=
user_id
)
.
outerjoin
(
Group
,
Group
.
id
==
UserGroup
.
group_id
)
.
filter
(
UserGroup
.
group_name
.
_in
(
*
group_names
))
.
first
()
Group
.
group_name
.
_in
(
*
group_names
))
.
first
()
if
user
and
user
.
id
:
return
True
...
...
opensipkd/models/user_dep.py
0 → 100644
View file @
c1c0479
# from opensipkd.models import Base, User, Departemen, DefaultModel, UserGroup, Group
# from sqlalchemy import ForeignKey, Integer, Column
# from sqlalchemy.orm import relationship, backref
#
#
# class UserDepartemen(DefaultModel, Base):
# __tablename__ = "user_dep"
# __table_args__ = {'extend_existing': True}
# user_id = Column(Integer, ForeignKey(User.id))
# departemen_id = Column(Integer, ForeignKey(Departemen.id))
# allow_sub = Column(Boolean)
# departemen = relationship(Departemen, backref=backref("user_dep"))
# user = relationship(User, backref=backref("user_area"))
#
# def validator(self, values):
# pass
#
# @classmethod
# def _allowed(cls, kode):
# departemen=[]
# rows = cls.query().filter(cls.kode.ilike(f"{row.kode}%"))
# for row in rows.all():
# departemen.append(row.id)
# if row.allow_sub:
# departemen.extend(self._allowed(row.kode))
# return departemen
#
# @classmethod
# def allowed(cls, user_id):
# rows = cls.query().filter(cls.user_id==user_id)
# departemen = []
# for row in rows.all():
# departemen.append(departemen_id)
# if row.allow_sub:
# departemen.extend(cls._allowed(row.kode))
#
# return departemen
#
# @classmethod
# def allow_area(cls, user_id, departemen_id=None,
# group_names=("Superuser", "pbbm-admin"), ):
#
# if user and user.id:
# return True
#
# if not desa_id and not desa_kd:
# raise Exception("parameter desa_id atau desa_kd wajib dikirim")
#
# if desa_id:
# rs = cls.query().filter(cls.user_id == user_id, cls.desa_id == desa_id)
# if rs and rs.id:
# return True
# if desa_kd:
# rs = cls.query().filter(cls.user_id == user_id) \
# .outerjoin(ResDesa, ResDesa.id == cls.desa_id).filter(
# ResDesa.kode == desa_kd).first()
# if rs and rs.id:
# return True
#
# return False
#
# @classmethod
# def get_by_user_id(cls, user_id):
# return cls.query().filter_by(user_id=user_id).all()
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