zoukankan      html  css  js  c++  java
  • Django项目:CRM(客户关系管理系统)--74--64PerfectCRM实现CRM课程排名详情

     1 #urls.py
     2 
     3 """PerfectCRM URL Configuration
     4 
     5 The `urlpatterns` list routes URLs to views. For more information please see:
     6     https://docs.djangoproject.com/en/2.0/topics/http/urls/
     7 Examples:
     8 Function views
     9     1. Add an import:  from my_app import views
    10     2. Add a URL to urlpatterns:  path('', views.home, name='home')
    11 Class-based views
    12     1. Add an import:  from other_app.views import Home
    13     2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
    14 Including another URLconf
    15     1. Import the include() function: from django.urls import include, path
    16     2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
    17 """
    18 from django.contrib import admin
    19 from django.urls import path
    20 
    21 # ————————02PerfectCRM创建ADMIN页面————————
    22 from django.conf.urls import url  # URL
    23 from django.conf.urls import include # 分发URL
    24 # ————————02PerfectCRM创建ADMIN页面————————
    25 
    26 # ————————46PerfectCRM实现登陆后页面才能访问————————
    27 from PerfectCRM import main_views
    28 # ————————46PerfectCRM实现登陆后页面才能访问————————
    29 
    30 urlpatterns = [
    31     path('admin/', admin.site.urls),
    32     
    33 # ————————02PerfectCRM创建ADMIN页面————————
    34     url(r'^king_admin/', include("king_admin.king_urls")),  # 自定义admin
    35 # ————————02PerfectCRM创建ADMIN页面————————
    36     
    37 # ————————03PerfectCRM创建基本数据————————
    38     url(r'^DBadd/', include("DBadd.DBadd_urls")),  # 添加随机数据
    39 # ————————03PerfectCRM创建基本数据————————
    40     # ————————38PerfectCRM实现全局账号登录注销————————
    41     url(r'^gbacc/', include("gbacc.gbacc_urls")),  # 全局账号登录注销
    42     # ————————38PerfectCRM实现全局账号登录注销————————
    43 
    44     # ————————42PerfectCRM实现AJAX全局账号注册————————
    45     url(r'^gbacc/', include("gbacc.gbacc_ajax_urls")),  # 全局账号登录注销
    46     # ————————42PerfectCRM实现AJAX全局账号注册————————
    47 
    48     # ————————46PerfectCRM实现登陆后页面才能访问————————
    49     url(r'^$', main_views.PortalView.as_view()),
    50     # ————————46PerfectCRM实现登陆后页面才能访问————————
    51 
    52     # ————————47PerfectCRM实现CRM客户报名流程————————
    53     url(r'^bpm/', include("bpm.sales.sales_urls")),  # 业务流程 #学生报名
    54     # ————————47PerfectCRM实现CRM客户报名流程————————
    55 
    56     # ————————53PerfectCRM实现CRM客户报名流程缴费————————
    57     url(r'^bpm/', include("bpm.financial.financial_urls")),  # 业务流程 #财务缴费
    58     # ————————53PerfectCRM实现CRM客户报名流程缴费————————
    59 
    60     # ————————60PerfectCRM实现CRM学生上课记录————————
    61     url( r'^bpm/', include( "bpm.student.student_urls" ) ),  # 业务流程 # 学生上课记录
    62     # ————————60PerfectCRM实现CRM学生上课记录————————
    63 
    64     # ————————62PerfectCRM实现CRM讲师讲课记录————————
    65     url( r'^bpm/', include( "bpm.teacher.teacher_urls" ) ),  # 业务流程 # 讲师班级
    66     # ————————62PerfectCRM实现CRM讲师讲课记录————————
    67 
    68     # ————————64PerfectCRM实现CRM课程排名详情————————
    69     url( r'^bpm/', include( "bpm.coursetop.coursetop_urls" ) ),  # 业务流程 # 课程排名
    70     # ————————64PerfectCRM实现CRM课程排名详情————————
    71 ]
    #urls.py

    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 ]
    9 # ————————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课程排名详情————————
    # coursetop_views.py

     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 
    31 @register.simple_tag
    32 def get_stu_attendance(enroll_obj_id): #获得学员出勤次数
    33     attendance_list=models.StudyRecord.objects.select_related().filter(student=enroll_obj_id).values_list('attendance')
    34     number=0
    35     for attendance in attendance_list:
    36         if attendance == (0,) :
    37             number += 1
    38     print('获得点名出勤',number)
    39     return number
    40 
    41 @register.simple_tag
    42 def get_stu_late(enroll_obj_id): #获得学员迟到次数
    43     attendance_list=models.StudyRecord.objects.select_related().filter(student=enroll_obj_id).values_list('attendance')
    44     number=0
    45     for attendance in attendance_list:
    46         if attendance == (1,) :
    47             number += 1
    48     print('获得点名迟到',number)
    49     return number
    50 
    51 @register.simple_tag
    52 def get_stu_absenteeism(enroll_obj_id): #获得学员缺勤次数
    53     attendance_list=models.StudyRecord.objects.select_related().filter(student=enroll_obj_id).values_list('attendance')
    54     number=0
    55     for attendance in attendance_list:
    56         if attendance == (2,) :
    57             number += 1
    58     print('获得点名缺勤',number)
    59     return number
    60 
    61 @register.simple_tag
    62 def get_stu_early(enroll_obj_id): #获得学员早退次数
    63     attendance_list=models.StudyRecord.objects.select_related().filter(student=enroll_obj_id).values_list('attendance')
    64     number=0
    65     for attendance in attendance_list:
    66         if attendance == (3,) :
    67             number += 1
    68     print('获得点名早退',number)
    69     return number
    70 # ————————64PerfectCRM实现CRM课程排名详情————————
    # coursetop_tags.py

     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>课程成绩</th>
    25                         <th>班级排名</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_obj  in  enrollmentlist %}
    37                         <tr>
    38                             <td style="color: #ff0f00">{{ enroll_obj.id }}</td>
    39                             {# 学员id#}
    40                             <td>{{ enroll_obj.customer.name }}</td>
    41                             {# 学员姓名#}
    42                             <td>{{ enroll_obj.customer.qq }}</td>
    43                             {# 学员QQ#}
    44                             <td>{{ enroll_obj.date }}</td>
    45                             {# 报名日期#}
    46                             <td>
    47                                 {% fetch_stu_course_score class_grade_dic enroll_obj.id %} {# 得到 学员 课程 分数#}
    48                             </td>
    49                             <td>
    50                                 {% get_stu_grade_ranking ranking_dic enroll_obj.id %} {# 得到 学员 课程 排名#}
    51                             </td>
    52                             <td>
    53                                 {% get_already_homework enroll_obj.id %}{# 已交作业#}
    54                             </td>
    55                             <td>
    56                                 {% get_stu_attendance enroll_obj.id %} {# 得到 学员出勤次数#}
    57                             </td>
    58                             <td>
    59                                 {% get_stu_late enroll_obj.id %} {# 得到 学员出勤次数#}
    60                             </td>
    61                             <td>
    62                                 {% get_stu_absenteeism enroll_obj.id %} {# 得到 学员出勤次数#}
    63                             </td>
    64                             <td>
    65                                 {% get_stu_early enroll_obj.id %} {# 得到 学员早退次数#}
    66                             </td>
    67                         </tr>
    68                     {% endfor %}
    69                     </tbody>
    70                 </table>
    71             </div>
    72         </div>
    73     </div>
    74 {% endblock %}
    75 {## ————————64PerfectCRM实现CRM课程排名详情————————#}
    {#coursetop_details.html#}

     1 {#teacher_class.html#}
     2 {## ————————62PerfectCRM实现CRM讲师讲课记录————————#}
     3 {% extends 'bpm_master/bpm_sample.html' %}
     4 {% block right-container-content %} {#自定义内容开始 右边页面内容#}
     5     <div class="panel-default">
     6         <div class="panel-body">
     7             <h4>当前用户: {{ request.user }} | 讲师名字:{{ request.user.stu_account.name }} |
     8                 讲师QQ:{{ request.user.stu_account }}</h4>
     9             <ol class="breadcrumb">
    10                 <li><a href="/bpm/teacher_class/">我的班级</a></li>
    11             </ol>
    12             <table class="table table-striped table-responsive">
    13                 <thead>
    14                 <tr>
    15                     <th><a target="_blank" href="/king_admin/crm/classlist/add/">校区班级</a></th>
    16                     <th>班级类型</th>
    17                     <th><a target="_blank" href="/king_admin/crm/courserecord/add/">课程进度</a></th>
    18                     <th><a target="_blank" href="/king_admin/crm/customer/">学员数量</a></th>
    19                     <th>开课日期</th>
    20                     <th>结业日期</th>
    21                 </tr>
    22                 </thead>
    23                 <tbody>
    24                 {% for class in classes_obj %}
    25                     <tr>
    26                         <td>
    27                             {## ————————64PerfectCRM实现CRM课程排名详情————————#}
    28                             <a href="{% url 'coursetop_details' class.id %}">
    29                                 {## ————————64PerfectCRM实现CRM课程排名详情————————#}
    30                                 {{ class }}
    31                             </a>
    32                         </td>
    33                         <td>{{ class.get_class_type_display }}</td>
    34                         <td>
    35                             <a href="{% url 'teacher_class_detail' class.id %}">
    36                                 已上: {{ class.courserecord_set.all.count }}节
    37                             </a>
    38                         </td>
    39                         <td>{{ class.enrollment_set.select_related.count }}</td>
    40                         <td>{{ class.start_date }}</td>
    41                         <td>{{ class.end_date }}</td>
    42                     </tr>
    43                 {% endfor %}
    44                 </tbody>
    45             </table>
    46         </div>
    47     </div>
    48 {% endblock %}
    49 {## ————————62PerfectCRM实现CRM讲师讲课记录————————#}
    {#teacher_class.html#}

  • 相关阅读:
    Django view(视图)
    Django ORM
    Django 路由系统(URLconf)
    Django简介
    Ubuntu 18.04安装MySQL指南
    一只简单的网络爬虫(基于linux C/C++)————配置文件设计及读取
    一只简单的网络爬虫(基于linux C/C++)————开篇
    单例模式及单例类的两种实现
    对象析构不析构?
    C++11的mutex和lock_guard,muduo的MutexLock 与MutexLockGuard
  • 原文地址:https://www.cnblogs.com/ujq3/p/9033871.html
Copyright © 2011-2022 走看看