Beispiel #1
0
 def send_msg_v1(self, user_id, eid, content):
     """
     发送消息
     :param user_id:
     :param eid:
     :param content:
     :return:
     """
     try:
         user = UserDao.get_user_by_user_id(user_id)
         add_emails = []
         if user.role == User.Role.MANAGER:
             # 发消息人是管理员, 给所有人发送
             users = UserDao.get_all_users()
             for user_ in users:
                 email = self.send_msg(user_id, '系统管理员', user_.id, content)
                 add_emails.append(email)
         elif user.role == User.Role.STUDENT:
             # 发消息人是老师, 给当前选实验的人发送
             students = UserDao.get_all_student()
             for student in students:
                 join_list = json.loads(student.join_experiments)
                 if eid in join_list:
                     # 当前用户选修了该实验
                     email = self.send_msg(user_id, user.username,
                                           student.id, content)
                     add_emails.append(email)
         db.session.bulk_save_objects(add_emails)
         db.session.commit()
     except Exception as e:
         db.session.rollback()
         raise Exception(str(e))
Beispiel #2
0
 def get_all_experiments(self, user_id):
     """
     根据user_id的身份获取所有实验
     :param user_id:
     :return:
     """
     user = UserDao.get_user_by_user_id(user_id)
     experiments = []
     if user.role == User.Role.MANAGER:
         # 管理员可见所有
         experiments = ExperimentDao.get_all_experiments()
     elif user.role == User.Role.TEACHER:
         # 老师仅可见自己的
         experiments = ExperimentDao.get_experiments_by_teacher_id(user_id)
     elif user.role == User.Role.STUDENT:
         # 学生仅可见审批通过的
         experiments = ExperimentDao.get_experiments_by_status(
             Experiment.Status.SUCCESS)
     lab_ids = [_.lab_no for _ in experiments]
     laboratories = LaboratoryDao.get_lab_by_ids(lab_ids)
     lab_no2name = {_.id: _.name for _ in laboratories}
     res = []
     for experiment in experiments:
         # 查询所有选择该实验的学生
         students = UserDao.get_all_student()
         all_select_names = []
         for student in students:
             join_list = json.loads(student.join_experiments)
             if experiment.id in join_list:
                 all_select_names.append(student.username)
         teacher_name = UserDao.get_user_by_user_id(
             experiment.teacher_id).username
         res.append({
             'id':
             experiment.id,
             'name':
             experiment.name,
             'start_time':
             experiment.start_time.strftime('%Y-%m-%d %H:%M:%S'),
             'end_time':
             experiment.end_time.strftime('%Y-%m-%d %H:%M:%S'),
             'remark':
             experiment.remark,
             'lab_name':
             lab_no2name.get(experiment.lab_no, '未知'),
             'teacher_name':
             teacher_name,
             'status':
             Experiment.Status.__label__.get(experiment.status, '未知'),
             'all_selects':
             all_select_names
         })
     return res
Beispiel #3
0
    def get_all_experiments_pass(self, user_id):
        """
        根据user_id的身份获取所有实验
        :param user_id:
        :return:
        """
        user = UserDao.get_user_by_user_id(user_id)

        if user.role != User.Role.TEACHER:
            raise Exception("仅有老师有权限")

        experiments = ExperimentDao.get_experiments_by_teacher_id_pass(user_id)

        lab_ids = [_.lab_no for _ in experiments]
        laboratories = LaboratoryDao.get_lab_by_ids(lab_ids)
        lab_no2name = {_.id: _.name for _ in laboratories}
        res = []
        for experiment in experiments:
            # 查询所有选择该实验的学生
            students = UserDao.get_all_student()
            all_select_names = []
            for student in students:
                join_list = json.loads(student.join_experiments)
                if experiment.id in join_list:
                    all_select_names.append(student.username)
            teacher_name = UserDao.get_user_by_user_id(
                experiment.teacher_id).username
            res.append({
                'id':
                experiment.id,
                'name':
                experiment.name,
                'start_time':
                experiment.start_time.strftime('%Y-%m-%d %H:%M:%S'),
                'end_time':
                experiment.end_time.strftime('%Y-%m-%d %H:%M:%S'),
                'remark':
                experiment.remark,
                'lab_name':
                lab_no2name.get(experiment.lab_no, '未知'),
                'teacher_name':
                teacher_name,
                'status':
                Experiment.Status.__label__.get(experiment.status, '未知'),
                'all_selects':
                all_select_names
            })
        return res