zoukankan      html  css  js  c++  java
  • Django项目:CRM(客户关系管理系统)--60--50PerfectCRM实现CRM客户报名流程学生合同URL随机码

     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 ]
    18 # ————————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 
     51 
     52 # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
     53 # 报名填写 销售
     54 @login_required  # 登陆后页面才能访问
     55 def enrollment(request, customer_id):
     56     msgs = {}  # 错误信息
     57     customer_obj = models.Customer.objects.get(id=customer_id)  # 取到客户信息记录 #返回到页面#报名人
     58     consultant_obj = models.UserProfile.objects.get(id=request.user.id)  # 报名课程顾问
     59 
     60     stmp_mail = {}  # 邮件发送成功
     61     stmpemail = stmp()  # 实例化发送邮件的功能
     62     email = request.POST.get('email')  # 让页面POST提交的值,在页面GET后仍然存在显示
     63     if request.method == "POST":
     64         enroll_form = bpm_forms.EnrollmentForm(request.POST)  # 获取数据
     65         if enroll_form.is_valid():  # 表单验证
     66 
     67             # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
     68             # msg = "http://127.0.0.1:8000/bpm/customer/registration/{enroll_obj_id}/"
     69             msg = "http://127.0.0.1:8000/bpm/customer/registration/{enroll_obj_id}/{random_str}/ "
     70             random_str = ''.join(random.sample(string.ascii_lowercase + string.digits, 8))  # 生成8位随机字符串 #URL使用
     71             url_str = '''customer/registration/{enroll_obj_id}/{random_str}/'''  # 报名链接
     72             # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
     73 
     74             try:
     75                 enroll_form.cleaned_data['customer'] = customer_obj  # 添加学员对象 记录 #报名人
     76                 enroll_form.cleaned_data['consultant'] = consultant_obj  # 报名课程顾问
     77                 enroll_obj = models.Enrollment.objects.create(**enroll_form.cleaned_data)  # 创建记录
     78 
     79                 # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
     80                 # msgs['msg']=msg.format(enroll_obj_id=enroll_obj.id)#报名记录对应的id,随机字符串,报名链接
     81                 sort_url = enroll_obj.id  # 获取报名表对应的ID
     82                 cache.set(enroll_obj.id, random_str, 61000)  # 加入过期时间   #URL使用    # cache缓存
     83                 msgs['msg'] = msg.format(enroll_obj_id=enroll_obj.id, random_str=random_str)  # 报名记录对应的id,随机字符串,报名链接
     84                 url_str = url_str.format(enroll_obj_id=enroll_obj.id, random_str=random_str)  # 报名链接
     85                 print(url_str)
     86                 # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
     87             except IntegrityError as e:
     88                 # 取到这条记录
     89                 enroll_obj = models.Enrollment.objects.get(customer_id=customer_obj.id,
     90                                                            enrolled_class_id=enroll_form.cleaned_data[
     91                                                                'enrolled_class'].id)
     92                 enroll_form.add_error('__all__', '记录已经存在,不能重复创建!')
     93 
     94                 # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
     95                 # msgs['msg']=msg.format(enroll_obj_id=enroll_obj.id)#报名记录对应的id
     96                 cache.set(enroll_obj.id, random_str, 61000)  # 加入过期时间  #URL使用    # cache缓存
     97                 msgs['msg'] = msg.format(enroll_obj_id=enroll_obj.id, random_str=random_str)  # 报名记录对应的id
     98                 url_str = url_str.format(enroll_obj_id=enroll_obj.id, random_str=random_str)  # 报名链接
     99                 # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
    100 
    101             if email:
    102                 # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
    103                 # msg_mail = "http://127.0.0.1:8000/bpm/customer/registration/%s" %enroll_obj.id
    104                 msg_mail = "http://127.0.0.1:8000/bpm/customer/registration/%s/%s" %(enroll_obj.id,random_str)
    105                 # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
    106                 stmpemail.stmps(request, email, msg_mail)  # 发送邮件
    107                 stmp_mail['ok'] = "邮件已发送成功!"
    108 
    109     else:
    110         enroll_form = bpm_forms.EnrollmentForm()  # modelform表单
    111     return render(request, 'bpm_sales/enrollment.html', locals())
    112 
    113 
    114 # ————————47PerfectCRM实现CRM客户报名流程————————
    115 
    116 # ————————48PerfectCRM实现CRM客户报名流程学生合同————————
    117 #学员合同签定
    118 # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
    119 from django.shortcuts import HttpResponse #页面返回
    120 # def stu_registration(request,enroll_id):
    121 def stu_registration(request,enroll_id,random_str):
    122     # enroll_obj=models.Enrollment.objects.get(id=enroll_id)#获取报名记录
    123     if cache.get(enroll_id) == random_str:  # 判断链接失效了没有
    124         enroll_obj = models.Enrollment.objects.get(id=enroll_id)  # 报名记录
    125 # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
    126 
    127     # ————————49PerfectCRM实现CRM客户报名流程学生合同表单验证————————
    128         # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
    129         if request.method == "POST":
    130             customer_form = bpm_forms.CustomerForm(request.POST, instance=enroll_obj.customer)  # 生成表单验证
    131             if customer_form.is_valid():  # 表单验证通过
    132                 customer_form.save()  # 保存
    133                 enroll_obj.contract_agreed = True  # 同意协议
    134                 enroll_obj.save()  # 保存
    135                 status = 1  # 修改报名状态 # 1 已经报名
    136                 return render(request, 'bpm_sales/stu_registration.html', locals())
    137 
    138         else:
    139             if enroll_obj.contract_agreed == True:  # 如果协议已经签订
    140                 status = 1  # 修改报名状态 # 1 已经报名
    141             else:
    142                 status = 0
    143             customer_form = bpm_forms.CustomerForm(instance=enroll_obj.customer)  # 生成表单
    144     # customer_form = bpm_forms.CustomerForm(instance=enroll_obj.customer)  # 生成表单
    145     # ————————49PerfectCRM实现CRM客户报名流程学生合同表单验证————————
    146 
    147         return render(request,'bpm_sales/stu_registration.html',locals())
    148         # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
    149 # ————————48PerfectCRM实现CRM客户报名流程学生合同————————
    150     # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
    151     else:
    152         return HttpResponse('链接失效,非法链接,请自重!')
    153     # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
    # sales_views.py

  • 相关阅读:
    啥叫ORM
    git reset --hard HEAD^ 在cmd中执行报错
    windows下生成文件目录树
    批量解决win10图标上有两个蓝色箭头的方法
    Sublime Text 3 安装包
    Sublime Text 3 部分安装过程记录
    sense8影评摘抄
    如何取消chrome的自动翻译
    把本地仓库同步到github上去
    关于PDF阅读器
  • 原文地址:https://www.cnblogs.com/ujq3/p/8885514.html
Copyright © 2011-2022 走看看