Skip to content

Commit a057ca0

Browse files
authored
Merge pull request #17 from zhangchunlin/master
同步
2 parents ec95f17 + add1e5b commit a057ca0

3 files changed

Lines changed: 50 additions & 15 deletions

File tree

uliweb_apijson/apijson/__init__.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,19 @@
22

33
def get_apijson_tables(role="UNKNOWN"):
44
from uliweb import settings
5-
apijson_tables = dict(settings.APIJSON_TABLES.iteritems())
5+
6+
s = settings.APIJSON_TABLES
7+
if s:
8+
apijson_tables = dict(s.iteritems())
9+
else:
10+
return {}
611
for n in apijson_tables:
712
c = apijson_tables[n]
813
editable = c["editable"]
14+
_model_name = c.get("@model_name") or n
915
if editable=="auto":
1016
editable = False
11-
POST = settings.APIJSON_MODELS[n]["POST"]
17+
POST = settings.APIJSON_MODELS[_model_name]["POST"]
1218
if POST:
1319
roles = POST["roles"]
1420
if roles:

uliweb_apijson/apijson/templates/vue/inc_apijson_table.html

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,21 @@
11
<script>
22
Vue.component('apijson-table', {
33
delimiters: ['{', '}'],
4-
props: ["table_name","config"],
4+
props: ["table_name","config","func_init","func_change_params"],
55
template: `<div>
66
<div v-if="config_editable && config_add_fields!=null"><i-button type="primary" @click="add">Add</i-button> <br><br> </div>
77
<i-table stripe border :columns="tcolumns" :data="tlist" @on-sort-change="table_on_sort_change"></i-table>
88
<page :total="total" :page-size="query_count" :current.sync="current_page" :page-size-opts="[10, 20, 50, 100]" show-sizer @on-change="page_on_change" @on-page-size-change="page_on_page_size_change"></page>
9-
<modal v-model="modal_add" title="Add" @on-ok="real_add">
9+
<modal v-model="modal_add" title="Add">
1010
<i-form @submit.native.prevent :label-width="80">
1111
<form-item v-for="item in add_items" :key="item.key" :label="item.title">
12+
<i-input v-if="item.type=='input'" v-model="item.value"></i-input>
13+
<checkbox v-if="item.type=='checkbox'" v-model="item.value"></checkbox>
1214
<i-input v-if="item.type=='textarea'" v-model="item.value" type="textarea" :autosize="{minRows: 2,maxRows: 5}"></i-input>
1315
</form-item>
16+
<form-item v-if="config_editable" label="action">
17+
<i-button type="info" icon="plus" @click="real_add">Add</i-button>
18+
</form-item>
1419
</i-form>
1520
</modal>
1621
<modal v-model="modal_view" :title="viewedit_label">
@@ -117,6 +122,9 @@
117122
"[]":arr_params,
118123
"total@":"/[]/total"
119124
}
125+
if (thisp.func_change_params!=null) {
126+
params = thisp.func_change_params("apijson_get",params)
127+
}
120128
$.ajax({
121129
type: "POST",
122130
url: "{{=url_for('uliweb_apijson.apijson.views.ApiJson.get')}}",
@@ -214,6 +222,9 @@
214222
}
215223
}
216224
params[thisp.table_name] = record_params
225+
if (thisp.func_change_params!=null) {
226+
params = thisp.func_change_params("apijson_put",params)
227+
}
217228
$.ajax({
218229
type: "POST",
219230
url: "{{=url_for('uliweb_apijson.apijson.views.ApiJson.put')}}",
@@ -225,6 +236,7 @@
225236
title: 'success update #'+row.id+' in table '+thisp.table_name,
226237
desc: data.msg
227238
})
239+
thisp.modal_view = false
228240
thisp.update_list()
229241
}
230242
else {
@@ -244,6 +256,9 @@
244256
params[thisp.table_name] = {
245257
"id": thisp.delete_params.row.id
246258
}
259+
if (thisp.func_change_params!=null) {
260+
params = thisp.func_change_params("apijson_delete",params)
261+
}
247262
$.ajax({
248263
type: "POST",
249264
url: "{{=url_for('uliweb_apijson.apijson.views.ApiJson.delete')}}",
@@ -291,7 +306,9 @@
291306
post_params[d.key] = d.value
292307
}
293308
params[this.table_name] = post_params
294-
309+
if (thisp.func_change_params!=null) {
310+
params = thisp.func_change_params("apijson_post",params)
311+
}
295312
$.ajax({
296313
type: "POST",
297314
url: "{{=url_for('uliweb_apijson.apijson.views.ApiJson.post')}}",
@@ -311,6 +328,7 @@
311328
desc: result.msg
312329
})
313330
thisp.update_list()
331+
thisp.modal_add = false
314332
}
315333
})
316334
},
@@ -336,6 +354,9 @@
336354
this.add_items = this.config_add_fields
337355
}
338356
}
357+
if (this.func_init!=null) {
358+
this.func_init(this)
359+
}
339360
this.update_list()
340361
}
341362
})

uliweb_apijson/apijson/views.py

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,10 @@ def _get_array(self,key):
195195
if not owner_filtered:
196196
return json({"code":400,"msg":"'%s' cannot filter with owner"%(modelname)})
197197

198+
for n in model_param:
199+
if n[0]!="@" and hasattr(model,n):
200+
q = q.filter(getattr(model.c,n)==model_param[n])
201+
198202
if query_type in [1,2]:
199203
self.vars["/%s/total"%(key)] = q.count()
200204

@@ -334,10 +338,11 @@ def _post_one(self,key,tag):
334338
return json({"code":400,"msg":"model '%s' not found"%(modelname)})
335339

336340
request_tag = settings.APIJSON_REQUESTS.get(tag,{})
337-
request_tag_tag = request_tag.get(tag,{})
338-
if not request_tag_tag:
341+
_model_name = request_tag.get("@model_name") or tag
342+
request_tag_config = request_tag.get(_model_name,{})
343+
if not request_tag_config:
339344
return json({"code":400,"msg":"tag '%s' not found"%(tag)})
340-
tag_POST = request_tag_tag.get("POST",{})
345+
tag_POST = request_tag_config.get("POST",{})
341346
ADD = tag_POST.get("ADD")
342347
if ADD:
343348
ADD_role = ADD.get("@role")
@@ -435,11 +440,13 @@ def _put_one(self,key,tag):
435440
log.error("try to find model '%s' but not found: '%s'"%(modelname,e))
436441
return json({"code":400,"msg":"model '%s' not found"%(modelname)})
437442

438-
request_tag = settings.APIJSON_REQUESTS.get(tag,{})
439-
request_tag_tag = request_tag.get(tag,{})
440-
if not request_tag_tag:
443+
APIJSON_REQUESTS = settings.APIJSON_REQUESTS or {}
444+
request_tag = APIJSON_REQUESTS.get(tag,{})
445+
_model_name = request_tag.get("@model_name") or tag
446+
request_tag_config = request_tag.get(_model_name,{})
447+
if not request_tag_config:
441448
return json({"code":400,"msg":"tag '%s' not found"%(tag)})
442-
tag_PUT = request_tag_tag.get("PUT",{})
449+
tag_PUT = request_tag_config.get("PUT",{})
443450
ADD = tag_PUT.get("ADD")
444451
if ADD:
445452
ADD_role = ADD.get("@role")
@@ -537,10 +544,11 @@ def _delete_one(self,key,tag):
537544
return json({"code":400,"msg":"model '%s' not found"%(modelname)})
538545

539546
request_tag = settings.APIJSON_REQUESTS.get(tag,{})
540-
request_tag_tag = request_tag.get(tag,{})
541-
if not request_tag_tag:
547+
_model_name = request_tag.get("@model_name") or tag
548+
request_tag_config = request_tag.get(_model_name,{})
549+
if not request_tag_config:
542550
return json({"code":400,"msg":"tag '%s' not found"%(tag)})
543-
tag_DELETE = request_tag_tag.get("DELETE",{})
551+
tag_DELETE = request_tag_config.get("DELETE",{})
544552
ADD = tag_DELETE.get("ADD")
545553
if ADD:
546554
ADD_role = ADD.get("@role")

0 commit comments

Comments
 (0)