Don't forget to save the email field.

New validation checks added.

fixes #445
This commit is contained in:
Antoine Nguyen
2013-07-13 10:06:14 +02:00
parent 51a4b58a02
commit fe33d9fb9b
2 changed files with 19 additions and 3 deletions
+18 -3
View File
@@ -485,13 +485,13 @@ class User(AbstractBaseUser, PermissionsMixin):
The expected order is the following::
loginname, password, first name, last name, enabled, group, address[, domain, ...]
"account", loginname, password, first name, last name, enabled, group, address[, domain, ...]
:param user:
:param user: the user importing a new account
:param row: a list containing the expected information
:param crypt_password:
"""
if len(row) < 6:
if len(row) < 7:
raise AdminError(_("Invalid line"))
role = row[6].strip()
if not user.is_superuser and not role in ["SimpleUsers", "DomainAdmins"]:
@@ -499,6 +499,16 @@ class User(AbstractBaseUser, PermissionsMixin):
_("You can't import an account with a role greater than yours")
)
self.username = row[1].strip()
if role == "SimpleUsers":
if (len(row) < 8 or not row[7].strip()):
raise AdminError(
_("The simple user '%s' must have a valid email address" % self.username)
)
if self.username != row[7].strip():
raise AdminError(
_("username and email fields must not differ for '%s'" % self.username)
)
if crypt_password:
self.set_password(row[2].strip())
else:
@@ -509,8 +519,12 @@ class User(AbstractBaseUser, PermissionsMixin):
self.save(creator=user)
self.set_role(role)
if len(row) < 8:
return
self.email = row[7].strip()
if self.email != "":
self.save()
mailbox, domname = split_mailbox(self.email)
try:
domain = Domain.objects.get(name=domname)
@@ -523,6 +537,7 @@ class User(AbstractBaseUser, PermissionsMixin):
mb = Mailbox(address=mailbox, domain=domain, user=self, use_domain_quota=True)
mb.set_quota(override_rules=user.has_perm("admin.change_domain"))
mb.save(creator=user)
if self.group == "DomainAdmins":
for domname in row[8:]:
try:
+1
View File
@@ -353,6 +353,7 @@ dlist; dlist@test.com; True; user1@test.com; user@extdomain.com
admin = User.objects.get(username="admin")
u1 = User.objects.get(username="user1@test.com")
self.assertTrue(admin.is_owner(u1))
self.assertEqual(u1.email, "user1@test.com")
self.assertEqual(u1.first_name, "User")
self.assertEqual(u1.last_name, "One")
self.assertTrue(u1.is_active)