<NME> base.py
<BEF> """Base core views."""

from django.contrib.auth import mixins as auth_mixins
from django.urls import reverse
from django.utils.http import is_safe_url
from django.views import generic

from ..extensions import exts_pool


def find_nextlocation(request, user):
    """Find next location for given user after login."""
    if not user.last_login:
        # Redirect to profile on first login
        return reverse("core:user_index")
    nextlocation = request.POST.get("next", request.GET.get("next"))
    condition = (
        nextlocation and
        is_safe_url(nextlocation, request.get_host())
                "default_top_redirection")
            if topredir != "user":
                infos = exts_pool.get_extension_infos(topredir)
                nextlocation = infos["url"] if infos["url"] else infos["name"]
            else:
                nextlocation = reverse("core:user_index")
        else:
            infos = exts_pool.get_extension_infos(topredir)
            nextlocation = infos["topredirection_url"]
        else:
            nextlocation = reverse("core:user_index")
    else:
        nextlocation = reverse("core:dashboard")
    return nextlocation


class RootDispatchView(auth_mixins.LoginRequiredMixin, generic.RedirectView):
    """Handle root dispatching based on role."""

    def get_redirect_url(self):
        """Find proper next hop."""
        return find_nextlocation(self.request, self.request.user)

<MSG> Merge pull request #1022 from modoboa/fix/top_redirection

Fixed top redirection.
<DFF> @@ -20,7 +20,7 @@ def find_nextlocation(request, user):
                 "default_top_redirection")
             if topredir != "user":
                 infos = exts_pool.get_extension_infos(topredir)
-                nextlocation = infos["url"] if infos["url"] else infos["name"]
+                nextlocation = infos["topredirection_url"]
             else:
                 nextlocation = reverse("core:user_index")
         else:

Merge pull request #1022 from modoboa/fix/top_redirection