博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CRM客户关系管理系统(十二)
阅读量:4617 次
发布时间:2019-06-09

本文共 6600 字,大约阅读时间需要 22 分钟。

十二章、学员报名流程开发 2

 12.1.学员报名合同和证件信息上传

功能:

  • 必须勾选报名合同协议
  • 必须上传个人证件信息
  • 最多只能上传三个文件
  • 文件大小2M以内
  • 列出已上传文件

(1)crm/urls.py

urlpatterns = [        #上传个人证件信息    url(r'^enrollment/(\d+)/fileupload/$', views.enrollment_fileupload,name='enrollment_fileupload'),]

(2)crm./views.py

建一个上传文件的文件夹

import os,jsonfrom django.views.decorators.csrf import csrf_exemptfrom django import conf@csrf_exemptdef enrollment_fileupload(request,enrollment_id):    '''学员报名文件上传'''    enrollment_upload_dir = os.path.join(conf.settings.CRM_FILE_UOLOAD_DIR,enrollment_id)    #第一次上传图片就创建目录,学员上传第二章图片的时候,会判断目录是否已经存在    #因为如果目录存在还mkdir就会报错,所以这里要做判断    if not os.path.isdir(enrollment_upload_dir):        os.mkdir(enrollment_upload_dir)    #获取上传文件的对象    file_obj = request.FILES.get('file')    #最多只允许上传3个文件    if len(os.listdir(enrollment_upload_dir)) <= 3:        #把图片名字拼接起来(file.name:上传的文件名字)        with open(os.path.join(enrollment_upload_dir,file_obj.name),'wb') as f:            for chunks in file_obj.chunks():                f.write(chunks)    else:        return HttpResponse(json.dumps({
'status':False,'err_msg':'最多只能上传三个文件'})) return HttpResponse(json.dumps({
'status':True,}),)def enrollment(request,enrollment_id): '''学员在线报名表地址''' enrollment_obj = models.StudentEnrollment.objects.get(id=enrollment_id) if request.method == 'POST': customer_form = form.CustomerForm(instance=enrollment_obj.customer,data=request.POST) if customer_form.is_valid(): customer_form.save() return HttpResponse("你已成功提交报名信息,请等待审核,欢迎加入仙剑奇侠传") else: customer_form = form.CustomerForm(instance=enrollment_obj.customer) # 列出学员已上传的文件 upload_files = [] enrollment_upload_dir = os.path.join(conf.settings.CRM_FILE_UOLOAD_DIR, enrollment_id) if os.path.isdir(enrollment_upload_dir): upload_files = os.listdir(enrollment_upload_dir) return render(request,'crm/enrollment.html',locals())

 (3)settings.py

#学员个人信息图片上传路径CRM_FILE_UOLOAD_DIR = os.path.join(BASE_DIR,'crm/upload_files/enrollment_data',)

 

(4)crm/enrollment.html

                    

 css和js放到statics下面

 

{#templates/crm/enrollment.html#}{% extends 'index.html' %}{% load staticfiles %}{% block extra-css %}    
{% endblock %}{% block body %}

仙剑奇侠传|学员报名

学员在线报名

{% csrf_token %} {% for field in customer_form %}
{ { field }}
{ { field.errors.0 }}
{% endfor %}
{ { enrollment_obj.class_grade }}
{ { enrollment_obj.class_grade.course.price }}

{
{ enrollment_obj.class_grade.contract_template.content }}
我已认真阅读,无条件同意。{#
#}
{#
#}

已上传文件列表

    {% for file in upload_files %}
  • {
    { file }}
  • {% endfor %}
{% endblock %}{% block extra-js %} {% endblock %}

 

效果:

合同

 

 上传证件信息(直接把文件拖进去就可以了)

 

 

12.2.合同审核

 (1)学员提交报名信息后,把contract_agreed改为True,并保存提交的时间

(2)提交报名信息后,就应该是等待审核状态

 

 

 

(3)已经生产报名链接的,点“下一步”,跳转“合同审核”页面

  • 没有生产报名链接的点“下一步”,生产报名连接
  • 已经生成过的,点“下一步”,会报错,因为赢生成过了链接
  • 所以在这里要抓住这个异常,生成过的点“下一步”,应该是跳到“合同审核”页面

抓住异常

@login_requireddef stu_enrollment(request):    '''学员报名'''    customers = models.CustomerInfo.objects.all()    class_lists = models.ClassList.objects.all()    if request.method == 'POST':        #获取提交的客户id和班级id,然后生成报名链接        customer_id = request.POST.get('customer_id')        class_grade_id = request.POST.get('class_grade_id')        try:            enrollment_obj = models.StudentEnrollment.objects.create(                customer_id = customer_id,                class_grade_id = class_grade_id,                consultant_id = request.user.userprofile.id            )        #已经生成过报名链接,就进入审核页面        except IntegrityError as e:            enrollment_obj = models.StudentEnrollment.objects.get(customer_id = customer_id,class_grade_id = class_grade_id)            if enrollment_obj.contract_agreed:                return redirect("/crm/stu_enrollment/%s/contract_audit/"% enrollment_obj.id)        #生成链接返回到前端        enrollment_link = "http://localhost:8000/crm/enrollment/%s"% enrollment_obj.id    return render(request,'crm/stu_enrollment.html',locals())

 

 合同审核

(4)crm/urls.py

#合同审核    url(r'^stu_enrollment/(\d+)/contract_audit/$', views.contract_audit,name='contract_audit'),

(5)crm/views.py

  • 获取到学员信息表单
  • 勾选审核后,提交
  • 后台:把学生加到对应班级里面
  • 把学生的状态改成报名
@login_requireddef contract_audit(request,enrollment_id):    '''合同审核'''    enrollment_obj = models.StudentEnrollment.objects.get(id=enrollment_id)    if request.method == 'POST':        enrollment_form = form.EnrollmentForm(instance=enrollment_obj,data=request.POST)        if enrollment_form.is_valid():            enrollment_form.save()            stu_obj = models.Student.objects.get_or_create(customer=enrollment_obj.customer)[0]            #m2m, 添加班级            stu_obj.class_grades.add(enrollment_obj.class_grade_id)            stu_obj.save()            #改变报名            enrollment_obj.customer.status = 1            enrollment_obj.save()            return redirect("/kingadmin/crm/customerinfo/%s/change"%enrollment_obj.customer.id)    else:        #拿到客户信息的表单        customer_form = form.CustomerForm(instance=enrollment_obj.customer)        enrollment_form = form.EnrollmentForm(instance=enrollment_obj)    return render(request,'crm/contract_audit.html',locals())

 

(6)crm/contract_audit.html

{#crm/contract_audit.html#}{% extends 'index.html' %}{% block right-content-container %}

学员报名|合同审核

{% csrf_token %} {
{ customer_form }} {
{ enrollment_form }}
{% endblock %}

 

转载于:https://www.cnblogs.com/derek1184405959/p/8990771.html

你可能感兴趣的文章
City Upgrades
查看>>
“人少也能办大事”---K2 BPM老客户交流会
查看>>
关于七牛进行图片添加文字水印操作小计
查看>>
DataSource数据库的使用
查看>>
Luogu4069 SDOI2016 游戏 树链剖分、李超线段树
查看>>
Java的内部类真的那么难以理解?
查看>>
一文搞懂Java环境,轻松实现Hello World!
查看>>
hash实现锚点平滑滚动定位
查看>>
也谈智能手机游戏开发中的分辨率自适应问题
查看>>
关于 IOS 发布的点点滴滴记录(一)
查看>>
《EMCAScript6入门》读书笔记——14.Promise对象
查看>>
CSS——水平/垂直居中
查看>>
Eclipse连接mysql数据库jdbc下载(图文)
查看>>
Python中Selenium的使用方法
查看>>
三月23日测试Fiddler
查看>>
20171013_数据库新环境后期操作
查看>>
poj 1654 && poj 1675
查看>>
运维派 企业面试题1 监控MySQL主从同步是否异常
查看>>
Docker 版本
查看>>
poj 1753 Flip Game
查看>>