diff --git a/mysite/settings.py b/mysite/settings.py index 86f254cd..44417c50 100644 --- a/mysite/settings.py +++ b/mysite/settings.py @@ -93,7 +93,7 @@ DATABASES = { 'PASSWORD':'cTc1111Qa', 'HOST':'121.36.23.77', 'PORT':'5432', - 'CONN_MAX_AGE': 600, + 'CONN_MAX_AGE': 60, }, 'OPTIONS': { 'isolation_level': psycopg2.extensions.ISOLATION_LEVEL_SERIALIZABLE, diff --git a/ratedata.dat b/ratedata.dat new file mode 100644 index 00000000..57861e94 Binary files /dev/null and b/ratedata.dat differ diff --git a/safesite/edu/views.py b/safesite/edu/views.py index e4ba9299..92ada9ba 100644 --- a/safesite/edu/views.py +++ b/safesite/edu/views.py @@ -40,7 +40,7 @@ def edulessondetail(req,jyid): def upload(req): username = User.objects.get(userid=req.session['userid']).username file_name = time.strftime('%Y%m%d%H%M%S')+ '_' + req.FILES['mf'].name - user_upload_folder = os.path.join('media/video', username) + user_upload_folder = os.path.join('media/', username) if not os.path.exists(user_upload_folder): os.mkdir(user_upload_folder) filepath = os.path.join(user_upload_folder, file_name) @@ -59,7 +59,7 @@ def selectDate(req): a = a.filter(type=req.GET.get('type')) total = a.count() startnum,endnum=fenye(req) - a = a.order_by('-submittime')[startnum:endnum].values('id','num','title','user__name','desciption','submittime','type','cate__name','url','watchnum') + a = a.order_by('-submittime')[startnum:endnum].values('id','num','title','user__name','desciption','submittime','type','cate__name','url','downnum') return HttpResponse(transjson(total,a),content_type="application/json") def api(req): a = req.GET.get('a') @@ -68,53 +68,74 @@ def api(req): userid = req.session['userid'] companyid = getcompany(userid) startnum,endnum=fenye(req) - a = Edulesson.objects.filter(usecomp__partid__in= [1,Partment.objects.get(partid=companyid).partid] ,deletemark=1).order_by('id')#无deletemark + a = Edulesson.objects.filter(usecomp__partid__in= [1,Partment.objects.get(partid=companyid).partid] ,deletemark=1)#无deletemark + if req.GET.get('search',None): + search = req.GET.get('search') + a = a.filter(Q(title__contains=search)|Q(desciption__contains=search)) total = a.count() startnum,endnum=fenye(req) - a = a[startnum:endnum].values('id','num','title','user__name','desciption','submittime','type','cate__name','url','watchnum') + a = a.order_by('modifytime','downnum')[startnum:endnum].values('id','num','title','user__name','user__ubelongpart__partname','desciption','submittime','type','cate__name','url','downnum','modifytime') return HttpResponse(transjson(total,a),content_type="application/json") + elif a == 'detail': + id = req.GET.get('id') + obj = Edulesson.objects.filter(id=id).values('id','num','title','user__name','user__ubelongpart__partname','desciption','submittime','type','cate__name','url','downnum','modifytime') + return JsonResponse(list(obj)[0]) #视频 elif a=='add': - userid = req.session['userid']#用户ID - companyid = getcompany(userid)#公司ID - obj = Edulesson() - data = json.loads(req.body.decode('utf-8')) - obj.title = data['title'] - obj.num='ZXJY'+time.strftime('%Y%m%d%H%M%S') - obj.submittime=data['submittime'] - obj.desciption=data['desciption'] - obj.type=data['type'] - obj.deletemark=1 - obj.modifytime= datetime.now() - obj.url=data['url'] - obj.watchnum=0 - obj.cate= Questioncat.objects.get(id=data['cate']) - obj.usecomp=Partment.objects.get(partid=companyid) - obj.user=User.objects.get(userid=userid) - - obj.save() - return JsonResponse({"code":1}) + userid = req.session['userid']#用户ID + companyid = getcompany(userid)#公司ID + obj = Edulesson() + data = json.loads(req.body.decode('utf-8')) + obj.title = data['title'] + obj.num='XXZL'+time.strftime('%Y%m%d%H%M%S') + if 'submittime' in data and data['submittime']: + obj.submittime=data['submittime'] + else: + obj.submittime=datetime.now() + obj.desciption=data['desciption'] + obj.type=1 + obj.deletemark=1 + obj.url=data['url'] + obj.downnum=0 + obj.cate= Questioncat.objects.get(id=data['cate']) + obj.usecomp=Partment.objects.get(partid=companyid) + obj.user=User.objects.get(userid=userid) + obj.save() + return JsonResponse({"code":1}) #文件 elif a=='addwj': - userid = req.session['userid']#用户ID - companyid = getcompany(userid)#公司ID - obj = Edulesson() - data = json.loads(req.body.decode('utf-8')) - obj.title = data['title'] - obj.num='ZXJY'+time.strftime('%Y%m%d%H%M%S') - obj.submittime=data['submittime'] - obj.desciption=data['desciption'] - obj.type=1 - obj.deletemark=1 - obj.modifytime= datetime.now() - obj.url=data['url'] - obj.watchnum=0 - obj.cate= Questioncat.objects.get(id=data['cate']) - obj.usecomp=Partment.objects.get(partid=companyid) - obj.user=User.objects.get(userid=userid) - - obj.save() - return JsonResponse({"code":1}) + userid = req.session['userid']#用户ID + companyid = getcompany(userid)#公司ID + obj = Edulesson() + data = json.loads(req.body.decode('utf-8')) + obj.title = data['title'] + obj.num='ZXJY'+time.strftime('%Y%m%d%H%M%S') + if 'submittime' in data and data['submittime']: + obj.submittime=data['submittime'] + else: + obj.submittime=datetime.now() + obj.desciption=data['desciption'] + obj.deletemark=1 + obj.url=data['url'] + fileurl = data['url'] + if fileurl.endswith('.doc') or fileurl.endswith('.docx'): + obj.type = 2 + elif fileurl.endswith('.ppt') or fileurl.endswith('.pptx'): + obj.type = 3 + elif fileurl.endswith('.pdf'): + obj.type = 4 + elif fileurl.endswith('.xls') or fileurl.endswith('.xlsx'): + obj.type = 5 + elif fileurl.endswith('.zip') or fileurl.endswith('.rar'): + obj.type = 6 + else: + obj.type = 7 #其他 + obj.downnum=0 + obj.cate= Questioncat.objects.get(id=data['cate']) + obj.usecomp=Partment.objects.get(partid=companyid) + obj.user=User.objects.get(userid=userid) + obj.save() + return JsonResponse({"code":1}) #删除 elif a == 'del': id =req.GET.get('id') @@ -125,17 +146,14 @@ def api(req): a.deletemark=0 a.save() return JsonResponse({"code":1}) - else: - return JsonResponse({"code":0}) - - #点击阅读 - elif a=='readnumber': + #点击下载 + elif a=='downfile': id =req.GET.get('id') userid = req.session['userid'] a = Edulesson.objects.get(id=id) - a.watchnum=a.watchnum+1 + a.downnum=a.downnum+1 a.save() obj = EdulessonWatch() obj.edulesson=a @@ -143,7 +161,6 @@ def api(req): obj.save() return JsonResponse({"code":1,"url": a.url}) #观看详情 - elif a=='detail': id=req.GET.get('zrid') a = EdulessonWatch.objects.filter(edulesson=id).values('id','user__name','submittime') diff --git a/safesite/migrations/0317_auto_20200212_2135.py b/safesite/migrations/0317_auto_20200212_2135.py new file mode 100644 index 00000000..d61898fa --- /dev/null +++ b/safesite/migrations/0317_auto_20200212_2135.py @@ -0,0 +1,48 @@ +# Generated by Django 2.2.8 on 2020-02-12 21:35 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('safesite', '0316_auto_20200115_1653'), + ] + + operations = [ + # migrations.RemoveField( + # model_name='companyinfo', + # name='liaison_fax', + # ), + migrations.AddField( + model_name='notice', + name='like', + field=models.IntegerField(default=0), + ), + migrations.AddField( + model_name='notice', + name='poster', + field=models.CharField(blank=True, max_length=200, null=True, verbose_name='封面图'), + ), + migrations.AddField( + model_name='notice', + name='supply_part', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tgbm', to='safesite.Partment', verbose_name='资料提供部门'), + ), + migrations.AddField( + model_name='noticeto', + name='islike', + field=models.IntegerField(default=0), + ), + migrations.AlterField( + model_name='notice', + name='reads', + field=models.IntegerField(default=0), + ), + migrations.AlterField( + model_name='noticeto', + name='read', + field=models.IntegerField(default=0), + ), + ] diff --git a/safesite/migrations/0318_auto_20200214_1427.py b/safesite/migrations/0318_auto_20200214_1427.py new file mode 100644 index 00000000..bbbaee4c --- /dev/null +++ b/safesite/migrations/0318_auto_20200214_1427.py @@ -0,0 +1,22 @@ +# Generated by Django 2.2.8 on 2020-02-14 14:27 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('safesite', '0317_auto_20200212_2135'), + ] + + operations = [ + migrations.RenameField( + model_name='edulesson', + old_name='watchnum', + new_name='downnum', + ), + # migrations.RemoveField( + # model_name='companyinfo', + # name='liaison_fax', + # ), + ] diff --git a/safesite/models.py b/safesite/models.py index e26dd0f3..6fdebec6 100644 --- a/safesite/models.py +++ b/safesite/models.py @@ -551,7 +551,7 @@ class Suggestflow(models.Model): # 建议流程 submittime = models.DateTimeField(default=timezone.now) -class Notice(models.Model): # 通知通告 +class Notice(models.Model): # 资料/公告/通知 id = models.AutoField(primary_key=True) title = models.CharField(u'标题', max_length=100) pubpart = models.ForeignKey( @@ -565,9 +565,13 @@ class Notice(models.Model): # 通知通告 User, related_name='tzry', through='Noticeto') material = models.CharField(max_length=1000, null=True, blank=True) deletemark = models.IntegerField(default='1') - reads = models.IntegerField(default='0') - isgg = models.IntegerField(default='1') + reads = models.IntegerField(default=0) + isgg = models.IntegerField(default='1') #1是公告,0是通知,2是资料文件 usecomps = models.CharField(max_length=1000, null=True, blank=True) # 使用公司 + like = models.IntegerField(default=0) + poster = models.CharField(max_length=200, null=True, blank=True, verbose_name='封面图') + supply_part = models.ForeignKey( + Partment, related_name='tgbm', on_delete=models.CASCADE, verbose_name="资料提供部门",null=True,blank=True) # def __str__(self): # return self.title # class Meta: @@ -579,7 +583,8 @@ class Noticeto(models.Model): # 通知阅读表 noticeid = models.ForeignKey(Notice, on_delete=models.CASCADE) receiver = models.ForeignKey(User, on_delete=models.CASCADE) # 接收人 comment = models.CharField(max_length=500) - read = models.IntegerField(default='0') + read = models.IntegerField(default=0) + islike = models.IntegerField(default=0) class Operation(models.Model): # 作业表 @@ -737,7 +742,7 @@ class ExamTest(models.Model): # 考试表 num = models.CharField(max_length=200, default='') # 编号 name = models.CharField(max_length=200, default='') type = models.IntegerField(default=1) # 正式考试/模拟考试/练习 - state = models.IntegerField(default=1) # 1进行中 + state = models.IntegerField(default=1) # 1进行中 0是已关闭 exampaper = models.ForeignKey(ExamPaper, on_delete=models.CASCADE) user = models.ManyToManyField(User, through='ExamTestDetail') # 考试人员 starttime = models.DateTimeField(null=True, blank=True) # 最早参加 @@ -983,7 +988,7 @@ class Risk(models.Model): # 风险表 tasktime = models.DateTimeField(null=True, blank=True) # 最后任务开始时间 -class Edulesson(models.Model): # 在线视频表 +class Edulesson(models.Model): # 学习资料表 id = models.AutoField(primary_key=True) num = models.CharField(max_length=50) title = models.CharField(max_length=50) @@ -997,13 +1002,12 @@ class Edulesson(models.Model): # 在线视频表 deletemark = models.IntegerField(default=1) modifytime = models.DateTimeField(auto_now=True) url = models.CharField(max_length=200, null=True, blank=True) - watchnum = models.IntegerField(default=0) + downnum = models.IntegerField(default=0) # 下载量 usecomp = models.ForeignKey( Partment, on_delete=models.CASCADE, null=True, blank=True) watchrecord = models.ManyToManyField( User, related_name='gkr', through='EdulessonWatch') - class EdulessonWatch(models.Model): # 在线视频观看情况表 id = models.AutoField(primary_key=True) edulesson = models.ForeignKey(Edulesson, on_delete=models.CASCADE) @@ -1207,3 +1211,6 @@ class ReaderOperproce(models.Model): num = models.CharField(max_length=50) readeruser = models.ForeignKey(User,on_delete=models.CASCADE) readertime = models.DateTimeField(default = timezone.now) + + + diff --git a/safesite/templates/edulessonadd.html b/safesite/templates/edulessonadd.html index 0fc8cd81..a7682e26 100644 --- a/safesite/templates/edulessonadd.html +++ b/safesite/templates/edulessonadd.html @@ -103,13 +103,13 @@ -
- 选择文件 + 选择文件 @@ -192,7 +190,7 @@ $.ajax({ type: "POST", - url: 'edu/api?a=add', + url: 'edu/api?a=addwj', data: JSON.stringify(edudata), datatype: "json", processData: false, @@ -233,7 +231,7 @@ }; - var filetypes = [".xls",".txt",".ppt",".doc",".pdf",".dot"]; + var filetypes = [".xls",".txt",".ppt",".doc",".pdf",".dot",".rar",".zip",".docx", ".pptx", ".xlsx"]; var filepath = target.value; if (filepath) { var isnext = false; @@ -258,8 +256,8 @@ var imagSize = fileObj.size; - if (imagSize > 1024 * 1024 * 3) { - alert("文件大小为:" + (imagSize / (1024 * 1024)).toFixed(2) + "M,超出了上传大小," + "请选择3M以内的文件!"); + if (imagSize > 1024 * 1024 * 10) { + alert("文件大小为:" + (imagSize / (1024 * 1024)).toFixed(2) + "M,超出了上传大小," + "请选择10M以内的文件!"); $("#videoName").text('文件太大了超出范围!'); return false; } diff --git a/safesite/templates/edulessonindex.html b/safesite/templates/edulessonindex.html index 0ee05fd9..0e603f14 100644 --- a/safesite/templates/edulessonindex.html +++ b/safesite/templates/edulessonindex.html @@ -5,10 +5,11 @@ @@ -24,11 +25,11 @@ 删除文件 {% endif %} {% if request|has_permission:'b_edu_study' %} - 点击学习 + 下载/查看 {% endif %} - {% if request|has_permission:'b_edu_detail' %} + @@ -46,7 +47,7 @@ var row = $('#edutab').datagrid('getSelected'); $.ajax({ type: "get", - url: "edu/api?a=readnumber", + url: "edu/api?a=downfile", data: { 'id': row.id }, dateType: "json", success: function (data) { @@ -93,9 +94,9 @@ { field: 'desciption', title: '简要描述', width: 300 }, { field: 'submittime', title: '上传时间', width: 300 }, { - field: 'type', title: '资料分类', width: '10%', formatter: function (value, row, index) { + field: 'type', title: '资源类型', width: '10%', formatter: function (value, row, index) { if (value == 1) { - return '视频'; + return 'mp4视频'; } else if (value == 2) { return 'word文档' @@ -106,6 +107,9 @@ else if (value == 4) { return 'pdf文档' } + else if (value == 5) { + return 'excel文档' + } } }, { field: 'cate__name', title: '所属类别', width: 200 }, @@ -115,7 +119,7 @@ return '点击学习'; } }, - { field: 'watchnum', title: '观看次数', width: 200 }, + { field: 'downnum', title: '下载量', width: 200 }, ]] }); diff --git a/safesite/templates/examtestadd.html b/safesite/templates/examtestadd.html index 1adfe4a0..ff11fd55 100644 --- a/safesite/templates/examtestadd.html +++ b/safesite/templates/examtestadd.html @@ -37,7 +37,7 @@