diff --git a/mayan/apps/acls/__init__.py b/mayan/apps/acls/__init__.py index 058d86a888..e1c71dd3b9 100644 --- a/mayan/apps/acls/__init__.py +++ b/mayan/apps/acls/__init__.py @@ -2,31 +2,27 @@ from __future__ import absolute_import from django.dispatch import receiver +from south.signals import post_migrate + from navigation.api import register_links, register_multi_item_links from project_setup.api import register_setup -from south.signals import post_migrate - -from .classes import (AccessHolder, AccessObjectClass, ClassAccessHolder, - AccessObject) -from .links import (acl_detail, acl_grant, acl_revoke, acl_holder_new, - acl_setup_valid_classes, acl_class_list, acl_class_acl_list, - acl_class_acl_detail, acl_class_new_holder_for, acl_class_grant, - acl_class_revoke) +from .classes import (AccessHolder, AccessObject, AccessObjectClass, + ClassAccessHolder) +from .links import (acl_class_acl_detail, acl_class_acl_list, acl_class_grant, + acl_class_list, acl_class_new_holder_for, + acl_class_revoke, acl_detail, acl_grant, acl_holder_new, + acl_revoke, acl_setup_valid_classes) from .models import CreatorSingleton -register_links(AccessHolder, [acl_detail]) -register_multi_item_links(['acls:acl_detail'], [acl_grant, acl_revoke]) - register_links([AccessObject], [acl_holder_new], menu_name='sidebar') - -register_setup(acl_setup_valid_classes) -register_links(['acls:acl_setup_valid_classes', 'acls:acl_class_acl_list', 'acls:acl_class_new_holder_for', 'acls:acl_class_acl_detail', 'acls:acl_class_multiple_grant', 'acls:acl_class_multiple_revoke'], [acl_class_list], menu_name='secondary_menu') - -register_links(ClassAccessHolder, [acl_class_acl_detail]) - register_links(AccessObjectClass, [acl_class_acl_list, acl_class_new_holder_for]) +register_links(AccessHolder, [acl_detail]) +register_links(['acls:acl_setup_valid_classes', 'acls:acl_class_acl_list', 'acls:acl_class_new_holder_for', 'acls:acl_class_acl_detail', 'acls:acl_class_multiple_grant', 'acls:acl_class_multiple_revoke'], [acl_class_list], menu_name='secondary_menu') +register_links(ClassAccessHolder, [acl_class_acl_detail]) +register_multi_item_links(['acls:acl_detail'], [acl_grant, acl_revoke]) register_multi_item_links(['acls:acl_class_acl_detail'], [acl_class_grant, acl_class_revoke]) +register_setup(acl_setup_valid_classes) @receiver(post_migrate, dispatch_uid='create_creator_user') diff --git a/mayan/apps/acls/links.py b/mayan/apps/acls/links.py index ea13f3a639..ec5cc5761d 100644 --- a/mayan/apps/acls/links.py +++ b/mayan/apps/acls/links.py @@ -1,7 +1,7 @@ from django.utils.translation import ugettext_lazy as _ -from .permissions import (ACLS_EDIT_ACL, ACLS_VIEW_ACL, - ACLS_CLASS_EDIT_ACL, ACLS_CLASS_VIEW_ACL) +from .permissions import (ACLS_CLASS_EDIT_ACL, ACLS_CLASS_VIEW_ACL, + ACLS_EDIT_ACL, ACLS_VIEW_ACL) acl_list = {'text': _(u'ACLs'), 'view': 'acls:acl_list', 'famfam': 'lock', 'permissions': [ACLS_VIEW_ACL]} acl_detail = {'text': _(u'Details'), 'view': 'acls:acl_detail', 'args': ['access_object.gid', 'object.gid'], 'famfam': 'key_go', 'permissions': [ACLS_VIEW_ACL]} diff --git a/mayan/apps/acls/templatetags/acl_tags.py b/mayan/apps/acls/templatetags/acl_tags.py index 68ce30263d..22f8443b27 100644 --- a/mayan/apps/acls/templatetags/acl_tags.py +++ b/mayan/apps/acls/templatetags/acl_tags.py @@ -1,14 +1,13 @@ import logging from django.core.exceptions import PermissionDenied -from django.template import (TemplateSyntaxError, Library, - Node, Variable, VariableDoesNotExist) - +from django.template import (Library, Node, TemplateSyntaxError, Variable, + VariableDoesNotExist) from acls.models import AccessEntry -register = Library() logger = logging.getLogger(__name__) +register = Library() class CheckAccessNode(Node): diff --git a/mayan/apps/acls/views.py b/mayan/apps/acls/views.py index fb6f0fa0ee..5d84db6408 100644 --- a/mayan/apps/acls/views.py +++ b/mayan/apps/acls/views.py @@ -7,8 +7,8 @@ from django.contrib import messages from django.contrib.contenttypes.models import ContentType from django.core.exceptions import ObjectDoesNotExist, PermissionDenied from django.core.urlresolvers import reverse -from django.http import HttpResponseRedirect, Http404 -from django.shortcuts import render_to_response, get_object_or_404 +from django.http import Http404, HttpResponseRedirect +from django.shortcuts import get_object_or_404, render_to_response from django.template import RequestContext from django.utils.http import urlencode from django.utils.translation import ugettext_lazy as _ @@ -19,11 +19,11 @@ from permissions.models import Permission from .api import get_class_permissions_for from .classes import (AccessHolder, AccessObject, AccessObjectClass, - ClassAccessHolder) -from .forms import HolderSelectionForm, ClassHolderSelectionForm + ClassAccessHolder) +from .forms import ClassHolderSelectionForm, HolderSelectionForm from .models import AccessEntry, DefaultAccessEntry -from .permissions import (ACLS_EDIT_ACL, ACLS_VIEW_ACL, - ACLS_CLASS_EDIT_ACL, ACLS_CLASS_VIEW_ACL) +from .permissions import (ACLS_EDIT_ACL, ACLS_CLASS_EDIT_ACL, + ACLS_CLASS_VIEW_ACL, ACLS_VIEW_ACL) from .widgets import object_w_content_type_icon logger = logging.getLogger(__name__) @@ -61,7 +61,7 @@ def acl_list_for(request, obj, extra_context=None): context.update(extra_context) return render_to_response('main/generic_list.html', context, - context_instance=RequestContext(request)) + context_instance=RequestContext(request)) def acl_list(request, app_label, model_name, object_id): @@ -128,11 +128,8 @@ def acl_detail_for(request, actor, obj): ], } - return render_to_response( - 'main/generic_detail.html', - context, - context_instance=RequestContext(request) - ) + return render_to_response('main/generic_detail.html', context, + context_instance=RequestContext(request)) def acl_grant(request): @@ -225,7 +222,7 @@ def acl_grant(request): context['object'] = navigation_object.source_object return render_to_response('main/generic_confirm.html', context, - context_instance=RequestContext(request)) + context_instance=RequestContext(request)) def acl_revoke(request): @@ -318,7 +315,7 @@ def acl_revoke(request): context['object'] = navigation_object.source_object return render_to_response('main/generic_confirm.html', context, - context_instance=RequestContext(request)) + context_instance=RequestContext(request)) def acl_new_holder_for(request, obj, extra_context=None, navigation_object=None): @@ -364,7 +361,7 @@ def acl_new_holder_for(request, obj, extra_context=None, navigation_object=None) context.update(extra_context) return render_to_response('main/generic_form.html', context, - context_instance=RequestContext(request)) + context_instance=RequestContext(request)) def acl_holder_new(request, access_object_gid): @@ -390,7 +387,7 @@ def acl_setup_valid_classes(request): } return render_to_response('main/generic_list.html', context, - context_instance=RequestContext(request)) + context_instance=RequestContext(request)) def acl_class_acl_list(request, access_object_class_gid): @@ -414,7 +411,7 @@ def acl_class_acl_list(request, access_object_class_gid): } return render_to_response('main/generic_list.html', context, - context_instance=RequestContext(request)) + context_instance=RequestContext(request)) def acl_class_acl_detail(request, access_object_class_gid, holder_object_gid): @@ -432,10 +429,9 @@ def acl_class_acl_detail(request, access_object_class_gid, holder_object_gid): 'name': u'main/generic_list_subtemplate.html', 'context': { 'title': _(u'Permissions available to: %(actor)s for class %(class)s' % { - 'actor': actor, - 'class': access_object_class - } - ), + 'actor': actor, + 'class': access_object_class + }), 'object_list': permission_list, 'extra_columns': [ {'name': _(u'Namespace'), 'attribute': 'namespace'}, @@ -487,7 +483,7 @@ def acl_class_new_holder_for(request, access_object_class_gid): } return render_to_response('main/generic_form.html', context, - context_instance=RequestContext(request)) + context_instance=RequestContext(request)) def acl_class_multiple_grant(request): @@ -566,7 +562,7 @@ def acl_class_multiple_grant(request): context['object'] = navigation_object return render_to_response('main/generic_confirm.html', context, - context_instance=RequestContext(request)) + context_instance=RequestContext(request)) def acl_class_multiple_revoke(request): @@ -645,4 +641,4 @@ def acl_class_multiple_revoke(request): context['object'] = navigation_object return render_to_response('main/generic_confirm.html', context, - context_instance=RequestContext(request)) + context_instance=RequestContext(request)) diff --git a/mayan/apps/checkouts/__init__.py b/mayan/apps/checkouts/__init__.py index b30e266d7b..67538b8b0e 100644 --- a/mayan/apps/checkouts/__init__.py +++ b/mayan/apps/checkouts/__init__.py @@ -2,22 +2,23 @@ from __future__ import absolute_import from datetime import timedelta -from django.utils.translation import ugettext_lazy as _ - from acls.api import class_permissions from documents.models import Document from mayan.celery import app from history.api import register_history_type from navigation.api import register_links, register_top_menu -from .events import (HISTORY_DOCUMENT_CHECKED_OUT, HISTORY_DOCUMENT_CHECKED_IN, - HISTORY_DOCUMENT_AUTO_CHECKED_IN, HISTORY_DOCUMENT_FORCEFUL_CHECK_IN) -from .links import checkout_list, checkout_document, checkout_info, checkin_document +from .events import (HISTORY_DOCUMENT_AUTO_CHECKED_IN, + HISTORY_DOCUMENT_CHECKED_OUT, + HISTORY_DOCUMENT_CHECKED_IN, + HISTORY_DOCUMENT_FORCEFUL_CHECK_IN) +from .links import (checkin_document, checkout_document, checkout_info, + checkout_list) from .models import DocumentCheckout -from .permissions import (PERMISSION_DOCUMENT_CHECKOUT, - PERMISSION_DOCUMENT_CHECKIN, PERMISSION_DOCUMENT_CHECKIN_OVERRIDE, - PERMISSION_DOCUMENT_RESTRICTIONS_OVERRIDE) -from .tasks import task_check_expired_check_outs +from .permissions import (PERMISSION_DOCUMENT_CHECKIN, + PERMISSION_DOCUMENT_CHECKIN_OVERRIDE, + PERMISSION_DOCUMENT_CHECKOUT, + PERMISSION_DOCUMENT_RESTRICTIONS_OVERRIDE) CHECK_EXPIRED_CHECK_OUTS_INTERVAL = 60 # Lowest check out expiration allowed @@ -29,9 +30,14 @@ def initialize_document_checkout_extra_methods(): Document.add_to_class('checkout_state', lambda document: DocumentCheckout.objects.document_checkout_state(document)) Document.add_to_class('is_new_versions_allowed', lambda document, user=None: DocumentCheckout.objects.is_document_new_versions_allowed(document, user)) -register_top_menu(name='checkouts', link=checkout_list) -register_links(Document, [checkout_info], menu_name='form_header') -register_links(['checkout_info', 'checkout_document', 'checkin_document'], [checkout_document, checkin_document], menu_name="sidebar") + +app.conf.CELERYBEAT_SCHEDULE.update({ + 'check_expired_check_outs': { + 'task': 'checkouts.tasks.task_check_expired_check_outs', + 'schedule': timedelta(seconds=CHECK_EXPIRED_CHECK_OUTS_INTERVAL), + 'options': {'queue': 'checkouts'} + }, +}) class_permissions(Document, [ PERMISSION_DOCUMENT_CHECKOUT, @@ -46,10 +52,6 @@ register_history_type(HISTORY_DOCUMENT_CHECKED_IN) register_history_type(HISTORY_DOCUMENT_AUTO_CHECKED_IN) register_history_type(HISTORY_DOCUMENT_FORCEFUL_CHECK_IN) -app.conf.CELERYBEAT_SCHEDULE.update({ - 'check_expired_check_outs': { - 'task': 'checkouts.tasks.task_check_expired_check_outs', - 'schedule': timedelta(seconds=CHECK_EXPIRED_CHECK_OUTS_INTERVAL), - 'options': {'queue': 'checkouts'} - }, -}) +register_links(Document, [checkout_info], menu_name='form_header') +register_links(['checkout_info', 'checkout_document', 'checkin_document'], [checkout_document, checkin_document], menu_name="sidebar") +register_top_menu(name='checkouts', link=checkout_list) diff --git a/mayan/apps/checkouts/views.py b/mayan/apps/checkouts/views.py index 04a36ab52b..778820eb89 100644 --- a/mayan/apps/checkouts/views.py +++ b/mayan/apps/checkouts/views.py @@ -4,7 +4,7 @@ from django.contrib import messages from django.core.exceptions import PermissionDenied from django.core.urlresolvers import reverse from django.http import HttpResponseRedirect -from django.shortcuts import render_to_response, get_object_or_404 +from django.shortcuts import get_object_or_404, render_to_response from django.template import RequestContext from django.utils.translation import ugettext_lazy as _ @@ -19,23 +19,23 @@ from permissions.models import Permission from .exceptions import DocumentAlreadyCheckedOut, DocumentNotCheckedOut from .forms import DocumentCheckoutForm from .models import DocumentCheckout -from .permissions import (PERMISSION_DOCUMENT_CHECKOUT, PERMISSION_DOCUMENT_CHECKIN, - PERMISSION_DOCUMENT_CHECKIN_OVERRIDE) +from .permissions import (PERMISSION_DOCUMENT_CHECKIN, + PERMISSION_DOCUMENT_CHECKIN_OVERRIDE, + PERMISSION_DOCUMENT_CHECKOUT) from .widgets import checkout_widget def checkout_list(request): - return document_list( request, object_list=DocumentCheckout.objects.checked_out_documents(), title=_(u'checked out documents'), extra_context={ - 'extra_columns': [ - {'name': _(u'Checkout user'), 'attribute': encapsulate(lambda document: get_object_name(document.checkout_info().user_object, display_object_type=False))}, - {'name': _(u'Checkout time and date'), 'attribute': encapsulate(lambda document: document.checkout_info().checkout_datetime)}, - {'name': _(u'Checkout expiration'), 'attribute': encapsulate(lambda document: document.checkout_info().expiration_datetime)}, - ], + 'extra_columns': [ + {'name': _(u'Checkout user'), 'attribute': encapsulate(lambda document: get_object_name(document.checkout_info().user_object, display_object_type=False))}, + {'name': _(u'Checkout time and date'), 'attribute': encapsulate(lambda document: document.checkout_info().checkout_datetime)}, + {'name': _(u'Checkout expiration'), 'attribute': encapsulate(lambda document: document.checkout_info().expiration_datetime)}, + ], } ) @@ -143,4 +143,4 @@ def checkin_document(request, document_pk): context['title'] = _(u'Are you sure you wish to check in document: %s?') % document return render_to_response('main/generic_confirm.html', context, - context_instance=RequestContext(request)) + context_instance=RequestContext(request)) diff --git a/mayan/apps/common/__init__.py b/mayan/apps/common/__init__.py index f909a5257f..ad202c77f3 100644 --- a/mayan/apps/common/__init__.py +++ b/mayan/apps/common/__init__.py @@ -7,7 +7,6 @@ from django.contrib.auth import models as auth_models from django.contrib.auth.models import User from django.db.models.signals import post_save from django.dispatch import receiver -from django.utils.translation import ugettext_lazy as _ from south.signals import post_migrate diff --git a/mayan/apps/common/forms.py b/mayan/apps/common/forms.py index bac0634ce9..2e2406ff65 100644 --- a/mayan/apps/common/forms.py +++ b/mayan/apps/common/forms.py @@ -5,14 +5,13 @@ import os from django import forms from django.conf import settings from django.contrib.auth import authenticate -from django.contrib.auth.forms import AuthenticationForm from django.contrib.auth.models import User from django.db import models from django.utils.html import escape from django.utils.translation import ugettext_lazy as _ from .utils import return_attrib -from .widgets import DetailSelectMultiple, PlainWidget, EmailInput +from .widgets import EmailInput, DetailSelectMultiple, PlainWidget class DetailForm(forms.ModelForm): @@ -165,7 +164,7 @@ class EmailAuthenticationForm(forms.Form): def check_for_test_cookie(self): warnings.warn('check_for_test_cookie is deprecated; ensure your login ' - 'view is CSRF-protected.', DeprecationWarning) + 'view is CSRF-protected.', DeprecationWarning) def get_user_id(self): if self.user_cache: diff --git a/mayan/apps/common/templatetags/subtemplates_tags.py b/mayan/apps/common/templatetags/subtemplates_tags.py index 18f7b13a9d..13fe8bf75c 100644 --- a/mayan/apps/common/templatetags/subtemplates_tags.py +++ b/mayan/apps/common/templatetags/subtemplates_tags.py @@ -1,7 +1,7 @@ import re -from django.template import (Node, TemplateSyntaxError, Library, - Variable, Context) +from django.template import (Context, Library, Node, TemplateSyntaxError, + Variable) from django.template.loader import get_template register = Library() diff --git a/mayan/apps/common/utils.py b/mayan/apps/common/utils.py index f4fb189a80..a51b248923 100644 --- a/mayan/apps/common/utils.py +++ b/mayan/apps/common/utils.py @@ -4,7 +4,6 @@ from __future__ import absolute_import import logging import os import random -import re import string import tempfile import types @@ -268,7 +267,7 @@ def load_backend(backend_string): try: return getattr(import_module(module_name), klass) except ImportError as exception: - logger.debug('error importing: %s' % backend_string) + logger.debug('error importing: %s; %s' % (backend_string, exception)) raise diff --git a/mayan/apps/common/views.py b/mayan/apps/common/views.py index 92c63d4052..9175a6bdb5 100644 --- a/mayan/apps/common/views.py +++ b/mayan/apps/common/views.py @@ -7,6 +7,7 @@ from django.contrib.auth.models import User from django.contrib.auth.views import login, password_change from django.contrib.contenttypes.models import ContentType from django.conf import settings +from django.core.exceptions import PermissionDenied from django.core.urlresolvers import reverse from django.http import HttpResponseRedirect from django.shortcuts import redirect, render_to_response @@ -71,8 +72,8 @@ def assign_remove(request, left_list, right_list, add_method, remove_method, lef if request.method == 'POST': if u'%s-submit' % left_list_name in request.POST.keys(): unselected_list = ChoiceForm(request.POST, - prefix=left_list_name, - choices=left_list()) + prefix=left_list_name, + choices=left_list()) if unselected_list.is_valid(): for selection in unselected_list.cleaned_data['selection']: if grouped: @@ -100,8 +101,8 @@ def assign_remove(request, left_list, right_list, add_method, remove_method, lef elif u'%s-submit' % right_list_name in request.POST.keys(): selected_list = ChoiceForm(request.POST, - prefix=right_list_name, - choices=right_list()) + prefix=right_list_name, + choices=right_list()) if selected_list.is_valid(): for selection in selected_list.cleaned_data['selection']: if grouped: @@ -124,10 +125,8 @@ def assign_remove(request, left_list, right_list, add_method, remove_method, lef else: messages.error(request, _(u'Unable to add %(selection)s to %(right_list_title)s.') % { 'selection': label, 'right_list_title': right_list_title}) - unselected_list = ChoiceForm(prefix=left_list_name, - choices=left_list()) - selected_list = ChoiceForm(prefix=right_list_name, - choices=right_list()) + unselected_list = ChoiceForm(prefix=left_list_name, choices=left_list()) + selected_list = ChoiceForm(prefix=right_list_name, choices=right_list()) context = { 'subtemplates_list': [ @@ -159,7 +158,7 @@ def assign_remove(request, left_list, right_list, add_method, remove_method, lef context.update(extra_context) return render_to_response('main/generic_form.html', context, - context_instance=RequestContext(request)) + context_instance=RequestContext(request)) def current_user_details(request): diff --git a/mayan/apps/common/widgets.py b/mayan/apps/common/widgets.py index e351efec40..d1f0c480eb 100644 --- a/mayan/apps/common/widgets.py +++ b/mayan/apps/common/widgets.py @@ -33,15 +33,15 @@ class DetailSelectMultiple(forms.widgets.SelectMultiple): if value: if getattr(value, '__iter__', None): options = [(index, string) for index, string in - self.choices if index in value] + self.choices if index in value] else: options = [(index, string) for index, string in - self.choices if index == value] + self.choices if index == value] else: if self.choices: if self.choices[0] != (u'', u'---------') and value != []: options = [(index, string) for index, string in - self.choices] + self.choices] if options: for index, string in options: diff --git a/mayan/apps/converter/api.py b/mayan/apps/converter/api.py index 78ab7ce350..beb1a7ba16 100644 --- a/mayan/apps/converter/api.py +++ b/mayan/apps/converter/api.py @@ -121,7 +121,3 @@ def get_available_transformations_choices(): result.append((transformation, TRANSFORMATION_CHOICES[transformation]['label'])) return result - - -def get_format_list(): - return [(format, FILE_FORMATS.get(format, u'')) for format in backend.get_format_list()] diff --git a/mayan/apps/converter/backends/graphicsmagick.py b/mayan/apps/converter/backends/graphicsmagick.py index 4f709fdc47..8a4300c7d3 100644 --- a/mayan/apps/converter/backends/graphicsmagick.py +++ b/mayan/apps/converter/backends/graphicsmagick.py @@ -1,18 +1,17 @@ from __future__ import absolute_import import subprocess -import re from . import ConverterBase -from ..exceptions import ConvertError, UnknownFileFormat, IdentifyError +from ..exceptions import ConvertError, IdentifyError, UnknownFileFormat from ..literals import (TRANSFORMATION_RESIZE, - TRANSFORMATION_ROTATE, TRANSFORMATION_ZOOM) -from ..literals import (DIMENSION_SEPARATOR, DEFAULT_PAGE_NUMBER, - DEFAULT_FILE_FORMAT) + TRANSFORMATION_ROTATE, TRANSFORMATION_ZOOM) +from ..literals import (DEFAULT_FILE_FORMAT, DEFAULT_PAGE_NUMBER, + DIMENSION_SEPARATOR) from ..settings import GM_PATH, GM_SETTINGS -CONVERTER_ERROR_STRING_NO_DECODER = u'No decode delegate for this image format' CONVERTER_ERROR_STARTS_WITH = u'starts with' +CONVERTER_ERROR_STRING_NO_DECODER = u'No decode delegate for this image format' class GraphicsMagick(ConverterBase): diff --git a/mayan/apps/converter/backends/imagemagick.py b/mayan/apps/converter/backends/imagemagick.py index b42446daba..114c81f454 100644 --- a/mayan/apps/converter/backends/imagemagick.py +++ b/mayan/apps/converter/backends/imagemagick.py @@ -1,13 +1,12 @@ from __future__ import absolute_import import subprocess -import re from . import ConverterBase -from ..exceptions import ConvertError, UnknownFileFormat, IdentifyError -from ..literals import (TRANSFORMATION_RESIZE, TRANSFORMATION_ROTATE, - TRANSFORMATION_ZOOM, DIMENSION_SEPARATOR, DEFAULT_PAGE_NUMBER, - DEFAULT_FILE_FORMAT) +from ..exceptions import ConvertError, IdentifyError, UnknownFileFormat +from ..literals import (DEFAULT_FILE_FORMAT, DEFAULT_PAGE_NUMBER, + DIMENSION_SEPARATOR, TRANSFORMATION_RESIZE, + TRANSFORMATION_ROTATE, TRANSFORMATION_ZOOM) from ..settings import IM_CONVERT_PATH, IM_IDENTIFY_PATH CONVERTER_ERROR_STRING_NO_DECODER = u'no decode delegate for this image format' diff --git a/mayan/apps/converter/backends/python.py b/mayan/apps/converter/backends/python.py index cfe903c73d..57ab6bbab9 100644 --- a/mayan/apps/converter/backends/python.py +++ b/mayan/apps/converter/backends/python.py @@ -17,8 +17,9 @@ from mimetype.api import get_mimetype from . import ConverterBase from ..exceptions import UnknownFileFormat -from ..literals import (TRANSFORMATION_RESIZE, TRANSFORMATION_ROTATE, - TRANSFORMATION_ZOOM, DEFAULT_PAGE_NUMBER, DEFAULT_FILE_FORMAT) +from ..literals import (DEFAULT_FILE_FORMAT, DEFAULT_PAGE_NUMBER, + TRANSFORMATION_RESIZE, TRANSFORMATION_ROTATE, + TRANSFORMATION_ZOOM) Image.init() diff --git a/mayan/apps/django_gpg/__init__.py b/mayan/apps/django_gpg/__init__.py index 575f7d6feb..8e450e7fbb 100644 --- a/mayan/apps/django_gpg/__init__.py +++ b/mayan/apps/django_gpg/__init__.py @@ -6,13 +6,10 @@ from navigation.api import register_links from project_setup.api import register_setup from .api import Key -from .links import (public_keys, key_delete, key_query, key_receive, - key_setup) +from .links import (key_delete, key_query, key_receive, key_setup, + public_keys) -# register_links(['key_delete', 'key_private_list', 'key_public_list', 'key_query'], [private_keys, public_keys, key_query], menu_name='sidebar') register_links(['django_gpg:key_delete', 'django_gpg:key_public_list', 'django_gpg:key_query'], [public_keys, key_query], menu_name='sidebar') - register_links(Key, [key_delete]) register_links(KeyServerKey, [key_receive]) - register_setup(key_setup) diff --git a/mayan/apps/django_gpg/links.py b/mayan/apps/django_gpg/links.py index ce6502bbd2..47bb8ee45d 100644 --- a/mayan/apps/django_gpg/links.py +++ b/mayan/apps/django_gpg/links.py @@ -1,7 +1,7 @@ from django.utils.translation import ugettext_lazy as _ -from .permissions import (PERMISSION_KEY_VIEW, PERMISSION_KEY_DELETE, - PERMISSION_KEYSERVER_QUERY, PERMISSION_KEY_RECEIVE) +from .permissions import (PERMISSION_KEY_DELETE, PERMISSION_KEY_RECEIVE, + PERMISSION_KEY_VIEW, PERMISSION_KEYSERVER_QUERY) private_keys = {'text': _(u'Private keys'), 'view': 'django_gpg:key_private_list', 'args': 'object.pk', 'famfam': 'key', 'icon': 'key.png', 'permissions': [PERMISSION_KEY_VIEW]} public_keys = {'text': _(u'Public keys'), 'view': 'django_gpg:key_public_list', 'args': 'object.pk', 'famfam': 'key', 'icon': 'key.png', 'permissions': [PERMISSION_KEY_VIEW]} diff --git a/mayan/apps/django_gpg/views.py b/mayan/apps/django_gpg/views.py index 30cb6466d2..942e8f6d6b 100644 --- a/mayan/apps/django_gpg/views.py +++ b/mayan/apps/django_gpg/views.py @@ -14,8 +14,8 @@ from permissions.models import Permission from .api import Key from .exceptions import KeyImportError from .forms import KeySearchForm -from .permissions import (PERMISSION_KEY_VIEW, PERMISSION_KEY_DELETE, - PERMISSION_KEYSERVER_QUERY, PERMISSION_KEY_RECEIVE) +from .permissions import (PERMISSION_KEY_DELETE, PERMISSION_KEY_RECEIVE, + PERMISSION_KEY_VIEW, PERMISSION_KEYSERVER_QUERY) from .runtime import gpg logger = logging.getLogger(__name__) diff --git a/mayan/apps/document_comments/__init__.py b/mayan/apps/document_comments/__init__.py index d208415876..8c17f4b209 100644 --- a/mayan/apps/document_comments/__init__.py +++ b/mayan/apps/document_comments/__init__.py @@ -1,6 +1,5 @@ from __future__ import absolute_import -from django.conf import settings from django.contrib.comments.models import Comment from django.contrib.contenttypes import generic from django.utils.translation import ugettext_lazy as _ @@ -10,14 +9,23 @@ from common.utils import encapsulate from documents.models import Document from navigation.api import register_links, register_model_list_columns -from .links import (comment_delete, comment_add, - comments_for_document) +from .links import comment_add, comment_delete, comments_for_document from .permissions import (PERMISSION_COMMENT_CREATE, - PERMISSION_COMMENT_DELETE, PERMISSION_COMMENT_VIEW) + PERMISSION_COMMENT_DELETE, PERMISSION_COMMENT_VIEW) -if 'django.contrib.comments' not in settings.INSTALLED_APPS: - raise Exception('This app depends on the django.contrib.comments app.') +Document.add_to_class( + 'comments', + generic.GenericRelation( + Comment, + content_type_field='content_type', + object_id_field='object_pk' + ) +) + +class_permissions(Document, [PERMISSION_COMMENT_CREATE, + PERMISSION_COMMENT_DELETE, + PERMISSION_COMMENT_VIEW]) register_model_list_columns(Comment, [ { @@ -37,18 +45,3 @@ register_model_list_columns(Comment, [ register_links(['comments:comments_for_document', 'comments:comment_add', 'comments:comment_delete', 'comments:comment_multiple_delete'], [comment_add], menu_name='sidebar') register_links(Comment, [comment_delete]) register_links(Document, [comments_for_document], menu_name='form_header') - -Document.add_to_class( - 'comments', - generic.GenericRelation( - Comment, - content_type_field='content_type', - object_id_field='object_pk' - ) -) - -class_permissions(Document, [ - PERMISSION_COMMENT_CREATE, - PERMISSION_COMMENT_DELETE, - PERMISSION_COMMENT_VIEW -]) diff --git a/mayan/apps/document_comments/links.py b/mayan/apps/document_comments/links.py index e9114c3d8f..c94f9184ed 100644 --- a/mayan/apps/document_comments/links.py +++ b/mayan/apps/document_comments/links.py @@ -3,7 +3,7 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ from .permissions import (PERMISSION_COMMENT_CREATE, - PERMISSION_COMMENT_DELETE, PERMISSION_COMMENT_VIEW) + PERMISSION_COMMENT_DELETE, PERMISSION_COMMENT_VIEW) comment_delete = {'text': _('delete'), 'view': 'comments:comment_delete', 'args': 'object.pk', 'famfam': 'comment_delete', 'permissions': [PERMISSION_COMMENT_DELETE]} comment_multiple_delete = {'text': _('delete'), 'view': 'comments:comment_multiple_delete', 'args': 'object.pk', 'famfam': 'comments_delete', 'permissions': [PERMISSION_COMMENT_DELETE]} diff --git a/mayan/apps/document_comments/views.py b/mayan/apps/document_comments/views.py index 4323f706e0..c15ed781c8 100644 --- a/mayan/apps/document_comments/views.py +++ b/mayan/apps/document_comments/views.py @@ -64,7 +64,7 @@ def comment_delete(request, comment_id=None, comment_id_list=None): context['title'] = _(u'Are you sure you wish to delete the comments: %s?') % ', '.join([unicode(d) for d in comments]) return render_to_response('main/generic_confirm.html', context, - context_instance=RequestContext(request)) + context_instance=RequestContext(request)) def comment_multiple_delete(request): diff --git a/mayan/apps/documents/migrations/0003_auto__del_field_document_file_extension.py b/mayan/apps/documents/migrations/0003_auto__del_field_document_file_extension.py index 19c01cdb1c..6e12ad5bdf 100644 --- a/mayan/apps/documents/migrations/0003_auto__del_field_document_file_extension.py +++ b/mayan/apps/documents/migrations/0003_auto__del_field_document_file_extension.py @@ -1,5 +1,4 @@ # encoding: utf-8 -import datetime from south.db import db from south.v2 import SchemaMigration from django.db import models diff --git a/mayan/apps/documents/migrations/0019_auto__add_index_documentversion_timestamp.py b/mayan/apps/documents/migrations/0019_auto__add_index_documentversion_timestamp.py index c4c3a2ee05..460fa69a78 100644 --- a/mayan/apps/documents/migrations/0019_auto__add_index_documentversion_timestamp.py +++ b/mayan/apps/documents/migrations/0019_auto__add_index_documentversion_timestamp.py @@ -1,5 +1,4 @@ # -*- coding: utf-8 -*- -from south.utils import datetime_utils as datetime from south.db import db from south.v2 import SchemaMigration from django.db import models @@ -11,12 +10,10 @@ class Migration(SchemaMigration): # Adding index on 'DocumentVersion', fields ['timestamp'] db.create_index(u'documents_documentversion', ['timestamp']) - def backwards(self, orm): # Removing index on 'DocumentVersion', fields ['timestamp'] db.delete_index(u'documents_documentversion', ['timestamp']) - models = { u'auth.group': { 'Meta': {'object_name': 'Group'}, @@ -116,4 +113,4 @@ class Migration(SchemaMigration): } } - complete_apps = ['documents'] \ No newline at end of file + complete_apps = ['documents'] diff --git a/mayan/apps/metadata/__init__.py b/mayan/apps/metadata/__init__.py index 3d889fec2c..83c45f90eb 100644 --- a/mayan/apps/metadata/__init__.py +++ b/mayan/apps/metadata/__init__.py @@ -11,12 +11,14 @@ from project_setup.api import register_setup from rest_api.classes import APIEndPoint from .api import get_metadata_string -from .links import (metadata_edit, metadata_view, metadata_multiple_edit, - metadata_add, metadata_multiple_add, metadata_remove, metadata_multiple_remove, - setup_metadata_type_list, setup_metadata_type_edit, setup_metadata_type_delete, - setup_metadata_type_create, setup_metadata_set_list, setup_metadata_set_edit, - setup_metadata_set_members, setup_metadata_set_delete, setup_metadata_set_create, - setup_document_type_metadata) +from .links import (metadata_add, metadata_edit, metadata_multiple_add, + metadata_multiple_edit, metadata_multiple_remove, + metadata_remove, metadata_view, + setup_document_type_metadata, setup_metadata_set_create, + setup_metadata_set_delete, setup_metadata_set_edit, + setup_metadata_set_list, setup_metadata_set_members, + setup_metadata_type_create, setup_metadata_type_delete, + setup_metadata_type_edit, setup_metadata_type_list) from .models import MetadataSet, MetadataType from .permissions import (PERMISSION_METADATA_DOCUMENT_ADD, PERMISSION_METADATA_DOCUMENT_EDIT, @@ -42,10 +44,10 @@ class_permissions(Document, [ ]) register_model_list_columns(Document, [ - { - 'name': _(u'Metadata'), 'attribute': encapsulate(lambda x: get_metadata_string(x)) - }, - ]) + { + 'name': _(u'Metadata'), 'attribute': encapsulate(lambda x: get_metadata_string(x)) + }, +]) endpoint = APIEndPoint('metadata') endpoint.register_urls(api_urls) diff --git a/mayan/apps/metadata/api_views.py b/mayan/apps/metadata/api_views.py index 2ac1a2be78..701cc65786 100644 --- a/mayan/apps/metadata/api_views.py +++ b/mayan/apps/metadata/api_views.py @@ -5,8 +5,8 @@ from django.shortcuts import get_object_or_404 from rest_framework import generics +from acls.models import AccessEntry from documents.models import Document -from documents.permissions import PERMISSION_DOCUMENT_VIEW from permissions.models import Permission from rest_api.filters import MayanObjectPermissionsFilter from rest_api.permissions import MayanPermission diff --git a/mayan/apps/metadata/forms.py b/mayan/apps/metadata/forms.py index e40363917d..e909de7a83 100644 --- a/mayan/apps/metadata/forms.py +++ b/mayan/apps/metadata/forms.py @@ -1,7 +1,7 @@ from __future__ import absolute_import from django import forms -from django.forms.formsets import formset_factory, BaseFormSet +from django.forms.formsets import formset_factory from django.utils.translation import ugettext_lazy as _ from common.widgets import ScrollableCheckboxSelectMultiple @@ -13,7 +13,7 @@ from .settings import AVAILABLE_FUNCTIONS, AVAILABLE_MODELS, AVAILABLE_VALIDATOR class MetadataForm(forms.Form): def clean_value(self): - value = self.cleaned_data['value'] + value = self.cleaned_data['value'] metadata_id = self.cleaned_data['id'] metadata_type = MetadataType.objects.get(pk=metadata_id) if ( metadata_type.lookup @@ -22,7 +22,7 @@ class MetadataForm(forms.Form): new_value = val_func(value) if new_value: value = new_value - return value + return value def __init__(self, *args, **kwargs): super(MetadataForm, self).__init__(*args, **kwargs) @@ -44,7 +44,7 @@ class MetadataForm(forms.Form): self.fields['name'].initial = '%s%s' % ((self.metadata_type.title if self.metadata_type.title else self.metadata_type.name), required_string) self.fields['id'].initial = self.metadata_type.pk - + if ( self.metadata_type.lookup and not AVAILABLE_VALIDATORS.has_key(self.metadata_type.lookup)): diff --git a/mayan/apps/metadata/settings.py b/mayan/apps/metadata/settings.py index c1f284a892..ae23297d54 100644 --- a/mayan/apps/metadata/settings.py +++ b/mayan/apps/metadata/settings.py @@ -1,7 +1,5 @@ """Configuration options for the metadata app""" -import datetime - from django.contrib.auth.models import User from django.utils.timezone import now @@ -26,6 +24,6 @@ register_settings( # Definition {'name': u'AVAILABLE_FUNCTIONS', 'global_name': u'METADATA_AVAILABLE_FUNCTIONS', 'default': default_available_functions}, {'name': u'AVAILABLE_MODELS', 'global_name': u'METADATA_AVAILABLE_MODELS', 'default': default_available_models}, - {'name': u'AVAILABLE_VALIDATORS', 'global_name': u'METADATA_AVAILABLE_VALIDATORS', 'default': default_available_validators}, + {'name': u'AVAILABLE_VALIDATORS', 'global_name': u'METADATA_AVAILABLE_VALIDATORS', 'default': default_available_validators}, ] ) diff --git a/mayan/celery.py b/mayan/celery.py index 02144336b5..cef3d3e8e0 100644 --- a/mayan/celery.py +++ b/mayan/celery.py @@ -1,7 +1,6 @@ from __future__ import absolute_import import os -import django from celery import Celery from django.conf import settings diff --git a/mayan/urls.py b/mayan/urls.py index ca547e6c59..7d801f14f0 100644 --- a/mayan/urls.py +++ b/mayan/urls.py @@ -38,6 +38,7 @@ urlpatterns = patterns('', url(r'^user_management/', include('user_management.urls', namespace='user_management')), ) + def handler500(request): """ 500 error handler which includes ``request`` in the context.