
Moved the tests to the horizon portion since they test core functionality. This also required moving some of the templates, etc. that belong in horizon to their proper homes. Change-Id: I7d9758845b81e4b8bcf1ffaaff4f6e237b4fe9f8
73 lines
2.5 KiB
Python
73 lines
2.5 KiB
Python
# vim: tabstop=4 shiftwidth=4 softtabstop=4
|
|
|
|
# Copyright 2012 Nebula, Inc.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
from django import shortcuts
|
|
from django.views import generic
|
|
from django.views.decorators import vary
|
|
|
|
from openstack_auth.views import Login
|
|
|
|
import horizon
|
|
from horizon import exceptions
|
|
|
|
|
|
def user_home(request):
|
|
""" Reversible named view to direct a user to the appropriate homepage. """
|
|
return shortcuts.redirect(horizon.get_user_home(request.user))
|
|
|
|
|
|
def get_user_home(user):
|
|
if user.is_superuser:
|
|
return horizon.get_dashboard('syspanel').get_absolute_url()
|
|
return horizon.get_dashboard('nova').get_absolute_url()
|
|
|
|
|
|
@vary.vary_on_cookie
|
|
def splash(request):
|
|
if request.user.is_authenticated():
|
|
return shortcuts.redirect(get_user_home(request.user))
|
|
form = Login(request)
|
|
request.session.clear()
|
|
request.session.set_test_cookie()
|
|
return shortcuts.render(request, 'splash.html', {'form': form})
|
|
|
|
|
|
class APIView(generic.TemplateView):
|
|
""" A quick class-based view for putting API data into a template.
|
|
|
|
Subclasses must define one method, ``get_data``, and a template name
|
|
via the ``template_name`` attribute on the class.
|
|
|
|
Errors within the ``get_data`` function are automatically caught by
|
|
the :func:`horizon.exceptions.handle` error handler if not otherwise
|
|
caught.
|
|
"""
|
|
def get_data(self, request, context, *args, **kwargs):
|
|
"""
|
|
This method should handle any necessary API calls, update the
|
|
context object, and return the context object at the end.
|
|
"""
|
|
raise NotImplementedError("You must define a get_data method "
|
|
"on %s" % self.__class__.__name__)
|
|
|
|
def get(self, request, *args, **kwargs):
|
|
context = self.get_context_data(**kwargs)
|
|
try:
|
|
context = self.get_data(request, context, *args, **kwargs)
|
|
except:
|
|
exceptions.handle(request)
|
|
return self.render_to_response(context)
|