Django项目:CRM(客户关系管理系统)--76--66PerfectCRM实现CRM课程作业排名

 1 # classtop_urls.py
 2 # ————————64PerfectCRM实现CRM课程排名详情————————
 3 from django.conf.urls import url
 4 from bpm.coursetop import coursetop_views
 5 urlpatterns = [
 6     url( r'^coursetop_details/(\d+)/$', coursetop_views.coursetop_details, name="coursetop_details" ),    # 课程排名详情
 7 
 8     # ————————65PerfectCRM实现CRM课程分数排名————————
 9     url( r'^coursetop_score/(\d+)/$', coursetop_views.coursetop_score, name="coursetop_score" ),    # 班级分数排行
10     # ————————65PerfectCRM实现CRM课程分数排名————————
11 
12     # ————————66PerfectCRM实现CRM课程作业排名————————
13     url( r'^coursetop_homework/(\d+)/$', coursetop_views.coursetop_homework, name="coursetop_homework" ),  # 班级作业排行
14     # ————————66PerfectCRM实现CRM课程作业排名————————
15 
16 ]
17 # ————————64PerfectCRM实现CRM课程排名详情————————
# classtop_urls.py

  1 # coursetop_views.py
  2 # ————————64PerfectCRM实现CRM课程排名详情————————
  3 #————班级学生详情——#计算#{学员ID:分数}——#计算 #{学员ID: [分数, 排名] }————#
  4 #班级学生详情#计算#{学员ID:分数}
  5 from django.db.models import Sum #返回数组中所有值的和
  6 def get_course_grades(class_obj):#返回整个班级的成绩
  7     c=models.StudyRecord.objects.filter(course_record__from_class=class_obj).values_list('student')
  8     a=Sum('score')#Sum返回数组中所有值的和   #学习成绩
  9     e=c.annotate(a) #annotate数据库的数据聚合函数
 10     class_grade_dic=dict(e)#{1: 285, 16: 190}#{学员ID:分数}
 11     print( '全班成绩:', class_grade_dic)
 12     return class_grade_dic   #as class_grade_dic
 13 
 14 #班级学生详情#计算 #{学员ID: [分数, 排名] }
 15 def get_course_ranking(class_grade_dic):#返回整个班级的排名数据
 16     ranking_list = sorted(class_grade_dic.items(),key=lambda x:x[1],reverse=True)#进行排序后的列表#以第2个参数对比#倒序
 17     print('成绩排序:',ranking_list)
 18     ranking_dic = {}
 19     for item in ranking_list:
 20         ranking_dic[item[0]] = [item[1], ranking_list.index(item)+1] #循环添加 排名数 到 排序后的列表
 21     print( '全班排名:', ranking_dic)#{1: [285, 1], 10: [280, 2], }#{学员ID: [分数, 排名] }
 22     return ranking_dic
 23 #————班级学生详情——#计算#{学员ID:分数}——#计算 #{学员ID: [分数, 排名] }————#
 24 
 25 from django.contrib.auth.decorators import login_required  # 登陆后页面才能访问
 26 from django.shortcuts import render #页面返回
 27 from crm import models #数据库
 28 #班级学生详情
 29 @login_required  # 登陆后页面才能访问
 30 def coursetop_details(request,class_id):
 31     classes_obj = models.ClassList.objects.get(id=class_id)#通过ID获取02班级表
 32     enrollmentlist=classes_obj.enrollment_set.all()#通过班级ID,获取06学员报名信息表
 33 
 34     class_grade_dic=get_course_grades(classes_obj.id)#{学员ID:分数}        #全班成绩 # coursetop_tags.py 根据id 找对应的分数
 35     ranking_dic=get_course_ranking(class_grade_dic)#{学员ID: [分数, 排名] } #全班排名 # coursetop_tags.py 根据id 找对应的排名
 36 
 37     return render(request,'bpm_coursetop/coursetop_details.html',locals())
 38 # ————————64PerfectCRM实现CRM课程排名详情————————
 39 
 40 
 41 
 42 # ————————65PerfectCRM实现CRM课程分数排名————————
 43 #———— 班级学生详情——#计算 #{排名: (ID, 分数)}#排名查名字————#
 44 def get_ranking_name(class_grade_dic):
 45     lists=[]
 46     ranking_list = sorted(class_grade_dic.items(),key=lambda x:x[1],reverse=True)#进行排序后的列表#以第2个参数对比#倒序
 47     #ranking_list [(1, 285), (10, 280)] #按分高排序的ID顺序
 48     for item in ranking_list:
 49         temp={}
 50         temp[ranking_list.index(item) + 1] = item  # 循环添加 排名数 到 排序后的列表
 51         lists.append(temp)
 52     print( '排名查名字:', lists )#[{1: (1, 285)}, {2: (10, 280)}]#[{排名: (学员ID, 分数)}]
 53     return lists
 54 #———— 班级学生详情——#计算 #{排名: (ID, 分数)}#排名查名字————#
 55 
 56 #班级学生详情#全班成绩排名 #通过#{排名: (ID, 分数)}#排名查名字
 57 @login_required  # 登陆后页面才能访问
 58 def coursetop_score(request,class_id):
 59     classes_obj = models.ClassList.objects.get(id=class_id)#通过ID获取02班级表
 60     class_grade_dic=get_course_grades(classes_obj.id)#{学员ID:分数}        #全班成绩
 61     lists=get_ranking_name(class_grade_dic)#计算#[{排名: (学员ID, 分数)}]  #按分高排序的ID顺序
 62     return render(request,'bpm_coursetop/coursetop_score.html',locals())
 63 
 64 # ————————65PerfectCRM实现CRM课程分数排名————————
 65 
 66 # ————————66PerfectCRM实现CRM课程作业排名————————
 67 #————#班级学生详情#计算#学员已交作业的数量————#
 68 #班级学生详情#计算#学员已交作业的数量
 69 def get_already_homework(class_id):
 70     score_list = models.StudyRecord.objects.select_related().filter(student=class_id ).values_list( 'score' )#学习成绩
 71     number = 0
 72     for score in score_list:
 73         if score != (0,):  # (0,"N/A")
 74             number += 1  #通过 学习成绩 不等于0 计算#已交作业的数量
 75     return number
 76 #————#班级学生详情#计算#学员已交作业的数量————#
 77 
 78 #班级学生详情#学员已交作业的数量#作业查名字
 79 @login_required  # 登陆后页面才能访问
 80 def coursetop_homework(request,class_id):
 81     classes_obj = models.ClassList.objects.get(id=class_id)#通过ID获取02班级表
 82     class_grade_dic=get_course_grades(classes_obj.id)#{学员ID:分数}        #全班成绩
 83     ranking_dic=get_course_ranking(class_grade_dic)#{学员ID: [分数, 排名] } #全班排名
 84     enrollmentlist=classes_obj.enrollment_set.all()#通过班级ID,获取06学员报名信息表
 85 
 86     dict = {}#{1: 3, 4: 2,}#{学员ID: 数量}
 87     for item in enrollmentlist:
 88         d = get_already_homework( item.id )#根据06学员报名信息表#学员ID #计算#学员已交作业的数量
 89         dict[item.id]= d
 90 
 91     list = sorted(dict.items(),key=lambda x:x[1])#进行排序后的列表#以第2个参数对比
 92     #list[ (4, 2), (16, 2)]    #list[ (学员ID, 数量)]
 93 
 94     lists=[] #[{1: (19, 0)}, {2: (20, 0)}]#[{排名: (学员ID, 数量)}]
 95     for item in list:
 96         temp={}
 97         temp[list.index( item ) + 1] = item  # 循环添加 排名数 到 排序后的列表 #按已交作业数量排序
 98         lists.append(temp)
 99     print('已交作业:',lists)
100     return render(request,'bpm_coursetop/coursetop_homework.html',locals())
101 # ————————66PerfectCRM实现CRM课程作业排名————————
# coursetop_views.py

 1 {#teacher_class_stu_list.html#}
 2 {## ————————62PerfectCRM实现CRM讲师班级修改————————#}
 3 {% extends 'bpm_master/bpm_sample.html' %}
 4 {% load coursetop_tags %}
 5 {% block right-container-content %} {#自定义内容开始 右边页面内容#}
 6     <div class="panel-default">
 7         <div class="panel-default">
 8             <div class="panel-body">
 9                 <h4>当前用户: {{ request.user }} | 讲师名字:{{ request.user.stu_account.name }} |
10                     讲师QQ:{{ request.user.stu_account }} </h4>
11                 <ol class="breadcrumb">
12                     <li><a href="{% url 'teacher_class' %}">我的班级</a></li>
13                     <li><a href="{% url 'teacher_class_detail' classes_obj.id %}">{{ classes_obj }}</a></li>
14                     <li><a href="{% url 'coursetop_homework' classes_obj.id %}">作业排名</a></li>
15                 </ol>
16                 <table class="table table-striped table-responsive">
17                     <thead>
18                     <tr>
19                         <th><a href="{% url 'coursetop_details' classes_obj.id %}">学员ID</a></th>
20                         <th><a target="_blank" href="/king_admin/crm/enrollment/?enrolled_class={{ class_id }}">学员姓名</a>
21                         </th>
22                         <th>学员QQ</th>
23                         <th>报名日期</th>
24                         <th><a href="{% url 'coursetop_score' classes_obj.id %}">课程成绩</a></th>
25                         <th><a href="{% url 'coursetop_score' classes_obj.id %}">班级排名</a></th>
26                         <th>已交作业</th>
27                         <th>出勤次数</th>
28                         <th>迟到次数</th>
29                         <th>缺勤次数</th>
30                         <th>早退次数</th>
31                     </tr>
32                     </thead>
33 
34 
35                     <tbody>
36                     {% for enroll_objs  in  lists %}
37                         {% for top,enroll_obj in enroll_objs.items %}{#分离提取K,V#[{排名: (学员ID, 分数)}]#}
38                             {% id_enrollment enroll_obj.0 as enrollment %}{#enroll_obj.0 #学员ID#}{#通过学员ID查06学员报名信息表#}
39                             <tr>
40                                 <td>{{ enroll_obj.0 }}</td>
41                                 {#学员id#}
42                                 <td>{{ enrollment.customer.name }}</td>
43                                 {#学员姓名#}
44                                 <td>{{ enrollment.customer.qq }}</td>
45                                 {#学员QQ#}
46                                 <td>{{ enrollment.date }}</td>
47                                 {#报名日期#}
48                                 <td>
49                                     {% fetch_stu_course_score class_grade_dic enroll_obj.0 %} {# 获取 学员 课程 分数#}
50                                 </td>
51                                 <td>
52                                     {% get_stu_grade_ranking ranking_dic enroll_obj.0 %} {# 得到 学员 年级 排名#}
53                                 </td>
54                                 <td style="color: #ff0f00">
55                                     {% get_already_homework enroll_obj.0 %}{#已交作业#}
56                                 </td>
57                                 <td>
58                                     {% get_stu_attendance enroll_obj.0 %}{#出勤次数#}
59                                 </td>
60                                 <td>
61                                     {% get_stu_late enroll_obj.0 %}{#迟到次数#}
62                                 </td>
63                                 <td>
64                                     {% get_stu_absenteeism enroll_obj.0 %}{#缺勤次数#}
65                                 </td>
66                                 <td>
67                                     {% get_stu_early enroll_obj.0 %}{#早退次数#}
68                                 </td>
69                             </tr>
70                         {% endfor %}
71                     {% endfor %}
72                     </tbody>
73                 </table>
74             </div>
75         </div>
76     </div>
77 {% endblock %}
{#teacher_class_stu_list.html#}

 1 {#coursetop_details.html#}
 2 {## ————————64PerfectCRM实现CRM课程排名详情————————#}
 3 {% extends 'bpm_master/bpm_sample.html' %}
 4 {% load coursetop_tags %} {#计算课程排名#}
 5 {% block right-container-content %} {#自定义内容开始 右边页面内容#}
 6     <div class="panel-default">
 7         <div class="panel-default">
 8             <div class="panel-body">
 9                 <h4>当前用户: {{ request.user }} | 讲师名字:{{ request.user.stu_account.name }} |
10                     讲师QQ:{{ request.user.stu_account }} </h4>
11                 <ol class="breadcrumb">
12                     <li><a href="{% url 'teacher_class' %}">我的班级</a></li>
13                     <li><a href="{% url 'teacher_class_detail' classes_obj.id %}">{{ classes_obj }}</a></li>
14                     <li><a href="{% url 'coursetop_details' classes_obj.id %}">课程排行</a></li>
15                 </ol>
16                 <table class="table table-striped table-responsive">
17                     <thead>
18                     <tr>
19                         <th>学员ID</th>
20                         <th><a target="_blank" href="/king_admin/crm/enrollment/?enrolled_class={{ class_id }}">学员姓名</a>
21                         </th>
22                         <th>学员QQ</th>
23                         <th>报名日期</th>
24                         <th>
25                             {## ————————65PerfectCRM实现CRM课程分数排名————————#}
26                             <a href="{% url 'coursetop_score' classes_obj.id %}">
27                                 {## ————————65PerfectCRM实现CRM课程分数排名————————#}
28                                 课程成绩
29                             </a>
30                         </th>
31                         <th>
32                             {## ————————65PerfectCRM实现CRM课程分数排名————————#}
33                             <a href="{% url 'coursetop_score' classes_obj.id %}">
34                                 {## ————————65PerfectCRM实现CRM课程分数排名————————#}
35                                 班级排名
36                             </a>
37                         </th>
38                         <th>
39                             {## ————————66PerfectCRM实现CRM课程作业排名————————#}
40                             <a href="{% url 'coursetop_homework' classes_obj.id %}">
41                                 {## ————————66PerfectCRM实现CRM课程作业排名————————#}
42                                 已交作业
43                             </a>
44                         </th>
45                         <th>出勤次数</th>
46                         <th>迟到次数</th>
47                         <th>缺勤次数</th>
48                         <th>早退次数</th>
49                     </tr>
50                     </thead>
51 
52 
53                     <tbody>
54                     {% for enroll_obj  in  enrollmentlist %}
55                         <tr>
56                             <td style="color: #ff0f00">{{ enroll_obj.id }}</td>
57                             {# 学员id#}
58                             <td>{{ enroll_obj.customer.name }}</td>
59                             {# 学员姓名#}
60                             <td>{{ enroll_obj.customer.qq }}</td>
61                             {# 学员QQ#}
62                             <td>{{ enroll_obj.date }}</td>
63                             {# 报名日期#}
64                             <td>
65                                 {% fetch_stu_course_score class_grade_dic enroll_obj.id %} {# 得到 学员 课程 分数#}
66                             </td>
67                             <td>
68                                 {% get_stu_grade_ranking ranking_dic enroll_obj.id %} {# 得到 学员 课程 排名#}
69                             </td>
70                             <td>
71                                 {% get_already_homework enroll_obj.id %}{# 已交作业#}
72                             </td>
73                             <td>
74                                 {% get_stu_attendance enroll_obj.id %} {# 得到 学员出勤次数#}
75                             </td>
76                             <td>
77                                 {% get_stu_late enroll_obj.id %} {# 得到 学员出勤次数#}
78                             </td>
79                             <td>
80                                 {% get_stu_absenteeism enroll_obj.id %} {# 得到 学员出勤次数#}
81                             </td>
82                             <td>
83                                 {% get_stu_early enroll_obj.id %} {# 得到 学员早退次数#}
84                             </td>
85                         </tr>
86                     {% endfor %}
87                     </tbody>
88                 </table>
89             </div>
90         </div>
91     </div>
92 {% endblock %}
93 {## ————————64PerfectCRM实现CRM课程排名详情————————#}
{#coursetop_details.html#}

 1 {#coursetop_score.html#}
 2 {## ————————65PerfectCRM实现CRM课程分数排名————————#}
 3 {% extends 'bpm_master/bpm_sample.html' %}
 4 {% load coursetop_tags %}
 5 {% block right-container-content %} {#自定义内容开始 右边页面内容#}
 6     <div class="panel-default">
 7         <div class="panel-default">
 8             <div class="panel-body">
 9                 <h4>当前用户: {{ request.user }} | 讲师名字:{{ request.user.stu_account.name }} |
10                     讲师QQ:{{ request.user.stu_account }} </h4>
11                 <ol class="breadcrumb">
12                     <li><a href="{% url 'teacher_class' %}">我的班级</a></li>
13                     <li><a href="{% url 'teacher_class_detail' classes_obj.id %}">{{ classes_obj }}</a></li>
14                     <li><a href="{% url 'coursetop_score' classes_obj.id %}">分数排名</a></li>
15                 </ol>
16                 <table class="table table-striped table-responsive">
17                     <thead>
18                     <tr>
19                         <th><a href="{% url 'coursetop_details' classes_obj.id %}">学员ID</a></th>
20                         <th><a target="_blank" href="/king_admin/crm/enrollment/?enrolled_class={{ class_id }}">学员姓名</a>
21                         </th>
22                         <th>学员QQ</th>
23                         <th>报名日期</th>
24                         <th>课程成绩</th>
25                         <th>班级排名</th>
26                         <th>
27                             {## ————————66PerfectCRM实现CRM课程作业排名————————#}
28                             <a href="{% url 'coursetop_homework' classes_obj.id %}">
29                                 {## ————————66PerfectCRM实现CRM课程作业排名————————#}
30                                 已交作业
31                             </a>
32                         </th>
33                         <th>出勤次数</th>
34                         <th>迟到次数</th>
35                         <th>缺勤次数</th>
36                         <th>早退次数</th>
37                     </tr>
38                     </thead>
39 
40 
41                     <tbody>
42                     {% for enroll_objs  in  lists %}
43                         {% for top,enroll_obj in enroll_objs.items %}{#分离提取K,V#[{排名: (学员ID, 分数)}]#}
44                             {% id_enrollment enroll_obj.0 as enrollment %}{#enroll_obj.0 #学员ID#}{#通过学员ID查06学员报名信息表#}
45                             <tr>
46                                 <td>{{ enroll_obj.0 }}</td>
47                                 {#学员ID#}
48                                 <td>{{ enrollment.customer.name }}</td>
49                                 {#学员姓名#}
50                                 <td>{{ enrollment.customer.qq }}</td>
51                                 {#学员QQ#}
52                                 <td>{{ enrollment.date }}</td>
53                                 {#报名日期#}
54                                 <td style="color: #ff0f00"> {{ enroll_obj.1 }}{#课程成绩#} </td>
55                                 <td style="color: #ff0f00">
56                                     {{ top }}{#班级排名#}
57                                 </td>
58                                 <td>{% get_already_homework enroll_obj.0 %}</td>
59                                 {#已交作业#}
60                                 <td>
61                                     {% get_stu_attendance enroll_obj.0 %}{#出勤次数#}
62                                 </td>
63                                 <td>
64                                     {% get_stu_late enroll_obj.0 %}{#迟到次数#}
65                                 </td>
66                                 <td>
67                                     {% get_stu_absenteeism enroll_obj.0 %}{#缺勤次数#}
68                                 </td>
69                                 <td>
70                                     {% get_stu_early enroll_obj.0 %}{#早退次数#}
71                                 </td>
72                             </tr>
73                         {% endfor %}
74                     {% endfor %}
75                     </tbody>
76                 </table>
77             </div>
78         </div>
79     </div>
80 {% endblock %}
81 {## ————————65PerfectCRM实现CRM课程分数排名————————#}
{#coursetop_score.html#}

猜你喜欢

转载自www.cnblogs.com/ujq3/p/9035560.html