Esempio n. 1
0
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)
Esempio n. 2
0
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())
Esempio n. 3
0
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.')
Esempio n. 4
0
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)
Esempio n. 5
0
def _notify_none():
    """
    通知教务处理没有学生的班级,每十分钟运行一次
    """
    with db_session_manager.with_session() as db_session:
        manager = MonitorManager(db_session)
        manager.notify_none()
Esempio n. 6
0
def _notify_disconnect():
    """
    通知教务处理掉线的班级,每分钟运行一次
    """
    with db_session_manager.with_session() as db_session:
        manager = MonitorManager(db_session)
        manager.notify_disconnect()
Esempio n. 7
0
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.')
Esempio n. 8
0
def _correct_coach_status():
    """
    矫正储备、待岗、在岗老师的状态,每天凌晨2点执行一次
    :return:
    """
    with db_session_manager.with_session() as db_session:
        manager = CorrectCoachStatusTaskManager(db_session)
        manager.process_correct_coach_status()
Esempio n. 9
0
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()
Esempio n. 10
0
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.')
Esempio n. 11
0
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.')
Esempio n. 12
0
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')
Esempio n. 13
0
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.')
Esempio n. 14
0
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()
Esempio n. 15
0
 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]
Esempio n. 16
0
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()
Esempio n. 17
0
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.')
Esempio n. 18
0
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.')
Esempio n. 19
0
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.')
Esempio n. 20
0
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.')
Esempio n. 21
0
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.')
Esempio n. 22
0
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.')
Esempio n. 23
0
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()
Esempio n. 24
0
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()
Esempio n. 25
0
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')
Esempio n. 26
0
 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
Esempio n. 27
0
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.')
Esempio n. 28
0
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')
Esempio n. 29
0
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')
Esempio n. 30
0
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)