Add from __future__ import unicode_literals, issue #37

This commit is contained in:
Roberto Rosario
2015-01-19 04:06:40 -04:00
parent efbac7300c
commit d59ea3ede2
334 changed files with 2452 additions and 2268 deletions
+14 -14
View File
@@ -1,4 +1,4 @@
from __future__ import absolute_import
from __future__ import unicode_literals
import logging
@@ -19,19 +19,19 @@ from rest_api.classes import APIEndPoint
from .api import get_metadata_string
from .classes import DocumentMetadataHelper
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_document_type_metadata_required,
setup_metadata_type_create, setup_metadata_type_delete,
setup_metadata_type_edit, setup_metadata_type_list,
link_documents_missing_required_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_document_type_metadata_required,
setup_metadata_type_create, setup_metadata_type_delete,
setup_metadata_type_edit, setup_metadata_type_list,
link_documents_missing_required_metadata
)
from .models import DocumentMetadata, DocumentTypeMetadataType, MetadataType
from .permissions import (PERMISSION_METADATA_DOCUMENT_ADD,
PERMISSION_METADATA_DOCUMENT_EDIT,
PERMISSION_METADATA_DOCUMENT_REMOVE,
PERMISSION_METADATA_DOCUMENT_VIEW)
from .permissions import (
PERMISSION_METADATA_DOCUMENT_ADD, PERMISSION_METADATA_DOCUMENT_EDIT,
PERMISSION_METADATA_DOCUMENT_REMOVE, PERMISSION_METADATA_DOCUMENT_VIEW
)
from .tasks import task_add_required_metadata_type, task_remove_metadata_type
logger = logging.getLogger(__name__)
@@ -83,7 +83,7 @@ class_permissions(Document, [
register_model_list_columns(Document, [
{
'name': _(u'Metadata'), 'attribute': encapsulate(lambda x: get_metadata_string(x))
'name': _('Metadata'), 'attribute': encapsulate(lambda x: get_metadata_string(x))
},
])
+1 -1
View File
@@ -1,4 +1,4 @@
from __future__ import absolute_import
from __future__ import unicode_literals
from django.contrib import admin
+4 -5
View File
@@ -1,5 +1,4 @@
"""Metadata handling commonalities"""
from __future__ import absolute_import
from __future__ import unicode_literals
from urllib import unquote_plus
@@ -83,7 +82,7 @@ def metadata_repr(metadata_list):
"""
Return a printable representation of a metadata list
"""
return u', '.join(metadata_repr_as_list(metadata_list))
return ', '.join(metadata_repr_as_list(metadata_list))
def metadata_repr_as_list(metadata_list):
@@ -93,7 +92,7 @@ def metadata_repr_as_list(metadata_list):
output = []
for metadata_dict in metadata_list:
try:
output.append(u'%s - %s' % (MetadataType.objects.get(
output.append('%s - %s' % (MetadataType.objects.get(
pk=metadata_dict['id']), metadata_dict.get('value', '')))
except:
pass
@@ -105,7 +104,7 @@ def get_metadata_string(document):
"""
Return a formated representation of a document's metadata values
"""
return u', '.join([u'%s - %s' % (document_metadata.metadata_type, document_metadata.value) for document_metadata in document.metadata.all()])
return ', '.join(['%s - %s' % (document_metadata.metadata_type, document_metadata.value) for document_metadata in document.metadata.all()])
def convert_dict_to_dict_list(dictionary):
+14 -15
View File
@@ -1,4 +1,4 @@
from __future__ import absolute_import
from __future__ import absolute_import, unicode_literals
from django.core.exceptions import PermissionDenied
from django.shortcuts import get_object_or_404
@@ -8,26 +8,25 @@ from rest_framework.response import Response
from acls.models import AccessEntry
from documents.models import Document, DocumentType
from documents.permissions import (PERMISSION_DOCUMENT_TYPE_VIEW,
PERMISSION_DOCUMENT_TYPE_EDIT)
from documents.permissions import (
PERMISSION_DOCUMENT_TYPE_VIEW, PERMISSION_DOCUMENT_TYPE_EDIT
)
from permissions.models import Permission
from rest_api.filters import MayanObjectPermissionsFilter
from rest_api.permissions import MayanPermission
from .models import DocumentMetadata, MetadataType
from .permissions import (PERMISSION_METADATA_DOCUMENT_ADD,
PERMISSION_METADATA_DOCUMENT_REMOVE,
PERMISSION_METADATA_DOCUMENT_EDIT,
PERMISSION_METADATA_DOCUMENT_VIEW,
PERMISSION_METADATA_TYPE_CREATE,
PERMISSION_METADATA_TYPE_DELETE,
PERMISSION_METADATA_TYPE_EDIT,
PERMISSION_METADATA_TYPE_VIEW)
from .serializers import (DocumentMetadataSerializer,
DocumentNewMetadataSerializer,
DocumentTypeNewMetadataTypeSerializer,
MetadataTypeSerializer)
from .permissions import (
PERMISSION_METADATA_DOCUMENT_ADD, PERMISSION_METADATA_DOCUMENT_REMOVE,
PERMISSION_METADATA_DOCUMENT_EDIT, PERMISSION_METADATA_DOCUMENT_VIEW,
PERMISSION_METADATA_TYPE_CREATE, PERMISSION_METADATA_TYPE_DELETE,
PERMISSION_METADATA_TYPE_EDIT, PERMISSION_METADATA_TYPE_VIEW
)
from .serializers import (
DocumentMetadataSerializer, DocumentNewMetadataSerializer,
DocumentTypeNewMetadataTypeSerializer, MetadataTypeSerializer
)
class APIMetadataTypeListView(generics.ListCreateAPIView):
+3 -1
View File
@@ -1,3 +1,5 @@
from __future__ import unicode_literals
from django.utils.translation import ugettext_lazy as _
from .models import MetadataType
@@ -16,4 +18,4 @@ class DocumentMetadataHelper(object):
try:
return self.instance.metadata.get(metadata_type__name=name).value
except MetadataType.DoesNotExist:
raise AttributeError(_(u'\'metadata\' object has no attribute \'%s\'') % name)
raise AttributeError(_('\'metadata\' object has no attribute \'%s\'') % name)
+10 -10
View File
@@ -1,4 +1,4 @@
from __future__ import absolute_import
from __future__ import unicode_literals
from django import forms
from django.core.exceptions import ValidationError
@@ -34,7 +34,7 @@ class MetadataForm(forms.Form):
# Otherwise we extract whatever single message the exception
# included.
try:
message = u', '.join(exception.messages)
message = ', '.join(exception.messages)
except AttributeError:
message = unicode(exception)
@@ -56,11 +56,11 @@ class MetadataForm(forms.Form):
if 'initial' in kwargs:
self.metadata_type = kwargs['initial'].pop('metadata_type', None)
required = kwargs['initial'].pop('required', False)
required_string = u''
required_string = ''
if required:
self.fields['value'].required = True
required_string = u' (%s)' % _('Required')
required_string = ' (%s)' % _('Required')
else:
self.fields['value'].required = False
@@ -86,17 +86,17 @@ class MetadataForm(forms.Form):
except Exception as exception:
self.fields['value'].initial = exception
id = forms.CharField(label=_(u'ID'), widget=forms.HiddenInput)
id = forms.CharField(label=_('ID'), widget=forms.HiddenInput)
name = forms.CharField(label=_(u'Name'), required=False, widget=forms.TextInput(attrs={'readonly': 'readonly'}))
value = forms.CharField(label=_(u'Value'), required=False)
update = forms.BooleanField(initial=True, label=_(u'Update'), required=False)
name = forms.CharField(label=_('Name'), required=False, widget=forms.TextInput(attrs={'readonly': 'readonly'}))
value = forms.CharField(label=_('Value'), required=False)
update = forms.BooleanField(initial=True, label=_('Update'), required=False)
MetadataFormSet = formset_factory(MetadataForm, extra=0)
class AddMetadataForm(forms.Form):
metadata_type = forms.ModelChoiceField(queryset=MetadataType.objects.all(), label=_(u'Metadata type'))
metadata_type = forms.ModelChoiceField(queryset=MetadataType.objects.all(), label=_('Metadata type'))
def __init__(self, *args, **kwargs):
document_type = kwargs.pop('document_type')
@@ -105,7 +105,7 @@ class AddMetadataForm(forms.Form):
class MetadataRemoveForm(MetadataForm):
update = forms.BooleanField(initial=False, label=_(u'Remove'), required=False)
update = forms.BooleanField(initial=False, label=_('Remove'), required=False)
def __init__(self, *args, **kwargs):
super(MetadataRemoveForm, self).__init__(*args, **kwargs)
+21 -23
View File
@@ -1,33 +1,31 @@
from __future__ import absolute_import
from __future__ import unicode_literals
from django.utils.translation import ugettext_lazy as _
from documents.permissions import PERMISSION_DOCUMENT_TYPE_EDIT
from .permissions import (PERMISSION_METADATA_DOCUMENT_ADD,
PERMISSION_METADATA_DOCUMENT_EDIT,
PERMISSION_METADATA_DOCUMENT_REMOVE,
PERMISSION_METADATA_DOCUMENT_VIEW,
PERMISSION_METADATA_TYPE_CREATE,
PERMISSION_METADATA_TYPE_DELETE,
PERMISSION_METADATA_TYPE_EDIT,
PERMISSION_METADATA_TYPE_VIEW)
from .permissions import (
PERMISSION_METADATA_DOCUMENT_ADD, PERMISSION_METADATA_DOCUMENT_EDIT,
PERMISSION_METADATA_DOCUMENT_REMOVE, PERMISSION_METADATA_DOCUMENT_VIEW,
PERMISSION_METADATA_TYPE_CREATE, PERMISSION_METADATA_TYPE_DELETE,
PERMISSION_METADATA_TYPE_EDIT, PERMISSION_METADATA_TYPE_VIEW
)
metadata_edit = {'text': _(u'Edit metadata'), 'view': 'metadata:metadata_edit', 'args': 'object.pk', 'famfam': 'xhtml_go', 'permissions': [PERMISSION_METADATA_DOCUMENT_EDIT]}
metadata_view = {'text': _(u'Metadata'), 'view': 'metadata:metadata_view', 'args': 'object.pk', 'famfam': 'xhtml_go', 'permissions': [PERMISSION_METADATA_DOCUMENT_VIEW]}
metadata_multiple_edit = {'text': _(u'Edit metadata'), 'view': 'metadata:metadata_multiple_edit', 'famfam': 'xhtml_go', 'permissions': [PERMISSION_METADATA_DOCUMENT_EDIT]}
metadata_add = {'text': _(u'Add metadata'), 'view': 'metadata:metadata_add', 'args': 'object.pk', 'famfam': 'xhtml_add', 'permissions': [PERMISSION_METADATA_DOCUMENT_ADD]}
metadata_multiple_add = {'text': _(u'Add metadata'), 'view': 'metadata:metadata_multiple_add', 'famfam': 'xhtml_add', 'permissions': [PERMISSION_METADATA_DOCUMENT_ADD]}
metadata_remove = {'text': _(u'Remove metadata'), 'view': 'metadata:metadata_remove', 'args': 'object.pk', 'famfam': 'xhtml_delete', 'permissions': [PERMISSION_METADATA_DOCUMENT_REMOVE]}
metadata_multiple_remove = {'text': _(u'Remove metadata'), 'view': 'metadata:metadata_multiple_remove', 'famfam': 'xhtml_delete', 'permissions': [PERMISSION_METADATA_DOCUMENT_REMOVE]}
metadata_edit = {'text': _('Edit metadata'), 'view': 'metadata:metadata_edit', 'args': 'object.pk', 'famfam': 'xhtml_go', 'permissions': [PERMISSION_METADATA_DOCUMENT_EDIT]}
metadata_view = {'text': _('Metadata'), 'view': 'metadata:metadata_view', 'args': 'object.pk', 'famfam': 'xhtml_go', 'permissions': [PERMISSION_METADATA_DOCUMENT_VIEW]}
metadata_multiple_edit = {'text': _('Edit metadata'), 'view': 'metadata:metadata_multiple_edit', 'famfam': 'xhtml_go', 'permissions': [PERMISSION_METADATA_DOCUMENT_EDIT]}
metadata_add = {'text': _('Add metadata'), 'view': 'metadata:metadata_add', 'args': 'object.pk', 'famfam': 'xhtml_add', 'permissions': [PERMISSION_METADATA_DOCUMENT_ADD]}
metadata_multiple_add = {'text': _('Add metadata'), 'view': 'metadata:metadata_multiple_add', 'famfam': 'xhtml_add', 'permissions': [PERMISSION_METADATA_DOCUMENT_ADD]}
metadata_remove = {'text': _('Remove metadata'), 'view': 'metadata:metadata_remove', 'args': 'object.pk', 'famfam': 'xhtml_delete', 'permissions': [PERMISSION_METADATA_DOCUMENT_REMOVE]}
metadata_multiple_remove = {'text': _('Remove metadata'), 'view': 'metadata:metadata_multiple_remove', 'famfam': 'xhtml_delete', 'permissions': [PERMISSION_METADATA_DOCUMENT_REMOVE]}
setup_document_type_metadata = {'text': _(u'Optional metadata'), 'view': 'metadata:setup_document_type_metadata', 'args': 'document_type.pk', 'famfam': 'xhtml', 'permissions': [PERMISSION_DOCUMENT_TYPE_EDIT]}
setup_document_type_metadata_required = {'text': _(u'Required metadata'), 'view': 'metadata:setup_document_type_metadata_required', 'args': 'document_type.pk', 'famfam': 'xhtml', 'permissions': [PERMISSION_DOCUMENT_TYPE_EDIT]}
setup_document_type_metadata = {'text': _('Optional metadata'), 'view': 'metadata:setup_document_type_metadata', 'args': 'document_type.pk', 'famfam': 'xhtml', 'permissions': [PERMISSION_DOCUMENT_TYPE_EDIT]}
setup_document_type_metadata_required = {'text': _('Required metadata'), 'view': 'metadata:setup_document_type_metadata_required', 'args': 'document_type.pk', 'famfam': 'xhtml', 'permissions': [PERMISSION_DOCUMENT_TYPE_EDIT]}
setup_metadata_type_list = {'text': _(u'Metadata types'), 'view': 'metadata:setup_metadata_type_list', 'famfam': 'xhtml_go', 'icon': 'xhtml.png', 'permissions': [PERMISSION_METADATA_TYPE_VIEW]}
setup_metadata_type_edit = {'text': _(u'Edit'), 'view': 'metadata:setup_metadata_type_edit', 'args': 'object.pk', 'famfam': 'xhtml', 'permissions': [PERMISSION_METADATA_TYPE_EDIT]}
setup_metadata_type_delete = {'text': _(u'Delete'), 'view': 'metadata:setup_metadata_type_delete', 'args': 'object.pk', 'famfam': 'xhtml_delete', 'permissions': [PERMISSION_METADATA_TYPE_DELETE]}
setup_metadata_type_create = {'text': _(u'Create new'), 'view': 'metadata:setup_metadata_type_create', 'famfam': 'xhtml_add', 'permissions': [PERMISSION_METADATA_TYPE_CREATE]}
setup_metadata_type_list = {'text': _('Metadata types'), 'view': 'metadata:setup_metadata_type_list', 'famfam': 'xhtml_go', 'icon': 'xhtml.png', 'permissions': [PERMISSION_METADATA_TYPE_VIEW]}
setup_metadata_type_edit = {'text': _('Edit'), 'view': 'metadata:setup_metadata_type_edit', 'args': 'object.pk', 'famfam': 'xhtml', 'permissions': [PERMISSION_METADATA_TYPE_EDIT]}
setup_metadata_type_delete = {'text': _('Delete'), 'view': 'metadata:setup_metadata_type_delete', 'args': 'object.pk', 'famfam': 'xhtml_delete', 'permissions': [PERMISSION_METADATA_TYPE_DELETE]}
setup_metadata_type_create = {'text': _('Create new'), 'view': 'metadata:setup_metadata_type_create', 'famfam': 'xhtml_add', 'permissions': [PERMISSION_METADATA_TYPE_CREATE]}
link_documents_missing_required_metadata = {'text': _(u'Missing metadata'), 'view': 'metadata:documents_missing_required_metadata', 'icon': 'to_do_list.png'}
link_documents_missing_required_metadata = {'text': _('Missing metadata'), 'view': 'metadata:documents_missing_required_metadata', 'icon': 'to_do_list.png'}
-2
View File
@@ -1,5 +1,3 @@
from __future__ import absolute_import
from django.db import models
+19 -19
View File
@@ -1,4 +1,4 @@
from __future__ import absolute_import
from __future__ import unicode_literals
from django.core.exceptions import ValidationError
from django.db import models
@@ -14,18 +14,18 @@ class MetadataType(models.Model):
"""
Define a type of metadata
"""
name = models.CharField(unique=True, max_length=48, verbose_name=_(u'Name'), help_text=_(u'Do not use python reserved words, or spaces.'))
name = models.CharField(unique=True, max_length=48, verbose_name=_('Name'), help_text=_('Do not use python reserved words, or spaces.'))
# TODO: normalize 'title' to 'label'
title = models.CharField(max_length=48, verbose_name=_(u'Title'))
title = models.CharField(max_length=48, verbose_name=_('Title'))
default = models.CharField(max_length=128, blank=True, null=True,
verbose_name=_(u'Default'),
help_text=_(u'Enter a string to be evaluated.'))
verbose_name=_('Default'),
help_text=_('Enter a string to be evaluated.'))
# TODO: Add enable_lookup boolean to allow users to switch the lookup on and
# off without losing the lookup expression
lookup = models.TextField(blank=True, null=True,
verbose_name=_(u'Lookup'),
help_text=_(u'Enter a string to be evaluated that returns an iterable.'))
validation = models.CharField(blank=True, choices=zip(AVAILABLE_VALIDATORS, AVAILABLE_VALIDATORS), max_length=64, verbose_name=_(u'Validation function name'))
verbose_name=_('Lookup'),
help_text=_('Enter a string to be evaluated that returns an iterable.'))
validation = models.CharField(blank=True, choices=zip(AVAILABLE_VALIDATORS, AVAILABLE_VALIDATORS), max_length=64, verbose_name=_('Validation function name'))
# TODO: Find a different way to let users know what models and functions are
# available now that we removed these from the help_text
objects = MetadataTypeManager()
@@ -38,8 +38,8 @@ class MetadataType(models.Model):
class Meta:
ordering = ('title',)
verbose_name = _(u'Metadata type')
verbose_name_plural = _(u'Metadata types')
verbose_name = _('Metadata type')
verbose_name_plural = _('Metadata types')
class DocumentMetadata(models.Model):
@@ -47,9 +47,9 @@ class DocumentMetadata(models.Model):
Link a document to a specific instance of a metadata type with it's
current value
"""
document = models.ForeignKey(Document, related_name='metadata', verbose_name=_(u'Document'))
metadata_type = models.ForeignKey(MetadataType, verbose_name=_(u'Type'))
value = models.CharField(max_length=255, blank=True, null=True, verbose_name=_(u'Value'), db_index=True)
document = models.ForeignKey(Document, related_name='metadata', verbose_name=_('Document'))
metadata_type = models.ForeignKey(MetadataType, verbose_name=_('Type'))
value = models.CharField(max_length=255, blank=True, null=True, verbose_name=_('Value'), db_index=True)
def __unicode__(self):
return unicode(self.metadata_type)
@@ -68,13 +68,13 @@ class DocumentMetadata(models.Model):
class Meta:
unique_together = ('document', 'metadata_type')
verbose_name = _(u'Document metadata')
verbose_name_plural = _(u'Document metadata')
verbose_name = _('Document metadata')
verbose_name_plural = _('Document metadata')
class DocumentTypeMetadataType(models.Model):
document_type = models.ForeignKey(DocumentType, related_name='metadata', verbose_name=_(u'Document type'))
metadata_type = models.ForeignKey(MetadataType, verbose_name=_(u'Metadata type'))
document_type = models.ForeignKey(DocumentType, related_name='metadata', verbose_name=_('Document type'))
metadata_type = models.ForeignKey(MetadataType, verbose_name=_('Metadata type'))
required = models.BooleanField(default=False, verbose_name=_('Required'))
def __unicode__(self):
@@ -82,5 +82,5 @@ class DocumentTypeMetadataType(models.Model):
class Meta:
unique_together = ('document_type', 'metadata_type')
verbose_name = _(u'Document type metadata type options')
verbose_name_plural = _(u'Document type metadata types options')
verbose_name = _('Document type metadata type options')
verbose_name_plural = _('Document type metadata types options')
+11 -11
View File
@@ -1,17 +1,17 @@
from __future__ import absolute_import
from __future__ import absolute_import, unicode_literals
from django.utils.translation import ugettext_lazy as _
from permissions.models import Permission, PermissionNamespace
metadata_namespace = PermissionNamespace('metadata', _(u'Metadata'))
PERMISSION_METADATA_DOCUMENT_EDIT = Permission.objects.register(metadata_namespace, 'metadata_document_edit', _(u'Edit a document\'s metadata'))
PERMISSION_METADATA_DOCUMENT_ADD = Permission.objects.register(metadata_namespace, 'metadata_document_add', _(u'Add metadata to a document'))
PERMISSION_METADATA_DOCUMENT_REMOVE = Permission.objects.register(metadata_namespace, 'metadata_document_remove', _(u'Remove metadata from a document'))
PERMISSION_METADATA_DOCUMENT_VIEW = Permission.objects.register(metadata_namespace, 'metadata_document_view', _(u'View metadata from a document'))
metadata_namespace = PermissionNamespace('metadata', _('Metadata'))
PERMISSION_METADATA_DOCUMENT_EDIT = Permission.objects.register(metadata_namespace, 'metadata_document_edit', _('Edit a document\'s metadata'))
PERMISSION_METADATA_DOCUMENT_ADD = Permission.objects.register(metadata_namespace, 'metadata_document_add', _('Add metadata to a document'))
PERMISSION_METADATA_DOCUMENT_REMOVE = Permission.objects.register(metadata_namespace, 'metadata_document_remove', _('Remove metadata from a document'))
PERMISSION_METADATA_DOCUMENT_VIEW = Permission.objects.register(metadata_namespace, 'metadata_document_view', _('View metadata from a document'))
metadata_setup_namespace = PermissionNamespace('metadata_setup', _(u'Metadata setup'))
PERMISSION_METADATA_TYPE_EDIT = Permission.objects.register(metadata_setup_namespace, 'metadata_type_edit', _(u'Edit metadata types'))
PERMISSION_METADATA_TYPE_CREATE = Permission.objects.register(metadata_setup_namespace, 'metadata_type_create', _(u'Create new metadata types'))
PERMISSION_METADATA_TYPE_DELETE = Permission.objects.register(metadata_setup_namespace, 'metadata_type_delete', _(u'Delete metadata types'))
PERMISSION_METADATA_TYPE_VIEW = Permission.objects.register(metadata_setup_namespace, 'metadata_type_view', _(u'View metadata types'))
metadata_setup_namespace = PermissionNamespace('metadata_setup', _('Metadata setup'))
PERMISSION_METADATA_TYPE_EDIT = Permission.objects.register(metadata_setup_namespace, 'metadata_type_edit', _('Edit metadata types'))
PERMISSION_METADATA_TYPE_CREATE = Permission.objects.register(metadata_setup_namespace, 'metadata_type_create', _('Create new metadata types'))
PERMISSION_METADATA_TYPE_DELETE = Permission.objects.register(metadata_setup_namespace, 'metadata_type_delete', _('Delete metadata types'))
PERMISSION_METADATA_TYPE_VIEW = Permission.objects.register(metadata_setup_namespace, 'metadata_type_view', _('View metadata types'))
+1 -1
View File
@@ -1,4 +1,4 @@
from __future__ import absolute_import
from __future__ import unicode_literals
from django.utils.translation import ugettext_lazy as _
+6 -6
View File
@@ -1,4 +1,4 @@
"""Configuration options for the metadata app"""
from __future__ import unicode_literals
from dateutil.parser import parse
@@ -20,12 +20,12 @@ default_available_validators = {
}
register_settings(
namespace=u'metadata',
module=u'metadata.settings',
namespace='metadata',
module='metadata.settings',
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': 'AVAILABLE_FUNCTIONS', 'global_name': 'METADATA_AVAILABLE_FUNCTIONS', 'default': default_available_functions},
{'name': 'AVAILABLE_MODELS', 'global_name': 'METADATA_AVAILABLE_MODELS', 'default': default_available_models},
{'name': 'AVAILABLE_VALIDATORS', 'global_name': 'METADATA_AVAILABLE_VALIDATORS', 'default': default_available_validators},
]
)
+2
View File
@@ -1,3 +1,5 @@
from __future__ import unicode_literals
from django.conf.urls import patterns, url
from .api_views import (APIDocumentMetadataListView, APIDocumentMetadataView,
+53 -54
View File
@@ -1,4 +1,4 @@
from __future__ import absolute_import
from __future__ import absolute_import, unicode_literals
from django.conf import settings
from django.contrib import messages
@@ -22,17 +22,16 @@ from common.utils import encapsulate, generate_choices_w_labels
from common.views import assign_remove
from .api import save_metadata_list
from .forms import (AddMetadataForm, MetadataFormSet, MetadataRemoveFormSet,
MetadataTypeForm)
from .forms import (
AddMetadataForm, MetadataFormSet, MetadataRemoveFormSet, MetadataTypeForm
)
from .models import DocumentMetadata, MetadataType
from .permissions import (PERMISSION_METADATA_DOCUMENT_ADD,
PERMISSION_METADATA_DOCUMENT_EDIT,
PERMISSION_METADATA_DOCUMENT_REMOVE,
PERMISSION_METADATA_DOCUMENT_VIEW,
PERMISSION_METADATA_TYPE_CREATE,
PERMISSION_METADATA_TYPE_DELETE,
PERMISSION_METADATA_TYPE_EDIT,
PERMISSION_METADATA_TYPE_VIEW)
from .permissions import (
PERMISSION_METADATA_DOCUMENT_ADD, PERMISSION_METADATA_DOCUMENT_EDIT,
PERMISSION_METADATA_DOCUMENT_REMOVE, PERMISSION_METADATA_DOCUMENT_VIEW,
PERMISSION_METADATA_TYPE_CREATE, PERMISSION_METADATA_TYPE_DELETE,
PERMISSION_METADATA_TYPE_EDIT, PERMISSION_METADATA_TYPE_VIEW
)
def metadata_edit(request, document_id=None, document_id_list=None):
@@ -50,17 +49,17 @@ def metadata_edit(request, document_id=None, document_id_list=None):
if document_id:
raise Http404
else:
messages.error(request, _(u'Must provide at least one document.'))
messages.error(request, _('Must provide at least one document.'))
return HttpResponseRedirect(request.META.get('HTTP_REFERER', reverse('main:home')))
if len(set([document.document_type.pk for document in documents])) > 1:
messages.error(request, _(u'Only select documents of the same type.'))
messages.error(request, _('Only select documents of the same type.'))
return HttpResponseRedirect(request.META.get('HTTP_REFERER', reverse('main:home')))
if set(documents.values_list('metadata__value' ,flat=True)) == set([None]):
message = ungettext(
u'The selected document doesn\'t have any metadata.',
u'The selected documents don\'t have any metadata.',
'The selected document doesn\'t have any metadata.',
'The selected documents don\'t have any metadata.',
len(documents)
)
messages.warning(request, message)
@@ -87,7 +86,7 @@ def metadata_edit(request, document_id=None, document_id_list=None):
for key, value in metadata.items():
initial.append({
'metadata_type': key,
'value': u', '.join(value) if value else '',
'value': ', '.join(value) if value else '',
'required': key in document.document_type.metadata.filter(required=True),
})
@@ -110,10 +109,10 @@ def metadata_edit(request, document_id=None, document_id_list=None):
if settings.DEBUG:
raise
else:
messages.error(request, _(u'Error editing metadata for document %(document)s; %(exception)s.') % {
messages.error(request, _('Error editing metadata for document %(document)s; %(exception)s.') % {
'document': document, 'exception': ', '.join(exception.messages)})
else:
messages.success(request, _(u'Metadata for document %s edited successfully.') % document)
messages.success(request, _('Metadata for document %s edited successfully.') % document)
return HttpResponseRedirect(next)
@@ -127,8 +126,8 @@ def metadata_edit(request, document_id=None, document_id_list=None):
context['object'] = documents[0]
context['title'] = ungettext(
u'Edit document metadata',
u'Edit documents metadata',
'Edit document metadata',
'Edit documents metadata',
len(documents)
)
@@ -146,7 +145,7 @@ def metadata_add(request, document_id=None, document_id_list=None):
elif document_id_list:
documents = [get_object_or_404(Document.objects.select_related('document_type'), pk=document_id) for document_id in document_id_list.split(',')]
if len(set([document.document_type.pk for document in documents])) > 1:
messages.error(request, _(u'Only select documents of the same type.'))
messages.error(request, _('Only select documents of the same type.'))
return HttpResponseRedirect(request.META.get('HTTP_REFERER', reverse('main:home')))
try:
@@ -155,7 +154,7 @@ def metadata_add(request, document_id=None, document_id_list=None):
documents = AccessEntry.objects.filter_objects_by_access(PERMISSION_METADATA_DOCUMENT_ADD, request.user, documents)
if not documents:
messages.error(request, _(u'Must provide at least one document.'))
messages.error(request, _('Must provide at least one document.'))
return HttpResponseRedirect(request.META.get('HTTP_REFERER', reverse('main:home')))
for document in documents:
@@ -171,28 +170,28 @@ def metadata_add(request, document_id=None, document_id_list=None):
metadata_type = form.cleaned_data['metadata_type']
for document in documents:
try:
document_metadata, created = DocumentMetadata.objects.get_or_create(document=document, metadata_type=metadata_type.metadata_type, defaults={'value': u''})
document_metadata, created = DocumentMetadata.objects.get_or_create(document=document, metadata_type=metadata_type.metadata_type, defaults={'value': ''})
except Exception as exception:
if getattr(settings, 'DEBUG', False):
raise
else:
messages.error(request, _(u'Error adding metadata type "%(metadata_type)s" to document: %(document)s; %(exception)s') % {
messages.error(request, _('Error adding metadata type "%(metadata_type)s" to document: %(document)s; %(exception)s') % {
'metadata_type': metadata_type, 'document': document, 'exception': ', '.join(getattr(exception, 'messages', exception))})
else:
if created:
messages.success(request, _(u'Metadata type: %(metadata_type)s successfully added to document %(document)s.') % {
messages.success(request, _('Metadata type: %(metadata_type)s successfully added to document %(document)s.') % {
'metadata_type': metadata_type, 'document': document})
else:
messages.warning(request, _(u'Metadata type: %(metadata_type)s already present in document %(document)s.') % {
messages.warning(request, _('Metadata type: %(metadata_type)s already present in document %(document)s.') % {
'metadata_type': metadata_type, 'document': document})
if len(documents) == 1:
return HttpResponseRedirect(u'%s?%s' % (
return HttpResponseRedirect('%s?%s' % (
reverse('metadata:metadata_edit', args=[document.pk]),
urlencode({'next': next}))
)
elif len(documents) > 1:
return HttpResponseRedirect(u'%s?%s' % (
return HttpResponseRedirect('%s?%s' % (
reverse('metadata:metadata_multiple_edit'),
urlencode({'id_list': document_id_list, 'next': next}))
)
@@ -209,8 +208,8 @@ def metadata_add(request, document_id=None, document_id_list=None):
context['object'] = documents[0]
context['title'] = ungettext(
u'Add metadata types to document',
u'Add metadata types to documents',
'Add metadata types to document',
'Add metadata types to documents',
len(documents)
)
@@ -237,17 +236,17 @@ def metadata_remove(request, document_id=None, document_id_list=None):
if document_id:
raise Http404
else:
messages.error(request, _(u'Must provide at least one document.'))
messages.error(request, _('Must provide at least one document.'))
return HttpResponseRedirect(request.META.get('HTTP_REFERER', reverse('main:home')))
if len(set([document.document_type.pk for document in documents])) > 1:
messages.error(request, _(u'Only select documents of the same type.'))
messages.error(request, _('Only select documents of the same type.'))
return HttpResponseRedirect(request.META.get('HTTP_REFERER', reverse('main:home')))
if set(documents.values_list('metadata__value' ,flat=True)) == set([None]):
message = ungettext(
u'The selected document doesn\'t have any metadata.',
u'The selected documents doesn\'t have any metadata.',
'The selected document doesn\'t have any metadata.',
'The selected documents doesn\'t have any metadata.',
len(documents)
)
messages.warning(request, message)
@@ -267,13 +266,13 @@ def metadata_remove(request, document_id=None, document_id_list=None):
if value not in metadata[item.metadata_type]:
metadata[item.metadata_type].append(value)
else:
metadata[item.metadata_type] = [value] if value else u''
metadata[item.metadata_type] = [value] if value else ''
initial = []
for key, value in metadata.items():
initial.append({
'metadata_type': key,
'value': u', '.join(value)
'value': ', '.join(value)
})
formset = MetadataRemoveFormSet(initial=initial)
@@ -288,10 +287,10 @@ def metadata_remove(request, document_id=None, document_id_list=None):
try:
document_metadata = DocumentMetadata.objects.get(document=document, metadata_type=metadata_type)
document_metadata.delete()
messages.success(request, _(u'Successfully remove metadata type "%(metadata_type)s" from document: %(document)s.') % {
messages.success(request, _('Successfully remove metadata type "%(metadata_type)s" from document: %(document)s.') % {
'metadata_type': metadata_type, 'document': document})
except Exception as exception:
messages.error(request, _(u'Error removing metadata type "%(metadata_type)s" from document: %(document)s; %(exception)s') % {
messages.error(request, _('Error removing metadata type "%(metadata_type)s" from document: %(document)s; %(exception)s') % {
'metadata_type': metadata_type, 'document': document, 'exception': ', '.join(exception.messages)})
return HttpResponseRedirect(next)
@@ -306,8 +305,8 @@ def metadata_remove(request, document_id=None, document_id_list=None):
context['object'] = documents[0]
context['title'] = ungettext(
u'Remove metadata types from the document',
u'Remove metadata types from the documents',
'Remove metadata types from the document',
'Remove metadata types from the documents',
len(documents)
)
@@ -328,11 +327,11 @@ def metadata_view(request, document_id):
AccessEntry.objects.check_access(PERMISSION_METADATA_DOCUMENT_VIEW, request.user, document)
return render_to_response('main/generic_list.html', {
'title': _(u'Document metadata'),
'title': _('Document metadata'),
'object_list': document.metadata.all(),
'extra_columns': [
{'name': _(u'Value'), 'attribute': 'value'},
{'name': _(u'Required'), 'attribute': encapsulate(lambda x: x.metadata_type in document.document_type.metadata.filter(required=True))}
{'name': _('Value'), 'attribute': 'value'},
{'name': _('Required'), 'attribute': encapsulate(lambda x: x.metadata_type in document.document_type.metadata.filter(required=True))}
],
'hide_link': True,
'object': document,
@@ -371,11 +370,11 @@ def setup_metadata_type_list(request):
context = {
'object_list': MetadataType.objects.all(),
'title': _(u'Metadata types'),
'title': _('Metadata types'),
'hide_link': True,
'extra_columns': [
{
'name': _(u'Internal name'),
'name': _('Internal name'),
'attribute': 'name',
},
]
@@ -395,16 +394,16 @@ def setup_metadata_type_edit(request, metadatatype_id):
if form.is_valid():
try:
form.save()
messages.success(request, _(u'Metadata type edited successfully'))
messages.success(request, _('Metadata type edited successfully'))
return HttpResponseRedirect(reverse('metadata:setup_metadata_type_list'))
except Exception as exception:
messages.error(request, _(u'Error editing metadata type; %s') % exception)
messages.error(request, _('Error editing metadata type; %s') % exception)
pass
else:
form = MetadataTypeForm(instance=metadata_type)
return render_to_response('main/generic_form.html', {
'title': _(u'Edit metadata type: %s') % metadata_type,
'title': _('Edit metadata type: %s') % metadata_type,
'form': form,
'object': metadata_type,
}, context_instance=RequestContext(request))
@@ -417,13 +416,13 @@ def setup_metadata_type_create(request):
form = MetadataTypeForm(request.POST)
if form.is_valid():
form.save()
messages.success(request, _(u'Metadata type created successfully'))
messages.success(request, _('Metadata type created successfully'))
return HttpResponseRedirect(reverse('metadata:setup_metadata_type_list'))
else:
form = MetadataTypeForm()
return render_to_response('main/generic_form.html', {
'title': _(u'Create metadata type'),
'title': _('Create metadata type'),
'form': form,
}, context_instance=RequestContext(request))
@@ -441,9 +440,9 @@ def setup_metadata_type_delete(request, metadatatype_id):
if request.method == 'POST':
try:
metadata_type.delete()
messages.success(request, _(u'Metadata type: %s deleted successfully.') % metadata_type)
messages.success(request, _('Metadata type: %s deleted successfully.') % metadata_type)
except Exception as exception:
messages.error(request, _(u'Metadata type: %(metadata_type)s delete error: %(error)s') % {
messages.error(request, _('Metadata type: %(metadata_type)s delete error: %(error)s') % {
'metadata_type': metadata_type, 'error': exception})
return HttpResponseRedirect(next)
@@ -453,7 +452,7 @@ def setup_metadata_type_delete(request, metadatatype_id):
'next': next,
'previous': previous,
'object': metadata_type,
'title': _(u'Are you sure you wish to delete the metadata type: %s?') % metadata_type,
'title': _('Are you sure you wish to delete the metadata type: %s?') % metadata_type,
}
return render_to_response('main/generic_confirm.html', context,
@@ -474,7 +473,7 @@ def setup_document_type_metadata(request, document_type_id):
extra_context={
'document_type': document_type,
'navigation_object_name': 'document_type',
'main_title': _(u'Optional metadata types for document type: %s') % document_type,
'main_title': _('Optional metadata types for document type: %s') % document_type,
},
decode_content_type=True,
)