zoukankan      html  css  js  c++  java
  • Django项目:CRM(客户关系管理系统)--77--67PerfectCRM实现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     # ————————67PerfectCRM实现CRM课程出勤排名————————
    17     url( r'^coursetop_attendance/(d+)/$', coursetop_views.coursetop_attendance, name="coursetop_attendance" ),  # 班级出勤排行
    18     # ————————67PerfectCRM实现CRM课程出勤排名————————
    19 ]
    20 # ————————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课程作业排名————————
    102 
    103 # ————————67PerfectCRM实现CRM课程出勤排名————————
    104 #————#班级学生详情#学员出勤次数 #出勤次数查名字————#
    105 #班级学生详情#计算#学员出勤次数
    106 def get_stu_attendance(enroll_obj_id):
    107     attendance_list=models.StudyRecord.objects.select_related().filter(student=enroll_obj_id).values_list('attendance')
    108     number=0
    109     for attendance in attendance_list:
    110         if attendance == (0,) :
    111             number += 1
    112     return number
    113 #————#班级学生详情#学员出勤次数 #出勤次数查名字————#
    114 
    115 #班级学生详情#学员出勤次数 #出勤次数查名字
    116 @login_required  # 登陆后页面才能访问
    117 def coursetop_attendance(request,class_id):
    118     classes_obj = models.ClassList.objects.get(id=class_id)#通过ID获取02班级表
    119     class_grade_dic=get_course_grades(classes_obj.id)#{学员ID:分数}        #全班成绩
    120     ranking_dic=get_course_ranking(class_grade_dic)#{学员ID: [分数, 排名] } #全班排名
    121     enrollmentlist=classes_obj.enrollment_set.all()#通过班级ID,获取06学员报名信息表
    122 
    123     dict = {} #{1: 3, 4: 2,}#{学员ID: 次数}
    124     for item in enrollmentlist:
    125         d = get_stu_attendance( item.id )#根据06学员报名信息表#学员ID #计算#学员学员出勤次数
    126         dict[item.id]= d # 循环添加 {学员ID: 次数} #排序后的字典
    127 
    128     list = sorted(dict.items(),key=lambda x:x[1])#进行排序后的列表#以第2个参数对比 #按出勤次数少到多排序
    129     #list[ (4, 2), (16, 2)]    #list[ (学员ID, 次数)]
    130 
    131     lists=[]#[{1: (19, 3)}, {2: (20, 1)}]#[{排名: (学员ID, 次数)}]
    132     for item in list:
    133         temp={}
    134         temp[list.index( item ) + 1] = item  # 循环添加 排名数 #排序后的列表
    135         lists.append(temp)
    136     print('全班出勤',lists)
    137     return render(request,'bpm_coursetop/coursetop_attendance.html',locals())
    138 # ————————67PerfectCRM实现CRM课程出勤排名————————
    # coursetop_views.py

     1 {#coursetop_attendance.html#}
     2 {## ————————67PerfectCRM实现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_attendance' 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><a href="{% url 'coursetop_homework' classes_obj.id %}">已交作业</a></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>
    55                                     {% get_already_homework enroll_obj.0 %}{#已交作业#}
    56                                 </td>
    57                                 <td style="color: #ff0f00">
    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 %}
    78 {## ————————67PerfectCRM实现CRM课程出勤排名————————#}
    {#coursetop_attendance.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>
    46                             {## ————————67PerfectCRM实现CRM课程出勤排名————————#}
    47                             <a href="{% url 'coursetop_attendance' classes_obj.id %}">
    48                                 {## ————————67PerfectCRM实现CRM课程出勤排名————————#}
    49                                 出勤次数
    50                             </a>
    51                         </th>
    52                         <th>迟到次数</th>
    53                         <th>缺勤次数</th>
    54                         <th>早退次数</th>
    55                     </tr>
    56                     </thead>
    57 
    58 
    59                     <tbody>
    60                     {% for enroll_obj  in  enrollmentlist %}
    61                         <tr>
    62                             <td style="color: #ff0f00">{{ enroll_obj.id }}</td>
    63                             {# 学员id#}
    64                             <td>{{ enroll_obj.customer.name }}</td>
    65                             {# 学员姓名#}
    66                             <td>{{ enroll_obj.customer.qq }}</td>
    67                             {# 学员QQ#}
    68                             <td>{{ enroll_obj.date }}</td>
    69                             {# 报名日期#}
    70                             <td>
    71                                 {% fetch_stu_course_score class_grade_dic enroll_obj.id %} {# 得到 学员 课程 分数#}
    72                             </td>
    73                             <td>
    74                                 {% get_stu_grade_ranking ranking_dic enroll_obj.id %} {# 得到 学员 课程 排名#}
    75                             </td>
    76                             <td>
    77                                 {% get_already_homework enroll_obj.id %}{# 已交作业#}
    78                             </td>
    79                             <td>
    80                                 {% get_stu_attendance enroll_obj.id %} {# 得到 学员出勤次数#}
    81                             </td>
    82                             <td>
    83                                 {% get_stu_late enroll_obj.id %} {# 得到 学员出勤次数#}
    84                             </td>
    85                             <td>
    86                                 {% get_stu_absenteeism enroll_obj.id %} {# 得到 学员出勤次数#}
    87                             </td>
    88                             <td>
    89                                 {% get_stu_early enroll_obj.id %} {# 得到 学员早退次数#}
    90                             </td>
    91                         </tr>
    92                     {% endfor %}
    93                     </tbody>
    94                 </table>
    95             </div>
    96         </div>
    97     </div>
    98 {% endblock %}
    99 {## ————————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>
    34                             {## ————————67PerfectCRM实现CRM课程出勤排名————————#}
    35                             <a href="{% url 'coursetop_attendance' classes_obj.id %}">
    36                                 {## ————————67PerfectCRM实现CRM课程出勤排名————————#}
    37                                 出勤次数
    38                             </a>
    39                         </th>
    40                         <th>迟到次数</th>
    41                         <th>缺勤次数</th>
    42                         <th>早退次数</th>
    43                     </tr>
    44                     </thead>
    45 
    46 
    47                     <tbody>
    48                     {% for enroll_objs  in  lists %}
    49                         {% for top,enroll_obj in enroll_objs.items %}{#分离提取K,V#[{排名: (学员ID, 分数)}]#}
    50                             {% id_enrollment enroll_obj.0 as enrollment %}{#enroll_obj.0 #学员ID#}{#通过学员ID查06学员报名信息表#}
    51                             <tr>
    52                                 <td>{{ enroll_obj.0 }}</td>
    53                                 {#学员ID#}
    54                                 <td>{{ enrollment.customer.name }}</td>
    55                                 {#学员姓名#}
    56                                 <td>{{ enrollment.customer.qq }}</td>
    57                                 {#学员QQ#}
    58                                 <td>{{ enrollment.date }}</td>
    59                                 {#报名日期#}
    60                                 <td style="color: #ff0f00"> {{ enroll_obj.1 }}{#课程成绩#} </td>
    61                                 <td style="color: #ff0f00">
    62                                     {{ top }}{#班级排名#}
    63                                 </td>
    64                                 <td>{% get_already_homework enroll_obj.0 %}</td>
    65                                 {#已交作业#}
    66                                 <td>
    67                                     {% get_stu_attendance enroll_obj.0 %}{#出勤次数#}
    68                                 </td>
    69                                 <td>
    70                                     {% get_stu_late enroll_obj.0 %}{#迟到次数#}
    71                                 </td>
    72                                 <td>
    73                                     {% get_stu_absenteeism enroll_obj.0 %}{#缺勤次数#}
    74                                 </td>
    75                                 <td>
    76                                     {% get_stu_early enroll_obj.0 %}{#早退次数#}
    77                                 </td>
    78                             </tr>
    79                         {% endfor %}
    80                     {% endfor %}
    81                     </tbody>
    82                 </table>
    83             </div>
    84         </div>
    85     </div>
    86 {% endblock %}
    87 {## ————————65PerfectCRM实现CRM课程分数排名————————#}
    {#coursetop_score.html#}

     1 {#coursetop_homework.html#}
     2 {## ————————66PerfectCRM实现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>
    28                             {## ————————67PerfectCRM实现CRM课程出勤排名————————#}
    29                             <a href="{% url 'coursetop_attendance' classes_obj.id %}">
    30                                 {## ————————67PerfectCRM实现CRM课程出勤排名————————#}
    31                                 出勤次数
    32                             </a>
    33                         </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>
    55                                     {% fetch_stu_course_score class_grade_dic enroll_obj.0 %} {# 获取 学员 课程 分数#}
    56                                 </td>
    57                                 <td>
    58                                     {% get_stu_grade_ranking ranking_dic enroll_obj.0 %} {# 得到 学员 年级 排名#}
    59                                 </td>
    60                                 <td style="color: #ff0f00">
    61                                     {% get_already_homework enroll_obj.0 %}{#已交作业#}
    62                                 </td>
    63                                 <td>
    64                                     {% get_stu_attendance enroll_obj.0 %}{#出勤次数#}
    65                                 </td>
    66                                 <td>
    67                                     {% get_stu_late enroll_obj.0 %}{#迟到次数#}
    68                                 </td>
    69                                 <td>
    70                                     {% get_stu_absenteeism enroll_obj.0 %}{#缺勤次数#}
    71                                 </td>
    72                                 <td>
    73                                     {% get_stu_early enroll_obj.0 %}{#早退次数#}
    74                                 </td>
    75                             </tr>
    76                         {% endfor %}
    77                     {% endfor %}
    78                     </tbody>
    79                 </table>
    80             </div>
    81         </div>
    82     </div>
    83 {% endblock %}
    84 {## ————————66PerfectCRM实现CRM课程作业排名————————#}
    {#coursetop_homework.html#}

     1 # coursetop_tags.py
     2 # ————————64PerfectCRM实现CRM课程排名详情————————
     3 from crm import models
     4 from django import template
     5 register = template.Library()
     6 
     7 @register.simple_tag
     8 def fetch_stu_course_score(class_grade_dic, enroll_obj_id ): #获取 学员 课程 分数
     9     score=class_grade_dic.get(enroll_obj_id) #根据 id 找对应的分数
    10     # print('#{学员ID:分数} #全班成绩',score)
    11     return score
    12 
    13 @register.simple_tag
    14 def get_stu_grade_ranking(course_ranking_dic,enroll_obj_id):#得到 学员 班级 排名
    15     score_top = course_ranking_dic.get(enroll_obj_id) #根据id 找对应的排名
    16     if score_top:
    17         # print( '#{学员ID: [分数, 排名] } #全班排名:', score_top[1] )
    18         return score_top[1]
    19 
    20 @register.simple_tag
    21 def get_already_homework(enroll_obj_id): #获得已交作业
    22     score_list=models.StudyRecord.objects.select_related().filter(student=enroll_obj_id).values_list('score')#根据09学习纪录的ID #获取学习成绩列表
    23     number=0
    24     for score in score_list:
    25         if score!= (0,) :
    26             number += 1
    27     # print('已交作业次数',number)
    28     return number
    29 
    30 @register.simple_tag
    31 def get_stu_attendance(enroll_obj_id): #获得学员出勤次数
    32     attendance_list=models.StudyRecord.objects.select_related().filter(student=enroll_obj_id).values_list('attendance')
    33     number=0
    34     for attendance in attendance_list:
    35         if attendance == (0,) :
    36             number += 1
    37     # print('获得点名出勤',number)
    38     return number
    39 
    40 @register.simple_tag
    41 def get_stu_late(enroll_obj_id): #获得学员迟到次数
    42     attendance_list=models.StudyRecord.objects.select_related().filter(student=enroll_obj_id).values_list('attendance')
    43     number=0
    44     for attendance in attendance_list:
    45         if attendance == (1,) :
    46             number += 1
    47     # print('获得点名迟到',number)
    48     return number
    49 
    50 @register.simple_tag
    51 def get_stu_absenteeism(enroll_obj_id): #获得学员缺勤次数
    52     attendance_list=models.StudyRecord.objects.select_related().filter(student=enroll_obj_id).values_list('attendance')
    53     number=0
    54     for attendance in attendance_list:
    55         if attendance == (2,) :
    56             number += 1
    57     # print('获得点名缺勤',number)
    58     return number
    59 
    60 @register.simple_tag
    61 def get_stu_early(enroll_obj_id): #获得学员早退次数
    62     attendance_list=models.StudyRecord.objects.select_related().filter(student=enroll_obj_id).values_list('attendance')
    63     number=0
    64     for attendance in attendance_list:
    65         if attendance == (3,) :
    66             number += 1
    67     # print('获得点名早退',number)
    68     return number
    69 # ————————64PerfectCRM实现CRM课程排名详情————————
    70 
    71 # ————————65PerfectCRM实现CRM课程分数排名————————
    72 @register.simple_tag
    73 def id_enrollment(enroll_obj):#ID查姓名
    74     enrollment = models.Enrollment.objects.filter(id=enroll_obj).first()#通过学员ID查06学员报名信息表
    75     return enrollment #06学员报名信息表
    76 # ————————65PerfectCRM实现CRM课程分数排名————————
    # coursetop_tags.py


     

    如果感觉本章博客对您有帮助,请尽情打赏吧!

  • 相关阅读:
    python库--pandas--Series.str--字符串处理
    前端--jstree--异步加载数据
    python库--flask--创建嵌套蓝图
    Git--生成公钥和私钥并添加gitlab访问权限
    es查询--请求body
    python生成时间序列(date_range)
    golang使用组合完成伪继承
    golang interface类型的动态绑定
    ruby环境安装草稿
    openfire
  • 原文地址:https://www.cnblogs.com/ujq3/p/9035678.html
Copyright © 2011-2022 走看看