Day31.管理员创建课程功能
1.管理员创建课程_代码及执行流程
2.管理员创建课程_管理员创建课程admin.py
# todo 管理员创建课程 @common.auth('admin') def create_course(): print('管理员创建课程...') while True: # todo 1.让管理员先选择学校 # todo 1.1 调用接口,获取所有学校的名称并打印 flag, school_list_or_msg = common_interface.get_all_school_interface() # todo 如果False, 学校不存在, 管理员先创建学校 if not flag: print(school_list_or_msg) break # todo 如果是True, 学校存在,则开始选择学校并创建课程 else: for index,school_name in enumerate(school_list_or_msg): print('编号:{},学校名:{}'.format(index, school_name)) choice = input('请输入学校编号:').strip() # todo .isdigit 判断不是数字类型 if not choice.isdigit(): print('请输入数字') continue choice = int(choice) if choice not in range(len(school_list_or_msg)): print('请输入正确编号') continue # todo 获取选择后的学校名字, school_name = school_list_or_msg[choice] # todo 2.选择学校后,再输入课程名称 course_name = input('请输入需要创建的课程名称:').strip() # todo 3.调用创建课程接口,让管理员去创建课程 flag, msg = admin_interface.create_course_interface( # todo 传递学校的目的,是为了关联课程 school_name, course_name, admin_info.get('user') ) if flag: print(msg) break else: print(msg)
3.管理员创建课程_公共接口获取所有学校名称接口common_interface.py
'''公共接口''' import os from conf import settings # todo 获取所有学校名称接口 def get_all_school_interface(): # todo 1. 获取学校文件夹路径 school_dir = os.path.join( settings.DB_PATH, 'School' ) # todo 2. 判断文件夹是否存在 if not os.path.exists(school_dir): return False, '没有学校,请先联系管理员' else: # todo 3. 文件夹若存在,则获取文件夹中所有的文件的名字 school_list = os.listdir(school_dir) return True, school_list
4.管理员创建课程_管理员接口管理员创建课程接口admin_interface.py
'''管理员接口''' from db import models # todo 管理员创建课程接口 def create_course_interface(school_name, course_name, admin_name): # todo 1 查看课程是否存在 # todo 1.1 先获取对象中的课程列表 school_obj = models.School.select(school_name) # todo 1.2 判断当前课程是否存在课程列表中 if course_name in school_obj.course_list: return False, '当前课程已存在!' # todo 1.3 若课程不存在,则创建课程,有管理员来创建 admin_obj = models.Admin.select(admin_name) admin_obj.create_course( school_obj, course_name ) return True, '{}课程创建成功,绑定给{}校区'.format( course_name, school_name)
5.管理员创建课程_存放类models.py
'''用于存放类的 学校类、学员类、课程类、讲师类、管理员类 ''' 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 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 学校类 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 = [] # todo 课程类 class Course(Base): def __init__(self, course_name): self.user = course_name self.student_list = []
6.管理员创建课程_程序执行结果