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

 

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

导航