
from django import shortcuts
from django.views.decorators import vary

import horizon

from openstack_auth import views


def get_user_home(user):
    if user.is_superuser:
        return horizon.get_dashboard('admin').get_absolute_url()
    return horizon.get_dashboard('project').get_absolute_url()


@vary.vary_on_cookie
def splash(request):
    if request.user.is_authenticated():
        return shortcuts.redirect(horizon.get_user_home(request.user))
    form = views.Login(request)
    request.session.clear()
    request.session.set_test_cookie()
    return shortcuts.render(request, 'splash.html', {'form': form})


from django import shortcuts
from django.views.decorators import vary

import horizon
from horizon import base

from openstack_auth import views


def get_user_home(user):
    dashboard = None
    if user.is_superuser:
        try:
            dashboard = horizon.get_dashboard('admin')
        except base.NotRegistered:
            pass

    if dashboard is None:
        dashboard = horizon.get_default_dashboard()

    return dashboard.get_absolute_url()


@vary.vary_on_cookie
def splash(request):
    if request.user.is_authenticated():
        return shortcuts.redirect(horizon.get_user_home(request.user))
    form = views.Login(request)
    request.session.clear()
    request.session.set_test_cookie()
    return shortcuts.render(request, 'splash.html', {'form': form})

Fix default get_user_home with dynamic dashboards
Fix default get_user_home with dynamic dashboards

The existing get_user_home implementation expects both the 'admin'
and 'project' dashboards to exist and throws an exception if they
are missing.  With the inclusion of configurable dashboard loading,
we can no longer count on certain dashboards being loaded.

Closes-Bug: #1293727

Change-Id: I4ee0b7b313f4e1b27c0daea829c8b38282fa78d9

  
  from django import shortcuts
  from django.views.decorators import vary
  
  import horizon
+ from horizon import base
  
  from openstack_auth import views
  
  
  def get_user_home(user):
+     dashboard = None
      if user.is_superuser:
-         return horizon.get_dashboard('admin').get_absolute_url()
+         try:
+             dashboard = horizon.get_dashboard('admin')
+         except base.NotRegistered:
+             pass
+ 
+     if dashboard is None:
+         dashboard = horizon.get_default_dashboard()
+ 
-     return horizon.get_dashboard('project').get_absolute_url()
+     return dashboard.get_absolute_url()
  
  
  @vary.vary_on_cookie
  def splash(request):
      if request.user.is_authenticated():
          return shortcuts.redirect(horizon.get_user_home(request.user))
      form = views.Login(request)
      request.session.clear()
      request.session.set_test_cookie()
      return shortcuts.render(request, 'splash.html', {'form': form})
  
Fix default get_user_home with dynamic dashboards
## Code Before:

from django import shortcuts
from django.views.decorators import vary

import horizon

from openstack_auth import views


def get_user_home(user):
    if user.is_superuser:
        return horizon.get_dashboard('admin').get_absolute_url()
    return horizon.get_dashboard('project').get_absolute_url()


@vary.vary_on_cookie
def splash(request):
    if request.user.is_authenticated():
        return shortcuts.redirect(horizon.get_user_home(request.user))
    form = views.Login(request)
    request.session.clear()
    request.session.set_test_cookie()
    return shortcuts.render(request, 'splash.html', {'form': form})

## Instruction:
Fix default get_user_home with dynamic dashboards
## Code After:

from django import shortcuts
from django.views.decorators import vary

import horizon
from horizon import base

from openstack_auth import views


def get_user_home(user):
    dashboard = None
    if user.is_superuser:
        try:
            dashboard = horizon.get_dashboard('admin')
        except base.NotRegistered:
            pass

    if dashboard is None:
        dashboard = horizon.get_default_dashboard()

    return dashboard.get_absolute_url()


@vary.vary_on_cookie
def splash(request):
    if request.user.is_authenticated():
        return shortcuts.redirect(horizon.get_user_home(request.user))
    form = views.Login(request)
    request.session.clear()
    request.session.set_test_cookie()
    return shortcuts.render(request, 'splash.html', {'form': form})
