Django项目:CRM(客户关系管理系统)--62--52PerfectCRM实现CRM客户报名流程学生合同审核

Posted 颜言

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django项目:CRM(客户关系管理系统)--62--52PerfectCRM实现CRM客户报名流程学生合同审核相关的知识,希望对你有一定的参考价值。

 

 1 # sales_urls.py
 2 # ————————47PerfectCRM实现CRM客户报名流程————————
 3 from django.conf.urls import url
 4 from bpm.sales import sales_views
 5 
 6 urlpatterns = [
 7 
 8     url(r\'^customer/(\\d+)/enrollment/$\', sales_views.enrollment, name="enrollment"),#客户招生#报名流程一 下一步
 9 
10     # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
11     # ————————48PerfectCRM实现CRM客户报名流程学生合同————————
12     # url(r\'^customer/registration/(\\d+)/$\', sales_views.stu_registration, name="stu_registration"),  # 报名流程二 学员签同合
13     # ————————48PerfectCRM实现CRM客户报名流程学生合同————————
14     url(r\'^customer/registration/(\\d+)/(\\w+)/$\', sales_views.stu_registration, name="stu_registration"),  # 报名流程二 学员签同合
15     # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
16 
17     # ————————52PerfectCRM实现CRM客户报名流程学生合同审核————————
18     url(r\'^contract_prompt/$\', sales_views.contract_prompt, name="contract_prompt"),  # 报名流程二 提示学员
19     url(r\'^not_audit/$\', sales_views.not_audit, name="not_audit"),  # 报名流程二  未审核 查询
20     url(r\'^contract_review/(\\d+)/$\', sales_views.contract_review, name="contract_review"),  # 报名流程三  审核
21     url(r\'^enrollment_rejection/(\\d+)/$\', sales_views.enrollment_rejection, name="enrollment_rejection"),  # 报名流程三 驳回
22     # ————————52PerfectCRM实现CRM客户报名流程学生合同审核————————
23 
24 ]
25 # ————————47PerfectCRM实现CRM客户报名流程————————
# sales_urls.py

 

 

 

  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 
 16 # 发送邮件的功能 #验证码#密码
 17 class stmp():
 18     def __init__(self):
 19         self.emaillist = []  # 发送给谁
 20         self.code = None  # 验证码#密码
 21 
 22     def stmps(self, request, email, msg_mail):  # 传参数#页面,session #邮箱,发送给谁 #内容
 23         self.emaillist.append(email)  # 将邮箱地址添加到调用Django发送邮件功能
 24         # ——————生成验证码——————
 25         _letter_cases = "abcdefghjkmnpqrstuvwxy"  # 小写字母,去除可能干扰的i,l,o,z
 26         _upper_cases = _letter_cases.upper()  # 大写字母
 27         _numbers = \'\'.join(map(str, range(3, 10)))  # 数字
 28         chars = \'\'.join((_letter_cases, _upper_cases, _numbers))  # 变成一条字符串
 29         list = random.sample(chars, 4)  # 从一条字符串随机选4个字符变成列表
 30         self.code = \'\'.join(list)  # 列表变字符串
 31         # ——————生成验证码——————
 32         # ——————调用Django发送邮件——————
 33         title = \'PerfectCRM项目自动邮件:%s\' % self.code  # 邮件标题#防止一样的内容被邮箱屏蔽
 34         send_mail(title,  # 邮件标题
 35                   msg_mail,  # 验证码内容
 36                   \'perfectcrm@sina.cn\',  # 发送的邮箱  #根据情况重新配置
 37                   self.emaillist,  # 接受的邮箱
 38                   fail_silently=False,  # 静默,抛出异常
 39                   )
 40         print(\'发送邮件成功!没收到要换标题!检查发送邮箱的配置!\')
 41         # ——————调用Django发送邮件——————
 42 
 43 
 44 # ————————47PerfectCRM实现CRM客户报名流程————————
 45 # ————————47PerfectCRM实现CRM客户报名流程————————
 46 # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
 47 import random  # 随机
 48 import string  # 字母 数字
 49 from django.core.cache import cache  # 缓存
 50 # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
 51 
 52 # 报名填写 销售
 53 @login_required  # 登陆后页面才能访问
 54 def enrollment(request, customer_id):
 55     msgs = {}  # 错误信息
 56     customer_obj = models.Customer.objects.get(id=customer_id)  # 取到客户信息记录 #返回到页面#报名人
 57     consultant_obj = models.UserProfile.objects.get(id=request.user.id)  # 报名课程顾问
 58 
 59     stmp_mail = {}  # 邮件发送成功
 60     stmpemail = stmp()  # 实例化发送邮件的功能
 61     email = request.POST.get(\'email\')  # 让页面POST提交的值,在页面GET后仍然存在显示
 62     if request.method == "POST":
 63         enroll_form = bpm_forms.EnrollmentForm(request.POST)  # 获取数据
 64         if enroll_form.is_valid():  # 表单验证
 65 
 66             # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
 67             # msg = "http://127.0.0.1:8000/bpm/customer/registration/{enroll_obj_id}/"
 68             msg = "http://127.0.0.1:8000/bpm/customer/registration/{enroll_obj_id}/{random_str}/ "
 69             random_str = \'\'.join(random.sample(string.ascii_lowercase + string.digits, 8))  # 生成8位随机字符串 #URL使用
 70             url_str = \'\'\'customer/registration/{enroll_obj_id}/{random_str}/\'\'\'  # 报名链接
 71             # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
 72 
 73             try:
 74                 enroll_form.cleaned_data[\'customer\'] = customer_obj  # 添加学员对象 记录 #报名人
 75                 enroll_form.cleaned_data[\'consultant\'] = consultant_obj  # 报名课程顾问
 76                 enroll_obj = models.Enrollment.objects.create(**enroll_form.cleaned_data)  # 创建记录
 77 
 78                 # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
 79                 # msgs[\'msg\']=msg.format(enroll_obj_id=enroll_obj.id)#报名记录对应的id,随机字符串,报名链接
 80                 sort_url = enroll_obj.id  # 获取报名表对应的ID
 81                 cache.set(enroll_obj.id, random_str, 61000)  # 加入过期时间   #URL使用    # cache缓存
 82                 msgs[\'msg\'] = msg.format(enroll_obj_id=enroll_obj.id, random_str=random_str)  # 报名记录对应的id,随机字符串,报名链接
 83                 url_str = url_str.format(enroll_obj_id=enroll_obj.id, random_str=random_str)  # 报名链接
 84                 print(url_str)
 85                 # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
 86             except IntegrityError as e:
 87                 # 取到这条记录
 88                 enroll_obj = models.Enrollment.objects.get(customer_id=customer_obj.id,
 89                                                            enrolled_class_id=enroll_form.cleaned_data[
 90                                                                \'enrolled_class\'].id)
 91 
 92                 # ————————52PerfectCRM实现CRM客户报名流程学生合同审核————————
 93                 if enroll_obj.contract_agreed:#学员已经同意合同,提交了身份证
 94                     #return redirect(\'/crm/contract_review/%s/\'%enroll_obj.id)#跳转到审核页面
 95                     return render(request,\'bpm_sales/contract_prompt.html\',locals())#跳转提示页面
 96                 # ————————52PerfectCRM实现CRM客户报名流程学生合同审核————————
 97 
 98                 enroll_form.add_error(\'__all__\', \'记录已经存在,不能重复创建!\')
 99 
100                 # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
101                 # msgs[\'msg\']=msg.format(enroll_obj_id=enroll_obj.id)#报名记录对应的id
102                 cache.set(enroll_obj.id, random_str, 61000)  # 加入过期时间  #URL使用    # cache缓存
103                 msgs[\'msg\'] = msg.format(enroll_obj_id=enroll_obj.id, random_str=random_str)  # 报名记录对应的id
104                 url_str = url_str.format(enroll_obj_id=enroll_obj.id, random_str=random_str)  # 报名链接
105                 # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
106 
107             if email:
108                 # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
109                 # msg_mail = "http://127.0.0.1:8000/bpm/customer/registration/%s" %enroll_obj.id
110                 msg_mail = "http://127.0.0.1:8000/bpm/customer/registration/%s/%s" %(enroll_obj.id,random_str)
111                 # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
112                 stmpemail.stmps(request, email, msg_mail)  # 发送邮件
113                 stmp_mail[\'ok\'] = "邮件已发送成功!"
114 
115     else:
116         enroll_form = bpm_forms.EnrollmentForm()  # modelform表单
117     return render(request, \'bpm_sales/enrollment.html\', locals())
118 # ————————47PerfectCRM实现CRM客户报名流程————————
119 
120 
121 # ————————48PerfectCRM实现CRM客户报名流程学生合同————————
122 #学员合同签定
123 
124 # ————————51PerfectCRM实现CRM客户报名流程学生合同上传照片————————
125 import os
126 from PerfectCRM import settings
127 import json
128 # ————————51PerfectCRM实现CRM客户报名流程学生合同上传照片————————
129 
130 # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
131 from django.shortcuts import HttpResponse #页面返回
132 # def stu_registration(request,enroll_id):
133 def stu_registration(request,enroll_id,random_str):
134     # enroll_obj=models.Enrollment.objects.get(id=enroll_id)#获取报名记录
135     if cache.get(enroll_id) == random_str:  # 判断链接失效了没有
136         enroll_obj = models.Enrollment.objects.get(id=enroll_id)  # 报名记录
137 # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
138 
139         # ————————51PerfectCRM实现CRM客户报名流程学生合同上传照片————————
140         enrolled_path=\'%s/%s/\'%(settings.ENROLLED_DATA,enroll_id)#证件上传路径
141         img_file_len=0  #文件
142         if os.path.exists(enrolled_path):#判断目录是否存在
143             img_file_list=os.listdir(enrolled_path)#取目录 下的文件
144             img_file_len=len(img_file_list)
145         # ————————51PerfectCRM实现CRM客户报名流程学生合同上传照片————————
146 
147     # ————————49PerfectCRM实现CRM客户报名流程学生合同表单验证————————
148         # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
149         if request.method == "POST":
150 
151             # ————————51PerfectCRM实现CRM客户报名流程学生合同上传照片————————
152             ret=False
153             data=request.POST.get(\'data\')
154             if data:#如果有删除动作
155                 del_img_path="%s/%s/%s"%(settings.ENROLLED_DATA,enroll_id,data)#路径
156                 print(del_img_path,\'=-=-=-=-=-=\')
157                 os.remove(del_img_path)
158                 ret=True
159                 return HttpResponse(json.dumps(ret))
160             if request.is_ajax():#ajax上传图片 #异步提交
161                 print(\'ajax上传图片 #异步提交中。。。 \',request.FILES)
162                 enroll_data_dir="%s/%s"%(settings.ENROLLED_DATA,enroll_id)#路径  #重要信息不能放在静态文件中
163                 if not os.path.exists(enroll_data_dir):#如果不存目录
164                     os.makedirs(enroll_data_dir,exist_ok=True)#创建目录
165                 for k,file_obj in request.FILES.items():   #循环字典 #上传的文件
166                     with open("%s/%s"%(enroll_data_dir,file_obj.name),\'wb\') as f: #打开一个文件#路径#获取文件名
167                         for chunk in file_obj.chunks():#循环写入文件 # chunks块
168                             f.write(chunk)  #保存文件
169                 return HttpResponse(\'上传完成!\')
170             # ————————51PerfectCRM实现CRM客户报名流程学生合同上传照片————————
171 
172             customer_form = bpm_forms.CustomerForm(request.POST, instance=enroll_obj.customer)  # 生成表单验证
173             if customer_form.is_valid():  # 表单验证通过
174                 customer_form.save()  # 保存
175                 enroll_obj.contract_agreed = True  # 同意协议
176                 enroll_obj.save()  # 保存
177                 status = 1  # 修改报名状态 # 1 已经报名
178                 return render(request, \'bpm_sales/stu_registration.html\', locals())
179 
180         else:
181             if enroll_obj.contract_agreed == True:  # 如果协议已经签订
182                 status = 1  # 修改报名状态 # 1 已经报名
183             else:
184                 status = 0
185             customer_form = bpm_forms.CustomerForm(instance=enroll_obj.customer)  # 生成表单
186     # customer_form = bpm_forms.CustomerForm(instance=enroll_obj.customer)  # 生成表单
187     # ————————49PerfectCRM实现CRM客户报名流程学生合同表单验证————————
188 
189         return render(request,\'bpm_sales/stu_registration.html\',locals())
190         # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
191 # ————————48PerfectCRM实现CRM客户报名流程学生合同————————
192     # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
193     else:
194         return HttpResponse(\'链接失效,非法链接,请自重!\')
195     # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
196 
197 
198 # ————————52PerfectCRM实现CRM客户报名流程学生合同审核————————
199 from django.shortcuts import redirect
200 #查询流程提示页面
201 def contract_prompt(request,enroll_id):
202     enroll_obj=models.Enrollment.objects.get(id=enroll_id)#取对象
203     enroll_form= bpm_forms.EnrollmentForm(instance=enroll_obj)#报名表对象
204     customers_form= bpm_forms.CustomerForm(instance=enroll_obj.customer)#学员的信息
205     return render(request,\'bpm_sales/contract_prompt.html\',locals())
206 # #待审核
207 def not_audit(request):
208     sign=models.Enrollment.objects.all()#所有的报名表
209     print(sign,\'sign----->\')
210     return render(request, \'bpm_sales/not_audit.html\', locals())#
211 
212 #审核合同
213 @login_required # 登陆后页面才能访问
214 def contract_review(request,enroll_id):
215     enroll_obj=models.Enrollment.objects.get(id=enroll_id)#取对象
216     contract_review = request.user.name #当前登陆人 #合同审核人
217     #payment_form=forms.PaymentForm()#生成表单
218     enroll_form= bpm_forms.EnrollmentForm(instance=enroll_obj)#报名表对象
219     customer_form= bpm_forms.CustomerForm(instance=enroll_obj.customer)#学员的信息
220     enrolled_path=\'%s/%s/\'%(settings.ENROLLED_DATA,enroll_id)#证件上传路径
221     if os.path.exists(enrolled_path):#判断目录是否存在
222         file_list=os.listdir(enrolled_path)#取目录 下的文件
223         imgs_one=file_list[0]  #图片1
224         imgs_two=file_list[1]  #图片2
225     if request.method=="POST":
226         enroll_obj.contract_approved = True  # 审核通过
227         enroll_obj.save() #保存
228         enroll = models.Enrollment.objects.filter(id=enroll_id).update(contract_review=contract_review)#合同审核人
229         print(\'审核通过。。。\')
230         return redirect(\'/bpm/not_audit/\')#跳转到待审核
231     return render(request, \'bpm_sales/contract_review.html\', locals())#
232 #驳回合同
233 def enrollment_rejection(request,enroll_id):
234     enroll_obj=models.Enrollment.objects.get(id=enroll_id)#报名表的对象
235     enroll_obj.contract_agreed=False#修改学员已经同意核同
236     enroll_obj.save() #保存
237     return redirect(\'/bpm/customer/%s/enrollment/\'%enroll_obj.customer.id)#跳转到enrollment_rejection
238 # ————————52PerfectCRM实现CRM客户报名流程学生合同审核————————
# sales_views.py

 

 

 

 1 {#contract_prompt.html#}
 2 {## # ————————52PerfectCRM实现CRM客户报名流程学生合同审核————————#}
 3 {% extends \'bpm_master/bpm_sample.html\' %}
 4 {% block right-container-content %} {#自定义内容开始 右边页面内容#}
 5     <div class="panel-default">
 6         <div class="panel-body">
 7             <table class="table table-striped table-responsive">
 8                 <thead>
 9

以上是关于Django项目:CRM(客户关系管理系统)--62--52PerfectCRM实现CRM客户报名流程学生合同审核的主要内容,如果未能解决你的问题,请参考以下文章

Django项目:CRM(客户关系管理系统)--66--56PerfectCRM实现CRM客户首列进入更改页优化路径

Django CRM学员系统项目

Django项目:CRM(客户关系管理系统)--70--60PerfectCRM实现CRM学生上课记录

Django项目:CRM(客户关系管理系统)--72--62PerfectCRM实现CRM讲师讲课记录

Django项目:CRM(客户关系管理系统)--46--37PerfectCRM实现CRM用户注册

Django项目:CRM(客户关系管理系统)--64--54PerfectCRM实现CRM客户报名链接