cb8e7c1f8f
Moves everything OpenStack-specific (dashboards, apis, etc.) into the openstack_dashboard project, achieving a much cleaner separation between the project-specific code and the generic Horizon framework code. Change-Id: I7235b41d449b26c980668fc3eb4360b24508717b
54 lines
1.9 KiB
Python
54 lines
1.9 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
|
|
|
|
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))
|
|
|
|
|
|
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)
|