rpc.py
1.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
from pyramid_rpc.jsonrpc import jsonrpc_method
from opensipkd.models import Menus
@jsonrpc_method(method='get_menu', endpoint='rpc')
def get_menu(request, data):
"""
Digunakan untuk login pada aplikasi lain
:param request:
:param data:
{
"user_name": "user_name",
"password": "password"
}
:return:
result: "data":
{
"user_name": "user_name",
"nik": nik,
"nama": nik,
"group": [group],
"departemens": [departemen]
}
error:"error":{}
"""
is_list = type(data) is list
data = is_list and data[0] or data
level_id = data.get("level")
group = data.get("group")
qry = Menus.query()
if level_id:
qry = qry.filter(Menus.level_id == level_id or Menus.level_id == None)
if group:
grp = Menus.query().filter(kode=group).first()
if grp:
qry = qry.filter(
Menus.parent_id == grp.id or Menus.parent_id == None)
if request.user:
qry = qry.filter_by(need_login=True)
else:
qry = qry.filter_by(need_login=False)
resp = [
{
"type": "link",
"label": row.nama,
"className": row.class_name,
"name": row.kode,
"id": row.kode,
"url": row.url,
"icon": row.icon
}
for row in qry.all()]
result = is_list and [resp] or resp
return result