1 # kingadmin.py
2 # ————————04PerfectCRM实现King_admin注册功能————————
3 from crm import models
4 #print("kingadmin crm",models.Customer)
5
6 # ————————05PerfectCRM实现King_admin注册功能获取内存————————
7 # from king_admin.base_admin import register,BaseAdmin
8 from king_admin.base_admin import site,BaseAdmin
9 # ————————05PerfectCRM实现King_admin注册功能获取内存————————
10
11 # ————————24PerfectCRM实现King_admin自定义操作数据————————
12 from django.shortcuts import render
13 # ————————24PerfectCRM实现King_admin自定义操作数据————————
14
15 # ————————28PerfectCRM实现King_admin编辑限制————————
16 from django.forms import ValidationError
17 from django.shortcuts import render,redirect
18 # ————————28PerfectCRM实现King_admin编辑限制————————
19
20 #04客户信息表
21 class CustomerAdmin(BaseAdmin):#定制Djanago admin
22 # ————————54PerfectCRM实现CRM客户报名链接————————
23 # list_display = ('id', 'qq', 'source', 'consultant', 'content', 'date') # 显示字段表头
24 list_display = ('id', 'qq', 'source', 'consultant', 'content', 'date','status','enroll') # 显示字段表头
25 # ————————54PerfectCRM实现CRM客户报名链接————————
26 # ————————11PerfectCRM实现King_admin分页显示条数————————
27 list_per_page = 2 #分页条数 # 默认分页条数10
28 # ————————11PerfectCRM实现King_admin分页显示条数————————
29 # ————————16PerfectCRM实现King_admin日期过滤————————
30 # ————————15PerfectCRM实现King_admin多条件过滤————————
31 # 过滤器(可以包含ManyToManyField) (注意加 逗号 , )
32 # list_filter = ('source','consultant','consult_courses',)
33 list_filter = ('date','source','consultant','consult_courses',)
34 # ————————15PerfectCRM实现King_admin多条件过滤————————
35 # ————————16PerfectCRM实现King_admin日期过滤————————
36 # ————————18PerfectCRM实现King_admin搜索关键字————————
37 #搜索(不能包含CharField)(注意加 逗号 , )
38 search_fields = ('name','qq',)
39 # ————————18PerfectCRM实现King_admin搜索关键字————————
40 # ————————26PerfectCRM实现King_admin自定义排序————————
41 ordering = '-qq' #自定义排序,默认'-id'
42 # ————————26PerfectCRM实现King_admin自定义排序————————
43 # ————————27PerfectCRM实现King_admin编辑复选框————————
44 filter_horizontal = ('tags',) #复选框
45 # ————————27PerfectCRM实现King_admin编辑复选框————————
46 # ————————33PerfectCRM实现King_admin编辑整张表限制————————
47 readonly_table=True#默认表单不锁定
48 # ————————33PerfectCRM实现King_admin编辑整张表限制————————
49
50 # ————————55PerfectCRM实现CRM客户报名状态颜色变化————————
51 colored_fields = {
52 'status':{'已报名':"rgba(145, 255, 0, 0.78)",
53 '未报名':"#ddd"},}
54 # ————————55PerfectCRM实现CRM客户报名状态颜色变化————————
55
56 # ————————54PerfectCRM实现CRM客户报名链接————————
57 def enroll(self):
58 '''报名'''
59 print("customize field enroll",self)
60 link_name = "报名"
61 if self.instance.status == 0:
62 link_name = "报名新课程"
63 return '''<a target="_blank" class="btn-link" href="/bpm/customer/%s/enrollment/">点击%s</a> ''' % (self.instance.id,link_name)
64 # url(r'^customer/(\d+)/enrollment/$', sales_views.enrollment, name="enrollment"), # 客户招生#报名流程一 下一步
65 # target属性用于表示所链接文件打开到的位置 #记住,“”内的文字只是表示一个对象的名子。
66 enroll.display_name = "报名链接"
67 # ————————54PerfectCRM实现CRM客户报名链接————————
68
69
70
71 # ————————24PerfectCRM实现King_admin自定义操作数据————————
72 # from django.shortcuts import render
73 actions = ['test_actions',]#定制功能 #测试返回到一个新页面
74 def test_actions(self,request,arg2):#对应的函数 #request类自己的请求 #arg2类的内容
75 return render(request,"king_admin/table_index.html")
76 test_actions.short_description = "测试显示中文"
77 # ————————24PerfectCRM实现King_admin自定义操作数据————————
78
79 # ————————28PerfectCRM实现King_admin编辑限制————————
80 # ————————31PerfectCRM实现King_admin编辑多对多限制————————
81 # readonly_fields = ('qq', 'consultant',) # 不可修改
82 readonly_fields = ('qq', 'consultant','tags',) # 不可修改
83 # ————————31PerfectCRM实现King_admin编辑多对多限制————————
84
85 # ————————29PerfectCRM实现King_admin编辑自定义限制————————
86 def default_form_validation(self,obj):
87 print('validation:制定的',obj.cleaned_data)
88 consult_course=obj.cleaned_data.get('content','')#自制验证字段
89 if len(consult_course)<10:
90 return ValidationError(#添加错误信息 返回
91 ("该字段%(field)s 咨询内容记录不能少于10个字符"),
92 code='invalid',
93 params={'field':'content',},
94 )
95 # ————————29PerfectCRM实现King_admin编辑自定义限制————————
96
97 # ————————28PerfectCRM实现King_admin编辑限制————————
98
99 # ————————30PerfectCRM实现King_admin编辑自定义字段验证————————
100 def clean_name(self,obj,*args,**kwargs):#名称验证 单个
101 name=obj.cleaned_data['name']
102 if not name:
103 obj.add_error('name','不能为空!')
104 return ValidationError(#添加错误信息 返回
105 ("%(field)s:该字段 不能为空"),
106 code='invalid',
107 params={'field':'name',},
108 )
109 elif len(name)<5:
110 obj.add_error('name','不能小于5个字符!')
111 #return ValidationError('',)
112 return ValidationError(#添加错误信息 返回
113 ("%(field)s:该字段 不能小于5个字符!"),
114 code='invalid',
115 params={'field':'name',},
116 )
117 # ————————30PerfectCRM实现King_admin编辑自定义字段验证————————
118
119 # ————————34PerfectCRM实现CRM自定义用户————————
120 #10账号表
121 class UserProfileAdmin(BaseAdmin):#定制Djanago admin
122 list_display = ('id', 'email', 'name') # 显示字段表头
123
124 # ————————36PerfectCRM实现King_admin密码修改————————
125 readonly_fields = ('password',) # 不可修改,限制
126 filter_horizontal = ('user_permissions','groups') #复选框
127 modelform_exclude_fields=['last_login']#排除#不显示 #自增日期 #base_admin.py #forms.py
128 # ————————36PerfectCRM实现King_admin密码修改————————
129
130 site.register(models.UserProfile, UserProfileAdmin)
131 # ————————34PerfectCRM实现CRM自定义用户————————
132
133 # ————————05PerfectCRM实现King_admin注册功能获取内存————————
134 # register(models.Customer,CustomerAdmin)
135 # register(models.CourseRecord)
136 site.register(models.Customer,CustomerAdmin)
137 site.register(models.CourseRecord)
138 # ————————05PerfectCRM实现King_admin注册功能获取内存————————
139
140 # ————————04PerfectCRM实现King_admin注册功能————————
141
142
143 # ————————56PerfectCRM实现CRM客户报名缴费链接————————
144 # 06学员报名信息表
145 class EnrollmentAdmin(BaseAdmin): # 定制Djanago admin
146 list_display = ('id', 'customer', 'enrolled_class', 'consultant', 'Pay_cost', 'date', 'payment') # 显示字段表头
147 colored_fields = {
148 'Pay_cost': {True: "rgba(145, 255, 0, 0.78)",
149 False: "#ddd"}, }
150 def payment(self):
151 link_name = "增加缴费"
152 if self.instance.Pay_cost == False:
153 link_name = "缴费"
154 return '''<a target="_blank" class="btn-link" href="/bpm/payment/%s/" >点击%s</a> ''' % (self.instance.id, link_name)
155 # url(r'^payment/(\d+)/$', financial_views.payment, name="payment"), # 报名流程四 缴费 #财务
156 # target属性用于表示所链接文件打开到的位置 #记住,“”内的文字只是表示一个对象的名子。
157 payment.display_name = "缴费链接"
158 site.register(models.Enrollment, EnrollmentAdmin) # 06学员报名信息表
159 # ————————56PerfectCRM实现CRM客户报名缴费链接————————