diff options
author | Andy Doan <andy.doan@linaro.org> | 2015-04-16 15:22:54 -0500 |
---|---|---|
committer | Paul Sokolovsky <paul.sokolovsky@linaro.org> | 2015-05-16 11:45:35 +0000 |
commit | bc8eeb3c46e7737aa5e13b6c2d380a20807313f2 (patch) | |
tree | 83a8d84ef9142d8c1df90c3b6cdb03ca1fb93a18 | |
parent | a5ae197f1abeeee7c88cd184e1f5288987412797 (diff) |
code cleanup: break out build-info logic of file_server_get
This doesn't change the code, just helps reduce complexity of a
giant function.
Change-Id: Ibf4e15587836ba58ad07b5886bb7775b8f0fb637
-rw-r--r-- | license_protected_downloads/views.py | 62 |
1 files changed, 32 insertions, 30 deletions
diff --git a/license_protected_downloads/views.py b/license_protected_downloads/views.py index 302ae0b..4a11f06 100644 --- a/license_protected_downloads/views.py +++ b/license_protected_downloads/views.py @@ -234,6 +234,35 @@ def file_server(request, path): return file_server_get(request, path) +def _check_build_info(request, path): + try: + build_info = BuildInfo(path) + except IncorrectDataFormatException: + # If we can't parse the BuildInfo. Return a HttpResponseForbidden. + return HttpResponseForbidden('Error parsing BUILD-INFO.txt') + + auth_groups = build_info.get('auth-groups') + if auth_groups: + auth_groups = [x.split for x in auth_groups.split(',')] + log.info('Checking membership in auth groups: %s', auth_groups) + response = False + try: + for m in group_auth_modules: + response = m.process_group_auth(request, auth_groups) + if response: + break + except GroupAuthError: + log.exception("GroupAuthError") + response = render(request, 'group_auth_failure.html') + response.status_code = 500 + return response + + if response is False: + return group_auth_failed_response(request, auth_groups) + elif response is not True: + return response + + def file_server_get(request, path): url = path @@ -247,36 +276,9 @@ def file_server_get(request, path): path = result[1] if not internal and BuildInfo.build_info_exists(path): - try: - build_info = BuildInfo(path) - except IncorrectDataFormatException: - # If we can't parse the BuildInfo. Return a HttpResponseForbidden. - return HttpResponseForbidden( - "Error parsing BUILD-INFO.txt") - - auth_groups = build_info.get("auth-groups") - if auth_groups: - auth_groups = auth_groups.split(",") - auth_groups = [g.strip() for g in auth_groups] - log.info("Checking membership in auth groups: %s", auth_groups) - response = False - try: - for m in group_auth_modules: - response = m.process_group_auth(request, auth_groups) - if response: - break - except GroupAuthError: - log.exception("GroupAuthError") - response = render(request, 'group_auth_failure.html') - response.status_code = 500 - return response - - if response == False: - return group_auth_failed_response(request, auth_groups) - elif response == True: - pass - else: - return response + resp = _check_build_info(request, path) + if resp: + return resp if target_type == "dir": # Generate a link to the parent directory (if one exists) |