From 2bfbb4c7ed6999cd2c83518aee34c1ea3dbe59ee Mon Sep 17 00:00:00 2001 From: Gabriel Augendre Date: Mon, 19 Sep 2016 00:37:39 +0200 Subject: [PATCH] Extract year and group validation to function --- app.py | 37 ++++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/app.py b/app.py index e4ffe30..62da552 100644 --- a/app.py +++ b/app.py @@ -27,19 +27,8 @@ def hello(): year = request.args.get('year', '') group = request.args.get('group', '') - try: - int(year) - if year not in ALLOWED_YEARS: - raise ValueError('year not allowed') - except ValueError: - year = YEAR - - try: - int(group) - if group not in ALLOWED_GROUPS: - raise ValueError('group not allowed') - except ValueError: - group = GROUP + year = validate(year, ALLOWED_YEARS, YEAR) + group = validate(group, ALLOWED_GROUPS, GROUP) url += "&promo={year}&groupe={group}".format(year=year, group=group) cal_str = urllib.request.urlopen(url).read() @@ -93,5 +82,27 @@ def should_add(event): course_code not in excluded_courses \ and course_type not in excluded_types + +def validate(item, validation_list, default): + """ + Validates an item from user input against a list of possible values. + + :param item: The item to validate. + :type item: object + :param validation_list: The list of possible values. + :type item: list(object) + :param default: The default value to fallback on if item is not in list. + :type default: object + :return: The item if it is valid (in the list), or default + :rtype: object + """ + try: + int(item) + if item not in validation_list: + raise ValueError(item.__name__ + ' not allowed') + except ValueError: + return default + return item + if __name__ == "__main__": app.run('0.0.0.0', PORT)