diff --git a/extensions/amavis_quarantine/main.py b/extensions/amavis_quarantine/main.py index bdd7fe29d..40683a875 100644 --- a/extensions/amavis_quarantine/main.py +++ b/extensions/amavis_quarantine/main.py @@ -57,7 +57,8 @@ def urls(): def menu(**kwargs): if kwargs["target"] == "user_menu_box": return [ - {"name" : _("Quarantine"), + {"name" : "quarantine", + "label" : _("Quarantine"), "url" : reverse(index), "img" : "/static/pics/quarantine.png"} ] diff --git a/extensions/postfix_autoreply/forms.py b/extensions/postfix_autoreply/forms.py new file mode 100644 index 000000000..7c5639bc1 --- /dev/null +++ b/extensions/postfix_autoreply/forms.py @@ -0,0 +1,13 @@ +from django import forms +from models import ARmessage +from django.utils.translation import ugettext as _ + +class ARmessageForm(forms.ModelForm): + class Meta: + model = ARmessage + fields = ('subject', 'content', 'enabled') + + def __init__(self, *args, **kwargs): + super(ARmessageForm, self).__init__(*args, **kwargs) + self.fields['subject'].widget.attrs['size'] = 40 + self.fields['content'].widget.attrs['cols'] = 50 diff --git a/extensions/postfix_autoreply/main.py b/extensions/postfix_autoreply/main.py index 423a1420c..e2a3c15a1 100644 --- a/extensions/postfix_autoreply/main.py +++ b/extensions/postfix_autoreply/main.py @@ -7,11 +7,21 @@ This module provides a way to integrate MailNG auto-reply functionality into Postfix. """ +from django.contrib.auth.decorators \ + import login_required +from django.conf.urls.defaults import include from django.core.urlresolvers import reverse from django.utils.translation import ugettext as _ -from mailng.lib import events, parameters -from mailng import main -from models import Transport, Alias +from mailng.lib import _render, events, parameters +from forms import * +from models import * + +def infos(): + return { + "name" : "Postfix autoreply", + "version" : "1.0", + "description" : "Auto-reply (vacation) functionality using Postfix" + } def init(): events.register("CreateDomain", onCreateDomain) @@ -26,14 +36,15 @@ def init(): help=_("Timeout in seconds between two auto-replies to the same recipient")) def urls(): - return () + return (r'^mailng/postfix_autoreply/', + include('mailng.extensions.postfix_autoreply.urls')) def menu(**kwargs): if kwargs["target"] != "user_menu_bar": return [] return [ {"name" : "autoreply", - "url" : reverse(main.views.autoreply), + "url" : reverse(autoreply), "img" : "/static/pics/auto-reply.png", "label" : _("Auto-reply message")} ] @@ -76,3 +87,29 @@ def onModifyMailbox(**kwargs): alias.autoreply_address = \ "%s@autoreply.%s" % (mbox.full_address, mbox.domain.name) alias.save() + +@login_required +def autoreply(request): + mb = Mailbox.objects.get(user=request.user.id) + try: + arm = ARmessage.objects.get(mbox=mb.id) + except ARmessage.DoesNotExist: + arm = None + if request.method == "POST": + if arm: + form = ARmessageForm(request.POST, instance=arm) + else: + form = ARmessageForm(request.POST) + error = None + if form.is_valid(): + arm = form.save(commit=False) + arm.mbox = mb + arm.save() + request.user.message_set.create( + message=_("Auto reply message updated successfully.") + ) + + form = ARmessageForm(instance=arm) + return _render(request, "postfix_autoreply/autoreply.html", { + "form" : form + }) diff --git a/extensions/postfix_autoreply/models.py b/extensions/postfix_autoreply/models.py index a2dab5e36..ce21f5210 100644 --- a/extensions/postfix_autoreply/models.py +++ b/extensions/postfix_autoreply/models.py @@ -1,4 +1,5 @@ from django.db import models +from django.utils.translation import ugettext_lazy as _ from mailng.admin.models import Domain, Mailbox class Transport(models.Model): @@ -8,3 +9,15 @@ class Transport(models.Model): class Alias(models.Model): full_address = models.CharField(max_length=255) autoreply_address = models.CharField(max_length=255) + +class ARmessage(models.Model): + mbox = models.ForeignKey(Mailbox) + subject = models.CharField(_('subject'), max_length=255) + content = models.TextField(_('content')) + enabled = models.BooleanField(_('enabled')) +# untildate = models.DateTimeField(_('until')) + +class ARhistoric(models.Model): + armessage = models.ForeignKey(ARmessage) + last_sent = models.DateTimeField(auto_now=True) + sender = models.TextField() diff --git a/templates/userprefs/autoreply.html b/extensions/postfix_autoreply/templates/autoreply.html similarity index 85% rename from templates/userprefs/autoreply.html rename to extensions/postfix_autoreply/templates/autoreply.html index 029ff881f..958b4ad4a 100644 --- a/templates/userprefs/autoreply.html +++ b/extensions/postfix_autoreply/templates/autoreply.html @@ -1,4 +1,4 @@ -{% extends "main/header.html" %} +{% extends "userprefs/header.html" %} {% load i18n %} {% block html_head %} @@ -6,10 +6,6 @@ {% endblock %} -{% block menu %} -{% load main_extras %} -{% menu "autoreply" perms %} -{% endblock %} {% block subcontent %}