mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-17 05:41:25 +02:00
@@ -60,9 +60,6 @@ class User(AbstractBaseUser, PermissionsMixin):
|
||||
|
||||
password_expr = re.compile(r'(\{(\w+)\}|(\$1\$))(.+)')
|
||||
|
||||
def __unicode__(self):
|
||||
return self.fullname
|
||||
|
||||
def delete(self, fromuser, keep_mb_dir, *args, **kwargs):
|
||||
"""Custom delete method
|
||||
|
||||
@@ -201,7 +198,7 @@ class User(AbstractBaseUser, PermissionsMixin):
|
||||
|
||||
@property
|
||||
def fullname(self):
|
||||
if self.first_name != "":
|
||||
if self.first_name != u"":
|
||||
return u"%s %s" % (self.first_name, self.last_name)
|
||||
return self.username
|
||||
|
||||
|
||||
@@ -7,60 +7,64 @@ 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.group == 'SimpleUsers' and user.has_mailbox:
|
||||
entries.insert(0, {"name" : "forward",
|
||||
"class" : "ajaxlink",
|
||||
"url" : "forward/",
|
||||
"label" : _("Forward")})
|
||||
{"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
|
||||
})
|
||||
"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")}
|
||||
]}
|
||||
]
|
||||
{"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"}]
|
||||
+ [{"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
|
||||
})
|
||||
|
||||
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})
|
||||
return render_to_string('common/menulist.html', {
|
||||
"selection": selection, "entries": menu, "user": user
|
||||
})
|
||||
|
||||
+23
-10
@@ -3,27 +3,34 @@ 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.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)
|
||||
})
|
||||
"selection": "user",
|
||||
"extrajs": "".join(extrajs)
|
||||
})
|
||||
|
||||
|
||||
@login_required
|
||||
@user_passes_test(lambda u: u.belongs_to_group('SimpleUsers'))
|
||||
@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"))
|
||||
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)
|
||||
@@ -44,6 +51,8 @@ def forward(request, tplname='userprefs/forward.html'):
|
||||
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)
|
||||
@@ -70,6 +79,7 @@ def forward(request, tplname='userprefs/forward.html'):
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
@login_required
|
||||
def profile(request, tplname='userprefs/profile.html'):
|
||||
update_password = True
|
||||
@@ -77,7 +87,9 @@ def profile(request, tplname='userprefs/profile.html'):
|
||||
update_password = False
|
||||
|
||||
if request.method == "POST":
|
||||
form = ProfileForm(update_password, request.POST, instance=request.user)
|
||||
form = ProfileForm(
|
||||
update_password, request.POST, instance=request.user
|
||||
)
|
||||
if form.is_valid():
|
||||
form.save()
|
||||
if update_password:
|
||||
@@ -98,6 +110,7 @@ def profile(request, tplname='userprefs/profile.html'):
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
@login_required
|
||||
def preferences(request):
|
||||
if request.method == "POST":
|
||||
@@ -115,8 +128,8 @@ def preferences(request):
|
||||
})
|
||||
|
||||
return ajax_simple_response({
|
||||
"status" : "ok",
|
||||
"content" : _render_to_string(request, "userprefs/preferences.html", {
|
||||
"forms" : parameters.get_user_forms(request.user)
|
||||
"status": "ok",
|
||||
"content": _render_to_string(request, "userprefs/preferences.html", {
|
||||
"forms": parameters.get_user_forms(request.user)
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user