def get_schedule(group_id, season):
    if season == 'autumn':
        season_key = '1'
    elif season == 'spring':
        season_key = '2'
    else:
        return error_response(422, 'INVALID_SEASON')

    group_name = get_repository().get_group_name(group_id)
    if group_name is None:
        return error_response(422, 'NO_SUCH_GROUP')

    range_ = get_repository().get_group_date_range(group_id, season)
    if range_ is None:
        return error_response(422, 'NO_SUCH_SCHEDULE')

    try:
        return jsonify({
            'group':
            group_name,
            'date_range':
            range_,
            'weeks':
            fetch_group_schedule(group_id, season_key, range_)
        })
    except ParseException as ex:
        return error_response(422, str(ex))
def prefetch(force=False):
    groups = extract_groups(utils.university.get_groups_page())
    groups_date_ranges = extract_date_ranges(utils.university.get_groups_page())

    get_repository().update_groups_info(groups, groups_date_ranges, force)

    departments = extract_departments(utils.university.get_departments_page())
    departments_date_ranges = extract_departments_date_ranges(
        utils.university.get_departments_page()
    )

    get_repository().update_departments_info(
        departments, departments_date_ranges, force
    )

    return len(groups), len(departments)
    def test_prefetch(self, flask_app, groups_page, departments_page,
                      groups_info, departments_info):
        responses.add(responses.GET, GROUPS_INFO_URL, groups_page,
                      content_type='text/html; charset=utf8')
        responses.add(responses.GET, DEPARTMENTS_INFO_URL, departments_page,
                      content_type='text/html; charset=utf8')

        with flask_app.app_context():
            get_repository().drop_all()

            prefetch.prefetch()

            groups = sorted(get_repository().get_groups())
            departments = sorted(get_repository().get_departments())

            assert groups == groups_info, 'Invalid data'
            assert departments == departments_info, 'Invalid data'
    def test_prefetch_command(self, flask_app, groups_page, departments_page,
                              groups_info, departments_info):
        responses.add(responses.GET, GROUPS_INFO_URL, groups_page,
                      content_type='text/html; charset=utf8')
        responses.add(responses.GET, DEPARTMENTS_INFO_URL, departments_page,
                      content_type='text/html; charset=utf8')

        with flask_app.app_context():
            get_repository().drop_all()

        runner = flask_app.test_cli_runner()
        result = runner.invoke(args=['prefetch', '--force'])
        assert result.exit_code == 0
        assert result.exception is None

        with flask_app.app_context():
            groups = sorted(get_repository().get_groups())
            departments = sorted(get_repository().get_departments())

            assert groups == groups_info, 'Invalid data'
            assert departments == departments_info, 'Invalid data'
Example #5
0
def get_schedule(group_id, season):
    if season == 'autumn':
        season_key = '1'
    elif season == 'spring':
        season_key = '2'
    else:
        return error_response(422, 'INVALID_SEASON')

    group_name = get_repository().get_group_name(group_id)
    if group_name is None:
        return error_response(422, 'NO_SUCH_GROUP')

    range_ = get_repository().get_group_date_range(group_id, season)
    if range_ is None:
        return error_response(422, 'NO_SUCH_SCHEDULE')

    try:
        w, d = date.get_date_indexes(range_[0])
        today = date.get_date_by_indexes(range_[0], w, d)
        return jsonify({
            'group':
            group_name,
            'date_range': {
                'begin': range_[0],
                'end': range_[1]
            },
            'today': {
                'week': w,
                'dayOfWeek': d,
                'date': today
            },
            'weeks':
            fetch_group_schedule(group_id, season_key, range_)
        })
    except ParseException as ex:
        return error_response(422, str(ex))
def get_groups_by_faculty():
    groups = get_repository().get_groups()
    return jsonify(groups_info_to_dict(groups, by_faculty=True))
def get_groups_list():
    groups = get_repository().get_groups()
    return jsonify(groups_info_to_dict(groups))
Example #8
0
def get_departments_by_faculty():
    departments = get_repository().get_departments()
    return jsonify(departments_info_to_list(departments, by_faculty=True))
Example #9
0
def get_departments_list():
    departments = get_repository().get_departments()
    return jsonify(departments_info_to_list(departments))