mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-17 05:41:25 +02:00
Merge pull request #2042 from modoboa/fix/forward_with_no_local_copies
Make sure to disable/enable self alias according to forward settings.
This commit is contained in:
@@ -34,9 +34,22 @@ class ForwardTestCase(ModoTestCase):
|
||||
domadmin = User.objects.get(username="admin@test.com")
|
||||
self.assertTrue(domadmin.can_access(forward))
|
||||
|
||||
selfalias = Alias.objects.get(address="user@test.com", internal=True)
|
||||
self.assertTrue(selfalias.enabled)
|
||||
|
||||
# Deactivate local copies
|
||||
self.ajax_post(
|
||||
url,
|
||||
{"dest": "user@extdomain.com", "keepcopies": False}
|
||||
)
|
||||
selfalias.refresh_from_db()
|
||||
self.assertFalse(selfalias.enabled)
|
||||
|
||||
# Now, empty forward
|
||||
self.ajax_post(url, {"dest": "", "keepcopies": False})
|
||||
response = self.client.get(url)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
content = response.json()
|
||||
self.assertNotIn("user@extdomain.com", content["content"])
|
||||
selfalias.refresh_from_db()
|
||||
self.assertTrue(selfalias.enabled)
|
||||
|
||||
+26
-10
@@ -21,18 +21,34 @@ def forward(request, tplname="admin/forward.html"):
|
||||
if request.method == "POST":
|
||||
form = ForwardForm(request.POST)
|
||||
if form.is_valid():
|
||||
if al is None:
|
||||
al = Alias.objects.create(
|
||||
address=mb.full_address, domain=mb.domain,
|
||||
enabled=mb.user.is_active)
|
||||
recipients = form.cleaned_data["dest"]
|
||||
if form.cleaned_data["keepcopies"]:
|
||||
recipients.append(mb.full_address)
|
||||
al.set_recipients(recipients)
|
||||
if len(recipients) == 0:
|
||||
al.delete()
|
||||
if not recipients:
|
||||
Alias.objects.filter(
|
||||
address=mb.full_address, internal=False).delete()
|
||||
# Make sure internal self-alias is enabled
|
||||
Alias.objects.filter(
|
||||
address=mb.full_address, internal=True
|
||||
).update(enabled=True)
|
||||
else:
|
||||
al.post_create(request.user)
|
||||
if al is None:
|
||||
al = Alias.objects.create(
|
||||
address=mb.full_address,
|
||||
domain=mb.domain,
|
||||
enabled=mb.user.is_active
|
||||
)
|
||||
al.post_create(request.user)
|
||||
if form.cleaned_data["keepcopies"]:
|
||||
# Make sure internal self-alias is enabled
|
||||
Alias.objects.filter(
|
||||
address=mb.full_address, internal=True
|
||||
).update(enabled=True)
|
||||
else:
|
||||
# Deactivate internal self-alias to avoid storing
|
||||
# local copies...
|
||||
Alias.objects.filter(
|
||||
address=mb.full_address, internal=True
|
||||
).update(enabled=False)
|
||||
al.set_recipients(recipients)
|
||||
return render_to_json_response(_("Forward updated"))
|
||||
|
||||
return render_to_json_response(
|
||||
|
||||
Reference in New Issue
Block a user