From 4fad1c330552b51670b6fc7ca4e924fa6197d5f5 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Fri, 27 Jul 2012 01:06:56 -0400 Subject: [PATCH] Move diagnostics, statistics and maintenance functions from the main app into separate apps --- apps/diagnostics/__init__.py | 7 +++++ apps/diagnostics/api.py | 11 ++++++++ apps/diagnostics/links.py | 7 +++++ apps/diagnostics/models.py | 3 +++ apps/diagnostics/urls.py | 5 ++++ apps/diagnostics/views.py | 17 ++++++++++++ apps/main/__init__.py | 6 ----- apps/main/api.py | 20 --------------- apps/main/links.py | 8 ------ apps/main/urls.py | 3 --- apps/main/views.py | 50 ------------------------------------ apps/maintenance/__init__.py | 7 +++++ apps/maintenance/api.py | 12 +++++++++ apps/maintenance/links.py | 7 +++++ apps/maintenance/models.py | 3 +++ apps/maintenance/urls.py | 5 ++++ apps/maintenance/views.py | 29 +++++++++++++++++++++ apps/statistics/__init__.py | 7 +++++ apps/statistics/links.py | 11 ++++++++ apps/statistics/models.py | 3 +++ apps/statistics/urls.py | 5 ++++ apps/statistics/views.py | 25 ++++++++++++++++++ settings.py | 3 +++ urls.py | 3 +++ 24 files changed, 170 insertions(+), 87 deletions(-) create mode 100644 apps/diagnostics/__init__.py create mode 100644 apps/diagnostics/api.py create mode 100644 apps/diagnostics/links.py create mode 100644 apps/diagnostics/models.py create mode 100644 apps/diagnostics/urls.py create mode 100644 apps/diagnostics/views.py create mode 100644 apps/maintenance/__init__.py create mode 100644 apps/maintenance/api.py create mode 100644 apps/maintenance/links.py create mode 100644 apps/maintenance/models.py create mode 100644 apps/maintenance/urls.py create mode 100644 apps/maintenance/views.py create mode 100644 apps/statistics/__init__.py create mode 100644 apps/statistics/links.py create mode 100644 apps/statistics/models.py create mode 100644 apps/statistics/urls.py create mode 100644 apps/statistics/views.py diff --git a/apps/diagnostics/__init__.py b/apps/diagnostics/__init__.py new file mode 100644 index 0000000000..5ae04c5675 --- /dev/null +++ b/apps/diagnostics/__init__.py @@ -0,0 +1,7 @@ +from __future__ import absolute_import + +from project_tools.api import register_tool + +from .links import diagnostics + +register_tool(diagnostics) diff --git a/apps/diagnostics/api.py b/apps/diagnostics/api.py new file mode 100644 index 0000000000..d2e56cf1d3 --- /dev/null +++ b/apps/diagnostics/api.py @@ -0,0 +1,11 @@ +from common.utils import reverse_lazy + +diagnostics = {} + + +def register_diagnostic(namespace, title, link): + namespace_dict = diagnostics.get(namespace, {'title': None, 'links': []}) + namespace_dict['title'] = title + link.url = getattr(link, 'url', reverse_lazy(link.view)) + namespace_dict['links'].append(link) + diagnostics[namespace] = namespace_dict diff --git a/apps/diagnostics/links.py b/apps/diagnostics/links.py new file mode 100644 index 0000000000..840e6b5ee4 --- /dev/null +++ b/apps/diagnostics/links.py @@ -0,0 +1,7 @@ +from __future__ import absolute_import + +from django.utils.translation import ugettext_lazy as _ + +from navigation.api import Link + +diagnostics = Link(text=_(u'diagnostics'), view='diagnostics', sprite='pill', icon='pill.png') diff --git a/apps/diagnostics/models.py b/apps/diagnostics/models.py new file mode 100644 index 0000000000..71a8362390 --- /dev/null +++ b/apps/diagnostics/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/apps/diagnostics/urls.py b/apps/diagnostics/urls.py new file mode 100644 index 0000000000..15082ceabe --- /dev/null +++ b/apps/diagnostics/urls.py @@ -0,0 +1,5 @@ +from django.conf.urls.defaults import patterns, url + +urlpatterns = patterns('diagnostics.views', + url(r'^$', 'diagnostics_view', (), 'diagnostics'), +) diff --git a/apps/diagnostics/views.py b/apps/diagnostics/views.py new file mode 100644 index 0000000000..6c27fd09cc --- /dev/null +++ b/apps/diagnostics/views.py @@ -0,0 +1,17 @@ +from __future__ import absolute_import + +from django.shortcuts import render_to_response +from django.template import RequestContext +from django.utils.translation import ugettext_lazy as _ + +from permissions.models import Permission + +from .api import diagnostics + + +def diagnostics_view(request): + return render_to_response('diagnostics.html', { + 'blocks': diagnostics, + 'title': _(u'Diagnostics') + }, + context_instance=RequestContext(request)) diff --git a/apps/main/__init__.py b/apps/main/__init__.py index 4768137a0a..a841ce361f 100644 --- a/apps/main/__init__.py +++ b/apps/main/__init__.py @@ -3,11 +3,9 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ from navigation.api import Link, register_top_menu -from project_tools.api import register_tool from .conf.settings import SIDE_BAR_SEARCH, DISABLE_HOME_VIEW from .utils import register_multi_items_links -from .links import maintenance_menu, statistics, diagnostics __author__ = 'Roberto Rosario' __copyright__ = 'Copyright 2011 Roberto Rosario' @@ -46,8 +44,4 @@ def get_version(): __version__ = get_version() -register_tool(maintenance_menu) -register_tool(statistics) -register_tool(diagnostics) - register_multi_items_links() diff --git a/apps/main/api.py b/apps/main/api.py index f22e0150c3..8b13789179 100644 --- a/apps/main/api.py +++ b/apps/main/api.py @@ -1,21 +1 @@ -from common.utils import reverse_lazy -diagnostics = {} -tools = {} - - -def register_diagnostic(namespace, title, link): - namespace_dict = diagnostics.get(namespace, {'title': None, 'links': []}) - namespace_dict['title'] = title - link.url = getattr(link, 'url', reverse_lazy(link.view)) - namespace_dict['links'].append(link) - diagnostics[namespace] = namespace_dict - - -def register_maintenance_links(links, title=None, namespace=None): - namespace_dict = tools.get(namespace, {'title': None, 'links': []}) - namespace_dict['title'] = title - for link in links: - link.url = getattr(link, 'url', reverse_lazy(link.view)) - namespace_dict['links'].append(link) - tools[namespace] = namespace_dict diff --git a/apps/main/links.py b/apps/main/links.py index f265d42048..c31fbe7e53 100644 --- a/apps/main/links.py +++ b/apps/main/links.py @@ -3,11 +3,3 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ from navigation.api import Link - - -def is_superuser(context): - return context['request'].user.is_staff or context['request'].user.is_superuser - -maintenance_menu = Link(text=_(u'maintenance'), view='maintenance_menu', sprite='wrench', icon='wrench.png') -statistics = Link(text=_(u'statistics'), view='statistics', sprite='table', icon='blackboard_sum.png', condition=is_superuser, children_view_regex=[r'statistics']) -diagnostics = Link(text=_(u'diagnostics'), view='diagnostics', sprite='pill', icon='pill.png') diff --git a/apps/main/urls.py b/apps/main/urls.py index 7ee8ceca8d..e7ca7080dd 100644 --- a/apps/main/urls.py +++ b/apps/main/urls.py @@ -2,7 +2,4 @@ from django.conf.urls.defaults import patterns, url urlpatterns = patterns('main.views', url(r'^$', 'home', (), 'home'), - url(r'^maintenance_menu/$', 'maintenance_menu', (), 'maintenance_menu'), - url(r'^statistics/$', 'statistics', (), 'statistics'), - url(r'^diagnostics/$', 'diagnostics_view', (), 'diagnostics'), ) diff --git a/apps/main/views.py b/apps/main/views.py index 75d04971ff..968dc3824b 100644 --- a/apps/main/views.py +++ b/apps/main/views.py @@ -2,16 +2,11 @@ from __future__ import absolute_import from django.shortcuts import render_to_response from django.template import RequestContext -from django.utils.translation import ugettext_lazy as _ -from django.core.exceptions import PermissionDenied from django.http import HttpResponseRedirect from django.core.urlresolvers import reverse -from documents.statistics import get_statistics as documents_statistics -from ocr.statistics import get_statistics as ocr_statistics from permissions.models import Permission -from .api import diagnostics, tools from .conf.settings import DISABLE_HOME_VIEW @@ -21,48 +16,3 @@ def home(request): else: return render_to_response('home.html', {}, context_instance=RequestContext(request)) - - -def maintenance_menu(request): - user_tools = {} - for namespace, values in tools.items(): - user_tools[namespace] = { - 'title': values['title'] - } - user_tools[namespace].setdefault('links', []) - for link in values['links']: - try: - permissions = link.permissions - Permission.objects.check_permissions(request.user, permissions) - user_tools[namespace]['links'].append(link) - except PermissionDenied: - pass - - return render_to_response('tools.html', { - 'blocks': user_tools, - 'title': _(u'maintenance menu') - }, - context_instance=RequestContext(request)) - - -def statistics(request): - if request.user.is_superuser or request.user.is_staff: - blocks = [] - blocks.append(documents_statistics()) - blocks.append(ocr_statistics()) - - return render_to_response('statistics.html', { - 'blocks': blocks, - 'title': _(u'Statistics') - }, - context_instance=RequestContext(request)) - else: - raise PermissionDenied - - -def diagnostics_view(request): - return render_to_response('diagnostics.html', { - 'blocks': diagnostics, - 'title': _(u'Diagnostics') - }, - context_instance=RequestContext(request)) diff --git a/apps/maintenance/__init__.py b/apps/maintenance/__init__.py new file mode 100644 index 0000000000..3d1c3cfb43 --- /dev/null +++ b/apps/maintenance/__init__.py @@ -0,0 +1,7 @@ +from __future__ import absolute_import + +from project_tools.api import register_tool + +from .links import maintenance_menu, statistics + +register_tool(maintenance_menu) diff --git a/apps/maintenance/api.py b/apps/maintenance/api.py new file mode 100644 index 0000000000..414a0a5f6d --- /dev/null +++ b/apps/maintenance/api.py @@ -0,0 +1,12 @@ +from common.utils import reverse_lazy + +tools = {} + + +def register_maintenance_links(links, title=None, namespace=None): + namespace_dict = tools.get(namespace, {'title': None, 'links': []}) + namespace_dict['title'] = title + for link in links: + link.url = getattr(link, 'url', reverse_lazy(link.view)) + namespace_dict['links'].append(link) + tools[namespace] = namespace_dict diff --git a/apps/maintenance/links.py b/apps/maintenance/links.py new file mode 100644 index 0000000000..cfe134213d --- /dev/null +++ b/apps/maintenance/links.py @@ -0,0 +1,7 @@ +from __future__ import absolute_import + +from django.utils.translation import ugettext_lazy as _ + +from navigation.api import Link + +maintenance_menu = Link(text=_(u'maintenance'), view='maintenance_menu', sprite='wrench', icon='wrench.png') diff --git a/apps/maintenance/models.py b/apps/maintenance/models.py new file mode 100644 index 0000000000..71a8362390 --- /dev/null +++ b/apps/maintenance/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/apps/maintenance/urls.py b/apps/maintenance/urls.py new file mode 100644 index 0000000000..d12c9e8067 --- /dev/null +++ b/apps/maintenance/urls.py @@ -0,0 +1,5 @@ +from django.conf.urls.defaults import patterns, url + +urlpatterns = patterns('maintenance.views', + url(r'^$', 'maintenance_menu', (), 'maintenance_menu'), +) diff --git a/apps/maintenance/views.py b/apps/maintenance/views.py new file mode 100644 index 0000000000..809c04268c --- /dev/null +++ b/apps/maintenance/views.py @@ -0,0 +1,29 @@ +from __future__ import absolute_import + +from django.shortcuts import render_to_response +from django.template import RequestContext +from django.utils.translation import ugettext_lazy as _ + +from .api import tools + + +def maintenance_menu(request): + user_tools = {} + for namespace, values in tools.items(): + user_tools[namespace] = { + 'title': values['title'] + } + user_tools[namespace].setdefault('links', []) + for link in values['links']: + try: + permissions = link.permissions + Permission.objects.check_permissions(request.user, permissions) + user_tools[namespace]['links'].append(link) + except PermissionDenied: + pass + + return render_to_response('tools.html', { + 'blocks': user_tools, + 'title': _(u'maintenance menu') + }, + context_instance=RequestContext(request)) diff --git a/apps/statistics/__init__.py b/apps/statistics/__init__.py new file mode 100644 index 0000000000..1da53fbed2 --- /dev/null +++ b/apps/statistics/__init__.py @@ -0,0 +1,7 @@ +from __future__ import absolute_import + +from project_tools.api import register_tool + +from .links import statistics + +register_tool(statistics) diff --git a/apps/statistics/links.py b/apps/statistics/links.py new file mode 100644 index 0000000000..980956bc54 --- /dev/null +++ b/apps/statistics/links.py @@ -0,0 +1,11 @@ +from __future__ import absolute_import + +from django.utils.translation import ugettext_lazy as _ + +from navigation.api import Link + + +def is_superuser(context): + return context['request'].user.is_staff or context['request'].user.is_superuser + +statistics = Link(text=_(u'statistics'), view='statistics', sprite='table', icon='blackboard_sum.png', condition=is_superuser, children_view_regex=[r'statistics']) diff --git a/apps/statistics/models.py b/apps/statistics/models.py new file mode 100644 index 0000000000..71a8362390 --- /dev/null +++ b/apps/statistics/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/apps/statistics/urls.py b/apps/statistics/urls.py new file mode 100644 index 0000000000..6ad39704e6 --- /dev/null +++ b/apps/statistics/urls.py @@ -0,0 +1,5 @@ +from django.conf.urls.defaults import patterns, url + +urlpatterns = patterns('statistics.views', + url(r'^$', 'statistics', (), 'statistics'), +) diff --git a/apps/statistics/views.py b/apps/statistics/views.py new file mode 100644 index 0000000000..8c2cde193d --- /dev/null +++ b/apps/statistics/views.py @@ -0,0 +1,25 @@ +from __future__ import absolute_import + +from django.shortcuts import render_to_response +from django.template import RequestContext +from django.utils.translation import ugettext_lazy as _ + +from documents.statistics import get_statistics as documents_statistics +from ocr.statistics import get_statistics as ocr_statistics + +from .api import diagnostics, tools + + +def statistics(request): + if request.user.is_superuser or request.user.is_staff: + blocks = [] + blocks.append(documents_statistics()) + blocks.append(ocr_statistics()) + + return render_to_response('statistics.html', { + 'blocks': blocks, + 'title': _(u'Statistics') + }, + context_instance=RequestContext(request)) + else: + raise PermissionDenied diff --git a/settings.py b/settings.py index 50f4ff2126..7119a3920b 100644 --- a/settings.py +++ b/settings.py @@ -168,6 +168,8 @@ INSTALLED_APPS = ( # Mayan EDMS 'main', 'installation', + 'diagnostics', + 'maintenance', 'storage', 'folders', 'tags', @@ -186,6 +188,7 @@ INSTALLED_APPS = ( 'checkouts', 'rest_api', 'bootstrap', + 'statistics', # Has to be last so the other apps can register it's signals 'signaler', diff --git a/urls.py b/urls.py index 2049180665..4a5ebe61ec 100644 --- a/urls.py +++ b/urls.py @@ -37,6 +37,9 @@ urlpatterns = patterns('', (r'^installation/', include('installation.urls')), (r'^scheduler/', include('scheduler.urls')), (r'^bootstrap/', include('bootstrap.urls')), + (r'^diagnostics/', include('diagnostics.urls')), + (r'^maintenance/', include('maintenance.urls')), + (r'^statistics/', include('statistics.urls')), )