Browse Source

Changed origin of default Misago Admin sections and actions.

Ralfp 12 years ago
parent
commit
7b176191ea

+ 15 - 0
misago/admin/__init__.py

@@ -146,6 +146,21 @@ class AdminSite(object):
         # Orphan actions that have no section yet
         # Orphan actions that have no section yet
         late_actions = []
         late_actions = []
         
         
+        # Load default admin site
+        from misago.admin.layout.sections import ADMIN_SECTIONS
+        for section in ADMIN_SECTIONS:
+            self.sections.append(section)
+            self.sections_index[section.id] = section
+            
+            # Loop section actions
+            section_actions = import_module('misago.admin.layout.%s' % section.id)
+            for action in section_actions.ADMIN_ACTIONS:
+                self.actions_index[action.id] = action
+                if not action.after:
+                     action.after = self.sections_index[section.id].last
+                actions.append(action)
+                self.sections_index[section.id].last = action.after
+        
         # Iterate over installed applications
         # Iterate over installed applications
         for app_name in settings.INSTALLED_APPS:
         for app_name in settings.INSTALLED_APPS:
             try:
             try:

+ 0 - 0
misago/admin/layout/__init__.py


+ 61 - 0
misago/admin/layout/forums.py

@@ -0,0 +1,61 @@
+from django.conf.urls import patterns, include, url
+from django.utils.translation import ugettext_lazy as _
+from misago.admin import AdminAction
+
+ADMIN_ACTIONS=(
+   AdminAction(
+               section='forums',
+               id='forums',
+               name=_("Forums List"),
+               help=_("Create, edit and delete forums."),
+               icon='comment',
+               route='admin_forums',
+               urlpatterns=patterns('misago.admin.views',
+                        url(r'^$', 'todo', name='admin_forums'),
+                    ),
+               ),
+   AdminAction(
+               section='forums',
+               id='moderators',
+               name=_("Moderators"),
+               help=_("Assign forums moderators."),
+               icon='eye-open',
+               route='admin_forums_moderators',
+               urlpatterns=patterns('misago.admin.views',
+                        url(r'^$', 'todo', name='admin_forums_moderators'),
+                    ),
+               ),
+   AdminAction(
+               section='forums',
+               id='tests',
+               name=_("Tests"),
+               help=_("Tests that new messages have to pass"),
+               icon='filter',
+               route='admin_forums_tests',
+               urlpatterns=patterns('misago.admin.views',
+                        url(r'^$', 'todo', name='admin_forums_tests'),
+                    ),
+               ),
+   AdminAction(
+               section='forums',
+               id='badwords',
+               name=_("Words Filter"),
+               help=_("Forbid usage of words in messages"),
+               icon='volume-off',
+               route='admin_forums_badwords',
+               urlpatterns=patterns('misago.admin.views',
+                        url(r'^$', 'todo', name='admin_forums_badwords'),
+                    ),
+               ),
+   AdminAction(
+               section='forums',
+               id='attachments',
+               name=_("Attachments"),
+               help=_("Manage allowed attachment types."),
+               icon='download-alt',
+               route='admin_forums_attachments',
+               urlpatterns=patterns('misago.admin.views',
+                        url(r'^$', 'todo', name='admin_forums_attachments'),
+                    ),
+               ),
+)

+ 62 - 0
misago/admin/layout/overview.py

@@ -0,0 +1,62 @@
+from django.conf.urls import patterns, include, url
+from django.utils.translation import ugettext_lazy as _
+from misago.admin import AdminAction
+from misago.sessions.models import Session
+
+ADMIN_ACTIONS=(
+   AdminAction(
+               section='overview',
+               id='home',
+               name=_("Home"),
+               help=_("Your forums right now"),
+               icon='home',
+               route='admin_overview_home',
+               urlpatterns=patterns('misago.overview.admin.views',
+                        url(r'^$', 'overview_home', name='admin_overview_home'),
+                    ),
+               ),
+   AdminAction(
+               section='overview',
+               id='stats',
+               name=_("Stats"),
+               help=_("Create Statistics Reports"),
+               icon='signal',
+               route='admin_overview_stats',
+               urlpatterns=patterns('misago.overview.admin.views',
+                        url(r'^$', 'overview_stats', name='admin_overview_stats'),
+                        url(r'^(?P<model>[a-z0-9]+)/(?P<date_start>[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9])/(?P<date_end>[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9])/(?P<precision>\w+)$', 'overview_graph', name='admin_overview_graph'),
+                    ),
+               ),
+   AdminAction(
+               section='overview',
+               id='online',
+               name=_("Online"),
+               help=_("See who is currently online on forums."),
+               icon='fire',
+               model=Session,
+               actions=[
+                        {
+                         'id': 'list',
+                         'name': _("Browse Users"),
+                         'help': _("Browse all registered user accounts"),
+                         'route': 'admin_overview_online'
+                         },
+                        ],
+               route='admin_overview_online', 
+               urlpatterns=patterns('misago.overview.admin.views',
+                        url(r'^$', 'OnlineList', name='admin_overview_online'),
+                        url(r'^(?P<page>\d+)/$', 'OnlineList', name='admin_overview_online'),
+                    ),
+               ),
+   AdminAction(
+               section='overview',
+               id='staff',
+               name=_("Forum Team"),
+               help=_("List of all forum team members"),
+               icon='user',
+               route='admin_overview_staff',
+               urlpatterns=patterns('misago.admin.views',
+                        url(r'^$', 'todo', name='admin_overview_staff'),
+                    ),
+               ),
+)

+ 25 - 0
misago/admin/layout/sections.py

@@ -0,0 +1,25 @@
+from django.utils.translation import ugettext_lazy as _
+from misago.admin import AdminSection
+
+ADMIN_SECTIONS=(
+    AdminSection(
+                 id='overview',
+                 name=_("Overview"),
+                 icon='signal',
+                 ),
+    AdminSection(
+                 id='users',
+                 name=_("Users"),
+                 icon='user',
+                 ),
+    AdminSection(
+                 id='forums',
+                 name=_("Forums"),
+                 icon='comment',
+                 ),
+    AdminSection(
+                 id='system',
+                 name=_("System"),
+                 icon='cog',
+                 ),
+)

+ 19 - 0
misago/admin/layout/system.py

@@ -0,0 +1,19 @@
+from django.conf.urls import patterns, include, url
+from django.utils.translation import ugettext_lazy as _
+from misago.admin import AdminAction
+
+ADMIN_ACTIONS=(
+   AdminAction(
+               section='system',
+               id='settings',
+               name=_("Settings"),
+               help=_("Change your forum configuration"),
+               icon='wrench',
+               route='admin_settings',
+               urlpatterns=patterns('misago.settings.admin.views',
+                        url(r'^$', 'settings', name='admin_settings'),
+                        url(r'^search/$', 'settings_search', name='admin_settings_search'),
+                        url(r'^(?P<group_slug>([a-z0-9]|-)+)-(?P<group_id>\d+)/$', 'settings', name='admin_settings')
+                    ),
+               ),
+)

+ 189 - 0
misago/admin/layout/users.py

@@ -0,0 +1,189 @@
+from django.conf.urls import patterns, include, url
+from django.utils.translation import ugettext_lazy as _
+from misago.admin import AdminAction
+from misago.acl.models import Role
+from misago.banning.models import Ban
+from misago.users.models import User, Rank, Newsletter, Pruning
+
+ADMIN_ACTIONS=(
+   AdminAction(
+               section='users',
+               id='users',
+               name=_("Users List"),
+               help=_("Search and browse users"),
+               icon='user',
+               model=User,
+               actions=[
+                        {
+                         'id': 'list',
+                         'name': _("Browse Users"),
+                         'help': _("Browse all registered user accounts"),
+                         'route': 'admin_users'
+                         },
+                        {
+                         'id': 'new',
+                         'name': _("Add User"),
+                         'help': _("Create new user account"),
+                         'route': 'admin_users_new'
+                         },
+                        ],
+               route='admin_users',
+               urlpatterns=patterns('misago.users.admin.users.views',
+                        url(r'^$', 'List', name='admin_users'),
+                        url(r'^(?P<page>\d+)/$', 'List', name='admin_users'),
+                        url(r'^inactive/$', 'inactive', name='admin_users_inactive'),
+                        url(r'^new/$', 'New', name='admin_users_new'),
+                        url(r'^edit/(?P<slug>[a-z0-9]+)-(?P<target>\d+)/$', 'Edit', name='admin_users_edit'),
+                        url(r'^delete/(?P<slug>[a-z0-9]+)-(?P<target>\d+)/$', 'Delete', name='admin_users_delete'),
+                    ),
+               ),
+               
+   AdminAction(
+               section='users',
+               id='roles',
+               name=_("Roles"),
+               help=_("Manage User Roles"),
+               icon='adjust',
+               model=Role,
+               actions=[
+                        {
+                         'id': 'list',
+                         'name': _("Browse Roles"),
+                         'help': _("Browse all existing roles"),
+                         'route': 'admin_users_roles'
+                         },
+                        {
+                         'id': 'new',
+                         'name': _("Add Role"),
+                         'help': _("Create new role"),
+                         'route': 'admin_users_roles_new'
+                         },
+                        ],
+               route='admin_users_roles',
+               urlpatterns=patterns('misago.users.admin.roles.views',
+                        url(r'^$', 'List', name='admin_users_roles'),
+                        url(r'^new/$', 'New', name='admin_users_roles_new'),
+                        url(r'^edit/(?P<slug>([a-z0-9]|-)+)-(?P<target>\d+)/$', 'Edit', name='admin_users_roles_edit'),
+                        url(r'^delete/(?P<slug>([a-z0-9]|-)+)-(?P<target>\d+)/$', 'Delete', name='admin_users_roles_delete'),
+                    ),
+               ),
+   AdminAction(
+               section='users',
+               id='ranks',
+               name=_("Ranks"),
+               help=_("Administrate User Ranks"),
+               icon='star',
+               model=Rank,
+               actions=[
+                        {
+                         'id': 'list',
+                         'name': _("Browse Ranks"),
+                         'help': _("Browse all existing ranks"),
+                         'route': 'admin_users_ranks'
+                         },
+                        {
+                         'id': 'new',
+                         'name': _("Add Rank"),
+                         'help': _("Create new rank"),
+                         'route': 'admin_users_ranks_new'
+                         },
+                        ],
+               route='admin_users_ranks',
+               urlpatterns=patterns('misago.users.admin.ranks.views',
+                        url(r'^$', 'List', name='admin_users_ranks'),
+                        url(r'^new/$', 'New', name='admin_users_ranks_new'),
+                        url(r'^edit/(?P<slug>([a-z0-9]|-)+)-(?P<target>\d+)/$', 'Edit', name='admin_users_ranks_edit'),
+                        url(r'^delete/(?P<slug>([a-z0-9]|-)+)-(?P<target>\d+)/$', 'Delete', name='admin_users_ranks_delete'),
+                    ),
+               ),
+   AdminAction(
+               section='users',
+               id='bans',
+               name=_("Banning"),
+               help=_("Ban or unban users from forums."),
+               icon='lock',
+               model=Ban,
+               actions=[
+                        {
+                         'id': 'list',
+                         'name': _("Browse Bans"),
+                         'help': _("Browse all existing bans"),
+                         'route': 'admin_users_bans'
+                         },
+                        {
+                         'id': 'new',
+                         'name': _("Set Ban"),
+                         'help': _("Set new Ban"),
+                         'route': 'admin_users_bans_new'
+                         },
+                        ],
+               route='admin_users_bans',
+               urlpatterns=patterns('misago.banning.admin.views',
+                        url(r'^$', 'List', name='admin_users_bans'),
+                        url(r'^(?P<page>\d+)/$', 'List', name='admin_users_bans'),
+                        url(r'^new/$', 'New', name='admin_users_bans_new'),
+                        url(r'^edit/(?P<target>\d+)/$', 'Edit', name='admin_users_bans_edit'),
+                        url(r'^delete/(?P<target>\d+)/$', 'Delete', name='admin_users_bans_delete'),
+                    ),
+               ),
+   AdminAction(
+               section='users',
+               id='pruning',
+               name=_("Prune Users"),
+               help=_("Delete multiple Users"),
+               icon='remove',
+               model=Pruning,
+               actions=[
+                        {
+                         'id': 'list',
+                         'name': _("Pruning Policies"),
+                         'help': _("Browse all existing pruning policies"),
+                         'route': 'admin_users_pruning'
+                         },
+                        {
+                         'id': 'new',
+                         'name': _("Set New Policy"),
+                         'help': _("Set new pruning policy"),
+                         'route': 'admin_users_pruning_new'
+                         },
+                        ],
+               route='admin_users_pruning',
+               urlpatterns=patterns('misago.users.admin.pruning.views',
+                        url(r'^$', 'List', name='admin_users_pruning'),
+                        url(r'^new/$', 'New', name='admin_users_pruning_new'),
+                        url(r'^edit/(?P<target>\d+)/$', 'Edit', name='admin_users_pruning_edit'),
+                        url(r'^delete/(?P<target>\d+)/$', 'Delete', name='admin_users_pruning_delete'),
+                    ),
+               ),
+   AdminAction(
+               section='users',
+               id='newsletters',
+               name=_("Newsletters"),
+               help=_("Manage and send Newsletters"),
+               icon='envelope',
+               model=Newsletter,
+               actions=[
+                        {
+                         'id': 'list',
+                         'name': _("Browse Newsletters"),
+                         'help': _("Browse all existing Newsletters"),
+                         'route': 'admin_users_newsletters'
+                         },
+                        {
+                         'id': 'new',
+                         'name': _("New Newsletter"),
+                         'help': _("Create new Newsletter"),
+                         'route': 'admin_users_newsletters_new'
+                         },
+                        ],
+               route='admin_users_newsletters',
+               urlpatterns=patterns('misago.users.admin.newsletters.views',
+                        url(r'^$', 'List', name='admin_users_newsletters'),
+                        url(r'^(?P<page>\d+)/$', 'List', name='admin_users_newsletters'),
+                        url(r'^new/$', 'New', name='admin_users_newsletters_new'),
+                        url(r'^send/(?P<target>\d+)/(?P<token>[a-zA-Z0-9]+)/$', 'send', name='admin_users_newsletters_send'),
+                        url(r'^edit/(?P<target>\d+)/$', 'Edit', name='admin_users_newsletters_edit'),
+                        url(r'^delete/(?P<target>\d+)/$', 'Delete', name='admin_users_newsletters_delete'),
+                    ),
+               ),
+)

+ 0 - 70
misago/forums/admin/__init__.py

@@ -1,70 +0,0 @@
-from django.conf.urls import patterns, include, url
-from django.utils.translation import ugettext_lazy as _
-from misago.admin import AdminSection, AdminAction
-
-ADMIN_SECTIONS=(
-    AdminSection(
-                 id='forums',
-                 name=_("Forums"),
-                 icon='comment',
-                 after='users',
-                 ),
-)
-
-ADMIN_ACTIONS=(
-   AdminAction(
-               section='forums',
-               id='forums',
-               name=_("Forums List"),
-               help=_("Create, edit and delete forums."),
-               icon='comment',
-               route='admin_forums',
-               urlpatterns=patterns('misago.admin.views',
-                        url(r'^$', 'todo', name='admin_forums'),
-                    ),
-               ),
-   AdminAction(
-               section='forums',
-               id='moderators',
-               name=_("Moderators"),
-               help=_("Assign forums moderators."),
-               icon='eye-open',
-               route='admin_forums_moderators',
-               urlpatterns=patterns('misago.admin.views',
-                        url(r'^$', 'todo', name='admin_forums_moderators'),
-                    ),
-               ),
-   AdminAction(
-               section='forums',
-               id='tests',
-               name=_("Tests"),
-               help=_("Tests that new messages have to pass"),
-               icon='filter',
-               route='admin_forums_tests',
-               urlpatterns=patterns('misago.admin.views',
-                        url(r'^$', 'todo', name='admin_forums_tests'),
-                    ),
-               ),
-   AdminAction(
-               section='forums',
-               id='badwords',
-               name=_("Words Filter"),
-               help=_("Forbid usage of words in messages"),
-               icon='volume-off',
-               route='admin_forums_badwords',
-               urlpatterns=patterns('misago.admin.views',
-                        url(r'^$', 'todo', name='admin_forums_badwords'),
-                    ),
-               ),
-   AdminAction(
-               section='forums',
-               id='attachments',
-               name=_("Attachments"),
-               help=_("Manage allowed attachment types."),
-               icon='download-alt',
-               route='admin_forums_attachments',
-               urlpatterns=patterns('misago.admin.views',
-                        url(r'^$', 'todo', name='admin_forums_attachments'),
-                    ),
-               ),
-)

+ 0 - 70
misago/overview/admin/__init__.py

@@ -1,70 +0,0 @@
-from django.conf.urls import patterns, include, url
-from django.utils.translation import ugettext_lazy as _
-from misago.admin import AdminSection, AdminAction
-from misago.sessions.models import Session
-
-ADMIN_SECTIONS=(
-    AdminSection(
-                 id='overview',
-                 name=_("Overview"),
-                 icon='signal',
-                 ),
-)
-
-ADMIN_ACTIONS=(
-   AdminAction(
-               section='overview',
-               id='home',
-               name=_("Home"),
-               help=_("Your forums right now"),
-               icon='home',
-               route='admin_overview_home',
-               urlpatterns=patterns('misago.overview.admin.views',
-                        url(r'^$', 'overview_home', name='admin_overview_home'),
-                    ),
-               ),
-   AdminAction(
-               section='overview',
-               id='stats',
-               name=_("Stats"),
-               help=_("Create Statistics Reports"),
-               icon='signal',
-               route='admin_overview_stats',
-               urlpatterns=patterns('misago.overview.admin.views',
-                        url(r'^$', 'overview_stats', name='admin_overview_stats'),
-                        url(r'^(?P<model>[a-z0-9]+)/(?P<date_start>[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9])/(?P<date_end>[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9])/(?P<precision>\w+)$', 'overview_graph', name='admin_overview_graph'),
-                    ),
-               ),
-   AdminAction(
-               section='overview',
-               id='online',
-               name=_("Online"),
-               help=_("See who is currently online on forums."),
-               icon='fire',
-               model=Session,
-               actions=[
-                        {
-                         'id': 'list',
-                         'name': _("Browse Users"),
-                         'help': _("Browse all registered user accounts"),
-                         'route': 'admin_overview_online'
-                         },
-                        ],
-               route='admin_overview_online', 
-               urlpatterns=patterns('misago.overview.admin.views',
-                        url(r'^$', 'OnlineList', name='admin_overview_online'),
-                        url(r'^(?P<page>\d+)/$', 'OnlineList', name='admin_overview_online'),
-                    ),
-               ),
-   AdminAction(
-               section='overview',
-               id='staff',
-               name=_("Forum Team"),
-               help=_("List of all forum team members"),
-               icon='user',
-               route='admin_overview_staff',
-               urlpatterns=patterns('misago.admin.views',
-                        url(r'^$', 'todo', name='admin_overview_staff'),
-                    ),
-               ),
-)

+ 0 - 28
misago/settings/admin/__init__.py

@@ -1,28 +0,0 @@
-from django.conf.urls import patterns, include, url
-from django.utils.translation import ugettext_lazy as _
-from misago.admin import AdminSection, AdminAction
-
-ADMIN_SECTIONS=(
-    AdminSection(
-                 id='system',
-                 name=_("System"),
-                 icon='cog',
-                 after='forums',
-                 ),
-)
-
-ADMIN_ACTIONS=(
-   AdminAction(
-               section='system',
-               id='settings',
-               name=_("Settings"),
-               help=_("Change your forum configuration"),
-               icon='wrench',
-               route='admin_settings',
-               urlpatterns=patterns('misago.settings.admin.views',
-                        url(r'^$', 'settings', name='admin_settings'),
-                        url(r'^search/$', 'settings_search', name='admin_settings_search'),
-                        url(r'^(?P<group_slug>([a-z0-9]|-)+)-(?P<group_id>\d+)/$', 'settings', name='admin_settings')
-                    ),
-               ),
-)

+ 0 - 198
misago/users/admin/__init__.py

@@ -1,198 +0,0 @@
-from django.conf.urls import patterns, include, url
-from django.utils.translation import ugettext_lazy as _
-from misago.admin import AdminSection, AdminAction
-from misago.acl.models import Role
-from misago.banning.models import Ban
-from misago.users.models import User, Rank, Newsletter, Pruning
-
-ADMIN_SECTIONS=(
-    AdminSection(
-                 id='users',
-                 name=_("Users"),
-                 icon='user',
-                 after='overview',
-                 ),
-)
-
-ADMIN_ACTIONS=(
-   AdminAction(
-               section='users',
-               id='users',
-               name=_("Users List"),
-               help=_("Search and browse users"),
-               icon='user',
-               model=User,
-               actions=[
-                        {
-                         'id': 'list',
-                         'name': _("Browse Users"),
-                         'help': _("Browse all registered user accounts"),
-                         'route': 'admin_users'
-                         },
-                        {
-                         'id': 'new',
-                         'name': _("Add User"),
-                         'help': _("Create new user account"),
-                         'route': 'admin_users_new'
-                         },
-                        ],
-               route='admin_users',
-               urlpatterns=patterns('misago.users.admin.users.views',
-                        url(r'^$', 'List', name='admin_users'),
-                        url(r'^(?P<page>\d+)/$', 'List', name='admin_users'),
-                        url(r'^inactive/$', 'inactive', name='admin_users_inactive'),
-                        url(r'^new/$', 'New', name='admin_users_new'),
-                        url(r'^edit/(?P<slug>[a-z0-9]+)-(?P<target>\d+)/$', 'Edit', name='admin_users_edit'),
-                        url(r'^delete/(?P<slug>[a-z0-9]+)-(?P<target>\d+)/$', 'Delete', name='admin_users_delete'),
-                    ),
-               ),
-               
-   AdminAction(
-               section='users',
-               id='roles',
-               name=_("Roles"),
-               help=_("Manage User Roles"),
-               icon='adjust',
-               model=Role,
-               actions=[
-                        {
-                         'id': 'list',
-                         'name': _("Browse Roles"),
-                         'help': _("Browse all existing roles"),
-                         'route': 'admin_users_roles'
-                         },
-                        {
-                         'id': 'new',
-                         'name': _("Add Role"),
-                         'help': _("Create new role"),
-                         'route': 'admin_users_roles_new'
-                         },
-                        ],
-               route='admin_users_roles',
-               urlpatterns=patterns('misago.users.admin.roles.views',
-                        url(r'^$', 'List', name='admin_users_roles'),
-                        url(r'^new/$', 'New', name='admin_users_roles_new'),
-                        url(r'^edit/(?P<slug>([a-z0-9]|-)+)-(?P<target>\d+)/$', 'Edit', name='admin_users_roles_edit'),
-                        url(r'^delete/(?P<slug>([a-z0-9]|-)+)-(?P<target>\d+)/$', 'Delete', name='admin_users_roles_delete'),
-                    ),
-               ),
-   AdminAction(
-               section='users',
-               id='ranks',
-               name=_("Ranks"),
-               help=_("Administrate User Ranks"),
-               icon='star',
-               model=Rank,
-               actions=[
-                        {
-                         'id': 'list',
-                         'name': _("Browse Ranks"),
-                         'help': _("Browse all existing ranks"),
-                         'route': 'admin_users_ranks'
-                         },
-                        {
-                         'id': 'new',
-                         'name': _("Add Rank"),
-                         'help': _("Create new rank"),
-                         'route': 'admin_users_ranks_new'
-                         },
-                        ],
-               route='admin_users_ranks',
-               urlpatterns=patterns('misago.users.admin.ranks.views',
-                        url(r'^$', 'List', name='admin_users_ranks'),
-                        url(r'^new/$', 'New', name='admin_users_ranks_new'),
-                        url(r'^edit/(?P<slug>([a-z0-9]|-)+)-(?P<target>\d+)/$', 'Edit', name='admin_users_ranks_edit'),
-                        url(r'^delete/(?P<slug>([a-z0-9]|-)+)-(?P<target>\d+)/$', 'Delete', name='admin_users_ranks_delete'),
-                    ),
-               ),
-   AdminAction(
-               section='users',
-               id='bans',
-               name=_("Banning"),
-               help=_("Ban or unban users from forums."),
-               icon='lock',
-               model=Ban,
-               actions=[
-                        {
-                         'id': 'list',
-                         'name': _("Browse Bans"),
-                         'help': _("Browse all existing bans"),
-                         'route': 'admin_users_bans'
-                         },
-                        {
-                         'id': 'new',
-                         'name': _("Set Ban"),
-                         'help': _("Set new Ban"),
-                         'route': 'admin_users_bans_new'
-                         },
-                        ],
-               route='admin_users_bans',
-               urlpatterns=patterns('misago.banning.admin.views',
-                        url(r'^$', 'List', name='admin_users_bans'),
-                        url(r'^(?P<page>\d+)/$', 'List', name='admin_users_bans'),
-                        url(r'^new/$', 'New', name='admin_users_bans_new'),
-                        url(r'^edit/(?P<target>\d+)/$', 'Edit', name='admin_users_bans_edit'),
-                        url(r'^delete/(?P<target>\d+)/$', 'Delete', name='admin_users_bans_delete'),
-                    ),
-               ),
-   AdminAction(
-               section='users',
-               id='pruning',
-               name=_("Prune Users"),
-               help=_("Delete multiple Users"),
-               icon='remove',
-               model=Pruning,
-               actions=[
-                        {
-                         'id': 'list',
-                         'name': _("Pruning Policies"),
-                         'help': _("Browse all existing pruning policies"),
-                         'route': 'admin_users_pruning'
-                         },
-                        {
-                         'id': 'new',
-                         'name': _("Set New Policy"),
-                         'help': _("Set new pruning policy"),
-                         'route': 'admin_users_pruning_new'
-                         },
-                        ],
-               route='admin_users_pruning',
-               urlpatterns=patterns('misago.users.admin.pruning.views',
-                        url(r'^$', 'List', name='admin_users_pruning'),
-                        url(r'^new/$', 'New', name='admin_users_pruning_new'),
-                        url(r'^edit/(?P<target>\d+)/$', 'Edit', name='admin_users_pruning_edit'),
-                        url(r'^delete/(?P<target>\d+)/$', 'Delete', name='admin_users_pruning_delete'),
-                    ),
-               ),
-   AdminAction(
-               section='users',
-               id='newsletters',
-               name=_("Newsletters"),
-               help=_("Manage and send Newsletters"),
-               icon='envelope',
-               model=Newsletter,
-               actions=[
-                        {
-                         'id': 'list',
-                         'name': _("Browse Newsletters"),
-                         'help': _("Browse all existing Newsletters"),
-                         'route': 'admin_users_newsletters'
-                         },
-                        {
-                         'id': 'new',
-                         'name': _("New Newsletter"),
-                         'help': _("Create new Newsletter"),
-                         'route': 'admin_users_newsletters_new'
-                         },
-                        ],
-               route='admin_users_newsletters',
-               urlpatterns=patterns('misago.users.admin.newsletters.views',
-                        url(r'^$', 'List', name='admin_users_newsletters'),
-                        url(r'^(?P<page>\d+)/$', 'List', name='admin_users_newsletters'),
-                        url(r'^new/$', 'New', name='admin_users_newsletters_new'),
-                        url(r'^send/(?P<target>\d+)/(?P<token>[a-zA-Z0-9]+)/$', 'send', name='admin_users_newsletters_send'),
-                        url(r'^edit/(?P<target>\d+)/$', 'Edit', name='admin_users_newsletters_edit'),
-                        url(r'^delete/(?P<target>\d+)/$', 'Delete', name='admin_users_newsletters_delete'),
-                    ),
-               ),
-)