Django项目:CRM(客户关系管理系统)--68--58PerfectCRM实现king_admin批量生成上课记录

  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 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     enroll.display_name = "报名链接"
 66     # ————————54PerfectCRM实现CRM客户报名链接————————
 67 
 68 
 69 
 70     # ————————24PerfectCRM实现King_admin自定义操作数据————————
 71     # from django.shortcuts import render
 72     actions = ['test_actions',]#定制功能    #测试返回到一个新页面
 73     def test_actions(self,request,arg2):#对应的函数 #request类自己的请求  #arg2类的内容
 74         return render(request,"king_admin/table_index.html")
 75     test_actions.short_description = "测试显示中文"
 76     # ————————24PerfectCRM实现King_admin自定义操作数据————————
 77 
 78     # ————————28PerfectCRM实现King_admin编辑限制————————
 79     # ————————31PerfectCRM实现King_admin编辑多对多限制————————
 80     # readonly_fields = ('qq', 'consultant',)  # 不可修改
 81     readonly_fields = ('qq', 'consultant','tags',)  # 不可修改
 82     # ————————31PerfectCRM实现King_admin编辑多对多限制————————
 83 
 84     # ————————29PerfectCRM实现King_admin编辑自定义限制————————
 85     def default_form_validation(self,obj):
 86         print('validation:制定的',obj.cleaned_data)
 87         consult_course=obj.cleaned_data.get('content','')#自制验证字段
 88         if len(consult_course)<10:
 89             return ValidationError(#添加错误信息 返回
 90                                 ("该字段%(field)s 咨询内容记录不能少于10个字符"),
 91                                 code='invalid',
 92                                 params={'field':'content',},
 93                             )
 94     # ————————29PerfectCRM实现King_admin编辑自定义限制————————
 95 
 96     # ————————28PerfectCRM实现King_admin编辑限制————————
 97 
 98     # ————————30PerfectCRM实现King_admin编辑自定义字段验证————————
 99     def clean_name(self,obj,*args,**kwargs):#名称验证 单个
100         name=obj.cleaned_data['name']
101         if not name:
102             obj.add_error('name','不能为空!')
103             return ValidationError(#添加错误信息 返回
104                                 ("%(field)s:该字段 不能为空"),
105                                 code='invalid',
106                                 params={'field':'name',},
107                             )
108         elif len(name)<5:
109             obj.add_error('name','不能小于5个字符!')
110             #return ValidationError('',)
111             return ValidationError(#添加错误信息 返回
112                                 ("%(field)s:该字段 不能小于5个字符!"),
113                                 code='invalid',
114                                 params={'field':'name',},
115                             )
116     # ————————30PerfectCRM实现King_admin编辑自定义字段验证————————
117 
118 # ————————34PerfectCRM实现CRM自定义用户————————
119 #10账号表
120 class UserProfileAdmin(BaseAdmin):#定制Djanago admin
121     list_display = ('id', 'email', 'name')  # 显示字段表头
122 
123     # ————————36PerfectCRM实现King_admin密码修改————————
124     readonly_fields = ('password',)   # 不可修改,限制
125     filter_horizontal = ('user_permissions','groups') #复选框
126     modelform_exclude_fields=['last_login']#排除#不显示 #自增日期 #base_admin.py #forms.py
127     # ————————36PerfectCRM实现King_admin密码修改————————
128 
129 site.register(models.UserProfile, UserProfileAdmin)
130 # ————————34PerfectCRM实现CRM自定义用户————————
131 
132 # ————————05PerfectCRM实现King_admin注册功能获取内存————————
133 # register(models.Customer,CustomerAdmin)
134 # register(models.CourseRecord)
135 site.register(models.Customer,CustomerAdmin)
136 
137 # ————————58PerfectCRM实现king_admin批量生成上课记录————————
138 # site.register(models.CourseRecord)
139 # ————————58PerfectCRM实现king_admin批量生成上课记录————————
140 
141 # ————————05PerfectCRM实现King_admin注册功能获取内存————————
142 
143 # ————————04PerfectCRM实现King_admin注册功能————————
144 
145 # ————————56PerfectCRM实现CRM客户报名缴费链接————————
146 # 06学员报名信息表
147 class EnrollmentAdmin(BaseAdmin):  # 定制Djanago admin
148     list_display = ('id', 'customer', 'enrolled_class', 'consultant', 'Pay_cost', 'date', 'payment')  # 显示字段表头
149 
150     # ————————58PerfectCRM实现king_admin批量生成上课记录————————
151     list_filter = ('enrolled_class','consultant', 'Pay_cost',) # 过滤器(可以包含ManyToManyField) (注意加 逗号 , )
152     # ————————58PerfectCRM实现king_admin批量生成上课记录————————
153 
154     colored_fields = {
155         'Pay_cost': {True: "rgba(145, 255, 0, 0.78)",
156                      False: "#ddd"}, }
157     def payment(self):
158         link_name = "增加缴费"
159         if self.instance.Pay_cost == False:
160             link_name = "缴费"
161         return '''<a class="btn-link" href="/bpm/payment/%s/">点击%s</a> ''' % (self.instance.id, link_name)
162         # url(r'^payment/(\d+)/$', financial_views.payment, name="payment"),  # 报名流程四    缴费   #财务
163     payment.display_name = "缴费链接"
164 site.register(models.Enrollment, EnrollmentAdmin)  # 06学员报名信息表
165 # ————————56PerfectCRM实现CRM客户报名缴费链接————————
166 
167 # ————————58PerfectCRM实现king_admin批量生成上课记录————————
168 # 07缴费记录表
169 class PaymentAdmin(BaseAdmin):
170     list_display = ['id', 'customer', 'course', 'amount', 'consultant', 'financial', 'date']  # 显示字段表头
171     list_filter = ('customer', 'course', 'consultant', 'financial',)  # 过滤器(可以包含ManyToManyField) (注意加 逗号 , )
172 
173 from django.shortcuts import render, HttpResponse, redirect
174 # 08每节课上课纪录表
175 class CourseRecordAdmin(BaseAdmin):
176     list_display = ['id', 'from_class', 'day_num', 'teacher', 'has_homework', 'homework_title', 'homework_content','outline', 'date']  # 显示字段表头
177     list_filter = ('from_class', 'teacher', 'date')  # 过滤器(可以包含ManyToManyField) (注意加 逗号 , )
178     def initialize_studyrecords(self, request, queryset):  # 制定功能
179         print('initialize_studyrecords', self, request, queryset)
180         if len(queryset) > 1:
181             return HttpResponse("同时只能选择一个班级!")
182         print('获取对应的学员', queryset[0].from_class.enrollment_set.all())  # _set反向查询
183         new_obj_list = []  # 用于批量创建事务  #防止数据库事物回滚
184         for enrll_obj in queryset[0].from_class.enrollment_set.all():  # 创建学习记录
185             #     models.StudyRecord.objects.get_or_create(       #get_or_ #防止报错
186             #         student=enrll_obj,#对应学员
187             #         course_record=queryset[0],
188             #         attendance=0,#签到状态,默认签到,
189             #         score=0,#成绩
190             #     )
191 
192             # 防止数据库事物回滚    #"""09学习纪录"""
193             new_obj_list.append(models.StudyRecord(
194                 student=enrll_obj,  # 对应学员
195                 course_record=queryset[0],  # 班级#节课
196                 attendance=0,  # 签到状态,默认签到,
197                 score=0,  # 成绩
198             ))
199         try:
200             models.StudyRecord.objects.bulk_create(new_obj_list)  # bulk_create批量创建数据库事物 #统一最后保存
201         except Exception as e:
202             return HttpResponse('批量创建失败,本节课可能有相应的上课记录')
203 
204         return redirect("/king_admin/crm/studyrecord/?course_record=%s" % queryset[0].id)  # 学习记录 #加上过滤
205 
206     actions = ['initialize_studyrecords', ]
207     initialize_studyrecords.short_description = "创建班级本节上课记录"  # 显示别名
208 # 09学习纪录
209 class StudyRecordAdmin(BaseAdmin):
210     list_display = ['id', 'student', 'course_record', 'attendance', 'score', 'date']  # 显示字段表头
211 
212     list_filter = ['course_record', 'attendance', 'score', 'student']  # 过滤器(可以包含ManyToManyField) (注意加 逗号 , )
213 
214     list_editable = ['score', 'attendance']  # 可编辑   #用于上课点名 批改成绩
215 
216 site.register(models.Payment, PaymentAdmin)  # 07缴费记录表
217 site.register(models.CourseRecord, CourseRecordAdmin)  # 08每节课上课纪录表
218 site.register(models.StudyRecord, StudyRecordAdmin)  # 09学习纪录
219 # ————————58PerfectCRM实现king_admin批量生成上课记录————————
# kingadmin.py

猜你喜欢

转载自www.cnblogs.com/ujq3/p/8987019.html