Don't create loop.

fixes #446
This commit is contained in:
Antoine Nguyen
2013-07-15 18:58:05 +02:00
parent fe33d9fb9b
commit abd29201e0
3 changed files with 19 additions and 1 deletions
+2
View File
@@ -276,6 +276,8 @@ class AliasForm(forms.ModelForm, DynamicForm):
raise PermDeniedException(v)
try:
rcpt = Alias.objects.get(domain=domain, address=local_part)
if rcpt.full_address == self.cleaned_data["email"]:
rcpt = None
except Alias.DoesNotExist:
rcpt = None
if rcpt is None:
+3 -1
View File
@@ -1181,12 +1181,14 @@ class Alias(DatesAware):
continue
try:
target = Alias.objects.get(domain__name=domname, address=localpart)
if target.full_address == self.full_address:
target = None
except Alias.DoesNotExist:
target = None
if target is None:
try:
target = Mailbox.objects.get(address=localpart,
domain__name=domname)
domain__name=domname)
except Mailbox.DoesNotExist:
raise AdminError(_("Local recipient %s not found" % rcpt))
int_rcpts += [target]
+14
View File
@@ -214,6 +214,20 @@ class AliasTestCase(ModoTestCase):
self.assertRaises(Alias.DoesNotExist, Alias.objects.get,
address="forward", domain__name="test.com")
def test_forward_and_local_copies(self):
values = dict(email="user@test.com", recipients="rcpt@dest.com")
self.check_ajax_post(reverse("modoboa.admin.views.newforward"), values)
fwd = Alias.objects.get(address="user", domain__name="test.com")
self.assertEqual(fwd.get_recipients_count(), 1)
values["recipients"] = "rcpt@dest.com"
values["recipients_1"] = "user@test.com"
self.check_ajax_post(reverse("modoboa.admin.views.editalias", args=[fwd.id]),
values)
fwd = Alias.objects.get(pk=fwd.pk)
self.assertEqual(fwd.get_recipients_count(), 2)
self.assertEqual(fwd.aliases.count(), 0)
class PermissionsTestCase(ModoTestCase):
fixtures = ["initial_users.json", "test_content.json"]