aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Doan <andy.doan@linaro.org>2015-04-16 15:22:54 -0500
committerPaul Sokolovsky <paul.sokolovsky@linaro.org>2015-05-16 11:45:35 +0000
commitbc8eeb3c46e7737aa5e13b6c2d380a20807313f2 (patch)
tree83a8d84ef9142d8c1df90c3b6cdb03ca1fb93a18
parenta5ae197f1abeeee7c88cd184e1f5288987412797 (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.py62
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)