1 # student_views.py
2 # ————————60PerfectCRM实现CRM学生上课记录————————
3 from django.shortcuts import render #页面返回
4 from crm import models #数据库
5 from django.contrib.auth.decorators import login_required # 登陆后页面才能访问
6
7 # ————————69PerfectCRM实现CRM业务流程(bpm)学生讲师分页————————
8 from bpm.bpm_auxiliary.pagination import Page #分页
9 # ————————69PerfectCRM实现CRM业务流程(bpm)学生讲师分页————————
10
11 #学生报名的课程
12 @login_required # 登陆后页面才能访问
13 def student_course(request):
14 enrollmentlist=request.user.stu_account.enrollment_set.all()#根据账号表关联的ID获取06学员报名信息表
15
16 # ————————69PerfectCRM实现CRM业务流程(bpm)学生讲师分页————————
17 page = Page(request.GET.get('p', 1), len(enrollmentlist)) #当前页数 默认为1 #总数量
18 enrollmentlist = enrollmentlist[page.start:page.end] # 切片取当前页的数据
19 page_str = page.page_str('/bpm/student_course/') #总页数 传入url
20 # ————————69PerfectCRM实现CRM业务流程(bpm)学生讲师分页————————
21
22 return render(request, 'bpm_student/student_course.html', locals())
23
24 #学生上课记录列表
25 @login_required # 登陆后页面才能访问
26 def studyrecords(request,enroll_obj_id):
27 enroll_obj=models.Enrollment.objects.get(id=enroll_obj_id)#根据ID获取06学员报名信息表
28 studyrecordlist=enroll_obj.studyrecord_set.all()#根据06学员报名信息表的ID获取09学习纪录
29
30 # ————————69PerfectCRM实现CRM业务流程(bpm)学生讲师分页————————
31 page = Page(request.GET.get('p', 1), len(studyrecordlist)) #当前页数 默认为1 #总数量
32 studyrecordlist = studyrecordlist[page.start:page.end] # 切片取当前页的数据
33 page_str = page.page_str('/bpm/studyrecords/%s/'%enroll_obj_id) #总页数 传入url
34 # ————————69PerfectCRM实现CRM业务流程(bpm)学生讲师分页————————
35
36 return render(request,'bpm_student/studyrecords.html',locals())
37
38 # ————————60PerfectCRM实现CRM学生上课记录————————
39
40 # ————————61PerfectCRM实现CRM学生上传作业————————
41 from django.contrib.auth.decorators import login_required #登陆才能访问
42 from PerfectCRM import settings #静态配置文件 #作业上传 # 上传路径
43 import os,json,time #系统操作
44 from django.shortcuts import HttpResponse #页面返回
45 from django.shortcuts import redirect #页面返回
46 #作业详情
47 @login_required#登陆才能访问
48 def homework_detail(request,enroll_obj_id,studyrecord_id):
49 studyrecord_obj=models.StudyRecord.objects.get(id=studyrecord_id)#取学习记录 对象
50 enroll_obj=models.Enrollment.objects.get(id=enroll_obj_id)#取班级对象
51
52 # 作业根目录 班级ID 上课记录ID 学习记录ID
53 homework_path="{base_dir}/{class_id}/{course_record_id}/{studyercord_id}/".format(
54 base_dir=settings.HOMEWORK_DATA, #静态配置文件
55 class_id=studyrecord_obj.student.enrolled_class_id,#09学习纪录#学生名字#所报班级ID号
56 course_record_id=studyrecord_obj.course_record_id,#09学习纪录#每节课上课纪录表
57 studyercord_id=studyrecord_obj.id##09学习纪录
58 )
59 print('homework_path路径:',studyrecord_obj.student.enrolled_class_id,studyrecord_obj.course_record_id,studyrecord_obj.id)
60
61 if os.path.exists(homework_path):#判断目录是否存在
62 file_lists = [] # 已经上传的文件列表
63 for file_name in os.listdir( homework_path ):
64 f_path = '%s/%s' % (homework_path, file_name) # 文件名字
65 modify_time = time.strftime( "%Y-%m-%d %H:%M:%S", time.gmtime( os.stat( f_path ).st_mtime ) ) # 文件上传时间
66 file_lists.append( [file_name, os.stat( f_path ).st_size, modify_time] ) # 添加到文件列表#文件名字#文件大小文件上传时间
67
68
69 if request.method=="POST":#上传
70 ret=False
71 data=request.POST.get('data') #ajax
72 if data:#如果有删除动作
73 del_f_path="%s/%s"%(homework_path,data)#文件路径
74 print('删除文件,路径:',del_f_path)
75 os.remove(del_f_path) #删除
76 ret=True
77 return HttpResponse(json.dumps(ret))#ret=False
78 if request.is_ajax(): # ajax上传图片 #异步提交
79 print("POST",request.POST)
80 if not os.path.isdir( homework_path ): # 没有目录 #isdir返回true,如果路径名是指现有的目录。
81 os.makedirs( homework_path, exist_ok=True ) # 创建目录
82 for k,v in request.FILES.items():#上传的文件
83 with open('%s/%s'%(homework_path,v.name),'wb') as f:#chunk 写入文件
84 for chunk in v.chunks(): #循环写文件
85 f.write(chunk)
86 return HttpResponse( json.dumps( {"status": 0, 'mag': "上传完成!", 'file_lists': file_lists} ) ) # 上传文件返回
87
88 if request.method=="POST":#上传
89 link = request.POST.get( 'link' ) # 让页面POST提交的值,在页面GET后仍然存在显示
90 if link:
91 homework_link=models.StudyRecord.objects.filter( id=studyrecord_id ).update(homework_link=link)
92 return redirect('/bpm/homework_detail/%s/%s/' %(enroll_obj_id,studyrecord_id) )#跳转到enrollment_rejection
93 return render(request,'bpm_student/homework_detail.html',locals())
94 # ————————61PerfectCRM实现CRM学生上传作业————————