1 # sales_views.py
2 # ————————47PerfectCRM实现CRM客户报名流程————————
3 from django.db import IntegrityError #主动捕捉错误信息
4 from django.shortcuts import render #页面返回
5 from crm import models #数据库
6 from bpm.bpm_auxiliary import bpm_forms #自定制 forms
7 from django.contrib.auth.decorators import login_required# 登陆后页面才能访问
8
9 # ————————47PerfectCRM实现CRM客户报名流程————————
10 from django.core.mail import send_mail
11 # send_mail的参数分别是 邮件标题,邮件内容,发件箱(settings.py中设置过的那个),收件箱列表(可以发送给多个人),失败静默(若发送失败,报错提示我们)
12 import random
13 import datetime # 获取时间#登陆过期
14 #发送邮件的功能 #验证码#密码
15 class stmp() :
16 def __init__(self):
17 self.emaillist=[] #发送给谁
18 self.code=None #验证码#密码
19 def stmps(self,request,email,msg_mail): #传参数#页面,session #邮箱,发送给谁 #内容
20 self.emaillist.append(email) #将邮箱地址添加到调用Django发送邮件功能
21 # ——————生成验证码——————
22 _letter_cases = "abcdefghjkmnpqrstuvwxy" # 小写字母,去除可能干扰的i,l,o,z
23 _upper_cases = _letter_cases.upper() # 大写字母
24 _numbers = ''.join(map(str, range(3, 10))) # 数字
25 chars = ''.join((_letter_cases, _upper_cases, _numbers)) # 变成一条字符串
26 list = random.sample(chars, 4) # 从一条字符串随机选4个字符变成列表
27 self.code = ''.join(list) # 列表变字符串
28 # ——————生成验证码——————
29 # ——————调用Django发送邮件——————
30 title= 'PerfectCRM项目自动邮件:%s'%self.code # 邮件标题#防止一样的内容被邮箱屏蔽
31 send_mail(title, # 邮件标题
32 msg_mail, # 验证码内容
33 'perfectcrm@sina.cn', # 发送的邮箱 #根据情况重新配置
34 self.emaillist, # 接受的邮箱
35 fail_silently=False, # 静默,抛出异常
36 )
37 print('发送邮件成功!没收到要换标题!检查发送邮箱的配置!')
38 # ——————调用Django发送邮件——————
39
40 # ————————47PerfectCRM实现CRM客户报名流程————————
41 # ————————47PerfectCRM实现CRM客户报名流程————————
42
43 #报名填写 销售
44 @login_required # 登陆后页面才能访问
45 def enrollment(request,customer_id):
46 msgs={} #错误信息
47 customer_obj=models.Customer.objects.get(id=customer_id)#取到客户信息记录 #返回到页面#报名人
48 consultant_obj=models.UserProfile.objects.get(id=request.user.id)#报名课程顾问
49
50 stmp_mail = {} #邮件发送成功
51 stmpemail = stmp() #实例化发送邮件的功能
52 email = request.POST.get('email') # 让页面POST提交的值,在页面GET后仍然存在显示
53 if request.method=="POST":
54 enroll_form= bpm_forms.EnrollmentForm(request.POST)#获取数据
55 if enroll_form.is_valid():#表单验证
56 msg = "http://127.0.0.1:8000/bpm/customer/registration/{enroll_obj_id}/"
57 try:
58 enroll_form.cleaned_data['customer']=customer_obj#添加学员对象 记录 #报名人
59 enroll_form.cleaned_data['consultant'] = consultant_obj#报名课程顾问
60 enroll_obj=models.Enrollment.objects.create(**enroll_form.cleaned_data)#创建记录
61 msgs['msg']=msg.format(enroll_obj_id=enroll_obj.id)#报名记录对应的id
62 except IntegrityError as e:
63 #取到这条记录
64 enroll_obj=models.Enrollment.objects.get(customer_id=customer_obj.id,
65 enrolled_class_id=enroll_form.cleaned_data['enrolled_class'].id)
66 enroll_form.add_error('__all__','记录已经存在,不能重复创建!')
67 msgs['msg']=msg.format(enroll_obj_id=enroll_obj.id)#报名记录对应的id
68 if email:
69 msg_mail = "http://127.0.0.1:8000/bpm/customer/registration/%s/"%enroll_obj.id
70 stmpemail.stmps(request, email,msg_mail) # 发送邮件
71 stmp_mail['ok'] = "邮件已发送成功!"
72
73 else:
74 enroll_form= bpm_forms.EnrollmentForm()#modelform表单
75 return render(request, 'bpm_sales/enrollment.html', locals())
76 # ————————47PerfectCRM实现CRM客户报名流程————————
77
78
79 # ————————48PerfectCRM实现CRM客户报名流程学生合同————————
80 #学员合同签定
81 def stu_registration(request,enroll_id):
82 enroll_obj=models.Enrollment.objects.get(id=enroll_id)#获取报名记录
83 # ————————49PerfectCRM实现CRM客户报名流程学生合同表单验证————————
84 if request.method == "POST":
85 customer_form = bpm_forms.CustomerForm(request.POST, instance=enroll_obj.customer) # 生成表单验证
86 if customer_form.is_valid(): # 表单验证通过
87 customer_form.save() # 保存
88 enroll_obj.contract_agreed = True # 同意协议
89 enroll_obj.save() # 保存
90 status = 1 # 修改报名状态 # 1 已经报名
91 return render(request, 'bpm_sales/stu_registration.html', locals())
92
93 else:
94 if enroll_obj.contract_agreed == True: # 如果协议已经签订
95 status = 1 # 修改报名状态 # 1 已经报名
96 else:
97 status = 0
98 customer_form = bpm_forms.CustomerForm(instance=enroll_obj.customer) # 生成表单
99 # customer_form = bpm_forms.CustomerForm(instance=enroll_obj.customer) # 生成表单
100 # ————————49PerfectCRM实现CRM客户报名流程学生合同表单验证————————
101
102 return render(request,'bpm_sales/stu_registration.html',locals())
103 # ————————48PerfectCRM实现CRM客户报名流程学生合同————————