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'
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))
def get_departments_by_faculty(): departments = get_repository().get_departments() return jsonify(departments_info_to_list(departments, by_faculty=True))
def get_departments_list(): departments = get_repository().get_departments() return jsonify(departments_info_to_list(departments))