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.管理员创建课程_程序执行结果

posted on 2024-07-03 21:35  与太阳肩并肩  阅读(1)  评论(0编辑  收藏  举报

导航