From 93d7cb50c38369dabf19b5ddf12ac0e63465c818 Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Fri, 23 Aug 2013 11:39:03 +0200 Subject: [PATCH] wip: big refactoring old userprefs application removed. --- modoboa/core/models.py | 4 - .../static/core}/css/userprefs.css | 0 modoboa/core/templates/core/user_index.html | 2 +- modoboa/core/templatetags/core_tags.py | 6 - modoboa/core/views/auth.py | 1 + modoboa/demo/__init__.py | 34 +++-- modoboa/extensions/admin/__init__.py | 22 ++- modoboa/extensions/admin/exceptions.py | 4 + modoboa/extensions/admin/forms.py | 39 ++++- .../admin/templates/admin}/forward.html | 2 +- modoboa/extensions/admin/views/user.py | 68 +++++++++ .../amavis/management/commands/amnotify.py | 4 +- modoboa/extensions/amavis/views.py | 2 +- modoboa/extensions/sievefilters/__init__.py | 4 +- modoboa/extensions/webmail/__init__.py | 2 +- modoboa/extensions/webmail/app_settings.py | 2 +- modoboa/static/js/twocols_nav.js | 2 +- modoboa/userprefs/__init__.py | 20 --- modoboa/userprefs/app_settings.py | 28 ---- modoboa/userprefs/forms.py | 85 ----------- .../userprefs/templates/userprefs/index.html | 21 --- .../templates/userprefs/preferences.html | 9 -- .../templates/userprefs/profile.html | 10 -- modoboa/userprefs/templatetags/__init__.py | 0 .../userprefs/templatetags/uprefs_extras.py | 70 --------- modoboa/userprefs/urls.py | 14 -- modoboa/userprefs/views.py | 135 ------------------ 27 files changed, 159 insertions(+), 431 deletions(-) rename modoboa/{userprefs/static/userprefs => core/static/core}/css/userprefs.css (100%) rename modoboa/{userprefs/templates/userprefs => extensions/admin/templates/admin}/forward.html (90%) create mode 100644 modoboa/extensions/admin/views/user.py delete mode 100644 modoboa/userprefs/__init__.py delete mode 100644 modoboa/userprefs/app_settings.py delete mode 100644 modoboa/userprefs/forms.py delete mode 100644 modoboa/userprefs/templates/userprefs/index.html delete mode 100644 modoboa/userprefs/templates/userprefs/preferences.html delete mode 100644 modoboa/userprefs/templates/userprefs/profile.html delete mode 100644 modoboa/userprefs/templatetags/__init__.py delete mode 100644 modoboa/userprefs/templatetags/uprefs_extras.py delete mode 100644 modoboa/userprefs/urls.py delete mode 100644 modoboa/userprefs/views.py diff --git a/modoboa/core/models.py b/modoboa/core/models.py index d4e4b277d..2c90a4604 100644 --- a/modoboa/core/models.py +++ b/modoboa/core/models.py @@ -181,10 +181,6 @@ class User(AbstractBaseUser, PermissionsMixin): return [{"name": "account", "label": _("account"), "type": "idt"}, {"name": self.group, "label": self.group, "type": "grp", "color": "info"}] - # @property - # def has_mailbox(self): - # return self.mailbox_set.count() != 0 - @property def fullname(self): if self.first_name != u"": diff --git a/modoboa/userprefs/static/userprefs/css/userprefs.css b/modoboa/core/static/core/css/userprefs.css similarity index 100% rename from modoboa/userprefs/static/userprefs/css/userprefs.css rename to modoboa/core/static/core/css/userprefs.css diff --git a/modoboa/core/templates/core/user_index.html b/modoboa/core/templates/core/user_index.html index e721beabe..993dc9163 100644 --- a/modoboa/core/templates/core/user_index.html +++ b/modoboa/core/templates/core/user_index.html @@ -1,7 +1,7 @@ {% extends "twocols.html" %}{% load i18n core_tags libextras %} {% block pagetitle %}{% trans "Settings" %}{% endblock %} {% block html_head %} - + diff --git a/modoboa/core/templatetags/core_tags.py b/modoboa/core/templatetags/core_tags.py index 1c7933ed9..53ff25b7d 100644 --- a/modoboa/core/templatetags/core_tags.py +++ b/modoboa/core/templatetags/core_tags.py @@ -135,12 +135,6 @@ def uprefs_menu(selection, user): "url": "preferences/", "label": _("Preferences")}, ] - # if user.has_mailbox: - # entries.insert(0, {"name": "forward", - # "class": "ajaxlink", - # "url": "forward/", - # "label": _("Forward")}) - entries += events.raiseQueryEvent("UserMenuDisplay", "uprefs_menu", user) entries = sorted(entries, key=lambda e: e["label"]) return render_to_string('common/menu.html', { diff --git a/modoboa/core/views/auth.py b/modoboa/core/views/auth.py index 3e2b25561..cb84e6c36 100644 --- a/modoboa/core/views/auth.py +++ b/modoboa/core/views/auth.py @@ -23,6 +23,7 @@ def dologin(request): login(request, user) if not form.cleaned_data["rememberme"]: request.session.set_expiry(0) + events.raiseEvent("UserLoggedIn", request, form) # if request.user.has_mailbox: # request.session["password"] = encrypt(form.cleaned_data["password"]) diff --git a/modoboa/demo/__init__.py b/modoboa/demo/__init__.py index 739076d53..69ccfecc5 100755 --- a/modoboa/demo/__init__.py +++ b/modoboa/demo/__init__.py @@ -6,27 +6,29 @@ from django.template.loader import render_to_string from modoboa.lib import events from modoboa.lib.webutils import static_url + @events.observe("UserMenuDisplay") def menu(target, user): if target != "top_menu_middle": return [] - if not user.has_mailbox: + if not user.mailbox_set.count(): return [] return [ - {"name" : "demo", - "label" : _("Test messages"), - "img" : static_url("pics/demo.png"), - "class" : "topdropdown", - "menu" : [ - {"name" : "sendvirus", - "label" : _("Send virus"), - "url" : reverse("modoboa.demo.views.send_virus")}, - {"name" : "sendspam", - "label" : _("Send spam"), - "url" : reverse("modoboa.demo.views.send_spam")} - ] + {"name": "demo", + "label": _("Test messages"), + "img": static_url("pics/demo.png"), + "class": "topdropdown", + "menu": [ + {"name": "sendvirus", + "label": _("Send virus"), + "url": reverse("modoboa.demo.views.send_virus")}, + {"name": "sendspam", + "label": _("Send spam"), + "url": reverse("modoboa.demo.views.send_spam")} + ] } - ] + ] + @events.observe("GetAnnouncement") def announcement(target): @@ -35,13 +37,15 @@ def announcement(target): return [txt] return "" + @events.observe("PasswordChange") def password_change(user): return [user.id == 1] + @events.observe("GetStaticContent") def get_static_content(user): - if not user.has_mailbox: + if not user.mailbox_set.count(): return [] return """ - - - -{% endblock %} -{% block leftcol %}{% endblock %} -{% block apparea %}
{% endblock %} diff --git a/modoboa/userprefs/templates/userprefs/preferences.html b/modoboa/userprefs/templates/userprefs/preferences.html deleted file mode 100644 index 26a514dd7..000000000 --- a/modoboa/userprefs/templates/userprefs/preferences.html +++ /dev/null @@ -1,9 +0,0 @@ -{% load i18n %}{% load url from future %} -

{% trans "Preferences" %} {% trans "Customize Modoboa" %}

-
-
{% csrf_token %} - {% include "common/parameters.html" %} -
- -
diff --git a/modoboa/userprefs/templates/userprefs/profile.html b/modoboa/userprefs/templates/userprefs/profile.html deleted file mode 100644 index f5df0b64e..000000000 --- a/modoboa/userprefs/templates/userprefs/profile.html +++ /dev/null @@ -1,10 +0,0 @@ -{% load i18n libextras %}{% load url from future %} -

{% trans "Profile" %} {% trans "Update your personal information" %}

-
-
{% csrf_token %} - {% render_form form %} -
- -
-
diff --git a/modoboa/userprefs/templatetags/__init__.py b/modoboa/userprefs/templatetags/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/modoboa/userprefs/templatetags/uprefs_extras.py b/modoboa/userprefs/templatetags/uprefs_extras.py deleted file mode 100644 index 8a73ad118..000000000 --- a/modoboa/userprefs/templatetags/uprefs_extras.py +++ /dev/null @@ -1,70 +0,0 @@ -# coding: utf-8 -from django import template -from django.template.loader import render_to_string -from django.utils.translation import ugettext as _ -from django.core.urlresolvers import reverse -from modoboa.lib import events - -register = template.Library() - - -@register.simple_tag -def uprefs_menu(selection, user): - entries = [ - {"name": "profile", - "class": "ajaxlink", - "url": "profile/", - "label": _("Profile")}, - {"name": "preferences", - "class": "ajaxlink", - "url": "preferences/", - "label": _("Preferences")}, - ] - if user.has_mailbox: - entries.insert(0, {"name": "forward", - "class": "ajaxlink", - "url": "forward/", - "label": _("Forward")}) - - entries += events.raiseQueryEvent("UserMenuDisplay", "uprefs_menu", user) - entries = sorted(entries, key=lambda e: e["label"]) - return render_to_string('common/menu.html', { - "entries": entries, - "css": "nav nav-list", - "selection": selection, - "user": user - }) - - -@register.simple_tag -def user_menu(user, selection): - entries = [ - {"name": "user", - "img": "icon-user icon-white", - "label": user.fullname, - "menu": [ - {"name": "settings", - "img": "icon-list", - "label": _("Settings"), - "url": reverse("modoboa.userprefs.views.index")} - ]} - ] - - entries[0]["menu"] += \ - events.raiseQueryEvent("UserMenuDisplay", "options_menu", user) \ - + [{"name": "logout", - "url": reverse("modoboa.auth.views.dologout"), - "label": _("Logout"), - "img": "icon-off"}] - - return render_to_string("common/menulist.html", { - "selection": selection, "entries": entries, "user": user - }) - - -@register.simple_tag -def loadextmenu(selection, user): - menu = events.raiseQueryEvent("UserMenuDisplay", "top_menu", user) - return render_to_string('common/menulist.html', { - "selection": selection, "entries": menu, "user": user - }) diff --git a/modoboa/userprefs/urls.py b/modoboa/userprefs/urls.py deleted file mode 100644 index 05e214541..000000000 --- a/modoboa/userprefs/urls.py +++ /dev/null @@ -1,14 +0,0 @@ -# coding: utf-8 -from django.conf.urls import patterns, url -from modoboa.lib import events - -urlpatterns = patterns('modoboa.userprefs.views', - url(r'^$', 'index'), - (r'^preferences/$', 'preferences'), - (r'^profile/$', 'profile'), - (r'^forward/$', 'forward'), -) - -urlpatterns += patterns('', - *events.raiseQueryEvent("ExtraUprefsRoutes") -) diff --git a/modoboa/userprefs/views.py b/modoboa/userprefs/views.py deleted file mode 100644 index be70d1958..000000000 --- a/modoboa/userprefs/views.py +++ /dev/null @@ -1,135 +0,0 @@ -# coding: utf-8 -from django.shortcuts import render -from django.contrib.auth.decorators import login_required, user_passes_test -from django.utils.translation import ugettext as _ -from modoboa.lib import parameters, events -from modoboa.lib.decorators import needs_mailbox -from modoboa.lib.exceptions import ModoboaException -from modoboa.lib.webutils import ( - ajax_response, ajax_simple_response, _render_to_string -) -from modoboa.admin.models import Mailbox, Alias -from modoboa.auth.lib import encrypt -from forms import ForwardForm, BadDestination, ProfileForm - - -@login_required -def index(request, tplname="userprefs/index.html"): - extrajs = events.raiseQueryEvent("ExtraUprefsJS", request.user) - return render(request, tplname, { - "selection": "user", - "extrajs": "".join(extrajs) - }) - - -@login_required -@needs_mailbox() -def forward(request, tplname='userprefs/forward.html'): - try: - mb = request.user.mailbox_set.all()[0] - except IndexError: - raise ModoboaException( - _("You need a mailbox in order to define a forward") - ) - try: - al = Alias.objects.get(address=mb.address, - domain__name=mb.domain.name) - except Alias.DoesNotExist: - al = None - if request.method == "POST": - form = ForwardForm(request.POST) - error = None - if form.is_valid(): - try: - if al is None: - al = Alias() - al.address = mb.address - al.domain = mb.domain - al.enabled = mb.user.is_active - intdests = [] - if form.cleaned_data["keepcopies"]: - intdests += [mb] - form.parse_dest() - al.save(intdests, form.dests) - if request.user.group != "SimpleUsers": - al.post_create(request.user) - return ajax_response(request, respmsg=_("Forward updated")) - except BadDestination, e: - error = str(e) - - return ajax_simple_response(dict( - status="ko", - errors=form.errors, - respmsg=error - )) - - form = ForwardForm() - if al is not None: - form.fields["dest"].initial = al.extmboxes - try: - selfmb = al.mboxes.get(pk=mb.id) - except Mailbox.DoesNotExist: - pass - else: - form.fields["keepcopies"].initial = True - return ajax_simple_response({ - "status": "ok", - "content": _render_to_string(request, tplname, { - "form": form - }) - }) - - -@login_required -def profile(request, tplname='userprefs/profile.html'): - update_password = True - if True in events.raiseQueryEvent("PasswordChange", request.user): - update_password = False - - if request.method == "POST": - form = ProfileForm( - update_password, request.POST, instance=request.user - ) - if form.is_valid(): - form.save() - if update_password and form.cleaned_data["confirmation"] != "": - request.session["password"] = encrypt(form.cleaned_data["confirmation"]) - return ajax_simple_response(dict( - status="ok", respmsg=_("Profile updated") - )) - return ajax_simple_response({ - "status": "ko", - "errors": form.errors - }) - - form = ProfileForm(update_password, instance=request.user) - return ajax_simple_response({ - "status": "ok", - "content": _render_to_string(request, tplname, { - "form": form - }) - }) - - -@login_required -def preferences(request): - if request.method == "POST": - for formdef in parameters.get_user_forms(request.user, request.POST)(): - form = formdef["form"] - if form.is_valid(): - form.save() - continue - return ajax_simple_response({ - "status": "ko", "prefix": form.app, "errors": form.errors - }) - - return ajax_simple_response({ - "status": "ok", "respmsg": _("Preferences saved") - }) - - return ajax_simple_response({ - "status": "ok", - "content": _render_to_string(request, "userprefs/preferences.html", { - "forms": parameters.get_user_forms(request.user) - }) - })