1 #base_admin.py
2 # ————————04PerfectCRM实现King_admin注册功能————————
3
4 #Django admin 注册功能的形式
5 # sites = {
6 # 'crm':{
7 # 'customers':CustomerAdmin,
8 # 'customerfollowup':CustomerFollowUPAdmin,
9 # }
10 # }
11
12 class AdminRegisterException(Exception): #自定义异常
13 def __init__(self,msg):
14 self.message = msg
15
16 class BaseAdmin(object):#自定义方法
17 list_display = ()
18
19 # ————————05PerfectCRM实现King_admin注册功能获取内存————————
20 class AdminSite(object):
21 def __init__(self):
22 self.registered_sites = {} #传到views 里调用
23 def register(self,model,admin_class=None): #默认值None 使用 BaseAdmin
24 app_name = model._meta.app_label#用内置方法获取 APP名字 (crm)
25 model_name = model._meta.model_name#用内置方法获取 表名 (Customer)
26 if app_name not in self.registered_sites:
27 self.registered_sites[app_name] = {} #创建 crm={}
28 if model_name in self.registered_sites[app_name]:
29 raise AdminRegisterException("app [%s] model [%s] has already registered!异常"
30 %(app_name,model_name))#自定义异常,
31 if not admin_class:
32 admin_class = BaseAdmin #默认值None 使用 BaseAdmin
33 # self.registered_sites[app_name][model_name] = admin_class #注册APP
34 # site = AdminSite() # 实例化类 单例模式
35
36
37 # ————————05PerfectCRM实现King_admin注册功能获取内存————————
38 #registered_sites {'crm': {'customer': <class 'crm.kingadmin.CustomerAdmin'>, 'courserecord': <class 'kingadmin.base_admin.BaseAdmin'>}}
39 #把类名放到class的对象里,然后通过class的对象传到前端
40 # admin_class.model = model
41 # self.registered_sites[app_name][model_name] = admin_class #注册APP
42 #
43 # site = AdminSite() #实例化类 单例模式
44 # ————————05PerfectCRM实现King_admin注册功能获取内存————————
45
46 # ————————06PerfectCRM实现King_admin注册功能获取内存优化处理————————
47 #没有实例化会使用同一个内存地址
48 admin_obj = admin_class() #先实例化
49 admin_obj.model = model #参数赋值给实例
50 self.registered_sites[app_name][model_name] = admin_obj#注册APP
51 #实例化后,调用会使用不同的内存地址
52
53 site = AdminSite() #实例化类 单例模式
54 # ————————06PerfectCRM实现King_admin注册功能获取内存优化处理————————
55
56 # registered_sites={}
57 # def register(model,admin_class=None): #默认值None 使用 BaseAdmin
58 # app_name = model._meta.app_label#用内置方法获取 APP名字 (crm)
59 # model_name = model._meta.model_name#用内置方法获取 表名 (Customer)
60 # if app_name not in registered_sites:
61 # registered_sites[app_name] = {} #创建 crm={}
62 # if model_name in registered_sites[app_name]:
63 # raise AdminRegisterException("app [%s] model [%s] has already registered!异常"
64 # %(app_name,model_name))#自定义异常
65 # if not admin_class:
66 # admin_class = BaseAdmin #默认值None 使用class BaseAdmin
67 # registered_sites[app_name][model_name] = admin_class #注册APP
68
69 # ————————05PerfectCRM实现King_admin注册功能获取内存————————
70
71 # ————————04PerfectCRM实现King_admin注册功能————————