diff --git a/common/djangoapps/external_auth/views.py b/common/djangoapps/external_auth/views.py index 35e59db0ca..9e41d31c77 100644 --- a/common/djangoapps/external_auth/views.py +++ b/common/djangoapps/external_auth/views.py @@ -157,7 +157,7 @@ def edXauth_signup(request, eamap=None): log.debug('ExtAuth: doing signup for %s' % eamap.external_email) - return student_views.main_index(request, extra_context=context) + return student_views.index(request, extra_context=context) #----------------------------------------------------------------------------- # MIT SSL @@ -193,7 +193,7 @@ def edXauth_ssl_login(request): The certificate provides user email and fullname; this populates the ExternalAuthMap. The user is nevertheless still asked to complete the edX signup. - Else continues on with student.views.main_index, and no authentication. + Else continues on with student.views.index, and no authentication. """ certkey = "SSL_CLIENT_S_DN" # specify the request.META field to use @@ -207,7 +207,7 @@ def edXauth_ssl_login(request): pass if not cert: # no certificate information - go onward to main index - return student_views.main_index(request) + return student_views.index(request) (user, email, fullname) = ssl_dn_extract_info(cert) @@ -217,4 +217,4 @@ def edXauth_ssl_login(request): credentials=cert, email=email, fullname=fullname, - retfun = functools.partial(student_views.main_index, request)) + retfun = functools.partial(student_views.index, request)) diff --git a/common/djangoapps/student/views.py b/common/djangoapps/student/views.py index 0069935b0b..e7864337b3 100644 --- a/common/djangoapps/student/views.py +++ b/common/djangoapps/student/views.py @@ -22,7 +22,6 @@ from django.db import IntegrityError from django.http import HttpResponse, Http404 from django.shortcuts import redirect from mitxmako.shortcuts import render_to_response, render_to_string -from django.core.urlresolvers import reverse from bs4 import BeautifulSoup from django.core.cache import cache @@ -30,7 +29,6 @@ from django_future.csrf import ensure_csrf_cookie from student.models import (Registration, UserProfile, PendingNameChange, PendingEmailChange, CourseEnrollment) -from util.cache import cache_if_anonymous from xmodule.course_module import CourseDescriptor from xmodule.modulestore.exceptions import ItemNotFoundError from xmodule.modulestore.django import modulestore @@ -54,23 +52,7 @@ def csrf_token(context): ' name="csrfmiddlewaretoken" value="%s" />' % (csrf_token)) -@ensure_csrf_cookie -@cache_if_anonymous -def index(request): - - ''' Redirects to main page -- info page if user authenticated, or marketing if not - ''' - - if settings.COURSEWARE_ENABLED and request.user.is_authenticated(): - return redirect(reverse('dashboard')) - - if settings.MITX_FEATURES.get('AUTH_USE_MIT_CERTIFICATES'): - from external_auth.views import edXauth_ssl_login - return edXauth_ssl_login(request) - - return main_index(request, user=request.user) - -def main_index(request, extra_context={}, user=None): +def index(request, extra_context={}, user=None): ''' Render the edX main page. diff --git a/lms/djangoapps/branding/__init__.py b/lms/djangoapps/branding/__init__.py index a19cff4d51..3a4acd2964 100644 --- a/lms/djangoapps/branding/__init__.py +++ b/lms/djangoapps/branding/__init__.py @@ -26,17 +26,27 @@ def get_visible_courses(domain=None): return courses +def get_university(domain=None): + """ + Return the university name specified for the domain, or None + if no university was specified + """ + if not settings.MITX_FEATURES['SUBDOMAIN_BRANDING'] or domain is None: + return None + + subdomain = get_subdomain(domain) + return settings.SUBDOMAIN_BRANDING.get(subdomain) + + def get_logo_url(domain=None): """ Return the url for the branded logo image to be used """ - if not settings.MITX_FEATURES['SUBDOMAIN_BRANDING'] or domain is None: - return '/static/images/header-logo.png' + university = get_university(domain) - subdomain = get_subdomain(domain) - if subdomain not in settings.SUBDOMAIN_BRANDING: + if university is None: return '/static/images/header-logo.png' return '/static/images/{uni}-on-edx-logo.png'.format( - uni=settings.SUBDOMAIN_BRANDING[subdomain] + uni=university ) diff --git a/lms/djangoapps/branding/views.py b/lms/djangoapps/branding/views.py new file mode 100644 index 0000000000..e32eb92138 --- /dev/null +++ b/lms/djangoapps/branding/views.py @@ -0,0 +1,45 @@ +from django.conf import settings +from django.core.urlresolvers import reverse +from django.shortcuts import redirect +from django_future.csrf import ensure_csrf_cookie + +import student.views +import branding +import courseware.views +from util.cache import cache_if_anonymous + + +@ensure_csrf_cookie +@cache_if_anonymous +def index(request): + ''' + Redirects to main page -- info page if user authenticated, or marketing if not + ''' + + if settings.COURSEWARE_ENABLED and request.user.is_authenticated(): + return redirect(reverse('dashboard')) + + if settings.MITX_FEATURES.get('AUTH_USE_MIT_CERTIFICATES'): + from external_auth.views import edXauth_ssl_login + return edXauth_ssl_login(request) + + university = branding.get_university(request.META.get('HTTP_HOST')) + if university is None: + return student.views.index(request, user=request.user) + + return courseware.views.university_profile(request, university) + + +@ensure_csrf_cookie +@cache_if_anonymous +def courses(request): + """ + Render the "find courses" page. If subdomain branding is on, this is the + university profile page, otherwise it's the edX courseware.views.courses page + """ + + university = branding.get_university(request.META.get('HTTP_HOST')) + if university is None: + return courseware.views.courses(request) + + return courseware.views.university_profile(request, university) diff --git a/lms/templates/navigation.html b/lms/templates/navigation.html index a9eaeaa764..210fd61ead 100644 --- a/lms/templates/navigation.html +++ b/lms/templates/navigation.html @@ -16,7 +16,7 @@ import branding
%endif