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
+1 -1
View File
@@ -330,7 +330,7 @@ ul.visible {
selectedRows.each(function(item, index) {
msgset.include(item.get("id"));
});
{% url extensions.webmail.main.move as moveurl %}
{% url extensions.webmail.views.move as moveurl %}
new Request.JSON({url: "{{ moveurl }}",
onSuccess: get_callback("folder")}
).get({msgset : msgset.join(), to : dest});
+6 -2
View File
@@ -28,8 +28,12 @@
<img src="/static/pics/remove.png" border="0" title="{% trans 'Delete alias' %}" />
</a>
</td>
<td>{{ alias.address }}@{{ alias.mbox.domain.name }}</td>
<td>{{ alias.mbox.address }}@{{ alias.mbox.domain.name }}</td>
<td>{{ alias.full_address }}</td>
<td>
{% for mb in alias.mboxes.all %}
{{ mb.full_address }}<br/>
{% endfor %}
</td>
<td>{{ alias.enabled|yesno }}</td
</tr>
{% endfor %}
+1 -1
View File
@@ -6,7 +6,7 @@
{% load i18n %}
<div class="title"><h1>Alias {{ alias.address }}</h1></div>
{% if error %}<div class="error">{{ error }}</div>{% endif %}
{% url admin.views.editalias alias.mbox.domain.id alias.id as edit_url %}
{% url admin.views.editalias domain alias.id as edit_url %}
<form action="{{ edit_url }}" method="POST" id="aliasform" name="aliasform">
{% include "common/genericform.html" %}
<div class="spacer"></div>
+1 -1
View File
@@ -30,7 +30,7 @@
<img src="/static/pics/remove.png" border="0"
title="{% trans 'Delete mailbox' %}" />
</a>
{% url admin.views.newalias domain.id mb.id as alias_url %}
{% url admin.views.newalias domain.id as alias_url %}
<a href="{{ alias_url }}" class="boxed"
rel="{handler:'iframe',size:{x:300,y:250}}">
<img src="/static/pics/add.png" border="0" title="{% trans 'Add new alias' %}"/>
+1 -1
View File
@@ -6,7 +6,7 @@
{% block content %}
<div class="title"><h1>{% trans "New alias" %}</h1></div>
{% if error %}<div class="error">{{ error }}</div>{% endif %}
{% url admin.views.newalias mbox.domain_id mbox.id as box_url %}
{% url admin.views.newalias domain as box_url %}
<form action="{{ box_url }}" method="POST" id="aliasform" name="aliasform">
{% include "common/genericform.html" %}
<div class="spacer"></div>