def _check_and_invite_coach(): """ 教练开班邀请定时任务,主要处理: 1. 教练邀请过期检查及处理; 2. 教练自动邀请; 3. 如果教练已找齐,设置邀请完成 每日早上6点到晚上12点,每分钟运行一次 :return: """ with db_session_manager.with_session() as db_session: manager = CoachInviteManager(db_session) num = manager.process_expired_invite() logger.info('process %d invites' % num) day = get_now().replace(days=+3).date() with db_session_manager.with_session() as db_session: manager = ClassAllocationManager(db_session) task_manager = ClassCreateTaskManager(db_session) tasks = task_manager.get_need_invite_coach_tasks(day) for task in tasks: coaches = manager.search_coach(task) logger.info('task(%s): %s' % (task.id, coaches)) with db_session_manager.with_session() as db_session: task_manager = ClassCreateTaskManager(db_session) invite_manager = CoachInviteManager(db_session) tasks = task_manager.get_inviting_tasks(day) for task in tasks: invites = invite_manager.get_task_success_invite(task.id) if len(invites) >= task.new_class_num: task_manager.set_task_to_invite_complete(task.id) logger.info('task: %d invite complete.' % task.id)
def _class_create(): """ 清除班级过期学员、释放教师可用时段、创建组班任务,每日凌晨2点执行一次 :return: """ with db_session_manager.with_session() as db_session: manager = ClassSuperviseManager(db_session) manager.process_expired_student() with db_session_manager.with_session() as db_session: manager = TemporarySubstituteCoachTaskManager(db_session) manager.process_need_free_available_time_task() with db_session_manager.with_session() as db_session: manager = ClassAllocationManager(db_session) manager.create_tasks(get_now().replace(days=+3).date())
def _monitor_disconnect(): logger.info('start monitor teacher disconnect.') with db_session_manager.with_session() as db_session: manager = MonitorManager(db_session) manager.notify_disconnect() logger.info('monitor teacher disconnect end.')
def _send_mail(): """ 发送邮件定时任务,每分钟运行一次。 :return: """ if config.data.get('testing'): # 测试中,不发邮件 return from_address = config.data['smtp']['user_name'] has_sent_mail_ids = [] with db_session_manager.with_session() as db_session: manager = MailMessageManager(db_session) mail_list = manager.get_need_send_mail() for mail in mail_list: try: mail_sender.send_email(mail.get_mail_addresses(), mail.title, mail.content, from_address) has_sent_mail_ids.append(mail.id) except Exception as error: logger.exception(error.message) if has_sent_mail_ids: manager.set_mail_is_send(has_sent_mail_ids)
def _notify_none(): """ 通知教务处理没有学生的班级,每十分钟运行一次 """ with db_session_manager.with_session() as db_session: manager = MonitorManager(db_session) manager.notify_none()
def _notify_disconnect(): """ 通知教务处理掉线的班级,每分钟运行一次 """ with db_session_manager.with_session() as db_session: manager = MonitorManager(db_session) manager.notify_disconnect()
def _correct_coach_status(): logger.info('correct coach status') with db_session_manager.with_session() as db_session: manager = CorrectCoachStatusTaskManager(db_session) manager.process_correct_coach_status() logger.info('correct coach status end.')
def _correct_coach_status(): """ 矫正储备、待岗、在岗老师的状态,每天凌晨2点执行一次 :return: """ with db_session_manager.with_session() as db_session: manager = CorrectCoachStatusTaskManager(db_session) manager.process_correct_coach_status()
def _next_day_class_notify(): """ 第二天课通知任务(第二天上的课,前一天晚上8点进行通知),每日晚上8点执行一次 :return: """ with db_session_manager.with_session() as db_session: manager = ClassSuperviseManager(db_session) manager.notify_next_day_class()
def _calculate_enrollment_schedule(): logger.info('correct coach status') with db_session_manager.with_session() as db_session: manager = ClassTemplateManager(db_session) today = format_date(get_now()) manager.calculate_enrollment_schedule(today) logger.info('correct coach status end.')
def _free_available_time(time_text): logger.info('free available time') with db_session_manager.with_session() as db_session: manager = TemporarySubstituteCoachTaskManager(db_session) manager.process_need_free_available_time_task(time_text) logger.info('free available time end.')
def _everyday_add_sale_cards(): """ 每天矫正销售卡信息 """ with db_session_manager.with_session() as db_session: manager = SaleCardManager(db_session) manager.everyday_add_sale_cards() logger.info('daily_everyday_add_sale_cards')
def _init_place(time_text): logger.info('start init place') with db_session_manager.with_session() as db_session: manager = ClassTemplatePlaceManager(db_session) manager.init_all_place_data(time_text) logger.info('init place end.')
def _check_not_on_time_coaches(): """ 检查没有准时上课的教练(教练必须上课前10分钟登录系统),每日早上6点至晚上11点的1至59分每15分钟执行一次 :return: """ with db_session_manager.with_session() as db_session: manager = ClassSuperviseManager(db_session) manager.check_not_on_time_coaches()
def get_season(self, season_ids): with db_session_manager.with_session() as db_session: manager = SeasonManager(db_session) if not season_ids: return [] result = manager.get_by_ids(season_ids) # logger.debug('%s %s' %(season_ids, result)) return [_trans_base_season(item) for item in result]
def _sync_all_class(): with db_session_manager.with_session() as db_session: class_supervise_manager = ClassSuperviseManager(db_session) class_manager = ClassManger(db_session) all_classes = class_manager.get_all(10000, need_extend=False) for class_info, class_template, season in all_classes: _sync_class_info(class_supervise_manager, class_info) db_session.commit()
def _notify_need_test_coaches(): logger.info('start notify need test coaches.') with db_session_manager.with_session() as db_session: manager = CoachInviteManager(db_session) manager.notify_need_test_coaches() logger.info('notify need test coaches end.')
def _create_task(day): logger.info('start create tasks. day: %s' % day) with db_session_manager.with_session() as db_session: manager = ClassAllocationManager(db_session) manager.create_tasks(day) logger.info('create tasks end.')
def _remove_expired_students(time_text): logger.info('remove expired students') with db_session_manager.with_session() as db_session: manager = ClassSuperviseManager(db_session) manager.process_expired_student(time_text) logger.info('remove expired students end.')
def _task_manager_notify(): logger.info('start task manager notify') with db_session_manager.with_session() as db_session: manager = ClassCreateTaskManager(db_session) manager.task_manager_notify() logger.info('task manager notify end.')
def _next_day_notify(): logger.info('start next day class notify') with db_session_manager.with_session() as db_session: manager = ClassSuperviseManager(db_session) manager.notify_next_day_class() logger.info('next day class notify end.')
def _check_not_on_time_coaches(now_time): logger.info('start check not on time coaches. now time: %s' % now_time) with db_session_manager.with_session() as db_session: manager = ClassSuperviseManager(db_session) manager.check_not_on_time_coaches(now_time) logger.info('create tasks end.')
def _task_coach_not_ready_notify(): """ 开班预警通知,新开班如果在开班前26小时还没有找齐教练,通知教务,每日的早上2点至下午6点,每15分钟执行一次 :return: """ with db_session_manager.with_session() as db_session: manager = ClassCreateTaskManager(db_session) manager.task_manager_notify()
def _init_class_template_place(): """ 初始化班型剩余名额占用缓存数据,每天凌晨2点执行一次 :return: """ with db_session_manager.with_session() as db_session: manager = ClassTemplatePlaceManager(db_session) manager.init_all_place_data()
def _daily_notify_coach_continue_class_start(): """ 提前7天、3天提醒教练续接班即将开课 """ with db_session_manager.with_session() as db_session: manager = ContinueClassManager(db_session) day = get_now().date() manager.notify_coach_continue_class_start(day) logger.info('daily check coach continue class')
def add_season(self, season): with db_session_manager.with_session() as db_session: manager = SeasonManager(db_session) season_id = manager.add_season(year=season.year, season_type=season.seasonType, start_day=season.startDay, end_day=season.endDay, except_days=season.exceptDays) return season_id
def _check_invite(): logger.info('start check invite.') with db_session_manager.with_session() as db_session: manager = CoachInviteManager(db_session) num = manager.process_expired_invite() print('process %d invites' % num) logger.info('check invite end.')
def _daily_check_expired_class(): """ 关闭过期班级 """ with db_session_manager.with_session() as db_session: manager = ClassSuperviseManager(db_session) day = get_now().date() manager.auto_close_expired_classes(day) logger.info('daily check expired class')
def _daily_notify_no_continue_class_coaches(): """ 提醒教务:已短信提醒教练设置续接班3次 当前续接班仍为0的教练 """ with db_session_manager.with_session() as db_session: manager = ContinueClassManager(db_session) day = get_now().date() manager.notify_admin_no_set_continue_class_coaches(day) logger.info('daily check coach continue class')
def _class_enrollment_schedule_calculate(): """ 计算学生报名情况,每天凌晨2点执行一次 :return: """ with db_session_manager.with_session() as db_session: today_date = get_now().strftime('%Y-%m-%d') manager = ClassTemplateManager(db_session) manager.calculate_enrollment_schedule(today_date)