From 7ad7c1f48efe5c2dfd931f07e4379d0e66d9c1e8 Mon Sep 17 00:00:00 2001 From: tonio Date: Wed, 5 May 2010 20:47:12 +0200 Subject: [PATCH] Some work about ticket #22 --- extensions/amavis_quarantine/main.py | 3 +- extensions/postfix_autoreply/forms.py | 13 +++++ extensions/postfix_autoreply/main.py | 47 +++++++++++++++++-- extensions/postfix_autoreply/models.py | 13 +++++ .../templates}/autoreply.html | 6 +-- extensions/postfix_autoreply/urls.py | 5 ++ static/js/common.js | 8 +--- static/js/main.js | 4 -- static/stylesheets/default.css | 6 ++- templates/common/menulist.html | 5 +- userprefs/forms.py | 11 ----- userprefs/models.py | 15 ------ userprefs/templatetags/uprefs_extras.py | 4 +- userprefs/urls.py | 1 - userprefs/views.py | 29 +----------- 15 files changed, 89 insertions(+), 81 deletions(-) create mode 100644 extensions/postfix_autoreply/forms.py rename {templates/userprefs => extensions/postfix_autoreply/templates}/autoreply.html (85%) create mode 100644 extensions/postfix_autoreply/urls.py delete mode 100644 userprefs/models.py 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 %}
{% include "common/genericform.html" %} diff --git a/extensions/postfix_autoreply/urls.py b/extensions/postfix_autoreply/urls.py new file mode 100644 index 000000000..e0bfc51f2 --- /dev/null +++ b/extensions/postfix_autoreply/urls.py @@ -0,0 +1,5 @@ +from django.conf.urls.defaults import * + +urlpatterns = patterns('mailng.extensions.postfix_autoreply.main', + url(r'^$', 'autoreply'), + ) diff --git a/static/js/common.js b/static/js/common.js index d4969ef77..f5b45a858 100644 --- a/static/js/common.js +++ b/static/js/common.js @@ -1,10 +1,6 @@ window.addEvent('domready', function(){ parse_menubar('topmenubar'); - SqueezeBox.assign($$('a.boxed'), { - parse: 'rel', - }); - - + infobox = new InfoBox({ parent : $("menubar"), message : "Loading" @@ -248,7 +244,7 @@ confirmation = function(question, action, callback) { } } }); - SqueezeBox.open("/mailng/main/confirm/?question=" + question); + SqueezeBox.open("/mailng/userprefs/confirm/?question=" + question); } setDivHeight = function(id, extrah, modulo) { diff --git a/static/js/main.js b/static/js/main.js index 97c3c0340..f8a8f324a 100644 --- a/static/js/main.js +++ b/static/js/main.js @@ -1,8 +1,4 @@ window.addEvent('domready', function() { - SqueezeBox.assign($$('a.boxed'), { - parse: 'rel' - }); - new DatePicker("#untildate", { pickerClass: "datepicker_vista", allowEmpty: true diff --git a/static/stylesheets/default.css b/static/stylesheets/default.css index 9bee80dfd..38ffb9c70 100644 --- a/static/stylesheets/default.css +++ b/static/stylesheets/default.css @@ -175,6 +175,8 @@ div#footer { border-bottom: 5px solid #ccc; border-right: 5px solid #ccc; border-left: 5px solid #ccc; + position: relative; + z-index: 2; } div.left { @@ -193,8 +195,6 @@ div.right { .dropdown { /*position: absolute;*/ - position: relative; - z-index: 2; /*width: 250px;*/ } @@ -214,6 +214,8 @@ div.right { border-left: 5px solid #333; width: 150px; float: left; + position: relative; + z-index: 4; } .dropdown ul li { diff --git a/templates/common/menulist.html b/templates/common/menulist.html index 50f30ca9c..4c5c9dc5c 100644 --- a/templates/common/menulist.html +++ b/templates/common/menulist.html @@ -8,7 +8,10 @@ {% if entry.width %}style="width: {{ entry.width }}px"{% endif %}> {% for sentry in entry.menu %}
  • - + {{ sentry.label }} diff --git a/userprefs/forms.py b/userprefs/forms.py index b28231820..6b73d0de9 100644 --- a/userprefs/forms.py +++ b/userprefs/forms.py @@ -1,18 +1,7 @@ from django import forms -from models import ARmessage from mailng.lib.authbackends import check_password from django.utils.translation import ugettext as _ -class ARmessageForm(forms.ModelForm): - class Meta: - model = ARmessage - fields = ('subject', 'content', 'enabled', 'untildate') - - 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 - class ChangePasswordForm(forms.Form): oldpassword = forms.CharField(label=_("Old password"), widget=forms.PasswordInput) diff --git a/userprefs/models.py b/userprefs/models.py deleted file mode 100644 index a3e5329f0..000000000 --- a/userprefs/models.py +++ /dev/null @@ -1,15 +0,0 @@ -from django.db import models -from django.utils.translation import ugettext_lazy as _ -from mailng.admin.models import Mailbox - -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/userprefs/templatetags/uprefs_extras.py b/userprefs/templatetags/uprefs_extras.py index 59c80ac80..189fe17ae 100644 --- a/userprefs/templatetags/uprefs_extras.py +++ b/userprefs/templatetags/uprefs_extras.py @@ -24,8 +24,8 @@ def uprefs_menu(perms): ] } ] - entries[0]["menu"] += [events.raiseQueryEvent("UserMenuDisplay", - target="user_menu_bar")] + entries[0]["menu"] += events.raiseQueryEvent("UserMenuDisplay", + target="user_menu_bar") return render_to_string('common/menulist.html', {"entries" : entries, "perms" : perms}) diff --git a/userprefs/urls.py b/userprefs/urls.py index 90de447e8..f5d683abe 100644 --- a/userprefs/urls.py +++ b/userprefs/urls.py @@ -2,7 +2,6 @@ from django.conf.urls.defaults import * urlpatterns = patterns('mailng.userprefs.views', url(r'^$', 'index'), - url(r'^autoreply/$', 'autoreply'), (r'^changepassword/$', 'changepassword'), (r'^confirm/$', 'confirm'), ) diff --git a/userprefs/views.py b/userprefs/views.py index 07f87f65d..04b5ad56e 100644 --- a/userprefs/views.py +++ b/userprefs/views.py @@ -10,8 +10,7 @@ from django.utils import simplejson from django.utils.translation import ugettext as _ from mailng.lib import _render, _ctx_ok, _ctx_ko from mailng.lib.authbackends import crypt_password -from forms import ARmessageForm, ChangePasswordForm -from models import ARmessage +from forms import ChangePasswordForm from mailng.admin.models import Mailbox @login_required @@ -23,32 +22,6 @@ def index(request): arm = None return _render(request, "userprefs/index.html", {"arm" : arm}) -@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, "userprefs/autoreply.html", { - "form" : form - }) - @login_required def changepassword(request): mb = Mailbox.objects.get(user=request.user.id)