diff --git a/musician/mixins.py b/musician/mixins.py index ba54587..6368467 100644 --- a/musician/mixins.py +++ b/musician/mixins.py @@ -1,6 +1,7 @@ from django.contrib.auth.mixins import UserPassesTestMixin from django.utils.translation import gettext_lazy as _ from django.views.generic.base import ContextMixin +from django.conf import settings from . import api, get_version from .auth import SESSION_KEY_TOKEN @@ -20,6 +21,7 @@ class CustomContextMixin(ContextMixin): context.update({ 'services_menu': services_menu, 'version': get_version(), + 'languages': settings.LANGUAGES, }) return context diff --git a/musician/templates/musician/base.html b/musician/templates/musician/base.html index 0f41767..bfe3258 100644 --- a/musician/templates/musician/base.html +++ b/musician/templates/musician/base.html @@ -68,7 +68,7 @@ - +
+ Panel Version {{ version }}
{% endblock sidebar %} @@ -102,7 +113,7 @@ {% endfor %} {% endblock messages %} - {% block content %} + {% block content %} {% endblock content %} diff --git a/musician/urls.py b/musician/urls.py index c4402e2..a00ead2 100644 --- a/musician/urls.py +++ b/musician/urls.py @@ -19,6 +19,7 @@ urlpatterns = [ path('billing/', views.BillingView.as_view(), name='billing'), path('bills//download/', views.BillDownloadView.as_view(), name='bill-download'), path('profile/', views.ProfileView.as_view(), name='profile'), + path('profile/setLang/', views.profile_set_language, name='profile-set-lang'), path('address/', views.MailView.as_view(), name='address-list'), path('address/new/', views.MailCreateView.as_view(), name='address-create'), path('address//', views.MailUpdateView.as_view(), name='address-update'), diff --git a/musician/views.py b/musician/views.py index 663f498..626f2c2 100644 --- a/musician/views.py +++ b/musician/views.py @@ -1,13 +1,11 @@ import logging -from os import stat import smtplib from django.conf import settings from django.contrib import messages from django.core.exceptions import ImproperlyConfigured from django.core.mail import mail_managers -from django.http import HttpResponse, HttpResponseRedirect -from django.shortcuts import render +from django.http import HttpResponse, HttpResponseNotFound, HttpResponseRedirect from django.urls import reverse_lazy from django.utils import translation from django.utils.html import format_html @@ -20,7 +18,7 @@ from django.views.generic.edit import DeleteView, FormView from django.views.generic.list import ListView from requests.exceptions import HTTPError -from . import api, get_version +from . import get_version from .auth import login as auth_login from .auth import logout as auth_logout from .forms import LoginForm, MailboxChangePasswordForm, MailboxCreateForm, MailboxUpdateForm, MailForm @@ -85,7 +83,7 @@ class DashboardView(CustomContextMixin, UserTokenRequiredMixin, TemplateView): def get_mailbox_usage(self, profile_type): allowed_mailboxes = ALLOWED_RESOURCES[profile_type]['mailbox'] total_mailboxes = len(self.orchestra.retrieve_mailbox_list()) - mailboxes_left = allowed_mailboxes - total_mailboxes + mailboxes_left = allowed_mailboxes - total_mailboxes alert = '' if mailboxes_left < 0: @@ -126,6 +124,23 @@ class ProfileView(CustomContextMixin, UserTokenRequiredMixin, TemplateView): return context +def profile_set_language(request, code): + # set user language as active language + + if any(x[0] == code for x in settings.LANGUAGES): + # http://127.0.0.1:8080/profile/setLang/es + user_language = code + translation.activate(user_language) + + response = HttpResponseRedirect('/dashboard') + response.set_cookie(settings.LANGUAGE_COOKIE_NAME, user_language) + + return response + else: + response = HttpResponseNotFound('Languague not found') + return response + + class ServiceListView(CustomContextMixin, ExtendedPaginationMixin, UserTokenRequiredMixin, ListView): """Base list view to all services""" service_class = None @@ -296,7 +311,6 @@ class MailingListsView(ServiceListView): 'title': _('Mailing lists'), } - def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) domain_id = self.request.GET.get('domain')