Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 4ab96bb

Browse filesBrowse files
authored
Merge branch 'zhangchunlin:master' into master
2 parents 0325de5 + e539fed commit 4ab96bb
Copy full SHA for 4ab96bb

File tree

Expand file treeCollapse file tree

19 files changed

+306
-188
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

19 files changed

+306
-188
lines changed
Open diff view settings
Collapse file

‎demo/apps/apijson_demo/dbinit.py‎

Copy file name to clipboardExpand all lines: demo/apps/apijson_demo/dbinit.py
+12Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,11 @@
7575
"date" : "2018-11-6",
7676
"content" : "test moment from c",
7777
},
78+
{
79+
"username" : "admin",
80+
"date" : "2018-11-7",
81+
"content" : "test moment from admin",
82+
},
7883
]
7984

8085
comment_list = [
@@ -99,6 +104,13 @@
99104
"date" : "2018-12-9",
100105
"content" : "comment hoho",
101106
},
107+
{
108+
"username" : "admin",
109+
"to_username" : "usera",
110+
"moment_id" : 4,
111+
"date" : "2018-12-10",
112+
"content" : "comment kaka",
113+
},
102114
]
103115

104116
for d in user_list:
Collapse file

‎demo/apps/settings.ini‎

Copy file name to clipboardExpand all lines: demo/apps/settings.ini
+1Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ INSTALLED_APPS = [
1717
'uliweb_comui',
1818
'uliweb_comapps.auth.login',
1919
'uliweb_comapps.auth.user_admin',
20+
'uliweb_comapps.auth.rbac_admin',
2021
'uliweb_apijson.apijson',
2122
'apijson_demo',
2223
'tables',
Collapse file

‎demo/apps/tables/config.ini‎

Copy file name to clipboard
+4Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
[DEPENDS]
2+
REQUIRED_APPS = [
3+
'uliweb_apijson.tables',
4+
]
Collapse file

‎demo/apps/tables/settings.ini‎

Copy file name to clipboardExpand all lines: demo/apps/tables/settings.ini
+7-4Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
[APIJSON_TABLES]
2-
user = {
3-
"editable" : "auto",
4-
}
2+
user = {"model_name":"user", "tableui_name":"users"}
3+
role = {"model_name":"role", "tableui_name":"roles", "role":"ADMIN"}
4+
permission = {"model_name":"permission", "tableui_name":"permissions", "role":"ADMIN"}
5+
moment = {"role":"OWNER"}
6+
comment = {"role":"OWNER"}
7+
8+
[APIJSON_TABLE_UI]
59
moment = {
610
"editable" : "auto",
711
"table_fields" : [
@@ -20,7 +24,6 @@ moment = {
2024
{"title":"Content","key":"content","type":"textarea"},
2125
],
2226
}
23-
2427
comment = {
2528
"editable" : "auto",
2629
"table_fields" : [
Collapse file

‎demo/apps/tables/templates/Tables/list.html‎

Copy file name to clipboardExpand all lines: demo/apps/tables/templates/Tables/list.html
-37Lines changed: 0 additions & 37 deletions
This file was deleted.
Collapse file

‎demo/apps/tables/views.py‎

Copy file name to clipboardExpand all lines: demo/apps/tables/views.py
-21Lines changed: 0 additions & 21 deletions
This file was deleted.
Collapse file

‎uliweb_apijson/__init__.py‎

Copy file name to clipboard
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
__version__ = '0.2.2'
1+
__version__ = '0.3.0'
22
__url__ = 'https://github.com/zhangchunlin/uliweb-apijson'
33
__author__ = 'Chunlin Zhang'
44
__email__ = 'zhangchunlin@gmail.com'
Collapse file

‎uliweb_apijson/apijson/__init__.py‎

Copy file name to clipboardExpand all lines: uliweb_apijson/apijson/__init__.py
+61-42Lines changed: 61 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -2,57 +2,76 @@
22

33
from uliweb import settings, models, request, functions, UliwebError
44
from uliweb.orm import ModelNotFound
5+
from json import dumps as json_dumps
56
import logging
67

78
log = logging.getLogger('apijson')
89

9-
def get_apijson_tables(role="UNKNOWN"):
10-
from uliweb import settings
1110

12-
s = settings.APIJSON_TABLES
13-
if s:
14-
apijson_tables = dict(s.iteritems())
15-
else:
16-
return {}
17-
for n in apijson_tables:
18-
c = apijson_tables[n]
19-
editable = c.get("editable",False)
20-
_model_name = c.get("@model_name") or n
21-
if editable=="auto":
11+
class ApijsonTable(object):
12+
def __init__(self, model_name, request_tag=None, role=None, tableui_name=None, table_name=None):
13+
self.model_name = model_name
14+
self.request_tag = request_tag or self.model_name
15+
self.role = role
16+
self.tableui_name = tableui_name or self.model_name
17+
self.table_name = table_name
18+
self._get_tableui()
19+
self._apply_auto()
20+
21+
def _get_tableui(self):
22+
self.tableui = settings.APIJSON_TABLE_UI.get(self.tableui_name, {})
23+
if not self.tableui:
24+
log.warn("cannot find setting for {} in settings.APIJSON_TABLE_UI".format(self.tableui_name))
25+
26+
def _apply_auto(self):
27+
editable = self.tableui.get("editable", False)
28+
if editable == "auto":
2229
editable = False
23-
POST = settings.APIJSON_MODELS.get(_model_name,{}).get("POST")
30+
POST = settings.APIJSON_MODELS.get(self.model_name, {}).get("POST")
2431
if POST:
2532
roles = POST["roles"]
2633
if roles:
27-
editable = role in roles
28-
c["editable"] = editable
29-
return apijson_tables
30-
31-
def get_apijson_table(role="UNKNOWN",name=None):
32-
from uliweb import settings
33-
34-
if not name:
35-
return {}
36-
s = settings.APIJSON_TABLES
37-
if s:
38-
apijson_tables = dict(s.iteritems())
39-
else:
40-
return {}
41-
42-
c = apijson_tables.get(name)
43-
if not c:
44-
return {}
45-
editable = c.get("editable",False)
46-
_model_name = c.get("@model_name") or n
47-
if editable=="auto":
48-
editable = False
49-
POST = settings.APIJSON_MODELS.get(_model_name,{}).get("POST")
50-
if POST:
51-
roles = POST["roles"]
52-
if roles:
53-
editable = role in roles
54-
c["editable"] = editable
55-
return c
34+
editable = self.role in roles
35+
self.tableui["editable"] = editable
36+
37+
def to_dict(self):
38+
return dict(model_name=self.model_name,
39+
request_tag=self.request_tag,
40+
role=self.role,
41+
tableui_name=self.tableui_name,
42+
table_name=self.table_name,
43+
tableui=self.tableui)
44+
45+
46+
def get_apijson_tables():
47+
def iter_table():
48+
s = settings.APIJSON_TABLES
49+
apijson_tables = dict(s.iteritems()) if s else {}
50+
if apijson_tables:
51+
for k in apijson_tables:
52+
v = apijson_tables[k]
53+
model_name = v.get("model_name") or k
54+
tableui_name = v.get("tableui_name") or model_name
55+
if not model_name:
56+
model_name = tableui_name
57+
if model_name and tableui_name:
58+
request_tag = v.get("request_tag")
59+
role = v.get("role")
60+
yield(ApijsonTable(model_name=model_name, request_tag=request_tag, role=role, tableui_name=tableui_name, table_name=k))
61+
else:
62+
apison_table_ui = dict(
63+
settings.APIJSON_TABLE_UI.iteritems())
64+
for tableui_name in apison_table_ui:
65+
tableui = apison_table_ui[tableui_name]
66+
model_name = tableui.get("@model_name") or tableui_name
67+
request_tag = model_name
68+
role = None
69+
yield(ApijsonTable(model_name=model_name, request_tag=request_tag, role=role, tableui_name=tableui_name))
70+
return list(iter_table())
71+
72+
73+
def get_apijson_table(*args, **kwargs):
74+
return ApijsonTable(*args, **kwargs)
5675

5776
class ApiJsonModelQuery(object):
5877
def __init__(self,name,params,parent,key):

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.