Merge pull request #17 from ribaguifi/feature/language-selector
Update UI of language selector
This commit is contained in:
commit
872243a8c6
|
@ -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
|
||||
|
|
|
@ -68,7 +68,7 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-logout">
|
||||
<ul class="nav flex-row">
|
||||
|
@ -87,6 +87,17 @@
|
|||
</div>
|
||||
|
||||
<div class="mt-4 pr-3 pb-2 text-light d-block text-right">
|
||||
<div class="dropdown">
|
||||
<a class="btn p-0 text-light" id="dropdownMenu3" data-toggle="dropdown" aria-haspopup="true"
|
||||
aria-expanded="false">
|
||||
<i class="fas fa-globe"></i> {% trans "Language" %}
|
||||
</a>
|
||||
<div class="dropdown-menu">
|
||||
{% for code, language in languages %}
|
||||
<a class="dropdown-item" href="{% url 'musician:profile-set-lang' code %}">{{ language }}</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<small>Panel Version {{ version }}</small>
|
||||
</div>
|
||||
{% endblock sidebar %}
|
||||
|
@ -102,7 +113,7 @@
|
|||
</div>
|
||||
{% endfor %}
|
||||
{% endblock messages %}
|
||||
{% block content %}
|
||||
{% block content %}
|
||||
{% endblock content %}
|
||||
</div><!-- ./content -->
|
||||
</div><!-- ./wrapper -->
|
||||
|
|
|
@ -19,6 +19,7 @@ urlpatterns = [
|
|||
path('billing/', views.BillingView.as_view(), name='billing'),
|
||||
path('bills/<int:pk>/download/', views.BillDownloadView.as_view(), name='bill-download'),
|
||||
path('profile/', views.ProfileView.as_view(), name='profile'),
|
||||
path('profile/setLang/<code>', 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/<int:pk>/', views.MailUpdateView.as_view(), name='address-update'),
|
||||
|
|
|
@ -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')
|
||||
|
|
Loading…
Reference in New Issue