集团内共享题库
This commit is contained in:
parent
a5b9773594
commit
d59f5c7b3e
|
@ -2,7 +2,7 @@ from django.contrib import admin
|
||||||
from . import models
|
from . import models
|
||||||
from safesite import models as s_models
|
from safesite import models as s_models
|
||||||
# Register your models here.
|
# Register your models here.
|
||||||
admin.site.register(models.GroupUser)
|
# admin.site.register(models.GroupUser)
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.Group)
|
@admin.register(models.Group)
|
||||||
|
@ -18,4 +18,9 @@ class GroupmemberAdmin(admin.ModelAdmin):
|
||||||
def formfield_for_foreignkey(self, db_field, request, **kwargs):
|
def formfield_for_foreignkey(self, db_field, request, **kwargs):
|
||||||
if db_field.name == "member":
|
if db_field.name == "member":
|
||||||
kwargs["queryset"] = s_models.Partment.objects.filter(iscompany=1,deletemark=1)
|
kwargs["queryset"] = s_models.Partment.objects.filter(iscompany=1,deletemark=1)
|
||||||
return super().formfield_for_foreignkey(db_field, request, **kwargs)
|
return super().formfield_for_foreignkey(db_field, request, **kwargs)
|
||||||
|
|
||||||
|
@admin.register(models.GroupUser)
|
||||||
|
class GroupuserAdmin(admin.ModelAdmin):
|
||||||
|
list_display=['username','group']
|
||||||
|
exclude = ('user',)
|
|
@ -25,6 +25,10 @@ class Groupmember(models.Model):
|
||||||
group = models.ForeignKey(Group,on_delete=models.CASCADE, related_name='groupmember_group')
|
group = models.ForeignKey(Group,on_delete=models.CASCADE, related_name='groupmember_group')
|
||||||
member = models.ForeignKey(s_models.Partment,on_delete=models.CASCADE, related_name='groupmember_member')
|
member = models.ForeignKey(s_models.Partment,on_delete=models.CASCADE, related_name='groupmember_member')
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
verbose_name="集团-管理员"
|
||||||
|
verbose_name_plural="集团-管理员"
|
||||||
|
|
||||||
class GroupUser(models.Model):
|
class GroupUser(models.Model):
|
||||||
username = models.CharField(max_length=128, unique=True)
|
username = models.CharField(max_length=128, unique=True)
|
||||||
password = models.CharField(max_length=256)
|
password = models.CharField(max_length=256)
|
||||||
|
@ -32,3 +36,7 @@ class GroupUser(models.Model):
|
||||||
issuper = models.IntegerField(default=0)
|
issuper = models.IntegerField(default=0)
|
||||||
group = models.ForeignKey(Group,on_delete=models.CASCADE)
|
group = models.ForeignKey(Group,on_delete=models.CASCADE)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
verbose_name="管理员"
|
||||||
|
verbose_name_plural="管理员"
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<ul id="mrfltree" data-options="animate:true,toolbar:'#mrflbar'"></ul>
|
<ul id="mrfltree" data-options="animate:true,toolbar:'#mrflbar'"></ul>
|
||||||
</div>
|
</div>
|
||||||
<!-- <div id="gwfl" height="30%"></div> -->
|
<!-- <div id="gwfl" height="30%"></div> -->
|
||||||
<div id="zjfl" height="40%" title="自建分类">
|
<div id="zjfl" height="30%" title="自建分类">
|
||||||
<div id="zjflbar" style="padding:5px;height:auto">
|
<div id="zjflbar" style="padding:5px;height:auto">
|
||||||
|
|
||||||
{% load myfilter %}
|
{% load myfilter %}
|
||||||
|
@ -25,7 +25,7 @@
|
||||||
</div>
|
</div>
|
||||||
<ul id="zjfltree" data-options="animate:true,toolbar:'#zjflbar'"></ul>
|
<ul id="zjfltree" data-options="animate:true,toolbar:'#zjflbar'"></ul>
|
||||||
</div>
|
</div>
|
||||||
<div id="gxfl" height="30%" title="集团共享分类" class="easyui-panel">
|
<div id="gxfl" height="40%" title="集团共享分类" class="easyui-panel">
|
||||||
<ul id="gxfltree" data-options="animate:true"></ul>
|
<ul id="gxfltree" data-options="animate:true"></ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -126,9 +126,8 @@
|
||||||
return s;
|
return s;
|
||||||
},
|
},
|
||||||
onSelect: function (row) {
|
onSelect: function (row) {
|
||||||
$("#tmtable").datagrid({
|
$('#tmtable').datagrid('options').queryParams.tmlx = row.id
|
||||||
url: 'api/question?a=listall&tmlx=' + row.id,
|
$("#tmtable").datagrid('reload');
|
||||||
});
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
$('#zjfl').panel()
|
$('#zjfl').panel()
|
||||||
|
@ -147,16 +146,15 @@
|
||||||
return s;
|
return s;
|
||||||
},
|
},
|
||||||
onSelect: function (row) {
|
onSelect: function (row) {
|
||||||
$("#tmtable").datagrid({
|
$('#tmtable').datagrid('options').queryParams.tmlx = row.id
|
||||||
url: 'api/question?a=listall&tmlx=' + row.id,
|
$("#tmtable").datagrid('reload');
|
||||||
});
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
$('#gxfltree').tree({
|
$('#gxfltree').tree({
|
||||||
url: 'api/questioncat?a=tree3',
|
url: 'api/questioncat?a=tree3',
|
||||||
animate: true,
|
animate: true,
|
||||||
loadFilter: function (rows) {
|
loadFilter: function (rows) {
|
||||||
return convert(rows);
|
return convert(rows, 'closed');
|
||||||
},
|
},
|
||||||
formatter: function (node) {
|
formatter: function (node) {
|
||||||
var s = node.text;
|
var s = node.text;
|
||||||
|
@ -166,9 +164,8 @@
|
||||||
return s;
|
return s;
|
||||||
},
|
},
|
||||||
onSelect: function (row) {
|
onSelect: function (row) {
|
||||||
$("#tmtable").datagrid({
|
$('#tmtable').datagrid('options').queryParams.tmlx = row.id
|
||||||
url: 'api/question?a=listall&tmlx=' + row.id,
|
$("#tmtable").datagrid('reload');
|
||||||
});
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
$('#gwfl').datagrid({
|
$('#gwfl').datagrid({
|
||||||
|
@ -186,6 +183,7 @@
|
||||||
{ field: 'grouptype', title: '类型', hidden:true,width: 100 },
|
{ field: 'grouptype', title: '类型', hidden:true,width: 100 },
|
||||||
]],
|
]],
|
||||||
onClickRow: function (index, row) {
|
onClickRow: function (index, row) {
|
||||||
|
|
||||||
$("#tmtable").datagrid({
|
$("#tmtable").datagrid({
|
||||||
url: 'api/question?a=listall&gwlx=' + row.groupid,
|
url: 'api/question?a=listall&gwlx=' + row.groupid,
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,12 +1,15 @@
|
||||||
<div class="easyui-layout" style="width:100%;height:100%;">
|
<div class="easyui-layout" style="width:100%;height:100%;">
|
||||||
<div data-options="region:'west',split:true,border:false" style="width:220px;height:100%;">
|
<div data-options="region:'west',split:true,border:false" style="width:220px;height:100%;">
|
||||||
<div id="mrfl" height="50%" title="默认分类">
|
<div id="mrfl" height="30%" title="默认分类">
|
||||||
<ul id="mrfltree" data-options="animate:true"></ul>
|
<ul id="mrfltree" data-options="animate:true"></ul>
|
||||||
</div>
|
</div>
|
||||||
<!-- <div id="gwfl" height="30%"></div> -->
|
<!-- <div id="gwfl" height="30%"></div> -->
|
||||||
<div id="zjfl" height="50%" title="自建分类">
|
<div id="zjfl" height="30%" title="自建分类">
|
||||||
<ul id="zjfltree" data-options="animate:true"></ul>
|
<ul id="zjfltree" data-options="animate:true"></ul>
|
||||||
</div>
|
</div>
|
||||||
|
<div id="gxfl" height="40%" title="集团共享分类" class="easyui-panel">
|
||||||
|
<ul id="gxfltree" data-options="animate:true"></ul>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div data-options="region:'center',title:'题目',split:true,border:false" style="height:100%;">
|
<div data-options="region:'center',title:'题目',split:true,border:false" style="height:100%;">
|
||||||
|
|
||||||
|
@ -55,14 +58,16 @@
|
||||||
return s;
|
return s;
|
||||||
},
|
},
|
||||||
onSelect: function (row) {
|
onSelect: function (row) {
|
||||||
$("#tmtable").datagrid({
|
$('#tmtable').datagrid('options').queryParams.tmlx = row.id
|
||||||
url: 'api/question?a=listall&tmlx=' + row.id,
|
$("#tmtable").datagrid('reload');
|
||||||
});
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
function reset() {
|
function reset() {
|
||||||
$('#searchtmff').form('clear')
|
$('#searchtmff').form('clear')
|
||||||
$('#tmtable').datagrid('reload', {'tmlx':''})
|
$('#tmtable').datagrid('options').queryParams = {
|
||||||
|
a:'listall'
|
||||||
|
}
|
||||||
|
$('#tmtable').datagrid('reload');
|
||||||
}
|
}
|
||||||
$('#zjfltree').tree({
|
$('#zjfltree').tree({
|
||||||
url: 'api/questioncat?a=tree2',
|
url: 'api/questioncat?a=tree2',
|
||||||
|
@ -79,11 +84,28 @@
|
||||||
return s;
|
return s;
|
||||||
},
|
},
|
||||||
onSelect: function (row) {
|
onSelect: function (row) {
|
||||||
$("#tmtable").datagrid({
|
$('#tmtable').datagrid('options').queryParams.tmlx = row.id
|
||||||
url: 'api/question?a=listall&tmlx=' + row.id,
|
$("#tmtable").datagrid('reload');
|
||||||
});
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
$('#gxfltree').tree({
|
||||||
|
url: 'api/questioncat?a=tree3',
|
||||||
|
animate: true,
|
||||||
|
loadFilter: function (rows) {
|
||||||
|
return convert(rows, 'closed');
|
||||||
|
},
|
||||||
|
formatter: function (node) {
|
||||||
|
var s = node.text;
|
||||||
|
if (node.children) {
|
||||||
|
s += ' <span style=\'color:blue\'>(' + node.children.length + ')</span>';
|
||||||
|
}
|
||||||
|
return s;
|
||||||
|
},
|
||||||
|
onSelect: function (row) {
|
||||||
|
$('#tmtable').datagrid('options').queryParams.tmlx = row.id
|
||||||
|
$("#tmtable").datagrid('reload');
|
||||||
|
}
|
||||||
|
});
|
||||||
// $('#gwfl').datagrid({
|
// $('#gwfl').datagrid({
|
||||||
// url: 'grouphandle?a=list',
|
// url: 'grouphandle?a=list',
|
||||||
// rownumbers: true,
|
// rownumbers: true,
|
||||||
|
|
|
@ -5754,7 +5754,10 @@ def apiquestion(req):
|
||||||
if a == 'listall':
|
if a == 'listall':
|
||||||
objs = Question.objects.filter(deletemark=1)
|
objs = Question.objects.filter(deletemark=1)
|
||||||
if not req.GET.get('all', None):
|
if not req.GET.get('all', None):
|
||||||
objs = objs.exclude(nousecomps__contains=','+companyid+',').filter(Q(usecomps__contains=',1,') | Q(usecomps__contains=','+companyid+','))
|
if req.GET.get('tmlx', None):
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
objs = objs.exclude(nousecomps__contains=','+companyid+',').filter(Q(usecomps__contains=',1,') | Q(usecomps__contains=','+companyid+','))
|
||||||
else:
|
else:
|
||||||
objs = objs.filter(parent__isnull=True)
|
objs = objs.filter(parent__isnull=True)
|
||||||
if req.GET.get('type', None):
|
if req.GET.get('type', None):
|
||||||
|
@ -6537,9 +6540,9 @@ def apiquestioncat(req):
|
||||||
companys = g_models.Groupmember.objects.filter(group__id__in=groups).values_list('member__partid', flat=True).distinct()
|
companys = g_models.Groupmember.objects.filter(group__id__in=groups).values_list('member__partid', flat=True).distinct()
|
||||||
list_items = []
|
list_items = []
|
||||||
for i in companys:
|
for i in companys:
|
||||||
list_item = (Questioncat.objects.filter(usecomp__partid=i, deletemark=1)).annotate(
|
list_item = (Questioncat.objects.filter(usecomp=i, deletemark=1)).annotate(
|
||||||
parentId=F('parent__id')).values('id', 'parentId', 'name')
|
parentId=F('parent__id')).values('id', 'parentId', 'name')
|
||||||
list_items.append(list_item)
|
list_items.extend(list_item)
|
||||||
return HttpResponse(json.dumps(list(list_items)), content_type="application/json")
|
return HttpResponse(json.dumps(list(list_items)), content_type="application/json")
|
||||||
elif a == 'tree':
|
elif a == 'tree':
|
||||||
list_items = (Questioncat.objects.filter(usecomp__partid=1, deletemark=1) | Questioncat.objects.filter(
|
list_items = (Questioncat.objects.filter(usecomp__partid=1, deletemark=1) | Questioncat.objects.filter(
|
||||||
|
|
Loading…
Reference in New Issue