diff --git a/apps/app_registry/models.py b/apps/app_registry/models.py index b99001aecb..1c79470382 100644 --- a/apps/app_registry/models.py +++ b/apps/app_registry/models.py @@ -1,17 +1,14 @@ from __future__ import absolute_import import logging -import imp -import sys from django.db import models -from django.utils.translation import ugettext_lazy as _ from django.utils.importlib import import_module +from bootstrap.classes import BootstrapModel, Cleanup +from navigation.api import register_top_menu from project_setup.api import register_setup from project_tools.api import register_tool -from navigation.api import register_top_menu -from bootstrap.classes import Cleanup, BootstrapModel logger = logging.getLogger(__name__) @@ -33,19 +30,19 @@ class App(object): else: if not getattr(registration, 'disabled', False): app = App() - app.name=app_name + app.name = app_name # If there are not error go ahead with the stored app instance app.label = getattr(registration, 'label', app_name) app.description = getattr(registration, 'description', u'') - + for link in getattr(registration, 'setup_links', []): logger.debug('setup link: %s' % link) - register_setup(link) + register_setup(link) for link in getattr(registration, 'tool_links', []): logger.debug('tool link: %s' % link) register_tool(link) - + for index, link in enumerate(getattr(registration, 'menu_links', [])): logger.debug('menu_link: %s' % link) register_top_menu(name='%s.%s' % (app_name, index), link=link) diff --git a/apps/checkouts/__init__.py b/apps/checkouts/__init__.py index f0c247a8e9..cb8c375b71 100644 --- a/apps/checkouts/__init__.py +++ b/apps/checkouts/__init__.py @@ -2,23 +2,21 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ +from acls.api import class_permissions +from documents.models import Document +from history.api import register_history_type from navigation.api import (register_links, register_top_menu, register_multi_item_links, register_sidebar_template) from scheduler.api import register_interval_job -from documents.models import Document -from documents.permissions import PERMISSION_DOCUMENT_VIEW -from acls.api import class_permissions -from history.api import register_history_type - +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 .models import DocumentCheckout from .permissions import (PERMISSION_DOCUMENT_CHECKOUT, PERMISSION_DOCUMENT_CHECKIN, PERMISSION_DOCUMENT_CHECKIN_OVERRIDE, PERMISSION_DOCUMENT_RESTRICTIONS_OVERRIDE) -from .links import checkout_list, checkout_document, checkout_info, checkin_document -from .models import DocumentCheckout from .tasks import task_check_expired_check_outs -from .events import (HISTORY_DOCUMENT_CHECKED_OUT, HISTORY_DOCUMENT_CHECKED_IN, - HISTORY_DOCUMENT_AUTO_CHECKED_IN, HISTORY_DOCUMENT_FORCEFUL_CHECK_IN) def initialize_document_checkout_extra_methods(): @@ -39,7 +37,7 @@ class_permissions(Document, [ PERMISSION_DOCUMENT_RESTRICTIONS_OVERRIDE ]) -CHECK_EXPIRED_CHECK_OUTS_INTERVAL=60 # Lowest check out expiration allowed +CHECK_EXPIRED_CHECK_OUTS_INTERVAL = 60 # Lowest check out expiration allowed register_interval_job('task_check_expired_check_outs', _(u'Check expired check out documents and checks them in.'), task_check_expired_check_outs, seconds=CHECK_EXPIRED_CHECK_OUTS_INTERVAL) initialize_document_checkout_extra_methods() register_history_type(HISTORY_DOCUMENT_CHECKED_OUT) diff --git a/apps/checkouts/exceptions.py b/apps/checkouts/exceptions.py index e27b9645de..c0119f6d7e 100644 --- a/apps/checkouts/exceptions.py +++ b/apps/checkouts/exceptions.py @@ -3,7 +3,8 @@ class DocumentNotCheckedOut(Exception): Raised when trying to checkin a document that is not checkedout """ pass - + + class DocumentAlreadyCheckedOut(Exception): """ Raised when trying to checkout an already checkedout document diff --git a/apps/checkouts/forms.py b/apps/checkouts/forms.py index 80fb3091f9..ee01370235 100644 --- a/apps/checkouts/forms.py +++ b/apps/checkouts/forms.py @@ -1,10 +1,9 @@ from __future__ import absolute_import from django import forms -from django.utils.translation import ugettext_lazy as _ -from .models import DocumentCheckout from .exceptions import DocumentAlreadyCheckedOut +from .models import DocumentCheckout from .widgets import SplitTimeDeltaField @@ -17,7 +16,7 @@ class DocumentCheckoutForm(forms.ModelForm): widgets = { 'document': forms.widgets.HiddenInput(), - } + } def clean_document(self): document = self.cleaned_data['document'] diff --git a/apps/checkouts/links.py b/apps/checkouts/links.py index 5583dfe5b3..f266745cd7 100644 --- a/apps/checkouts/links.py +++ b/apps/checkouts/links.py @@ -2,8 +2,6 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from documents.permissions import PERMISSION_DOCUMENT_VIEW - from .permissions import (PERMISSION_DOCUMENT_CHECKOUT, PERMISSION_DOCUMENT_CHECKIN, PERMISSION_DOCUMENT_CHECKIN_OVERRIDE) diff --git a/apps/checkouts/managers.py b/apps/checkouts/managers.py index b4c241bd3e..b56f05ebfe 100644 --- a/apps/checkouts/managers.py +++ b/apps/checkouts/managers.py @@ -6,25 +6,24 @@ import logging from django.db import models from django.core.exceptions import PermissionDenied +from acls.models import AccessEntry from documents.models import Document from history.api import create_history from permissions.models import Permission -from acls.models import AccessEntry -from .exceptions import DocumentNotCheckedOut -from .literals import STATE_CHECKED_OUT, STATE_CHECKED_IN from .events import (HISTORY_DOCUMENT_CHECKED_IN, HISTORY_DOCUMENT_AUTO_CHECKED_IN, HISTORY_DOCUMENT_FORCEFUL_CHECK_IN) +from .exceptions import DocumentNotCheckedOut +from .literals import STATE_CHECKED_OUT, STATE_CHECKED_IN from .permissions import PERMISSION_DOCUMENT_RESTRICTIONS_OVERRIDE -from history.api import create_history logger = logging.getLogger(__name__) class DocumentCheckoutManager(models.Manager): def checked_out_documents(self): return Document.objects.filter(pk__in=self.model.objects.all().values_list('document__pk', flat=True)) - + def expired_check_outs(self): expired_list = Document.objects.filter(pk__in=self.model.objects.filter(expiration_datetime__lte=datetime.datetime.now()).values_list('document__pk', flat=True)) logger.debug('expired_list: %s' % expired_list) @@ -39,7 +38,7 @@ class DocumentCheckoutManager(models.Manager): return True else: return False - + def check_in_document(self, document, user=None): try: document_checkout = self.model.objects.get(document=document) @@ -53,9 +52,9 @@ class DocumentCheckoutManager(models.Manager): create_history(HISTORY_DOCUMENT_CHECKED_IN, source_object=document, data={'user': user, 'document': document}) else: create_history(HISTORY_DOCUMENT_AUTO_CHECKED_IN, source_object=document, data={'document': document}) - + document_checkout.delete() - + def document_checkout_info(self, document): try: return self.model.objects.get(document=document) @@ -95,7 +94,6 @@ class DocumentCheckoutManager(models.Manager): # Last resort check if original user enabled restriction return not checkout_info.block_new_version else: - return True + return True else: - return True - + return True diff --git a/apps/checkouts/models.py b/apps/checkouts/models.py index 819b8856c3..00e6a1e207 100644 --- a/apps/checkouts/models.py +++ b/apps/checkouts/models.py @@ -1,19 +1,18 @@ from __future__ import absolute_import -import logging import datetime +import logging -from django.db import models, IntegrityError -from django.utils.translation import ugettext_lazy as _ -from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes import generic +from django.contrib.contenttypes.models import ContentType +from django.db import models +from django.utils.translation import ugettext_lazy as _ from documents.models import Document from history.api import create_history -from .managers import DocumentCheckoutManager -from .exceptions import DocumentAlreadyCheckedOut from .events import HISTORY_DOCUMENT_CHECKED_OUT +from .managers import DocumentCheckoutManager logger = logging.getLogger(__name__) @@ -31,12 +30,12 @@ class DocumentCheckout(models.Model): block_new_version = models.BooleanField(default=True, verbose_name=_(u'block new version upload'), help_text=_(u'Do not allow new version of this document to be uploaded.')) - #block_metadata - #block_editing - #block tag add/remove - + # block_metadata + # block_editing + # block tag add/remove + objects = DocumentCheckoutManager() - + def __unicode__(self): return unicode(self.document) @@ -46,11 +45,11 @@ class DocumentCheckout(models.Model): result = super(DocumentCheckout, self).save(*args, **kwargs) create_history(HISTORY_DOCUMENT_CHECKED_OUT, source_object=self.document, data={'user': self.user_object, 'document': self.document}) return result - + @models.permalink def get_absolute_url(self): - return ('checkout_info', [self.document.pk]) - + return ('checkout_info', [self.document.pk]) + class Meta: verbose_name = _(u'document checkout') verbose_name_plural = _(u'document checkouts') diff --git a/apps/checkouts/permissions.py b/apps/checkouts/permissions.py index 19430381b8..415c197c29 100644 --- a/apps/checkouts/permissions.py +++ b/apps/checkouts/permissions.py @@ -10,4 +10,3 @@ PERMISSION_DOCUMENT_CHECKOUT = Permission.objects.register(namespace, 'checkout_ PERMISSION_DOCUMENT_CHECKIN = Permission.objects.register(namespace, 'checkin_document', _(u'Check in documents')) PERMISSION_DOCUMENT_CHECKIN_OVERRIDE = Permission.objects.register(namespace, 'checkin_document_override', _(u'Forcefully check in documents')) PERMISSION_DOCUMENT_RESTRICTIONS_OVERRIDE = Permission.objects.register(namespace, 'checkout_restrictions_override', _(u'Allow overriding check out restrictions')) - diff --git a/apps/checkouts/views.py b/apps/checkouts/views.py index 8ba2930ada..8102d24d03 100644 --- a/apps/checkouts/views.py +++ b/apps/checkouts/views.py @@ -1,27 +1,26 @@ from __future__ import absolute_import -from django.utils.translation import ugettext_lazy as _ +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.template import RequestContext -from django.contrib import messages -from django.core.urlresolvers import reverse -from django.core.exceptions import PermissionDenied +from django.utils.translation import ugettext_lazy as _ -from documents.views import document_list from documents.models import Document +from documents.views import document_list -from permissions.models import Permission from acls.models import AccessEntry from common.utils import get_object_name from common.utils import encapsulate +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 .forms import DocumentCheckoutForm -from .exceptions import DocumentAlreadyCheckedOut, DocumentNotCheckedOut -from .literals import STATE_CHECKED_OUT, STATE_CHECKED_IN, STATE_ICONS, STATE_LABELS from .widgets import checkout_widget @@ -56,12 +55,12 @@ def checkout_info(request, document_pk): paragraphs.append(_(u'Check out time: %s') % checkout_info.checkout_datetime) paragraphs.append(_(u'Check out expiration: %s') % checkout_info.expiration_datetime) paragraphs.append(_(u'New versions allowed: %s') % (_(u'yes') if not checkout_info.block_new_version else _(u'no'))) - + return render_to_response('generic_template.html', { 'paragraphs': paragraphs, 'object': document, 'title': _(u'Check out details for document: %s') % document - }, context_instance=RequestContext(request)) + }, context_instance=RequestContext(request)) def checkout_document(request, document_pk): @@ -70,7 +69,7 @@ def checkout_document(request, document_pk): Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_CHECKOUT]) except PermissionDenied: AccessEntry.objects.check_access(PERMISSION_DOCUMENT_CHECKOUT, request.user, document) - + if request.method == 'POST': form = DocumentCheckoutForm(data=request.POST, initial={'document': document}) try: @@ -94,7 +93,7 @@ def checkout_document(request, document_pk): 'form': form, 'object': document, 'title': _(u'Check out document: %s') % document - }, context_instance=RequestContext(request)) + }, context_instance=RequestContext(request)) def checkin_document(request, document_pk): @@ -114,7 +113,7 @@ def checkin_document(request, document_pk): Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_CHECKIN_OVERRIDE]) except PermissionDenied: AccessEntry.objects.check_access(PERMISSION_DOCUMENT_CHECKIN_OVERRIDE, request.user, document) - + previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', '/'))) next = request.POST.get('next', request.GET.get('next', post_action_redirect if post_action_redirect else request.META.get('HTTP_REFERER', '/'))) diff --git a/apps/checkouts/widgets.py b/apps/checkouts/widgets.py index cd5f3d8f70..cedca3d00e 100644 --- a/apps/checkouts/widgets.py +++ b/apps/checkouts/widgets.py @@ -3,12 +3,12 @@ from __future__ import absolute_import import datetime from django import forms -from django.utils.translation import ugettext_lazy as _ -from django.utils.safestring import mark_safe from django.conf import settings from django.core import validators +from django.utils.safestring import mark_safe +from django.utils.translation import ugettext_lazy as _ -from .literals import STATE_CHECKED_OUT, STATE_CHECKED_IN, STATE_ICONS, STATE_LABELS +from .literals import STATE_ICONS, STATE_LABELS def checkout_widget(document): @@ -27,9 +27,9 @@ class SplitDeltaWidget(forms.widgets.MultiWidget): """ def __init__(self, attrs=None): widgets = ( - forms.widgets.TextInput(attrs={'maxlength': 3, 'style':'width: 5em;', 'placeholder': _(u'Days')}), - forms.widgets.TextInput(attrs={'maxlength': 4, 'style':'width: 5em;', 'placeholder': _(u'Hours')}), - forms.widgets.TextInput(attrs={'maxlength': 5, 'style':'width: 5em;', 'placeholder': _(u'Minutes')}), + forms.widgets.TextInput(attrs={'maxlength': 3, 'style': 'width: 5em;', 'placeholder': _(u'Days')}), + forms.widgets.TextInput(attrs={'maxlength': 4, 'style': 'width: 5em;', 'placeholder': _(u'Hours')}), + forms.widgets.TextInput(attrs={'maxlength': 5, 'style': 'width: 5em;', 'placeholder': _(u'Minutes')}), ) super(SplitDeltaWidget, self).__init__(widgets, attrs) @@ -73,15 +73,15 @@ class SplitTimeDeltaField(forms.MultiValueField): fields = ( forms.IntegerField(min_value=0, error_messages={'invalid': errors['invalid_days']}, - localize=localize + localize=localize ), forms.IntegerField(min_value=0, error_messages={'invalid': errors['invalid_hours']}, - localize=localize + localize=localize ), forms.IntegerField(min_value=0, error_messages={'invalid': errors['invalid_minutes']}, - localize=localize + localize=localize ), ) super(SplitTimeDeltaField, self).__init__(fields, *args, **kwargs) @@ -91,7 +91,7 @@ class SplitTimeDeltaField(forms.MultiValueField): def compress(self, data_list): if data_list == [0, 0, 0]: raise forms.ValidationError(self.error_messages['invalid_timedelta']) - + if data_list: # Raise a validation error if time or date is empty # (possible if SplitDateTimeField has required=False). @@ -100,8 +100,8 @@ class SplitTimeDeltaField(forms.MultiValueField): if data_list[1] in validators.EMPTY_VALUES: raise forms.ValidationError(self.error_messages['invalid_hours']) if data_list[2] in validators.EMPTY_VALUES: - raise forms.ValidationError(self.error_messages['invalid_minutes']) - + raise forms.ValidationError(self.error_messages['invalid_minutes']) + timedelta = datetime.timedelta(days=data_list[0], hours=data_list[1], minutes=data_list[2]) return datetime.datetime.now() + timedelta return None diff --git a/apps/django_gpg/__init__.py b/apps/django_gpg/__init__.py index a49c0f26b9..561e364f01 100644 --- a/apps/django_gpg/__init__.py +++ b/apps/django_gpg/__init__.py @@ -1,10 +1,11 @@ from __future__ import absolute_import +from hkp import Key as KeyServerKey + from django.utils.translation import ugettext_lazy as _ from navigation.api import register_links from project_setup.api import register_setup -from hkp import Key as KeyServerKey from .api import Key from .permissions import (PERMISSION_KEY_VIEW, PERMISSION_KEY_DELETE, @@ -18,7 +19,7 @@ key_query = {'text': _(u'query keyservers'), 'view': 'key_query', 'famfam': 'zoo key_receive = {'text': _(u'import'), 'view': 'key_receive', 'args': 'object.keyid', 'famfam': 'key_add', 'keep_query': True, 'permissions': [PERMISSION_KEY_RECEIVE]} key_setup = {'text': _(u'key management'), 'view': 'key_public_list', 'args': 'object.pk', 'famfam': 'key', 'icon': 'key.png', 'permissions': [PERMISSION_KEY_VIEW], 'children_view_regex': [r'^key_']} -#register_links(['key_delete', 'key_private_list', 'key_public_list', 'key_query'], [private_keys, public_keys, key_query], menu_name='sidebar') +# register_links(['key_delete', 'key_private_list', 'key_public_list', 'key_query'], [private_keys, public_keys, key_query], menu_name='sidebar') register_links(['key_delete', 'key_public_list', 'key_query'], [public_keys, key_query], menu_name='sidebar') register_links(Key, [key_delete]) diff --git a/apps/django_gpg/api.py b/apps/django_gpg/api.py index 6d2feea14b..8749d1f5db 100644 --- a/apps/django_gpg/api.py +++ b/apps/django_gpg/api.py @@ -1,19 +1,19 @@ from __future__ import absolute_import import logging -import tempfile import os +import tempfile try: from cStringIO import StringIO except ImportError: from StringIO import StringIO -from django.utils.translation import ugettext_lazy as _ - from hkp import KeyServer import gnupg +from django.utils.translation import ugettext_lazy as _ + from .exceptions import (GPGVerificationError, GPGSigningError, GPGDecryptionError, KeyDeleteError, KeyGenerationError, KeyFetchingError, KeyDoesNotExist, KeyImportError) @@ -110,7 +110,7 @@ class Key(object): keys = gpg.gpg.list_keys(secret=secret) key = next((key for key in keys if key['keyid'] == key_id), None) if not key: - if search_keyservers and secret == False: + if search_keyservers and secret is False: try: gpg.receive_key(key_id) return Key(gpg, key_id) diff --git a/apps/django_gpg/views.py b/apps/django_gpg/views.py index b390dee333..09c2e2ffa9 100644 --- a/apps/django_gpg/views.py +++ b/apps/django_gpg/views.py @@ -2,21 +2,21 @@ from __future__ import absolute_import import logging -from django.utils.translation import ugettext_lazy as _ +from django.contrib import messages from django.http import HttpResponseRedirect from django.shortcuts import render_to_response from django.template import RequestContext -from django.contrib import messages +from django.utils.translation import ugettext_lazy as _ -from permissions.models import Permission from common.utils import encapsulate +from permissions.models import Permission from .api import Key -from .runtime import gpg -from .exceptions import KeyFetchingError, KeyImportError +from .exceptions import KeyImportError from .forms import KeySearchForm from .permissions import (PERMISSION_KEY_VIEW, PERMISSION_KEY_DELETE, PERMISSION_KEYSERVER_QUERY, PERMISSION_KEY_RECEIVE) +from .runtime import gpg logger = logging.getLogger(__name__) diff --git a/apps/document_indexing/api.py b/apps/document_indexing/api.py index 039afdfc82..843b81c0a2 100644 --- a/apps/document_indexing/api.py +++ b/apps/document_indexing/api.py @@ -87,7 +87,7 @@ def cascade_eval(eval_dict, document, template_node, parent_index_instance=None) else: if result: index_instance, created = IndexInstanceNode.objects.get_or_create(index_template_node=template_node, value=result, parent=parent_index_instance) - #if created: + # if created: try: fs_create_index_directory(index_instance) except Exception, exc: diff --git a/apps/document_indexing/links.py b/apps/document_indexing/links.py index 64636ac240..59d4b7f4f3 100644 --- a/apps/document_indexing/links.py +++ b/apps/document_indexing/links.py @@ -9,8 +9,7 @@ from .permissions import (PERMISSION_DOCUMENT_INDEXING_VIEW, PERMISSION_DOCUMENT_INDEXING_SETUP, PERMISSION_DOCUMENT_INDEXING_CREATE, PERMISSION_DOCUMENT_INDEXING_EDIT, - PERMISSION_DOCUMENT_INDEXING_DELETE -) + PERMISSION_DOCUMENT_INDEXING_DELETE) def is_not_root_node(context): @@ -38,6 +37,6 @@ index_list = {'text': _(u'index list'), 'view': 'index_list', 'famfam': 'tab', ' index_parent = {'text': _(u'go up one level'), 'view': 'index_instance_node_view', 'args': 'object.parent.pk', 'famfam': 'arrow_up', 'permissions': [PERMISSION_DOCUMENT_INDEXING_VIEW], 'dont_mark_active': True, 'condition': is_not_instance_root_node} document_index_list = {'text': _(u'indexes'), 'view': 'document_index_list', 'args': 'object.pk', 'famfam': 'folder_page', 'permissions': [PERMISSION_DOCUMENT_INDEXING_VIEW, PERMISSION_DOCUMENT_VIEW]} -document_index_main_menu_link={'text': _('indexes'), 'famfam': 'tab', 'view': 'index_list', 'children_view_regex': [r'^index_[i,l]']} +document_index_main_menu_link = {'text': _('indexes'), 'famfam': 'tab', 'view': 'index_list', 'children_view_regex': [r'^index_[i,l]']} rebuild_index_instances = {'text': _('rebuild indexes'), 'view': 'rebuild_index_instances', 'famfam': 'folder_page', 'permissions': [PERMISSION_DOCUMENT_INDEXING_REBUILD_INDEXES], 'description': _(u'Deletes and creates from scratch all the document indexes.')} diff --git a/apps/document_indexing/models.py b/apps/document_indexing/models.py index ca1e573eac..e8c9d1a2d9 100644 --- a/apps/document_indexing/models.py +++ b/apps/document_indexing/models.py @@ -3,8 +3,8 @@ from __future__ import absolute_import from django.db import models from django.utils.translation import ugettext_lazy as _ -from mptt.models import MPTTModel from mptt.fields import TreeForeignKey +from mptt.models import MPTTModel from documents.models import Document, DocumentType @@ -68,7 +68,7 @@ class IndexTemplateNode(MPTTModel): parent = TreeForeignKey('self', null=True, blank=True, related_name='index_template_node') index = models.ForeignKey(Index, verbose_name=_(u'index')) expression = models.CharField(max_length=128, verbose_name=_(u'indexing expression'), help_text=_(u'Enter a python string expression to be evaluated.')) - # % available_indexing_functions_string) + # % available_indexing_functions_string) enabled = models.BooleanField(default=True, verbose_name=_(u'enabled'), help_text=_(u'Causes this node to be visible and updated when document data changes.')) link_documents = models.BooleanField(default=False, verbose_name=_(u'link documents'), help_text=_(u'Check this option to have this node act as a container for documents and not as a parent for further nodes.')) @@ -82,7 +82,7 @@ class IndexTemplateNode(MPTTModel): class Meta: verbose_name = _(u'index template node') verbose_name_plural = _(u'indexes template nodes') - + class IndexInstanceNode(MPTTModel): parent = TreeForeignKey('self', null=True, blank=True, related_name='index_instance_node') diff --git a/apps/document_indexing/urls.py b/apps/document_indexing/urls.py index 1755500b18..7c6799948d 100644 --- a/apps/document_indexing/urls.py +++ b/apps/document_indexing/urls.py @@ -7,7 +7,7 @@ urlpatterns = patterns('document_indexing.views', url(r'^setup/index/(?P\d+)/delete/$', 'index_setup_delete', (), 'index_setup_delete'), url(r'^setup/index/(?P\d+)/view/$', 'index_setup_view', (), 'index_setup_view'), url(r'^setup/index/(?P\d+)/document_types/$', 'index_setup_document_types', (), 'index_setup_document_types'), - + url(r'^setup/template/node/(?P\d+)/create/child/$', 'template_node_create', (), 'template_node_create'), url(r'^setup/template/node/(?P\d+)/edit/$', 'template_node_edit', (), 'template_node_edit'), url(r'^setup/template/node/(?P\d+)/delete/$', 'template_node_delete', (), 'template_node_delete'), diff --git a/apps/document_indexing/views.py b/apps/document_indexing/views.py index bc2cd9f519..c5875e2ee5 100644 --- a/apps/document_indexing/views.py +++ b/apps/document_indexing/views.py @@ -1,24 +1,24 @@ from __future__ import absolute_import -from django.utils.translation import ugettext_lazy as _ +from django.conf import settings +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.template import RequestContext -from django.contrib import messages -from django.core.urlresolvers import reverse -from django.core.exceptions import PermissionDenied from django.utils.html import mark_safe -from django.conf import settings +from django.utils.translation import ugettext_lazy as _ -from permissions.models import Permission +from acls.models import AccessEntry +from acls.utils import apply_default_acls from documents.permissions import PERMISSION_DOCUMENT_VIEW from documents.models import Document from documents.views import document_list from common.utils import encapsulate, generate_choices_w_labels from common.views import assign_remove from common.widgets import two_state_template -from acls.utils import apply_default_acls -from acls.models import AccessEntry +from permissions.models import Permission from .forms import IndexForm, IndexTemplateNodeForm from .models import (Index, IndexTemplateNode, IndexInstanceNode) @@ -167,7 +167,7 @@ def index_setup_view(request, index_pk): 'extra_columns': [ {'name': _(u'level'), 'attribute': encapsulate(lambda x: node_level(x))}, {'name': _(u'enabled'), 'attribute': encapsulate(lambda x: two_state_template(x.enabled))}, - {'name': _(u'has document links?'), 'attribute': encapsulate(lambda x: two_state_template(x.link_documents))}, + {'name': _(u'has document links?'), 'attribute': encapsulate(lambda x: two_state_template(x.link_documents))}, ], } diff --git a/apps/document_indexing/widgets.py b/apps/document_indexing/widgets.py index 28de1d74f8..373d185cae 100644 --- a/apps/document_indexing/widgets.py +++ b/apps/document_indexing/widgets.py @@ -54,7 +54,7 @@ def get_breadcrumbs(index_instance, simple=False, single_link=False, include_cou # Return the entire breadcrumb path as a single HTML anchor simple = True - #result.append(get_instance_link(index_instance.get_root(), simple=simple)) + # result.append(get_instance_link(index_instance.get_root(), simple=simple)) for instance in index_instance.get_ancestors(): result.append(get_instance_link(instance, simple=simple)) diff --git a/apps/document_signatures/__init__.py b/apps/document_signatures/__init__.py index 9e59b622f7..c6fb62aa08 100644 --- a/apps/document_signatures/__init__.py +++ b/apps/document_signatures/__init__.py @@ -7,9 +7,8 @@ try: except ImportError: from StringIO import StringIO -from django.utils.translation import ugettext_lazy as _ -#from django.db.models.signals import post_save -#from django.dispatch import receiver +# from django.db.models.signals import post_save +# from django.dispatch import receiver from acls.api import class_permissions from documents.models import Document, DocumentVersion @@ -48,19 +47,19 @@ def document_pre_open_hook(descriptor, instance): # Doing this single DB lookup avoids trying to decrypt non signed # files always, which could result in slow down for big non signed # files - #descriptor.seek(0) + # descriptor.seek(0) return descriptor - #try: - # result = gpg.decrypt_file(descriptor, close_descriptor=False) - # # gpg return a string, turn it into a file like object - #except GPGDecryptionError: - # # At least return the original raw content - # descriptor.seek(0) - # return descriptor - #else: - # descriptor.close() - # return StringIO(result.data) + # try: + # result = gpg.decrypt_file(descriptor, close_descriptor=False) + # # gpg return a string, turn it into a file like object + # except GPGDecryptionError: + # # At least return the original raw content + # descriptor.seek(0) + # return descriptor + # else: + # descriptor.close() + # return StringIO(result.data) def document_post_save_hook(instance): @@ -68,12 +67,12 @@ def document_post_save_hook(instance): document_signature, created = DocumentVersionSignature.objects.get_or_create( document_version=instance.latest_version, ) - #DocumentVersionSignature.objects.update_signed_state(instance.document) + # DocumentVersionSignature.objects.update_signed_state(instance.document) -#@receiver(post_save, dispatch_uid='check_document_signature_state', sender=DocumentVersion) -#def check_document_signature_state(sender, instance, **kwargs): -# if kwargs.get('created', False): -# DocumentVersionSignature.objects.signature_state(instance.document) +# @receiver(post_save, dispatch_uid='check_document_signature_state', sender=DocumentVersion) +# def check_document_signature_state(sender, instance, **kwargs): +# if kwargs.get('created', False): +# DocumentVersionSignature.objects.signature_state(instance.document) register_links(Document, [document_verify], menu_name='form_header') diff --git a/apps/document_signatures/forms.py b/apps/document_signatures/forms.py index 7e3f568b1b..a1bc6871ec 100644 --- a/apps/document_signatures/forms.py +++ b/apps/document_signatures/forms.py @@ -1,9 +1,5 @@ from django import forms from django.utils.translation import ugettext_lazy as _ -#from django.utils.translation import ugettext -#from django.core.urlresolvers import reverse -#from django.utils.safestring import mark_safe -#from django.conf import settings class DetachedSignatureForm(forms.Form): diff --git a/apps/document_signatures/links.py b/apps/document_signatures/links.py index bb960c8d71..9e438b0300 100644 --- a/apps/document_signatures/links.py +++ b/apps/document_signatures/links.py @@ -16,7 +16,7 @@ def has_embedded_signature(context): def doesnt_have_detached_signature(context): - return DocumentVersionSignature.objects.has_detached_signature(context['object']) == False + return DocumentVersionSignature.objects.has_detached_signature(context['object']) is False document_signature_delete = {'text': _(u'delete signature'), 'view': 'document_signature_delete', 'args': 'object.pk', 'famfam': 'pencil_delete', 'permissions': [PERMISSION_SIGNATURE_DELETE], 'conditional_disable': doesnt_have_detached_signature} diff --git a/apps/documents/forms.py b/apps/documents/forms.py index 67f452bf8e..4d56aa902d 100644 --- a/apps/documents/forms.py +++ b/apps/documents/forms.py @@ -8,9 +8,7 @@ from django.utils.safestring import mark_safe from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext -from common.conf.settings import DEFAULT_PAPER_SIZE, DEFAULT_PAGE_ORIENTATION from common.forms import DetailForm -from common.literals import PAGE_SIZE_CHOICES, PAGE_ORIENTATION_CHOICES from common.widgets import TextAreaDiv from .models import (Document, DocumentType, diff --git a/apps/documents/tests.py b/apps/documents/tests.py index 3eb6634fc4..b7f8beaa96 100644 --- a/apps/documents/tests.py +++ b/apps/documents/tests.py @@ -41,7 +41,7 @@ class DocumentTestCase(unittest.TestCase): self.failUnlessEqual(self.document.page_count, 47) self.failUnlessEqual(self.document.latest_version.get_formated_version(), '1.0') - #self.failUnlessEqual(self.document.has_detached_signature(), False) + # self.failUnlessEqual(self.document.has_detached_signature(), False) file_object = open(os.path.join(settings.PROJECT_ROOT, 'contrib', 'mayan_11_1.pdf.gpg')) new_version_data = { @@ -55,9 +55,9 @@ class DocumentTestCase(unittest.TestCase): file_object.close() self.failUnlessEqual(self.document.latest_version.get_formated_version(), '2.0') - #self.failUnlessEqual(self.document.has_detached_signature(), False) + # self.failUnlessEqual(self.document.has_detached_signature(), False) - #self.failUnlessEqual(self.document.verify_signature().status, SIGNATURE_STATE_VALID) + # self.failUnlessEqual(self.document.verify_signature().status, SIGNATURE_STATE_VALID) new_version_data = { 'comment': 'test comment 2', diff --git a/apps/documents/views.py b/apps/documents/views.py index 416565e132..59521762e6 100644 --- a/apps/documents/views.py +++ b/apps/documents/views.py @@ -35,8 +35,7 @@ from permissions.models import Permission from .events import HISTORY_DOCUMENT_EDITED from .conf.settings import (PREVIEW_SIZE, STORAGE_BACKEND, ZOOM_PERCENT_STEP, - ZOOM_MAX_LEVEL, ZOOM_MIN_LEVEL, ROTATION_STEP, PRINT_SIZE, - RECENT_COUNT) + ZOOM_MAX_LEVEL, ZOOM_MIN_LEVEL, ROTATION_STEP, RECENT_COUNT) from .forms import (DocumentForm_edit, DocumentPropertiesForm, DocumentPreviewForm, DocumentPageForm, DocumentPageTransformationForm, DocumentContentForm, diff --git a/apps/linking/__init__.py b/apps/linking/__init__.py index fa873f0603..42d1911340 100644 --- a/apps/linking/__init__.py +++ b/apps/linking/__init__.py @@ -1,11 +1,8 @@ from __future__ import absolute_import -from django.utils.translation import ugettext_lazy as _ - from acls import ACLS_EDIT_ACL, ACLS_VIEW_ACL from acls.api import class_permissions from documents.models import Document -from documents.permissions import PERMISSION_DOCUMENT_VIEW from navigation.api import register_links, register_sidebar_template from project_setup.api import register_setup @@ -15,8 +12,7 @@ from .links import (smart_link_instance_view_link, smart_link_instances_for_docu smart_link_condition_edit, smart_link_condition_delete, smart_link_acl_list) from .models import SmartLink, SmartLinkCondition from .permissions import (PERMISSION_SMART_LINK_VIEW, - PERMISSION_SMART_LINK_CREATE, PERMISSION_SMART_LINK_DELETE, - PERMISSION_SMART_LINK_EDIT) + PERMISSION_SMART_LINK_DELETE, PERMISSION_SMART_LINK_EDIT) register_links(Document, [smart_link_instances_for_document], menu_name='form_header') diff --git a/apps/linking/links.py b/apps/linking/links.py index 7521538715..e737bd8247 100644 --- a/apps/linking/links.py +++ b/apps/linking/links.py @@ -2,12 +2,11 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from acls import ACLS_EDIT_ACL, ACLS_VIEW_ACL +from acls import ACLS_VIEW_ACL from documents.permissions import PERMISSION_DOCUMENT_VIEW -from .permissions import (PERMISSION_SMART_LINK_VIEW, - PERMISSION_SMART_LINK_CREATE, PERMISSION_SMART_LINK_DELETE, - PERMISSION_SMART_LINK_EDIT) +from .permissions import (PERMISSION_SMART_LINK_CREATE, + PERMISSION_SMART_LINK_DELETE, PERMISSION_SMART_LINK_EDIT) smart_link_instance_view_link = {'text': _(u'smart links actions'), 'view': 'smart_link_instance_view', 'famfam': 'page_link', 'permissions': [PERMISSION_DOCUMENT_VIEW]} smart_link_instances_for_document = {'text': _(u'smart links'), 'view': 'smart_link_instances_for_document', 'args': 'object.pk', 'famfam': 'page_link', 'permissions': [PERMISSION_DOCUMENT_VIEW]} diff --git a/apps/linking/views.py b/apps/linking/views.py index ab85947403..0b3aefef1b 100644 --- a/apps/linking/views.py +++ b/apps/linking/views.py @@ -2,29 +2,29 @@ from __future__ import absolute_import import logging -from django.utils.translation import ugettext_lazy as _ 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 get_object_or_404, render_to_response -from django.core.urlresolvers import reverse from django.template import RequestContext -from django.core.exceptions import PermissionDenied +from django.utils.translation import ugettext_lazy as _ +from acls.views import acl_list_for +from acls.models import AccessEntry +from acls.utils import apply_default_acls from common.utils import encapsulate from common.widgets import two_state_template from documents.models import Document from documents.views import document_list from documents.permissions import PERMISSION_DOCUMENT_VIEW from permissions.models import Permission -from acls.views import acl_list_for -from acls.models import AccessEntry -from acls.utils import apply_default_acls -from .models import SmartLink, SmartLinkCondition +from . import smart_link_instance_view_link from .conf.settings import SHOW_EMPTY_SMART_LINKS from .forms import (SmartLinkInstanceForm, SmartLinkForm, SmartLinkConditionForm) -from . import smart_link_instance_view_link +from .models import SmartLink, SmartLinkCondition from .permissions import (PERMISSION_SMART_LINK_VIEW, PERMISSION_SMART_LINK_CREATE, PERMISSION_SMART_LINK_DELETE, PERMISSION_SMART_LINK_EDIT) @@ -33,7 +33,7 @@ logger = logging.getLogger(__name__) def smart_link_action(request): - #Permission.objects.check_permissions(request.user, [PERMISSION_SMART_LINK_VIEW]) + # Permission.objects.check_permissions(request.user, [PERMISSION_SMART_LINK_VIEW]) action = request.GET.get('action', None) @@ -76,8 +76,8 @@ def smart_link_instances_for_document(request, document_id): messages.warning(request, _(u'Smart link query error: %s' % error)) if not SHOW_EMPTY_SMART_LINKS: - #If SHOW_EMPTY_SMART_LINKS is False, remove empty groups from - #dictionary + # If SHOW_EMPTY_SMART_LINKS is False, remove empty groups from + # dictionary smart_link_instances = dict([(group, data) for group, data in smart_link_instances.items() if data['documents']]) try: @@ -178,7 +178,7 @@ def smart_link_edit(request, smart_link_pk): form = SmartLinkForm(instance=smart_link) return render_to_response('generic_form.html', { - #'navigation_object_name': 'smart_link', + # 'navigation_object_name': 'smart_link', 'object': smart_link, 'form': form, 'title': _(u'Edit smart link: %s') % smart_link diff --git a/apps/metadata/__init__.py b/apps/metadata/__init__.py index 7fc29fabc2..5460340676 100644 --- a/apps/metadata/__init__.py +++ b/apps/metadata/__init__.py @@ -5,7 +5,6 @@ from django.utils.translation import ugettext_lazy as _ from acls.api import class_permissions from common.utils import encapsulate from documents.models import Document, DocumentType -from documents.permissions import PERMISSION_DOCUMENT_TYPE_EDIT from navigation.api import (register_links, register_multi_item_links, register_sidebar_template, register_model_list_columns) from project_setup.api import register_setup @@ -20,11 +19,7 @@ from .links import (metadata_edit, metadata_view, metadata_multiple_edit, from .models import MetadataType, MetadataSet from .permissions import (PERMISSION_METADATA_DOCUMENT_EDIT, PERMISSION_METADATA_DOCUMENT_ADD, PERMISSION_METADATA_DOCUMENT_REMOVE, - PERMISSION_METADATA_DOCUMENT_VIEW, PERMISSION_METADATA_TYPE_EDIT, - PERMISSION_METADATA_TYPE_CREATE, PERMISSION_METADATA_TYPE_DELETE, - PERMISSION_METADATA_TYPE_VIEW, PERMISSION_METADATA_SET_EDIT, - PERMISSION_METADATA_SET_CREATE, PERMISSION_METADATA_SET_DELETE, - PERMISSION_METADATA_SET_VIEW) + PERMISSION_METADATA_DOCUMENT_VIEW) register_links(['metadata_add', 'metadata_edit', 'metadata_remove', 'metadata_view'], [metadata_add, metadata_edit, metadata_remove], menu_name='sidebar') register_links(Document, [metadata_view], menu_name='form_header') @@ -52,7 +47,7 @@ class_permissions(Document, [ ]) register_model_list_columns(Document, [ - {'name':_(u'metadata'), 'attribute': + {'name': _(u'metadata'), 'attribute': encapsulate(lambda x: get_metadata_string(x)) }, ]) diff --git a/apps/metadata/api.py b/apps/metadata/api.py index 77a86056bb..e70b080cb2 100644 --- a/apps/metadata/api.py +++ b/apps/metadata/api.py @@ -17,13 +17,13 @@ def decode_metadata_from_url(url_dict): 'value': {} } metadata_list = [] - #Match out of order metadata_type ids with metadata values from request + # Match out of order metadata_type ids with metadata values from request for key, value in url_dict.items(): if 'metadata' in key: index, element = key[8:].split('_') metadata_dict[element][index] = value - #Convert the nested dictionary into a list of id+values dictionaries + # Convert the nested dictionary into a list of id+values dictionaries for order, identifier in metadata_dict['id'].items(): if order in metadata_dict['value'].keys(): metadata_list.append({ @@ -74,7 +74,7 @@ def save_metadata(metadata_dict, document, create=False): # unquote_plus handles utf-8?!? # http://stackoverflow.com/questions/4382875/handling-iri-in-django - #.decode('utf-8') + # .decode('utf-8') if document_metadata: document_metadata.value = unquote_plus(metadata_dict['value']) document_metadata.save() @@ -117,5 +117,5 @@ def convert_dict_to_dict_list(dictionary): except MetadataType.DoesNotExist: raise ValueError('Unknown metadata type name') result.append({'id': metadata_type.pk, 'value': value}) - + return result diff --git a/apps/metadata/forms.py b/apps/metadata/forms.py index 61a17e60ed..50da37036f 100644 --- a/apps/metadata/forms.py +++ b/apps/metadata/forms.py @@ -14,20 +14,20 @@ class MetadataForm(forms.Form): def __init__(self, *args, **kwargs): super(MetadataForm, self).__init__(*args, **kwargs) - #Set form fields initial values + # Set form fields initial values if 'initial' in kwargs: self.metadata_type = kwargs['initial'].pop('metadata_type', None) - #self.document_type = kwargs['initial'].pop('document_type', None) + # self.document_type = kwargs['initial'].pop('document_type', None) # FIXME: - #required = self.document_type.documenttypemetadatatype_set.get(metadata_type=self.metadata_type).required + # required = self.document_type.documenttypemetadatatype_set.get(metadata_type=self.metadata_type).required required = False required_string = u'' if required: self.fields['value'].required = True required_string = ' (%s)' % _(u'required') else: - #TODO: FIXME: not working correctly + # TODO: FIXME: not working correctly self.fields['value'].required = False self.fields['name'].initial = '%s%s' % ((self.metadata_type.title if self.metadata_type.title else self.metadata_type.name), required_string) @@ -71,7 +71,7 @@ class MetadataRemoveForm(MetadataForm): class MetadataSelectionForm(forms.Form): def __init__(self, *args, **kwargs): - #document_type = kwargs.pop('document_type', None) + # document_type = kwargs.pop('document_type', None) super(MetadataSelectionForm, self).__init__(*args, **kwargs) document_type = getattr(self, 'initial', {}).get('document_type', None) if document_type: @@ -86,7 +86,7 @@ class MetadataSelectionForm(forms.Form): queryset=MetadataSet.objects.all(), label=_(u'Metadata sets'), required=False, - #widget=forms.widgets.SelectMultiple(attrs={'size': 10, 'class': 'choice_form'}) + # widget=forms.widgets.SelectMultiple(attrs={'size': 10, 'class': 'choice_form'}) widget=ScrollableCheckboxSelectMultiple(attrs={'size': 10, 'class': 'choice_form'}) ) @@ -94,7 +94,7 @@ class MetadataSelectionForm(forms.Form): queryset=MetadataType.objects.all(), label=_(u'Metadata'), required=False, - #widget=forms.widgets.SelectMultiple(attrs={'size': 10, 'class': 'choice_form'}) + # widget=forms.widgets.SelectMultiple(attrs={'size': 10, 'class': 'choice_form'}) widget=ScrollableCheckboxSelectMultiple(attrs={'size': 10, 'class': 'choice_form'}) ) diff --git a/apps/metadata/models.py b/apps/metadata/models.py index 37040ab574..f7ab417862 100644 --- a/apps/metadata/models.py +++ b/apps/metadata/models.py @@ -24,7 +24,7 @@ class MetadataType(models.Model): lookup = models.TextField(blank=True, null=True, verbose_name=_(u'lookup'), help_text=_(u'Enter a string to be evaluated. Example: [user.get_full_name() for user in User.objects.all()].%s') % available_models_string) - #TODO: datatype? + # TODO: datatype? objects = MetadataTypeManager() @@ -67,7 +67,7 @@ class MetadataSetItem(models.Model): """ metadata_set = models.ForeignKey(MetadataSet, verbose_name=_(u'metadata set')) metadata_type = models.ForeignKey(MetadataType, verbose_name=_(u'metadata type')) - #required = models.BooleanField(default=True, verbose_name=_(u'required')) + # required = models.BooleanField(default=True, verbose_name=_(u'required')) def __unicode__(self): return unicode(self.metadata_type) diff --git a/apps/metadata/views.py b/apps/metadata/views.py index b09aab6236..f5098dc838 100644 --- a/apps/metadata/views.py +++ b/apps/metadata/views.py @@ -165,7 +165,7 @@ def metadata_add(request, document_id=None, document_id_list=None): form = AddMetadataForm() context = { - #'form_display_mode_table': True, + # 'form_display_mode_table': True, 'form': form, 'next': next, } @@ -309,7 +309,7 @@ def setup_metadata_type_edit(request, metadatatype_id): if request.method == 'POST': form = MetadataTypeForm(instance=metadata_type, data=request.POST) if form.is_valid(): - #folder.title = form.cleaned_data['title'] + # folder.title = form.cleaned_data['title'] try: form.save() messages.success(request, _(u'Metadata type edited successfully')) @@ -510,7 +510,6 @@ def setup_metadata_set_delete(request, metadata_set_id): 'metadata_set': metadata_set, 'error': e}) return HttpResponseRedirect(previous) - context = { 'object_name': _(u'metadata set'), 'delete_view': True, diff --git a/apps/registration/__init__.py b/apps/registration/__init__.py index 120606f61f..d275de67ea 100644 --- a/apps/registration/__init__.py +++ b/apps/registration/__init__.py @@ -1,16 +1,17 @@ from __future__ import absolute_import -from django.utils.translation import ugettext_lazy as _ from django.db import transaction, DatabaseError -from navigation.api import register_links +from django.utils.translation import ugettext_lazy as _ + from common import about_view, license_view +from navigation.api import register_links from .models import RegistrationSingleton def is_not_registered(context): - return RegistrationSingleton.registration_state() == False - + return RegistrationSingleton.registration_state() is False + form_view = {'text': _('Registration'), 'view': 'form_view', 'famfam': 'telephone', 'condition': is_not_registered} diff --git a/apps/registration/models.py b/apps/registration/models.py index 207d8e20d3..a433a70ee9 100644 --- a/apps/registration/models.py +++ b/apps/registration/models.py @@ -43,7 +43,7 @@ class RegistrationSingleton(Singleton): name_value = dictionary.get('company') or dictionary.get('name') if name_value: cls._cached_name = name_value - + return name_value or _(u'No name') @property @@ -65,7 +65,7 @@ class RegistrationSingleton(Singleton): self.registration_data = dumps(dictionary) self.save() self.submit() - + def submit(self): try: lock = Lock.acquire_lock('upload_registration') diff --git a/apps/registration/templatetags/registration_tags.py b/apps/registration/templatetags/registration_tags.py index 88ee51553d..e1bedee2f0 100644 --- a/apps/registration/templatetags/registration_tags.py +++ b/apps/registration/templatetags/registration_tags.py @@ -1,8 +1,6 @@ -from __future__ import absolute_import +from __future__ import absolute_import -from django.core.urlresolvers import reverse, NoReverseMatch -from django.template import (TemplateSyntaxError, Library, - VariableDoesNotExist, Node, Variable) +from django.template import Library from django.utils.translation import ugettext as _ from ..models import RegistrationSingleton diff --git a/apps/scheduler/__init__.py b/apps/scheduler/__init__.py index 85853f0acc..c4af634dc0 100644 --- a/apps/scheduler/__init__.py +++ b/apps/scheduler/__init__.py @@ -4,13 +4,12 @@ import atexit import logging import sys -from .runtime import scheduler, lockdown - from project_tools.api import register_tool from .links import job_list from .literals import SHUTDOWN_COMMANDS - +from .runtime import scheduler, lockdown + logger = logging.getLogger(__name__) @@ -25,7 +24,7 @@ if any([command in sys.argv for command in SHUTDOWN_COMMANDS]): scheduler.shutdown() # Prevent any new scheduler afterwards to start lockdown() - + atexit.register(schedule_shutdown_on_exit) register_tool(job_list) diff --git a/apps/scheduler/api.py b/apps/scheduler/api.py index 83a3875eb2..86d7da1cd2 100644 --- a/apps/scheduler/api.py +++ b/apps/scheduler/api.py @@ -1,7 +1,7 @@ from __future__ import absolute_import -from .runtime import scheduler from .exceptions import AlreadyScheduled +from .runtime import scheduler registered_jobs = {} @@ -18,13 +18,13 @@ def register_interval_job(name, title, func, weeks=0, days=0, hours=0, minutes=0 start_date=start_date, args=args, kwargs=kwargs, **options) registered_jobs[name] = {'title': title, 'job': job} - + def remove_job(name): if name in registered_jobs: scheduler.unschedule_job(registered_jobs[name]['job']) registered_jobs.pop(name) - + def get_job_list(): return registered_jobs.values() diff --git a/apps/scheduler/views.py b/apps/scheduler/views.py index 3b4ef70a9a..2154a48a0b 100644 --- a/apps/scheduler/views.py +++ b/apps/scheduler/views.py @@ -3,13 +3,12 @@ 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 permissions.models import Permission from common.utils import encapsulate +from permissions.models import Permission -from .permissions import PERMISSION_VIEW_JOB_LIST from .api import get_job_list +from .permissions import PERMISSION_VIEW_JOB_LIST def job_list(request): diff --git a/apps/tags/__init__.py b/apps/tags/__init__.py index c931c6d46f..eba380be57 100644 --- a/apps/tags/__init__.py +++ b/apps/tags/__init__.py @@ -2,22 +2,22 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from navigation.api import (register_links, register_top_menu, - register_model_list_columns, register_multi_item_links) +from acls.api import class_permissions from common.utils import encapsulate from documents.models import Document -from acls.api import class_permissions +from navigation.api import (register_links, register_top_menu, + register_model_list_columns, register_multi_item_links) -from taggit.models import Tag from taggit.managers import TaggableManager +from taggit.models import Tag from .links import (tag_list, tag_create, tag_attach, tag_document_list, tag_delete, tag_edit, tag_tagged_item_list, tag_multiple_delete, tag_acl_list, tag_multiple_attach, single_document_multiple_tag_remove, multiple_documents_selection_tag_remove) -from .widgets import (get_tags_inline_widget_simple, single_tag_widget) from .permissions import (PERMISSION_TAG_ATTACH, PERMISSION_TAG_REMOVE, PERMISSION_TAG_DELETE, PERMISSION_TAG_EDIT, PERMISSION_TAG_VIEW) +from .widgets import (get_tags_inline_widget_simple, single_tag_widget) register_model_list_columns(Tag, [ { @@ -31,7 +31,7 @@ register_model_list_columns(Tag, [ ]) register_model_list_columns(Document, [ - {'name':_(u'tags'), 'attribute': + {'name': _(u'tags'), 'attribute': encapsulate(lambda x: get_tags_inline_widget_simple(x)) }, ]) diff --git a/apps/tags/forms.py b/apps/tags/forms.py index b10ac68679..643a8d366b 100644 --- a/apps/tags/forms.py +++ b/apps/tags/forms.py @@ -3,8 +3,8 @@ from __future__ import absolute_import import logging from django import forms -from django.utils.translation import ugettext_lazy as _ from django.core.exceptions import PermissionDenied +from django.utils.translation import ugettext_lazy as _ from taggit.models import Tag diff --git a/apps/tags/links.py b/apps/tags/links.py index 7c28cfe6fc..5ec7a1afcc 100644 --- a/apps/tags/links.py +++ b/apps/tags/links.py @@ -5,8 +5,7 @@ from django.utils.translation import ugettext_lazy as _ from acls.permissions import ACLS_VIEW_ACL from .permissions import (PERMISSION_TAG_CREATE, PERMISSION_TAG_ATTACH, - PERMISSION_TAG_REMOVE, PERMISSION_TAG_DELETE, PERMISSION_TAG_EDIT, - PERMISSION_TAG_VIEW) + PERMISSION_TAG_REMOVE, PERMISSION_TAG_DELETE, PERMISSION_TAG_EDIT) tag_list = {'text': _(u'tag list'), 'view': 'tag_list', 'famfam': 'tag_blue'} tag_create = {'text': _(u'create new tag'), 'view': 'tag_create', 'famfam': 'tag_blue_add', 'permissions': [PERMISSION_TAG_CREATE]} @@ -14,7 +13,7 @@ tag_create = {'text': _(u'create new tag'), 'view': 'tag_create', 'famfam': 'tag tag_attach = {'text': _(u'attach tag'), 'view': 'tag_attach', 'args': 'object.pk', 'famfam': 'tag_blue_add', 'permissions': [PERMISSION_TAG_ATTACH]} tag_multiple_attach = {'text': _(u'attach tag'), 'view': 'tag_multiple_attach', 'famfam': 'tag_blue_add'} -#tag_remove = {'text': _(u'remove tag'), 'view': 'tag_remove', 'args': 'object.pk', 'famfam': 'tag_blue_delete', 'permissions': [PERMISSION_TAG_REMOVE]} +# tag_remove = {'text': _(u'remove tag'), 'view': 'tag_remove', 'args': 'object.pk', 'famfam': 'tag_blue_delete', 'permissions': [PERMISSION_TAG_REMOVE]} multiple_documents_selection_tag_remove = {'text': _(u'remove tag'), 'view': 'multiple_documents_selection_tag_remove', 'famfam': 'tag_blue_delete'} single_document_multiple_tag_remove = {'text': _(u'remove tags'), 'view': 'single_document_multiple_tag_remove', 'args': 'document.id', 'famfam': 'tag_blue_delete', 'permissions': [PERMISSION_TAG_REMOVE]} diff --git a/apps/tags/urls.py b/apps/tags/urls.py index 4ec02272cc..7c033ac021 100644 --- a/apps/tags/urls.py +++ b/apps/tags/urls.py @@ -13,7 +13,7 @@ urlpatterns = patterns('tags.views', url(r'^selection/attach/document/(?P\d+)/$', 'tag_attach', (), 'tag_attach'), url(r'^selection/attach/document/multiple/$', 'tag_multiple_attach', (), 'tag_multiple_attach'), - + url(r'^for/document/(?P\d+)/$', 'document_tags', (), 'document_tags'), url(r'^(?P\d+)/acl/list/$', 'tag_acl_list', (), 'tag_acl_list'), diff --git a/apps/tags/views.py b/apps/tags/views.py index 2ee75e6f8f..c494503563 100644 --- a/apps/tags/views.py +++ b/apps/tags/views.py @@ -2,22 +2,22 @@ from __future__ import absolute_import import logging +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.template import RequestContext -from django.contrib import messages -from django.core.urlresolvers import reverse from django.utils.translation import ugettext_lazy as _ -from django.core.exceptions import PermissionDenied -from permissions import Permission -from taggit.models import Tag -from documents.models import Document -from documents.views import document_list -from documents.permissions import PERMISSION_DOCUMENT_VIEW from acls.models import AccessEntry from acls.views import acl_list_for from acls.utils import apply_default_acls +from documents.models import Document +from documents.views import document_list +from documents.permissions import PERMISSION_DOCUMENT_VIEW +from permissions import Permission +from taggit.models import Tag from .forms import TagListForm, TagForm from .models import TagProperties @@ -102,7 +102,7 @@ def tag_attach(request, document_id=None, document_id_list=None): 'previous': previous, 'next': next, } - + if len(documents) == 1: context['object'] = documents[0] context['title'] = _(u'Attach tag to document: %s.') % ', '.join([unicode(d) for d in documents]) @@ -111,7 +111,7 @@ def tag_attach(request, document_id=None, document_id_list=None): return render_to_response('generic_form.html', context, context_instance=RequestContext(request)) - + def tag_multiple_attach(request): return tag_attach( @@ -344,7 +344,7 @@ def tag_remove(request, document_id=None, document_id_list=None, tag_id=None, ta messages.success(request, _(u'Tag "%(tag)s" removed successfully from document "%(document)s".') % { 'document': document, 'tag': tag} ) - + return HttpResponseRedirect(next) else: return render_to_response(template, context,