Day31.管理员创建学校
1.管理员创建学校_代码执行流程
2.管理员创建学校_视图层admin.py
''' 管理员视图 ''' from interface import admin_interface from lib import common, common_interface # todo 管理员创建学校 @common.auth('admin') def create_school(): print('管理员创建学校...') while True: # todo 1. 用户输入学校的名称与地址 school_name = input('请输入学校名称:').strip() school_addr = input('请输入学校地址:').strip() # todo 2. 调用接口,保存学校 flag, msg = admin_interface.create_school_interface( # todo 学校名、学校地址、创建学校的管理员 school_name, school_addr, admin_info.get('user') ) if flag: print(msg) break else: print(msg)
3.管理员创建学校_管理员接口层admin_interface.py中create_school_interface函数
from db import models # todo 管理员创建学校接口 def create_school_interface(school_name, school_addr, admin_name): # todo 1. 查看当前学校是否已存在,shcool_obj 又可能是 `对象` or `None`` school_obj = models.School.select(school_name) # todo 2. 若学校存在,则返回False,告诉用户学校已存在 if school_obj: return False, '学校已存在' # todo 3. 若不存在,则创建学校,注意:(由管理员对象创建) else: admin_obj = models.Admin.select(admin_name) # todo 由管理员来调用创建学校方法,并传入学校的名字与地址 admin_obj.create_school( school_name, school_addr ) # todo 4. 返回创建学校成功给视图层 return True, '{}创建学校成功'.format(school_name)
4.管理员创建学校_models.py中父类Base和学校类School
'''用于存放类的 学校类、学员类、课程类、讲师类、管理员类 ''' from db import db_handler # todo 提供select和save方法写入父类, 让所有子类都继承 class Base: # todo 定义一个数据查找方法 ----> 登录、查看数据 @classmethod def select(cls, username): # 接收到类Admin和username # todo obj: 对象 OR None obj = db_handler.select_data( cls, username) return obj # todo 定义一个数据保存方法 ----> 注册、保存、更新数据 def save(self): # todo 调用db_handler中的save方法,并且需要对其中的方法做传值,即添加self # todo 让db_handler中的save_data进行保存对象数据 db_handler.save_data(self) # todo 学校类 class School(Base): def __init__(self, name, addr): # todo 必须写:self.user, 因为db_handler里面的select_data统一规范 self.user = name self.addr = addr # todo 课程列表:每所学校都应该有相应的课程 self.course_list = []
5.管理员创建学校_models.py中父类Base和管理员类admin
'''用于存放类的 学校类、学员类、课程类、讲师类、管理员类 ''' from db import db_handler # todo 管理员类 class Admin(Base): # todo 调用类的时候触发 # todo admin_username, admin_password def __init__(self, user, pwd): self.user = user self.pwd = pwd # todo 管理员创建学校接口 def create_school(self, school_name, school_addr): # 调用School类, 实例化一个学校对象, 并保存 school_obj = School(school_name, school_addr) school_obj.save() pass # todo 管理员创建课程接口 def create_course(self, school_obj, course_name): # todo 1. 调用课程类,实例化创建课程 course_obj = Course(course_name) course_obj.save() # todo 2. 获取当前学校对象,并将课程添加到课程列表中 school_obj.course_list.append(course_name) # todo 3. 更新学校数据 school_obj.save() # todo 管理员创建讲师接口 def create_teacher(self): pass