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" %}
-
-
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" %}
-
-
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)
- })
- })