mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-17 05:41:25 +02:00
@@ -6,8 +6,9 @@ from collections import OrderedDict
|
||||
from functools import reduce
|
||||
|
||||
from django import forms
|
||||
from django.urls import reverse
|
||||
from django.conf import settings
|
||||
from django.http import QueryDict
|
||||
from django.urls import reverse
|
||||
from django.utils.translation import ugettext as _, ugettext_lazy
|
||||
|
||||
from django.contrib.auth import password_validation
|
||||
@@ -202,6 +203,8 @@ class AccountFormGeneral(forms.ModelForm):
|
||||
if self.user == account and not self.cleaned_data["is_active"]:
|
||||
raise lib_exceptions.PermDeniedException(
|
||||
_("You can't disable your own account"))
|
||||
if not account.pk:
|
||||
account.language = settings.LANGUAGE_CODE
|
||||
if commit:
|
||||
if self.cleaned_data.get("password2", "") != "":
|
||||
account.set_password(self.cleaned_data["password2"])
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.conf import settings
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.shortcuts import get_object_or_404
|
||||
from django.utils.translation import ugettext as _, ugettext_lazy
|
||||
@@ -308,6 +309,8 @@ class WritableAccountSerializer(AccountSerializer):
|
||||
else:
|
||||
password = validated_data.pop("password")
|
||||
user.set_password(password)
|
||||
if "language" not in validated_data:
|
||||
user.language = settings.LANGUAGE_CODE
|
||||
user.save(creator=creator)
|
||||
if mailbox_data:
|
||||
self._create_mailbox(creator, user, mailbox_data)
|
||||
|
||||
@@ -107,6 +107,25 @@ class AccountTestCase(ModoTestCase):
|
||||
alias__internal=True).exists()
|
||||
)
|
||||
|
||||
@override_settings(LANGUAGE_CODE="fr")
|
||||
def test_create_account_default_lang(self):
|
||||
"""Check if default language is applied."""
|
||||
values = {
|
||||
"username": "tester@test.com",
|
||||
"first_name": "Tester",
|
||||
"last_name": "Toto",
|
||||
"password1": "Toto1234",
|
||||
"password2": "Toto1234",
|
||||
"role": "SimpleUsers",
|
||||
"quota_act": True,
|
||||
"is_active": True,
|
||||
"email": "tester@test.com",
|
||||
"stepid": "step2"
|
||||
}
|
||||
self.ajax_post(reverse("admin:account_add"), values)
|
||||
account = User.objects.get(username=values["username"])
|
||||
self.assertEqual(account.language, "fr")
|
||||
|
||||
def test_aliases_update_on_rename(self):
|
||||
"""Check if aliases are updated on mailbox rename."""
|
||||
account = User.objects.get(username="user@test.com")
|
||||
|
||||
@@ -10,6 +10,7 @@ import json
|
||||
import dns.resolver
|
||||
from mock import patch
|
||||
|
||||
from django.test import override_settings
|
||||
from django.urls import reverse
|
||||
|
||||
from rest_framework.authtoken.models import Token
|
||||
@@ -89,7 +90,8 @@ class DomainAPITestCase(ModoAPITestCase):
|
||||
mock_query.side_effect = utils.mock_dns_query_result
|
||||
mock_getaddrinfo.side_effect = utils.mock_ip_query_result
|
||||
response = self.client.post(
|
||||
url, {"name": "no-mx.example.com", "quota": 0, "default_mailbox_quota": 10}
|
||||
url, {"name": "no-mx.example.com", "quota": 0,
|
||||
"default_mailbox_quota": 10}
|
||||
)
|
||||
self.assertEqual(response.status_code, 400)
|
||||
self.assertEqual(
|
||||
@@ -305,6 +307,25 @@ class AccountAPITestCase(ModoAPITestCase):
|
||||
response = self.client.post(url, data, format="json")
|
||||
self.assertEqual(response.status_code, 201)
|
||||
|
||||
@override_settings(LANGUAGE_CODE="fr")
|
||||
def test_create_account_default_lang(self):
|
||||
"""Try to create a new account with(out) language."""
|
||||
url = reverse("api:account-list")
|
||||
data = dict(self.ACCOUNT_DATA)
|
||||
response = self.client.post(url, data, format="json")
|
||||
self.assertEqual(response.status_code, 201)
|
||||
account = response.json()
|
||||
user = core_models.User.objects.filter(pk=account["pk"]).first()
|
||||
self.assertEqual(user.language, "fr")
|
||||
|
||||
user.delete()
|
||||
data["language"] = "pl_PL"
|
||||
response = self.client.post(url, data, format="json")
|
||||
self.assertEqual(response.status_code, 201)
|
||||
account = response.json()
|
||||
user = core_models.User.objects.filter(pk=account["pk"]).first()
|
||||
self.assertEqual(user.language, data["language"])
|
||||
|
||||
def test_create_domainadmin_account(self):
|
||||
"""Try to create a domain admin."""
|
||||
data = copy.deepcopy(self.ACCOUNT_DATA)
|
||||
|
||||
@@ -4,9 +4,9 @@ from __future__ import unicode_literals
|
||||
|
||||
import logging
|
||||
|
||||
from django.urls import reverse
|
||||
from django.db.models import signals
|
||||
from django.dispatch import receiver
|
||||
from django.urls import reverse
|
||||
from django.utils.encoding import smart_text
|
||||
from django.utils.translation import ugettext as _
|
||||
|
||||
|
||||
@@ -50,5 +50,4 @@ class Command(BaseCommand):
|
||||
admin_models.Alias.objects.filter(internal=False).count()),
|
||||
"extensions": extensions
|
||||
}
|
||||
if not self.client.update_instance(local_config.api_pk, data):
|
||||
raise CommandError("Failed to update instance.")
|
||||
self.client.update_instance(local_config.api_pk, data)
|
||||
|
||||
@@ -5,8 +5,9 @@ from __future__ import unicode_literals
|
||||
from email.header import Header
|
||||
import re
|
||||
|
||||
from django.urls import reverse
|
||||
from django.conf import settings
|
||||
from django.db import models
|
||||
from django.urls import reverse
|
||||
from django.utils.encoding import (
|
||||
python_2_unicode_compatible, smart_bytes, smart_text, force_str
|
||||
)
|
||||
@@ -349,6 +350,7 @@ class User(AbstractUser):
|
||||
self.first_name = row[3].strip()
|
||||
self.last_name = row[4].strip()
|
||||
self.is_active = (row[5].strip().lower() in ["true", "1", "yes", "y"])
|
||||
self.language = settings.LANGUAGE_CODE
|
||||
self.save()
|
||||
self.role = desired_role
|
||||
self.post_create(user)
|
||||
|
||||
@@ -66,9 +66,7 @@ class ModoAPIClient(object):
|
||||
"""Update instance and send stats."""
|
||||
url = "{}instances/{}/".format(self._api_url, pk)
|
||||
response = requests.put(url, data=data)
|
||||
if response.status_code != 200:
|
||||
return False
|
||||
return True
|
||||
response.raise_for_status()
|
||||
|
||||
def versions(self):
|
||||
"""Fetch core and extension versions."""
|
||||
|
||||
@@ -40,7 +40,9 @@ class SMTPBackend(object):
|
||||
"""
|
||||
user, created = User.objects.get_or_create(
|
||||
username__iexact=username, defaults={
|
||||
"username": username.lower(), "email": username.lower()
|
||||
"username": username.lower(),
|
||||
"email": username.lower(),
|
||||
"language": settings.LANGUAGE_CODE
|
||||
}
|
||||
)
|
||||
if created:
|
||||
@@ -90,7 +92,11 @@ try:
|
||||
return None
|
||||
user, created = User.objects.get_or_create(
|
||||
username__iexact=username,
|
||||
defaults={'username': username.lower(), 'is_local': False}
|
||||
defaults={
|
||||
"username": username.lower(),
|
||||
"is_local": False,
|
||||
"language": settings.LANGUAGE_CODE
|
||||
}
|
||||
)
|
||||
if created:
|
||||
populate_callback(user, group)
|
||||
|
||||
Reference in New Issue
Block a user