diff --git a/modoboa/core/__init__.py b/modoboa/core/__init__.py index 5621d3a0d..91475ef95 100644 --- a/modoboa/core/__init__.py +++ b/modoboa/core/__init__.py @@ -82,7 +82,7 @@ def check_for_new_version(user, include_all): return [{"id": "newversionavailable"}] if include_all else [] return [{ "id": "newversionavailable", - "url": reverse("admin_index") + "#info/", + "url": reverse("core:index") + "#info/", "text": _("New Modoboa version available"), "level": "info", }] diff --git a/modoboa/core/extensions.py b/modoboa/core/extensions.py index 07073a9d2..0db058b61 100644 --- a/modoboa/core/extensions.py +++ b/modoboa/core/extensions.py @@ -86,8 +86,11 @@ class ExtensionsPool(object): try: baseurl = extinstance.url \ if extinstance.url is not None else extname - result += [(r'^%s/' % (baseurl), - include("%s.urls" % extinstance.__module__))] + result += [ + (r'^%s/' % (baseurl), + include("%s.urls" % extinstance.__module__, + namespace=extname)) + ] except ImportError: # No urls for this extension pass diff --git a/modoboa/core/templates/core/extensions.html b/modoboa/core/templates/core/extensions.html index 276524756..acccfbd56 100644 --- a/modoboa/core/templates/core/extensions.html +++ b/modoboa/core/templates/core/extensions.html @@ -1,6 +1,6 @@ {% load i18n %}{% load url from future %}

{% trans "Extensions" %} {% trans "Choose the extension(s) to use" %}


-
{% csrf_token %} +{% csrf_token %} {{ extensions|safe }}
{% trans 'Save' %} diff --git a/modoboa/core/templates/core/parameters.html b/modoboa/core/templates/core/parameters.html index be8c07bae..1c2d4448d 100644 --- a/modoboa/core/templates/core/parameters.html +++ b/modoboa/core/templates/core/parameters.html @@ -1,7 +1,7 @@ {% load i18n lib_tags %}{% load url from future %}

{% trans "Parameters" %} {% trans "Configure Modoboa" %}


-
{% csrf_token %} +{% csrf_token %} {% include "common/parameters.html" %}

-{% trans 'Save' %} \ No newline at end of file +{% trans 'Save' %} diff --git a/modoboa/core/templates/core/user_preferences.html b/modoboa/core/templates/core/user_preferences.html index 3eed9d53c..6c093fb49 100644 --- a/modoboa/core/templates/core/user_preferences.html +++ b/modoboa/core/templates/core/user_preferences.html @@ -1,7 +1,7 @@ {% load i18n %}{% load url from future %}

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


-
{% csrf_token %} {% include "common/parameters.html" %}
diff --git a/modoboa/core/templates/core/user_profile.html b/modoboa/core/templates/core/user_profile.html index 60face325..1732fad2c 100644 --- a/modoboa/core/templates/core/user_profile.html +++ b/modoboa/core/templates/core/user_profile.html @@ -1,7 +1,7 @@ {% load i18n form_tags %}{% load url from future %}

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


-{% csrf_token %} {% render_form form %}
diff --git a/modoboa/core/templatetags/core_tags.py b/modoboa/core/templatetags/core_tags.py index b8ede2953..a0abf2dad 100644 --- a/modoboa/core/templatetags/core_tags.py +++ b/modoboa/core/templatetags/core_tags.py @@ -19,7 +19,7 @@ def core_menu(selection, user): entries += [ {"name": "settings", "label": _("Modoboa"), - "url": reverse("modoboa.core.views.admin.viewsettings")} + "url": reverse("core:index")} ] if not len(entries): @@ -79,14 +79,14 @@ def user_menu(user, selection): {"name": "settings", "img": "glyphicon glyphicon-list", "label": _("Settings"), - "url": reverse("modoboa.core.views.user.index")} + "url": reverse("core:user_index")} ]} ] entries[0]["menu"] += \ events.raiseQueryEvent("UserMenuDisplay", "options_menu", user) \ + [{"name": "logout", - "url": reverse("modoboa.core.views.auth.dologout"), + "url": reverse("core:logout"), "label": _("Logout"), "img": "glyphicon glyphicon-off"}] diff --git a/modoboa/core/tests.py b/modoboa/core/tests.py index f21c4b34c..7f2e1ac88 100644 --- a/modoboa/core/tests.py +++ b/modoboa/core/tests.py @@ -25,7 +25,7 @@ class ProfileTestCase(ModoTestCase): * The default admin changes his password (no associated Mailbox) * A normal user changes his password """ - self.ajax_post(reverse("modoboa.core.views.user.profile"), + self.ajax_post(reverse("core:user_profile"), {"oldpassword": "password", "newpassword": "titi", "confirmation": "titi"}) self.clt.logout() @@ -38,7 +38,7 @@ class ProfileTestCase(ModoTestCase): ) self.ajax_post( - reverse("modoboa.core.views.user.profile"), + reverse("core:user_profile"), {"oldpassword": "toto", "newpassword": "tutu", "confirmation": "tutu"} ) diff --git a/modoboa/core/urls.py b/modoboa/core/urls.py index 5db970d7c..a35fd4242 100644 --- a/modoboa/core/urls.py +++ b/modoboa/core/urls.py @@ -4,23 +4,31 @@ from django.conf.urls import patterns, url urlpatterns = patterns( '', - (r'^accounts/login/$', 'modoboa.core.views.auth.dologin'), - (r'^accounts/logout/$', 'modoboa.core.views.auth.dologout'), + url(r'^accounts/login/$', 'modoboa.core.views.auth.dologin', + name="login"), + url(r'^accounts/logout/$', 'modoboa.core.views.auth.dologout', + name="logout"), url(r'^core/$', 'modoboa.core.views.admin.viewsettings', - name="admin_index"), - (r'^core/parameters/$', 'modoboa.core.views.admin.viewparameters'), - (r'^core/parameters/save/$', 'modoboa.core.views.admin.saveparameters'), - (r'^core/extensions/$', 'modoboa.core.views.admin.viewextensions'), - (r'^core/extensions/save/$', 'modoboa.core.views.admin.saveextensions'), + name="index"), + url(r'^core/parameters/$', 'modoboa.core.views.admin.viewparameters', + name="parameter_listl"), + url(r'^core/parameters/save/$', 'modoboa.core.views.admin.saveparameters', + name="parameter_save"), + url(r'^core/extensions/$', 'modoboa.core.views.admin.viewextensions', + name="extension_list"), + url(r'^core/extensions/save/$', 'modoboa.core.views.admin.saveextensions', + name="extension_save"), url(r'^core/info/$', 'modoboa.core.views.admin.information', name="information"), - (r'^core/logs/$', 'modoboa.core.views.admin.logs'), + url(r'^core/logs/$', 'modoboa.core.views.admin.logs', name="log_list"), url(r'^core/top_notifications/check/$', 'modoboa.core.views.admin.check_top_notifications', - name='check_top_notifications'), + name='top_notifications_check'), - (r'^user/$', 'modoboa.core.views.user.index'), - (r'^user/preferences/$', 'modoboa.core.views.user.preferences'), - (r'^user/profile/$', 'modoboa.core.views.user.profile'), + url(r'^user/$', 'modoboa.core.views.user.index', name="user_index"), + url(r'^user/preferences/$', 'modoboa.core.views.user.preferences', + name="user_preferences"), + url(r'^user/profile/$', 'modoboa.core.views.user.profile', + name="user_profile"), ) diff --git a/modoboa/core/views/auth.py b/modoboa/core/views/auth.py index 878b1cf81..d49e77211 100644 --- a/modoboa/core/views/auth.py +++ b/modoboa/core/views/auth.py @@ -36,14 +36,17 @@ def dologin(request): nextlocation = request.POST.get("next", None) if nextlocation is None or nextlocation == "None": if user.group == "SimpleUsers": - nextlocation = reverse("modoboa.lib.webutils.topredirection") + nextlocation = reverse("topredirection") else: - nextlocation = reverse("domains") + nextlocation = reverse("admin:domain_list") return HttpResponseRedirect(nextlocation) - error = _("Your username and password didn't match. Please try again.") - logger.warning("Failed connection attempt from '%(addr)s' as user '%(user)s'" \ - % {"addr": request.META["REMOTE_ADDR"], - "user": form.cleaned_data["username"]}) + error = _( + "Your username and password didn't match. Please try again.") + logger.warning( + "Failed connection attempt from '%(addr)s' as user '%(user)s'" \ + % {"addr": request.META["REMOTE_ADDR"], + "user": form.cleaned_data["username"]} + ) nextlocation = request.POST.get("next", None) httpcode = 401 @@ -68,4 +71,4 @@ def dologout(request): logger = logging.getLogger("modoboa.auth") logger.info(_("User '%s' logged out" % request.user.username)) logout(request) - return HttpResponseRedirect(reverse(dologin)) + return HttpResponseRedirect(reverse("core:login")) diff --git a/modoboa/demo/__init__.py b/modoboa/demo/__init__.py index ca8931b96..b179d6de3 100755 --- a/modoboa/demo/__init__.py +++ b/modoboa/demo/__init__.py @@ -20,10 +20,10 @@ def menu(target, user): "menu": [ {"name": "sendvirus", "label": _("Send virus"), - "url": reverse("modoboa.demo.views.send_virus")}, + "url": reverse("demo:virus_send")}, {"name": "sendspam", "label": _("Send spam"), - "url": reverse("modoboa.demo.views.send_spam")} + "url": reverse("demo:spam_send")} ] } ] diff --git a/modoboa/demo/urls.py b/modoboa/demo/urls.py index 641080a0a..eb8650107 100644 --- a/modoboa/demo/urls.py +++ b/modoboa/demo/urls.py @@ -1,7 +1,9 @@ # coding: utf-8 -from django.conf.urls import patterns +from django.conf.urls import patterns, url -urlpatterns = patterns('modoboa.demo.views', - (r'^sendvirus/$', 'send_virus'), - (r'^sendspam/$', 'send_spam'), +urlpatterns = patterns( + 'modoboa.demo.views', + + url(r'^sendvirus/$', 'send_virus', name="virus_send"), + url(r'^sendspam/$', 'send_spam', name="spam_send"), ) diff --git a/modoboa/demo/views.py b/modoboa/demo/views.py index 89a88f9f6..90c5e5dc1 100755 --- a/modoboa/demo/views.py +++ b/modoboa/demo/views.py @@ -11,9 +11,10 @@ from modoboa.extensions.admin.lib import needs_mailbox @login_required @needs_mailbox() def send_virus(request): - status, error = sendmail_fromfile("virus@example.net", request.user.username, - os.path.join(settings.MODOBOA_DIR, - "tmp/virus.msg")) + status, error = sendmail_fromfile( + "virus@example.net", request.user.username, + os.path.join(settings.MODOBOA_DIR, "tmp/virus.msg") + ) if status: return render_to_json_response(_("Message sent")) return render_to_json_response(error, status=500) @@ -22,7 +23,8 @@ def send_virus(request): @login_required @needs_mailbox() def send_spam(request): - status, error = sendmail_simple("spam@example.net", request.user.username, content=""" + status, error = sendmail_simple( + "spam@example.net", request.user.username, content=""" This is the GTUBE, the Generic Test for diff --git a/modoboa/extensions/admin/__init__.py b/modoboa/extensions/admin/__init__.py index acab3ea18..f71dca1a2 100644 --- a/modoboa/extensions/admin/__init__.py +++ b/modoboa/extensions/admin/__init__.py @@ -47,7 +47,9 @@ class AdminConsole(ModoExtension): name = "admin" label = ugettext_lazy("Administration console") version = "1.0" - description = ugettext_lazy("Web based console to manage domains, accounts and aliases") + description = ugettext_lazy( + "Web based console to manage domains, accounts and aliases" + ) always_active = True def load(self): @@ -63,8 +65,12 @@ exts_pool.register_extension(AdminConsole, show=False) @events.observe("ExtraUprefsRoutes") def extra_routes(): - return [(r'^user/forward/', - 'modoboa.extensions.admin.views.user.forward'), ] + from django.conf.urls import url + return [ + url(r'^user/forward/', + 'modoboa.extensions.admin.views.user.forward', + name="user_forward"), + ] @events.observe("AdminMenuDisplay") @@ -75,13 +81,13 @@ def admin_menu(target, user): if user.has_perm("admin.view_domains"): entries += [ {"name" : "domains", - "url" : reverse("modoboa.extensions.admin.views.domain.domains"), + "url" : reverse("admin:domain_list"), "label" : _("Domains")} ] if user.has_perm("core.add_user") or user.has_perm("admin.add_alias"): entries += [ {"name" : "identities", - "url" : reverse("modoboa.extensions.admin.views.identity.identities"), + "url" : reverse("admin:identity_list"), "label" : _("Identities")}, ] return entries diff --git a/modoboa/extensions/admin/forms/account.py b/modoboa/extensions/admin/forms/account.py index b2964c193..f6fc9b4d3 100644 --- a/modoboa/extensions/admin/forms/account.py +++ b/modoboa/extensions/admin/forms/account.py @@ -36,8 +36,6 @@ class AccountFormGeneral(forms.ModelForm): label=ugettext_lazy("Confirmation"), help_text=ugettext_lazy("Enter the same password as above, for verification.") ) - first_name = forms.CharField() - last_name = forms.CharField() class Meta: model = User @@ -373,7 +371,7 @@ class AccountForm(TabForms): context.update({ 'title': account.username, 'formid': 'accountform', - 'action': reverse("edit_account", args=[account.id]), + 'action': reverse("admin:account_change", args=[account.id]), }) def check_perms(self, account): @@ -438,7 +436,7 @@ class AccountWizard(WizardForm): def extra_context(self, context): context.update({ 'title': _("New account"), - 'action': reverse("new_account"), + 'action': reverse("admin:account_add"), 'formid': 'newaccount_form' }) diff --git a/modoboa/extensions/admin/forms/domain.py b/modoboa/extensions/admin/forms/domain.py index 1834902eb..ac64ee087 100644 --- a/modoboa/extensions/admin/forms/domain.py +++ b/modoboa/extensions/admin/forms/domain.py @@ -283,7 +283,7 @@ class DomainForm(TabForms): domadmins = [u for u in domadmins if u.group == "DomainAdmins"] context.update({ "title": domain.name, - "action": reverse("edit_domain", args=[domain.pk]), + "action": reverse("admin:domain_change", args=[domain.pk]), "formid": "domform", "domain": domain, "domadmins": domadmins @@ -334,7 +334,7 @@ class DomainWizard(WizardForm): def extra_context(self, context): context.update({ "title": _("New domain"), - "action": reverse("new_domain"), + "action": reverse("admin:domain_add"), "formid": "domform" }) diff --git a/modoboa/extensions/admin/templates/admin/forward.html b/modoboa/extensions/admin/templates/admin/forward.html index 432dff59e..3146beea6 100644 --- a/modoboa/extensions/admin/templates/admin/forward.html +++ b/modoboa/extensions/admin/templates/admin/forward.html @@ -1,8 +1,9 @@ {% load i18n form_tags %}{% load url from future %}

{% trans "Forward" %} {% trans "Automatically forward emails to another address" %}


-{% csrf_token %} + + {% csrf_token %} {% render_form form %}
diff --git a/modoboa/extensions/admin/templates/admin/identities.html b/modoboa/extensions/admin/templates/admin/identities.html index 1964d5931..202142ee3 100644 --- a/modoboa/extensions/admin/templates/admin/identities.html +++ b/modoboa/extensions/admin/templates/admin/identities.html @@ -5,13 +5,13 @@ diff --git a/modoboa/extensions/radicale/templatetags/radicale_tags.py b/modoboa/extensions/radicale/templatetags/radicale_tags.py index 29ccd4ed1..20fc74f7c 100644 --- a/modoboa/extensions/radicale/templatetags/radicale_tags.py +++ b/modoboa/extensions/radicale/templatetags/radicale_tags.py @@ -25,7 +25,7 @@ def radicale_left_menu(user): "img": "glyphicon glyphicon-plus", "modal": True, "modalcb": "radicale.add_calendar_cb", - "url": reverse("new_user_calendar")}, + "url": reverse("radicale:user_calendar_add")}, ] if user.group != "SimpleUsers": entries += [ @@ -34,7 +34,7 @@ def radicale_left_menu(user): "img": "glyphicon glyphicon-plus", "modal": True, "modalcb": "radicale.shared_calendar_cb", - "url": reverse("new_shared_calendar")}, + "url": reverse("radicale:shared_calendar_add")}, ] return render_to_string('common/menulist.html', { "entries": entries, @@ -49,12 +49,12 @@ def calendar_modify_link(calendar): linkdef = {"label": calendar.name, "modal": True} if calendar.__class__.__name__ == "UserCalendar": linkdef["url"] = reverse( - "user_calendar", args=[calendar.pk] + "radicale:user_calendar", args=[calendar.pk] ) linkdef["modalcb"] = "radicale.edit_calendar_cb" else: linkdef["url"] = reverse( - "shared_calendar", args=[calendar.pk] + "radicale:shared_calendar", args=[calendar.pk] ) linkdef["modalcb"] = "radicale.shared_calendar_cb" return render_link(linkdef) @@ -70,9 +70,11 @@ def calendar_actions(calendar): "img": "glyphicon glyphicon-trash" }] if calendar.__class__.__name__ == 'UserCalendar': - actions[0]["url"] = reverse("user_calendar", args=[calendar.id]) + actions[0]["url"] = reverse( + "radicale:user_calendar", args=[calendar.id]) else: - actions[0]["url"] = reverse("shared_calendar", args=[calendar.id]) + actions[0]["url"] = reverse( + "radicale:shared_calendar", args=[calendar.id]) return render_actions(actions) diff --git a/modoboa/extensions/radicale/tests.py b/modoboa/extensions/radicale/tests.py index b95fece87..955eac766 100644 --- a/modoboa/extensions/radicale/tests.py +++ b/modoboa/extensions/radicale/tests.py @@ -54,7 +54,7 @@ class UserCalendarTestCase(ExtTestCase): "stepid": "step2" } self.ajax_post( - reverse("new_user_calendar"), values) + reverse("radicale:user_calendar_add"), values) self.clt.logout() self.assertRuleEqual("Test calendar", "admin@test.com", read=True) @@ -69,7 +69,7 @@ class UserCalendarTestCase(ExtTestCase): "stepid": "step2" } self.ajax_post( - reverse("new_user_calendar"), values) + reverse("radicale:user_calendar_add"), values) self.clt.logout() self.assertRuleEqual( "Test calendar 2", "admin@test.com", read=True, write=True @@ -87,7 +87,7 @@ class UserCalendarTestCase(ExtTestCase): "stepid": "step2" } self.ajax_post( - reverse("new_user_calendar"), values) + reverse("radicale:user_calendar_add"), values) UserCalendar.objects.get(name="My calendar") self.assertRuleEqual( "My calendar", "admin@test.com", read=True, write=True) @@ -101,7 +101,7 @@ class UserCalendarTestCase(ExtTestCase): "name": "Modified", "mailbox": cal.mailbox.pk } self.ajax_post( - reverse("user_calendar", args=[cal.pk]), values + reverse("radicale:user_calendar", args=[cal.pk]), values ) def test_del_calendar(self): @@ -109,7 +109,7 @@ class UserCalendarTestCase(ExtTestCase): mailbox__user__username='test@modoboa.org', mailbox__address='test', mailbox__domain__name='modoboa.org') self.ajax_delete( - reverse("user_calendar", args=[cal.pk]) + reverse("radicale:user_calendar", args=[cal.pk]) ) with self.assertRaises(ObjectDoesNotExist): UserCalendar.objects.get(pk=cal.pk) @@ -121,7 +121,7 @@ class UserCalendarTestCase(ExtTestCase): self.clt.logout() self.clt.login(username="admin@test.com", password="toto") self.ajax_delete( - reverse("user_calendar", args=[cal.pk]), status=403 + reverse("radicale:user_calendar", args=[cal.pk]), status=403 ) def test_add_calendar_denied(self): @@ -134,7 +134,7 @@ class UserCalendarTestCase(ExtTestCase): "stepid": "step2" } self.ajax_post( - reverse("new_user_calendar"), values, status=400) + reverse("radicale:user_calendar_add"), values, status=400) class SharedCalendarTestCase(ExtTestCase): @@ -153,7 +153,7 @@ class SharedCalendarTestCase(ExtTestCase): "domain": domain.pk, } self.ajax_post( - reverse("new_shared_calendar"), values) + reverse("radicale:shared_calendar_add"), values) self.clt.logout() # As a domain administrator @@ -163,7 +163,7 @@ class SharedCalendarTestCase(ExtTestCase): "domain": domain.pk } self.ajax_post( - reverse("new_shared_calendar"), values) + reverse("radicale:shared_calendar_add"), values) self.clt.logout() def test_add_calendar_denied(self): @@ -174,7 +174,7 @@ class SharedCalendarTestCase(ExtTestCase): "domain": Domain.objects.get(name="test2.com") } self.ajax_post( - reverse("new_shared_calendar"), values, status=400) + reverse("radicale:shared_calendar_add"), values, status=400) def test_edit_calendar(self): cal = SharedCalendarFactory( @@ -183,7 +183,7 @@ class SharedCalendarTestCase(ExtTestCase): "name": "Modified", "domain": cal.domain.pk } self.ajax_post( - reverse("shared_calendar", args=[cal.pk]), values + reverse("radicale:shared_calendar", args=[cal.pk]), values ) cal = SharedCalendar.objects.get(pk=cal.pk) self.assertEqual(cal.name, "Modified") @@ -191,7 +191,7 @@ class SharedCalendarTestCase(ExtTestCase): def test_del_calendar(self): cal = SharedCalendarFactory(domain__name='modoboa.org') self.ajax_delete( - reverse("shared_calendar", args=[cal.pk]) + reverse("radicale:shared_calendar", args=[cal.pk]) ) with self.assertRaises(ObjectDoesNotExist): SharedCalendar.objects.get(pk=cal.pk) @@ -201,7 +201,7 @@ class SharedCalendarTestCase(ExtTestCase): self.clt.logout() self.clt.login(username="admin@test.com", password="toto") self.ajax_delete( - reverse("shared_calendar", args=[cal.pk]), status=403 + reverse("radicale:shared_calendar", args=[cal.pk]), status=403 ) diff --git a/modoboa/extensions/radicale/urls.py b/modoboa/extensions/radicale/urls.py index 03a5d40de..14f69e9f3 100644 --- a/modoboa/extensions/radicale/urls.py +++ b/modoboa/extensions/radicale/urls.py @@ -2,13 +2,15 @@ from django.conf.urls import url, patterns urlpatterns = patterns( 'modoboa.extensions.radicale.views', - (r'^$', 'index'), - (r'^calendars/$', 'calendars'), - url(r'^usercalendar/$', 'new_user_calendar', name='new_user_calendar'), - url(r'^usercalendar/(?P\d+)/$', 'user_calendar', name='user_calendar'), + + url(r'^$', 'index', name="index"), + url(r'^calendars/$', 'calendars', name="calendar_list"), + url(r'^usercalendar/$', 'new_user_calendar', name='user_calendar_add'), + url(r'^usercalendar/(?P\d+)/$', 'user_calendar', + name='user_calendar'), url(r'^sharedcalendar/$', 'new_shared_calendar', - name='new_shared_calendar'), + name='shared_calendar_add'), url(r'^sharedcalendar/(?P\d+)/$', 'shared_calendar', name='shared_calendar'), - url(r'^usernames/$', 'username_list', name='usernames'), + url(r'^usernames/$', 'username_list', name='username_list'), ) diff --git a/modoboa/extensions/radicale/views.py b/modoboa/extensions/radicale/views.py index 1a6689a89..61ae77aab 100644 --- a/modoboa/extensions/radicale/views.py +++ b/modoboa/extensions/radicale/views.py @@ -111,7 +111,7 @@ def new_shared_calendar(request): "form": form, "formid": "sharedcal_form", "title": _("New shared calendar"), - "action": reverse("new_shared_calendar"), + "action": reverse("radicale:shared_calendar_add"), "action_classes": "submit", "action_label": _("Submit") }) @@ -149,7 +149,7 @@ def shared_calendar(request, pk): "form": form, "formid": "sharedcal_form", "title": scal.name, - "action": reverse("shared_calendar", args=[scal.pk]), + "action": reverse("radicale:shared_calendar", args=[scal.pk]), "action_classes": "submit", "action_label": _("Submit") }) diff --git a/modoboa/extensions/sievefilters/general_callbacks.py b/modoboa/extensions/sievefilters/general_callbacks.py index e011d8464..7b1a41019 100644 --- a/modoboa/extensions/sievefilters/general_callbacks.py +++ b/modoboa/extensions/sievefilters/general_callbacks.py @@ -12,7 +12,7 @@ def menu(target, user): return [ {"name": "sievefilters", "label": _("Message filters"), - "url": reverse("modoboa.extensions.sievefilters.views.index"), + "url": reverse("sievefilters:index"), "img": "glyphicon glyphicon-check"} ] diff --git a/modoboa/extensions/sievefilters/templates/sievefilters/guieditor.html b/modoboa/extensions/sievefilters/templates/sievefilters/guieditor.html index f11406768..d73924118 100644 --- a/modoboa/extensions/sievefilters/templates/sievefilters/guieditor.html +++ b/modoboa/extensions/sievefilters/templates/sievefilters/guieditor.html @@ -13,7 +13,7 @@ + href="{% url 'sievefilters:filter_toggle_state' fs.name filter.name %}"> {{ filter.enabled|yesno }} diff --git a/modoboa/extensions/sievefilters/templates/sievefilters/index.html b/modoboa/extensions/sievefilters/templates/sievefilters/index.html index 2fa6cc2be..d2633e210 100644 --- a/modoboa/extensions/sievefilters/templates/sievefilters/index.html +++ b/modoboa/extensions/sievefilters/templates/sievefilters/index.html @@ -34,8 +34,8 @@ function display_filter_errors(data) { } function filterform_cb() { - cond_templates = fetch_templates("{% url 'modoboa.extensions.sievefilters.views.get_templates' 'condition' %}", cond_templates); - action_templates = fetch_templates("{% url 'modoboa.extensions.sievefilters.views.get_templates' 'action' %}", action_templates); + cond_templates = fetch_templates("{% url 'sievefilters:templates_get' 'condition' %}", cond_templates); + action_templates = fetch_templates("{% url 'sievefilters:templates_get' 'action' %}", action_templates); var $dc = $("#condition_0").dyncondition({ templates: cond_templates diff --git a/modoboa/extensions/sievefilters/templates/sievefilters/rawfilter.html b/modoboa/extensions/sievefilters/templates/sievefilters/rawfilter.html index 035f04feb..301f70161 100644 --- a/modoboa/extensions/sievefilters/templates/sievefilters/rawfilter.html +++ b/modoboa/extensions/sievefilters/templates/sievefilters/rawfilter.html @@ -1,5 +1,5 @@ {% load url from future %} -{% csrf_token %} diff --git a/modoboa/extensions/sievefilters/templatetags/sfilters_tags.py b/modoboa/extensions/sievefilters/templatetags/sfilters_tags.py index 32ced48c8..a08d7d3dd 100644 --- a/modoboa/extensions/sievefilters/templatetags/sfilters_tags.py +++ b/modoboa/extensions/sievefilters/templatetags/sfilters_tags.py @@ -15,7 +15,7 @@ def sfilters_menu(user): {"name": "newfilterset", "img": "glyphicon glyphicon-plus", "label": _("New filters set"), - "url": reverse("modoboa.extensions.sievefilters.views.new_filters_set"), + "url": reverse("sievefilters:fs_add"), "modal": True, "modalcb": "filtersetform_cb" } @@ -33,7 +33,7 @@ def fset_menu(mode, setname): {"name": "newfilter", "img": "glyphicon glyphicon-plus", "label": _("New filter"), - "url": reverse("modoboa.extensions.sievefilters.views.newfilter", + "url": reverse("sievefilters:filter_add", args=[setname]), "modal": True, "autowidth": True, @@ -44,7 +44,7 @@ def fset_menu(mode, setname): {"name": "savefs", "img": "glyphicon glyphicon-download-alt", "label": _("Save filters set"), - "url": reverse("modoboa.extensions.sievefilters.views.savefs", + "url": reverse("sievefilters:fs_save", args=[setname])}, ] @@ -52,18 +52,16 @@ def fset_menu(mode, setname): {"name": "activatefs", "img": "glyphicon glyphicon-ok", "label": _("Activate filters set"), - "url": reverse("modoboa.extensions.sievefilters.views.activate_filters_set", + "url": reverse("sievefilters:fs_activate", args=[setname])}, {"name": "removefs", "img": "glyphicon glyphicon-trash", "label": _("Remove filters set"), - "url": reverse("modoboa.extensions.sievefilters.views.remove_filters_set", - args=[setname])}, + "url": reverse("sievefilters:fs_delete", args=[setname])}, {"name": "downloadfs", "img": "glyphicon glyphicon-download", "label": _("Download"), - "url": reverse("modoboa.extensions.sievefilters.views.download_filters_set", - args=[setname])} + "url": reverse("sievefilters:fs_download", args=[setname])} ] return render_to_string('common/menulist.html', @@ -74,32 +72,32 @@ def fset_menu(mode, setname): def filter_actions(setname, f, position, islast): actions = [ {"name": "editfilter", - "url": reverse("modoboa.extensions.sievefilters.views.editfilter", - args=[setname, f["name"]]), + "url": reverse( + "sievefilters:filter_change", args=[setname, f["name"]]), "img": "glyphicon glyphicon-edit", "title": _("Edit filter"), "modal": True, "autowidth": True, "modalcb": "filterform_cb"}, {"name": "removefilter", - "url": reverse("modoboa.extensions.sievefilters.views.removefilter", - args=[setname, f["name"]]), + "url": reverse( + "sievefilters:filter_delete", args=[setname, f["name"]]), "img": "glyphicon glyphicon-trash", "title": _("Remove this filter")} ] if position != 1: actions += [ {"name": "movefilter_up", - "url": reverse("modoboa.extensions.sievefilters.views.move_filter_up", - args=[setname, f["name"]]), + "url": reverse( + "sievefilters:filter_move_up", args=[setname, f["name"]]), "img": "glyphicon glyphicon-arrow-up", "title": _("Move this filter up")} ] if not islast: actions += [ {"name": "movefilter_down", - "url": reverse("modoboa.extensions.sievefilters.views.move_filter_down", - args=[setname, f["name"]]), + "url": reverse( + "sievefilters:filter_move_down", args=[setname, f["name"]]), "img": "glyphicon glyphicon-arrow-down", "title": _("Move this filter down")}, ] diff --git a/modoboa/extensions/sievefilters/urls.py b/modoboa/extensions/sievefilters/urls.py index dc199f627..70f3f4262 100644 --- a/modoboa/extensions/sievefilters/urls.py +++ b/modoboa/extensions/sievefilters/urls.py @@ -1,21 +1,29 @@ -from django.conf.urls import patterns +from django.conf.urls import patterns, url -urlpatterns = patterns('modoboa.extensions.sievefilters.views', - (r'^$', 'index'), - (r'^savefs/(?P.+)/$', 'savefs'), - (r'^newfs/$', 'new_filters_set'), - (r'^removefs/(?P.+)/$', 'remove_filters_set'), - (r'^activatefs/(?P.+)/$', 'activate_filters_set'), - (r'^downloadfs/(?P.+)/$', 'download_filters_set'), - (r'^templates/(?P\w+)/$', 'get_templates'), - (r'^(?P.+)/newfilter/$', 'newfilter'), - (r'^(?P.+)/editfilter/(?P.+)/$', 'editfilter'), - (r'^(?P.+)/removefilter/(?P.+)/$', 'removefilter'), - (r'^(?P.+)/togglestate/(?P.+)/$', - 'toggle_filter_state'), - (r'^(?P.+)/moveup/(?P.+)/$', - 'move_filter_up'), - (r'^(?P.+)/movedown/(?P.+)/$', - 'move_filter_down'), - (r'^(?P.+)/$', 'getfs'), +urlpatterns = patterns( + 'modoboa.extensions.sievefilters.views', + + url(r'^$', 'index', name="index"), + url(r'^savefs/(?P.+)/$', 'savefs', name="fs_save"), + url(r'^newfs/$', 'new_filters_set', name="fs_add"), + url(r'^removefs/(?P.+)/$', 'remove_filters_set', name="fs_delete"), + url(r'^activatefs/(?P.+)/$', 'activate_filters_set', + name="fs_activate"), + url(r'^downloadfs/(?P.+)/$', 'download_filters_set', + name="fs_download"), + url(r'^templates/(?P\w+)/$', 'get_templates', + name="templates_get"), + url(r'^(?P.+)/newfilter/$', 'newfilter', + name="filter_add"), + url(r'^(?P.+)/editfilter/(?P.+)/$', 'editfilter', + name="filter_change"), + url(r'^(?P.+)/removefilter/(?P.+)/$', 'removefilter', + name="filter_delete"), + url(r'^(?P.+)/togglestate/(?P.+)/$', + 'toggle_filter_state', name="filter_toggle_state"), + url(r'^(?P.+)/moveup/(?P.+)/$', + 'move_filter_up', name="filter_move_up"), + url(r'^(?P.+)/movedown/(?P.+)/$', + 'move_filter_down', name="filter_move_down"), + url(r'^(?P.+)/$', 'getfs', name="fs_get"), ) diff --git a/modoboa/extensions/sievefilters/views.py b/modoboa/extensions/sievefilters/views.py index 8886a530a..ae5783db8 100644 --- a/modoboa/extensions/sievefilters/views.py +++ b/modoboa/extensions/sievefilters/views.py @@ -140,7 +140,7 @@ def newfilter(request, setname, tplname="sievefilters/filter.html"): ctx = dict( title=_("New filter"), formid="filterform", - action=reverse(newfilter, args=[setname]), + action=reverse("sievefilters:filter_add", args=[setname]), action_label=_("Create"), action_classes="submit" ) @@ -162,7 +162,7 @@ def editfilter(request, setname, fname, tplname="sievefilters/filter.html"): ctx = dict( title=_("Edit filter"), formid="filterform", - action=reverse(editfilter, args=[setname, fname]), + action=reverse("sievefilters:filter_change", args=[setname, fname]), action_label=_("Update"), action_classes="submit" ) @@ -232,7 +232,7 @@ def new_filters_set(request, tplname="common/generic_modal_form.html"): "formid": "newfiltersset", "action_label": _("Create"), "action_classes": "submit", - "action": reverse(new_filters_set), + "action": reverse("sievefilters:fs_add"), "withmenu": False, "withunseen": False, "form": FiltersSetForm()} diff --git a/modoboa/extensions/stats/general_callbacks.py b/modoboa/extensions/stats/general_callbacks.py index 8ead98633..e6112736d 100644 --- a/modoboa/extensions/stats/general_callbacks.py +++ b/modoboa/extensions/stats/general_callbacks.py @@ -10,7 +10,7 @@ def menu(target, user): return [ {"name": "stats", "label": _("Statistics"), - "url": reverse('fullindex')} + "url": reverse('stats:fullindex')} ] diff --git a/modoboa/extensions/stats/templates/stats/index.html b/modoboa/extensions/stats/templates/stats/index.html index c22a6753b..41b81fbf7 100644 --- a/modoboa/extensions/stats/templates/stats/index.html +++ b/modoboa/extensions/stats/templates/stats/index.html @@ -11,8 +11,8 @@