集团内共享题库

This commit is contained in:
caoqianming 2020-10-29 21:11:53 +08:00
parent a5b9773594
commit d59f5c7b3e
5 changed files with 62 additions and 26 deletions

View File

@ -2,7 +2,7 @@ from django.contrib import admin
from . import models
from safesite import models as s_models
# Register your models here.
admin.site.register(models.GroupUser)
# admin.site.register(models.GroupUser)
@admin.register(models.Group)
@ -18,4 +18,9 @@ class GroupmemberAdmin(admin.ModelAdmin):
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == "member":
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',)

View File

@ -25,6 +25,10 @@ class Groupmember(models.Model):
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')
class Meta:
verbose_name="集团-管理员"
verbose_name_plural="集团-管理员"
class GroupUser(models.Model):
username = models.CharField(max_length=128, unique=True)
password = models.CharField(max_length=256)
@ -32,3 +36,7 @@ class GroupUser(models.Model):
issuper = models.IntegerField(default=0)
group = models.ForeignKey(Group,on_delete=models.CASCADE)
class Meta:
verbose_name="管理员"
verbose_name_plural="管理员"

View File

@ -4,7 +4,7 @@
<ul id="mrfltree" data-options="animate:true,toolbar:'#mrflbar'"></ul>
</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">
{% load myfilter %}
@ -25,7 +25,7 @@
</div>
<ul id="zjfltree" data-options="animate:true,toolbar:'#zjflbar'"></ul>
</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>
</div>
</div>
@ -126,9 +126,8 @@
return s;
},
onSelect: function (row) {
$("#tmtable").datagrid({
url: 'api/question?a=listall&tmlx=' + row.id,
});
$('#tmtable').datagrid('options').queryParams.tmlx = row.id
$("#tmtable").datagrid('reload');
}
});
$('#zjfl').panel()
@ -147,16 +146,15 @@
return s;
},
onSelect: function (row) {
$("#tmtable").datagrid({
url: 'api/question?a=listall&tmlx=' + row.id,
});
$('#tmtable').datagrid('options').queryParams.tmlx = row.id
$("#tmtable").datagrid('reload');
}
});
$('#gxfltree').tree({
url: 'api/questioncat?a=tree3',
animate: true,
loadFilter: function (rows) {
return convert(rows);
return convert(rows, 'closed');
},
formatter: function (node) {
var s = node.text;
@ -166,9 +164,8 @@
return s;
},
onSelect: function (row) {
$("#tmtable").datagrid({
url: 'api/question?a=listall&tmlx=' + row.id,
});
$('#tmtable').datagrid('options').queryParams.tmlx = row.id
$("#tmtable").datagrid('reload');
}
});
$('#gwfl').datagrid({
@ -186,6 +183,7 @@
{ field: 'grouptype', title: '类型', hidden:true,width: 100 },
]],
onClickRow: function (index, row) {
$("#tmtable").datagrid({
url: 'api/question?a=listall&gwlx=' + row.groupid,
});

View File

@ -1,12 +1,15 @@
<div class="easyui-layout" style="width:100%;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>
</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>
</div>
<div id="gxfl" height="40%" title="集团共享分类" class="easyui-panel">
<ul id="gxfltree" data-options="animate:true"></ul>
</div>
</div>
<div data-options="region:'center',title:'题目',split:true,border:false" style="height:100%;">
@ -55,14 +58,16 @@
return s;
},
onSelect: function (row) {
$("#tmtable").datagrid({
url: 'api/question?a=listall&tmlx=' + row.id,
});
$('#tmtable').datagrid('options').queryParams.tmlx = row.id
$("#tmtable").datagrid('reload');
}
});
function reset() {
$('#searchtmff').form('clear')
$('#tmtable').datagrid('reload', {'tmlx':''})
$('#tmtable').datagrid('options').queryParams = {
a:'listall'
}
$('#tmtable').datagrid('reload');
}
$('#zjfltree').tree({
url: 'api/questioncat?a=tree2',
@ -79,11 +84,28 @@
return s;
},
onSelect: function (row) {
$("#tmtable").datagrid({
url: 'api/question?a=listall&tmlx=' + row.id,
});
$('#tmtable').datagrid('options').queryParams.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 += '&nbsp;<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({
// url: 'grouphandle?a=list',
// rownumbers: true,

View File

@ -5754,7 +5754,10 @@ def apiquestion(req):
if a == 'listall':
objs = Question.objects.filter(deletemark=1)
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:
objs = objs.filter(parent__isnull=True)
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()
list_items = []
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')
list_items.append(list_item)
list_items.extend(list_item)
return HttpResponse(json.dumps(list(list_items)), content_type="application/json")
elif a == 'tree':
list_items = (Questioncat.objects.filter(usecomp__partid=1, deletemark=1) | Questioncat.objects.filter(