Partial implementation of ticket #40

(modifying an alias is not working yet)
This commit is contained in:
tonio
2010-05-21 18:55:32 +02:00
parent 633f09ba7c
commit 08543e5348
9 changed files with 30 additions and 29 deletions
+3 -3
View File
@@ -45,13 +45,13 @@ class AliasForm(forms.ModelForm):
del kwargs["domain"]
super(AliasForm, self).__init__(*args, **kwargs)
self.fields['address'].widget.attrs['size'] = 14
self.fields['mbox'].widget.attrs['size'] = 5
self.fields['mboxes'].widget.attrs['size'] = 5
if domain:
self.fields['mbox'].queryset = Mailbox.objects.filter(domain=domain.id)
self.fields['mboxes'].queryset = Mailbox.objects.filter(domain=domain.id)
class Meta:
model = Alias
fields = ('address', 'mbox', 'enabled')
fields = ('address', 'mboxes', 'enabled')
class PermissionForm(forms.Form):
domain = forms.ModelChoiceField(queryset=Domain.objects.all(), label=_("Domain"),
+3 -3
View File
@@ -38,7 +38,7 @@ class Domain(models.Model):
class Mailbox(models.Model):
name = models.CharField(_('name'), max_length=100,
help_text=_("First name and last name of mailbox owner"))
address = models.CharField(_('address'), max_length=10,
address = models.CharField(_('address'), max_length=100,
help_text=_("Mailbox address (without the @domain.tld part)"))
full_address = models.CharField(max_length=150)
password = models.CharField(_('password'), max_length=100)
@@ -102,8 +102,8 @@ class Alias(models.Model):
address = models.CharField(_('address'), max_length=100,
help_text=_("The alias address (without the domain part)"))
full_address = models.CharField(max_length=150)
mbox = models.ForeignKey(Mailbox, verbose_name=_('mailbox'),
help_text=_("The mailbox this alias points to"))
mboxes = models.ManyToManyField(Mailbox, verbose_name=_('mailboxes'),
help_text=_("The mailboxes this alias points to"))
enabled = models.BooleanField(_('enabled'),
help_text=_("Check to activate this alias"))
+1 -1
View File
@@ -9,7 +9,7 @@ urlpatterns = patterns('mailng.admin.views',
(r'^domains/(?P<dom_id>\d+)/newmailbox/$', 'newmailbox'),
(r'^domains/(?P<dom_id>\d+)/editmailbox/(?P<mbox_id>\d+)/$', 'editmailbox'),
(r'^domains/(?P<dom_id>\d+)/deletemailbox/(?P<mbox_id>\d+)/$', 'delmailbox'),
(r'^domains/(?P<dom_id>\d+)/newalias/(?P<mbox_id>\d+)/$', 'newalias'),
(r'^domains/(?P<dom_id>\d+)/newalias/$', 'newalias'),
(r'^domains/(?P<dom_id>\d+)/editalias/(?P<alias_id>\d+)/$', 'editalias'),
(r'^domains/(?P<dom_id>\d+)/$', 'mailboxes'),
(r'^domains/(?P<dom_id>\d+)/raw/$', 'mailboxes_raw'),
+13 -16
View File
@@ -275,12 +275,9 @@ def delmailbox(request, dom_id, mbox_id=None):
def aliases(request, dom_id=None, mbox_id=None):
domain = Domain.objects.get(pk=dom_id)
if not mbox_id:
mboxes = Mailbox.objects.filter(domain=dom_id)
aliases = []
for mb in mboxes:
aliases += Alias.objects.filter(mbox=mb.id)
aliases = Alias.objects.filter(mboxes__domain__id=dom_id).distinct()
else:
aliases = Alias.objects.filter(mbox=mbox_id)
aliases = Alias.objects.filter(mboxes__id=mbox_id)
return _render(request, 'admin/aliases.html', {
"aliases" : aliases, "domain" : domain
})
@@ -288,30 +285,30 @@ def aliases(request, dom_id=None, mbox_id=None):
@login_required
@good_domain
@permission_required("admin.add_alias")
def newalias(request, dom_id, mbox_id):
mbox = Mailbox.objects.get(pk=mbox_id)
def newalias(request, dom_id):
if request.method == "POST":
form = AliasForm(request.POST)
error = None
if form.is_valid():
if Alias.objects.filter(address=request.POST["address"],
mbox=mbox_id):
error = _("Alias with this address already exists")
if Alias.objects.filter(address=request.POST["address"]):
error = _("Alias with this name already exists")
else:
domain = Domain.objects.get(pk=dom_id)
alias = form.save(commit=False)
alias.full_address = "%s@%s" % (alias.address, mbox.domain.name)
alias.full_address = "%s@%s" % (alias.address, domain.name)
alias.save()
ctx = _ctx_ok(reverse(admin.views.aliases, args=[mbox.domain.id]))
form.save_m2m()
ctx = _ctx_ok(reverse(admin.views.aliases, args=[dom_id]))
return HttpResponse(simplejson.dumps(ctx),
mimetype="application/json")
ctx = _ctx_ko("admin/newalias.html", {
"mbox" : mbox, "form" : form, "error" : error
"domain" : dom_id, "form" : form, "error" : error
})
return HttpResponse(simplejson.dumps(ctx), mimetype="application/json")
form = AliasForm({"mbox" : mbox_id}, domain=mbox.domain)
form = AliasForm()
return render_to_response('admin/newalias.html', {
"mbox" : mbox, "form" : form, "noerrors" : True
"domain" : dom_id, "form" : form, "noerrors" : True
})
@login_required
@@ -341,7 +338,7 @@ def editalias(request, dom_id, alias_id):
return HttpResponse(simplejson.dumps(ctx), mimetype="application/json")
form = AliasForm(instance=alias)
return _render(request, 'admin/editalias.html', {
"form" : form, "alias" : alias
"form" : form, "alias" : alias, "domain" : dom_id
})
@login_required