| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 | """Database module"""from datetime import datetime, timedeltafrom app import SESSIONfrom app.models import Player, Department, DepartmentStatdef get_latest_professor(state_id, department_type):    """Get latest professor from database"""    session = SESSION()    department = get_department(session, state_id, department_type)    professor = department.department_stats.order_by(DepartmentStat.date_time.desc()).first()    session.close()    return professordef get_player(session, player_id, player_name):    """Get player from database"""    player = session.query(Player).get(player_id)    if player is None:        player = Player()        player.id = player_id        player.name = player_name        session.add(player)        session.commit()    return playerdef get_department(session, state_id, department_type):    """Get department from database"""    department = session.query(Department).filter(        Department.state_id == state_id    ).filter(        Department.department_type == department_type    ).first()    if department is None:        department = Department()        department.state_id = state_id        department.department_type = department_type        session.add(department)        session.commit()    return departmentdef save_professors(state_id, department_type, professors):    """Save professors to database"""    session = SESSION()    department = get_department(session, state_id, department_type)    for professor in professors:        player = get_player(session, professor['id'], professor['name'])        department_stat = DepartmentStat()        department_stat.department_id = department.id        department_stat.date_time = professor['date_time']        department_stat.points = professor['points']        department_stat.player_id = player.id        session.add(department_stat)    session.commit()    session.close()def get_yesterday_professors(state_id, department_type):    """Get professors from yesterday"""    session = SESSION()    department = get_department(session, state_id, department_type)    until_date = datetime.today()    if until_date.hour < 19:        until_date = until_date - timedelta(1)    until_date = until_date.replace(hour=19, minute=0, second=0)    from_date = until_date - timedelta(1)    professors = session.query(DepartmentStat) \        .filter(DepartmentStat.department_id == department.id) \        .filter(DepartmentStat.date_time >= from_date) \        .filter(DepartmentStat.date_time < until_date) \        .all()    return professorsdef get_amount_of_points(state_id, department_type, player_id):    """Get amount of points in department by player id"""    session = SESSION()    department = get_department(session, state_id, department_type)    until_date = datetime.today()    if until_date.hour < 19:        until_date = until_date - timedelta(1)    until_date = until_date.replace(hour=19, minute=0, second=0)    from_date = until_date - timedelta(14)    professors = session.query(DepartmentStat) \        .filter(DepartmentStat.department_id == department.id) \        .filter(DepartmentStat.player_id == player_id) \        .filter(DepartmentStat.date_time >= from_date) \        .filter(DepartmentStat.date_time < until_date) \        .all()    total_points = 0    for professor in professors:        total_points += professor.points    return total_points
 |