Code style cleanups
Sort arguments, methods. Add keyword arguments. Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
@@ -2,12 +2,10 @@ from __future__ import absolute_import, unicode_literals
|
||||
|
||||
from django.contrib import messages
|
||||
from django.http import HttpResponseRedirect
|
||||
from django.shortcuts import get_object_or_404
|
||||
from django.urls import reverse_lazy
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils.translation import ungettext
|
||||
|
||||
from mayan.apps.acls.models import AccessControlList
|
||||
from mayan.apps.common.generics import (
|
||||
FormView, MultipleObjectConfirmActionView, SingleObjectEditView,
|
||||
SingleObjectListView
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from .classes import * # NOQA
|
||||
|
||||
default_app_config = 'mayan.apps.mailer.apps.MailerApp'
|
||||
|
||||
@@ -53,8 +53,8 @@ class MailerApp(MayanAppConfig):
|
||||
app_label='documents', model_name='Document'
|
||||
)
|
||||
|
||||
LogEntry = self.get_model('LogEntry')
|
||||
UserMailer = self.get_model('UserMailer')
|
||||
LogEntry = self.get_model(model_name='LogEntry')
|
||||
UserMailer = self.get_model(model_name='UserMailer')
|
||||
|
||||
MailerBackend.initialize()
|
||||
|
||||
@@ -69,18 +69,19 @@ class MailerApp(MayanAppConfig):
|
||||
source=LogEntry, label=_('Message'), attribute='message'
|
||||
)
|
||||
SourceColumn(
|
||||
source=UserMailer, label=_('Label'), attribute='label'
|
||||
attribute='label', is_identifier=True, is_sortable=True,
|
||||
source=UserMailer
|
||||
)
|
||||
SourceColumn(
|
||||
attribute='default', label=_('Default?'), source=UserMailer,
|
||||
attribute='default', is_sortable=True, source=UserMailer,
|
||||
widget=TwoStateWidget
|
||||
)
|
||||
SourceColumn(
|
||||
attribute='enabled', label=_('Enabled?'), source=UserMailer,
|
||||
attribute='enabled', is_sortable=True, source=UserMailer,
|
||||
widget=TwoStateWidget
|
||||
)
|
||||
SourceColumn(
|
||||
source=UserMailer, label=_('Label'), attribute='backend_label'
|
||||
source=UserMailer, attribute='backend_label'
|
||||
)
|
||||
|
||||
ModelPermission.register(
|
||||
|
||||
@@ -4,8 +4,8 @@ from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from mayan.apps.events import EventTypeNamespace
|
||||
|
||||
namespace = EventTypeNamespace(name='mailing', label=_('Mailing'))
|
||||
namespace = EventTypeNamespace(label=_('Mailing'), name='mailing')
|
||||
|
||||
event_email_sent = namespace.add_event_type(
|
||||
name='email_send', label=_('Email sent')
|
||||
label=_('Email sent'), name='email_send'
|
||||
)
|
||||
|
||||
@@ -77,6 +77,8 @@ class UserMailer(models.Model):
|
||||
"""
|
||||
return self.get_backend().label
|
||||
|
||||
backend_label.short_description = _('Backend label')
|
||||
|
||||
def dumps(self, data):
|
||||
"""
|
||||
Serialize the backend configuration data.
|
||||
|
||||
@@ -4,29 +4,29 @@ from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from mayan.apps.permissions import PermissionNamespace
|
||||
|
||||
namespace = PermissionNamespace(name='mailing', label=_('Mailing'))
|
||||
namespace = PermissionNamespace(label=_('Mailing'), name='mailing')
|
||||
|
||||
permission_mailing_link = namespace.add_permission(
|
||||
name='mail_link', label=_('Send document link via email')
|
||||
label=_('Send document link via email'), name='mail_link'
|
||||
)
|
||||
permission_mailing_send_document = namespace.add_permission(
|
||||
name='mail_document', label=_('Send document via email')
|
||||
label=_('Send document via email'), name='mail_document'
|
||||
)
|
||||
permission_view_error_log = namespace.add_permission(
|
||||
name='view_error_log', label=_('View system mailing error log')
|
||||
label=_('View system mailing error log'), name='view_error_log'
|
||||
)
|
||||
permission_user_mailer_create = namespace.add_permission(
|
||||
name='user_mailer_create', label=_('Create a mailing profile')
|
||||
label=_('Create a mailing profile'), name='user_mailer_create'
|
||||
)
|
||||
permission_user_mailer_delete = namespace.add_permission(
|
||||
name='user_mailer_delete', label=_('Delete a mailing profile')
|
||||
label=_('Delete a mailing profile'), name='user_mailer_delete'
|
||||
)
|
||||
permission_user_mailer_edit = namespace.add_permission(
|
||||
name='user_mailer_edit', label=_('Edit a mailing profile')
|
||||
label=_('Edit a mailing profile'), name='user_mailer_edit'
|
||||
)
|
||||
permission_user_mailer_view = namespace.add_permission(
|
||||
name='user_mailer_view', label=_('View a mailing profile')
|
||||
label=_('View a mailing profile'), name='user_mailer_view'
|
||||
)
|
||||
permission_user_mailer_use = namespace.add_permission(
|
||||
name='user_mailer_use', label=_('Use a mailing profile')
|
||||
label=_('Use a mailing profile'), name='user_mailer_use'
|
||||
)
|
||||
|
||||
@@ -4,10 +4,8 @@ from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from mayan.apps.task_manager.classes import CeleryQueue
|
||||
|
||||
queue_mailing = CeleryQueue(
|
||||
name='mailing', label=_('Mailing')
|
||||
)
|
||||
queue_mailing = CeleryQueue(label=_('Mailing'), name='mailing')
|
||||
queue_mailing.add_task_type(
|
||||
name='mayan.apps.mailer.tasks.task_send_document',
|
||||
label=_('Send document')
|
||||
label=_('Send document'),
|
||||
name='mayan.apps.mailer.tasks.task_send_document'
|
||||
)
|
||||
|
||||
@@ -8,7 +8,7 @@ from .literals import (
|
||||
DEFAULT_DOCUMENT_BODY_TEMPLATE, DEFAULT_LINK_BODY_TEMPLATE
|
||||
)
|
||||
|
||||
namespace = Namespace(name='mailer', label=_('Mailing'))
|
||||
namespace = Namespace(label=_('Mailing'), name='mailer')
|
||||
|
||||
setting_link_subject_template = namespace.add_setting(
|
||||
default=_('Link for document: {{ document }}'),
|
||||
|
||||
@@ -124,7 +124,7 @@ class UserMailerBackendSelectionView(FormView):
|
||||
def form_valid(self, form):
|
||||
backend = form.cleaned_data['backend']
|
||||
return HttpResponseRedirect(
|
||||
reverse(
|
||||
redirect_to=reverse(
|
||||
viewname='mailer:user_mailer_create', kwargs={
|
||||
'class_path': backend
|
||||
}
|
||||
@@ -170,7 +170,7 @@ class UserMailingCreateView(SingleObjectDynamicFormCreateView):
|
||||
class UserMailingDeleteView(SingleObjectDeleteView):
|
||||
model = UserMailer
|
||||
object_permission = permission_user_mailer_delete
|
||||
post_action_redirect = reverse_lazy('mailer:user_mailer_list')
|
||||
post_action_redirect = reverse_lazy(viewname='mailer:user_mailer_list')
|
||||
|
||||
def get_extra_context(self):
|
||||
return {
|
||||
|
||||
@@ -71,14 +71,14 @@ class Statistic(object):
|
||||
slug__in=queryset.values_list('name', flat=True)
|
||||
).delete()
|
||||
|
||||
@classmethod
|
||||
def get_all(cls):
|
||||
return list(cls._registry.values())
|
||||
|
||||
@classmethod
|
||||
def get(cls, slug):
|
||||
return cls._registry[slug]
|
||||
|
||||
@classmethod
|
||||
def get_all(cls):
|
||||
return list(cls._registry.values())
|
||||
|
||||
@classmethod
|
||||
def get_task_names(cls):
|
||||
return [task.get_task_name() for task in cls.get_all()]
|
||||
@@ -119,6 +119,19 @@ class Statistic(object):
|
||||
def execute(self):
|
||||
self.store_results(results=self.func())
|
||||
|
||||
def get_chart_data(self):
|
||||
return self.renderer(data=self.get_results()).get_chart_data()
|
||||
|
||||
def get_results(self):
|
||||
StatisticResult = apps.get_model(
|
||||
app_label='mayan_statistics', model_name='StatisticResult'
|
||||
)
|
||||
|
||||
try:
|
||||
return StatisticResult.objects.get(slug=self.slug).get_data()
|
||||
except StatisticResult.DoesNotExist:
|
||||
return {'series': {}}
|
||||
|
||||
def get_task_name(self):
|
||||
return 'mayan_statistics.task_execute_statistic_{}'.format(self.slug)
|
||||
|
||||
@@ -134,19 +147,6 @@ class Statistic(object):
|
||||
)
|
||||
statistic_result.store_data(data=results)
|
||||
|
||||
def get_results(self):
|
||||
StatisticResult = apps.get_model(
|
||||
app_label='mayan_statistics', model_name='StatisticResult'
|
||||
)
|
||||
|
||||
try:
|
||||
return StatisticResult.objects.get(slug=self.slug).get_data()
|
||||
except StatisticResult.DoesNotExist:
|
||||
return {'series': {}}
|
||||
|
||||
def get_chart_data(self):
|
||||
return self.renderer(data=self.get_results()).get_chart_data()
|
||||
|
||||
|
||||
class StatisticLineChart(Statistic):
|
||||
renderer = ChartJSLine
|
||||
|
||||
@@ -4,8 +4,8 @@ from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from mayan.apps.permissions import PermissionNamespace
|
||||
|
||||
namespace = PermissionNamespace(name='statistics', label=_('Statistics'))
|
||||
namespace = PermissionNamespace(label=_('Statistics'), name='statistics')
|
||||
|
||||
permission_statistics_view = namespace.add_permission(
|
||||
name='statistics_view', label=_('View statistics')
|
||||
label=_('View statistics'), name='statistics_view'
|
||||
)
|
||||
|
||||
@@ -5,10 +5,10 @@ from django.utils.translation import ugettext_lazy as _
|
||||
from mayan.apps.task_manager.classes import CeleryQueue
|
||||
|
||||
queue_statistics = CeleryQueue(
|
||||
name='statistics', label=_('Statistics'), transient=True
|
||||
label=_('Statistics'), name='statistics', transient=True
|
||||
)
|
||||
|
||||
queue_statistics.add_task_type(
|
||||
name='mayan.apps.mayan_statistics.tasks.task_execute_statistic',
|
||||
label=_('Execute statistic')
|
||||
label=_('Execute statistic'),
|
||||
name='mayan.apps.mayan_statistics.tasks.task_execute_statistic'
|
||||
)
|
||||
|
||||
@@ -7,38 +7,36 @@ from ..permissions import permission_statistics_view
|
||||
|
||||
|
||||
class StatisticsViewTestCase(GenericViewTestCase):
|
||||
def setUp(self):
|
||||
super(StatisticsViewTestCase, self).setUp()
|
||||
self.login_user()
|
||||
|
||||
def test_statistic_detail_view_no_permissions(self):
|
||||
statistic = Statistic.get_all()[0]
|
||||
|
||||
response = self.get(
|
||||
'statistics:statistic_detail', args=(statistic.slug,)
|
||||
def _request_test_statistic_detail_view(self):
|
||||
return self.get(
|
||||
viewname='statistics:statistic_detail', kwargs={
|
||||
'slug': self.statistic.slug
|
||||
}
|
||||
)
|
||||
|
||||
def test_statistic_detail_view_no_permissions(self):
|
||||
self.statistic = Statistic.get_all()[0]
|
||||
|
||||
response = self._request_test_statistic_detail_view()
|
||||
self.assertEqual(response.status_code, 403)
|
||||
|
||||
def test_statistic_detail_view_with_permissions(self):
|
||||
self.grant_permission(permission=permission_statistics_view)
|
||||
|
||||
statistic = Statistic.get_all()[0]
|
||||
|
||||
response = self.get(
|
||||
'statistics:statistic_detail', args=(statistic.slug,)
|
||||
)
|
||||
self.statistic = Statistic.get_all()[0]
|
||||
|
||||
response = self._request_test_statistic_detail_view()
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
def test_statistic_namespace_list_view_no_permissions(self):
|
||||
response = self.get('statistics:namespace_list')
|
||||
def _request_test_namespace_list_view(self):
|
||||
return self.get(viewname='statistics:namespace_list')
|
||||
|
||||
def test_statistic_namespace_list_view_no_permissions(self):
|
||||
response = self._request_test_namespace_list_view()
|
||||
self.assertEqual(response.status_code, 403)
|
||||
|
||||
def test_statistic_namespace_list_view_with_permissions(self):
|
||||
self.grant_permission(permission=permission_statistics_view)
|
||||
|
||||
response = self.get('statistics:namespace_list')
|
||||
|
||||
response = self._request_test_namespace_list_view()
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
@@ -35,7 +35,7 @@ class NamespaceDetailView(SingleObjectListView):
|
||||
}
|
||||
|
||||
def get_namespace(self):
|
||||
return StatisticNamespace.get(self.kwargs['slug'])
|
||||
return StatisticNamespace.get(slug=self.kwargs['slug'])
|
||||
|
||||
def get_object_list(self):
|
||||
return self.get_namespace().statistics
|
||||
@@ -45,13 +45,15 @@ class StatisticDetailView(SimpleView):
|
||||
view_permission = permission_statistics_view
|
||||
|
||||
def get_extra_context(self):
|
||||
obj = self.get_object()
|
||||
|
||||
return {
|
||||
'chart_data': self.get_object().get_chart_data(),
|
||||
'namespace': self.get_object().namespace,
|
||||
'chart_data': obj.get_chart_data(),
|
||||
'namespace': obj.namespace,
|
||||
'navigation_object_list': ('namespace', 'object'),
|
||||
'no_data': not self.get_object().get_results()['series'],
|
||||
'object': self.get_object(),
|
||||
'title': _('Results for: %s') % self.get_object(),
|
||||
'no_data': not obj.get_results()['series'],
|
||||
'object': obj,
|
||||
'title': _('Results for: %s') % obj,
|
||||
}
|
||||
|
||||
def get_object(self):
|
||||
@@ -68,20 +70,21 @@ class StatisticQueueView(ConfirmView):
|
||||
view_permission = permission_statistics_view
|
||||
|
||||
def get_extra_context(self):
|
||||
obj = self.get_object()
|
||||
return {
|
||||
'namespace': self.get_object().namespace,
|
||||
'object': self.get_object(),
|
||||
'namespace': obj.namespace,
|
||||
'object': obj,
|
||||
# Translators: This text is asking users if they want to queue
|
||||
# (to send to the queue) a statistic for it to be update ahead
|
||||
# of schedule
|
||||
'title': _(
|
||||
'Queue statistic "%s" to be updated?'
|
||||
) % self.get_object(),
|
||||
) % obj,
|
||||
}
|
||||
|
||||
def get_object(self):
|
||||
try:
|
||||
return Statistic.get(self.kwargs['slug'])
|
||||
return Statistic.get(slug=self.kwargs['slug'])
|
||||
except KeyError:
|
||||
raise Http404(_('Statistic "%s" not found.') % self.kwargs['slug'])
|
||||
|
||||
|
||||
@@ -35,9 +35,9 @@ from .events import (
|
||||
event_metadata_type_relationship
|
||||
)
|
||||
from .handlers import (
|
||||
handler_index_document, post_document_type_metadata_type_add,
|
||||
post_document_type_metadata_type_delete,
|
||||
post_document_type_change_metadata
|
||||
handler_index_document, handler_post_document_type_metadata_type_add,
|
||||
handler_post_document_type_metadata_type_delete,
|
||||
handler_post_document_type_change_metadata
|
||||
)
|
||||
from .links import (
|
||||
link_metadata_add, link_metadata_edit, link_metadata_multiple_add,
|
||||
@@ -86,27 +86,30 @@ class MetadataApp(MayanAppConfig):
|
||||
app_label='documents', model_name='DocumentType'
|
||||
)
|
||||
|
||||
DocumentMetadata = self.get_model('DocumentMetadata')
|
||||
DocumentTypeMetadataType = self.get_model('DocumentTypeMetadataType')
|
||||
MetadataType = self.get_model('MetadataType')
|
||||
DocumentMetadata = self.get_model(model_name='DocumentMetadata')
|
||||
DocumentTypeMetadataType = self.get_model(
|
||||
model_name='DocumentTypeMetadataType'
|
||||
)
|
||||
MetadataType = self.get_model(model_name='MetadataType')
|
||||
|
||||
Document.add_to_class(
|
||||
name='metadata_value_of', value=DocumentMetadataHelper.constructor
|
||||
)
|
||||
|
||||
ModelAttribute(
|
||||
Document, 'metadata_value_of',
|
||||
model=Document, name='metadata_value_of',
|
||||
description=_(
|
||||
'Return the value of a specific document metadata'
|
||||
),
|
||||
)
|
||||
)
|
||||
|
||||
ModelField(
|
||||
Document, 'metadata__metadata_type__name',
|
||||
model=Document, name='metadata__metadata_type__name',
|
||||
label=_('Metadata type name')
|
||||
)
|
||||
ModelField(
|
||||
Document, 'metadata__value', label=_('Metadata type value'),
|
||||
model=Document, name='metadata__value',
|
||||
label=_('Metadata type value')
|
||||
)
|
||||
|
||||
ModelEventType.register(
|
||||
@@ -255,31 +258,31 @@ class MetadataApp(MayanAppConfig):
|
||||
)
|
||||
|
||||
post_delete.connect(
|
||||
post_document_type_metadata_type_delete,
|
||||
dispatch_uid='metadata_post_document_type_metadata_type_delete',
|
||||
dispatch_uid='metadata_handler_post_document_type_metadata_type_delete',
|
||||
receiver=handler_post_document_type_metadata_type_delete,
|
||||
sender=DocumentTypeMetadataType
|
||||
)
|
||||
post_document_type_change.connect(
|
||||
post_document_type_change_metadata,
|
||||
dispatch_uid='metadata_post_document_type_change_metadata',
|
||||
dispatch_uid='metadata_handler_post_document_type_change_metadata',
|
||||
receiver=handler_post_document_type_change_metadata,
|
||||
sender=Document
|
||||
)
|
||||
post_save.connect(
|
||||
post_document_type_metadata_type_add,
|
||||
dispatch_uid='metadata_post_document_type_metadata_type_add',
|
||||
dispatch_uid='metadata_handler_post_document_type_metadata_type_add',
|
||||
receiver=handler_post_document_type_metadata_type_add,
|
||||
sender=DocumentTypeMetadataType
|
||||
)
|
||||
|
||||
# Index updating
|
||||
|
||||
post_delete.connect(
|
||||
handler_index_document,
|
||||
dispatch_uid='metadata_handler_index_document_delete',
|
||||
receiver=handler_index_document,
|
||||
sender=DocumentMetadata
|
||||
)
|
||||
post_save.connect(
|
||||
handler_index_document,
|
||||
dispatch_uid='metadata_handler_index_document_save',
|
||||
receiver=handler_index_document,
|
||||
sender=DocumentMetadata
|
||||
)
|
||||
|
||||
|
||||
@@ -4,31 +4,24 @@ from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from mayan.apps.events import EventTypeNamespace
|
||||
|
||||
namespace = EventTypeNamespace(name='metadata', label=_('Metadata'))
|
||||
namespace = EventTypeNamespace(label=_('Metadata'), name='metadata')
|
||||
|
||||
event_document_metadata_added = namespace.add_event_type(
|
||||
name='document_metadata_added', label=_(
|
||||
'Document metadata added'
|
||||
)
|
||||
label=_('Document metadata added'), name='document_metadata_added'
|
||||
)
|
||||
event_document_metadata_edited = namespace.add_event_type(
|
||||
name='document_metadata_edited', label=_(
|
||||
'Document metadata edited'
|
||||
)
|
||||
label=_('Document metadata edited'), name='document_metadata_edited'
|
||||
)
|
||||
event_document_metadata_removed = namespace.add_event_type(
|
||||
name='document_metadata_removed', label=_(
|
||||
'Document metadata removed'
|
||||
)
|
||||
label=_('Document metadata removed'), name='document_metadata_removed'
|
||||
)
|
||||
event_metadata_type_created = namespace.add_event_type(
|
||||
name='metadata_type_created', label=_('Metadata type created')
|
||||
label=_('Metadata type created'), name='metadata_type_created'
|
||||
)
|
||||
event_metadata_type_edited = namespace.add_event_type(
|
||||
name='metadata_type_edited', label=_('Metadata type edited')
|
||||
label=_('Metadata type edited'), name='metadata_type_edited'
|
||||
)
|
||||
event_metadata_type_relationship = namespace.add_event_type(
|
||||
name='metadata_type_relationship', label=_(
|
||||
'Metadata type relationship updated'
|
||||
)
|
||||
label=_('Metadata type relationship updated'),
|
||||
name='metadata_type_relationship'
|
||||
)
|
||||
|
||||
@@ -11,29 +11,13 @@ from .tasks import task_add_required_metadata_type, task_remove_metadata_type
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def post_document_type_metadata_type_add(sender, instance, created, **kwargs):
|
||||
logger.debug('instance: %s', instance)
|
||||
|
||||
if created and instance.required:
|
||||
task_add_required_metadata_type.apply_async(
|
||||
kwargs={
|
||||
'document_type_id': instance.document_type.pk,
|
||||
'metadata_type_id': instance.metadata_type.pk
|
||||
}
|
||||
def handler_index_document(sender, **kwargs):
|
||||
task_index_document.apply_async(
|
||||
kwargs=dict(document_id=kwargs['instance'].document.pk)
|
||||
)
|
||||
|
||||
|
||||
def post_document_type_metadata_type_delete(sender, instance, **kwargs):
|
||||
logger.debug('instance: %s', instance)
|
||||
task_remove_metadata_type.apply_async(
|
||||
kwargs={
|
||||
'document_type_id': instance.document_type.pk,
|
||||
'metadata_type_id': instance.metadata_type.pk
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
def post_document_type_change_metadata(sender, instance, **kwargs):
|
||||
def handler_post_document_type_change_metadata(sender, instance, **kwargs):
|
||||
logger.debug('received post_document_type_change')
|
||||
logger.debug('instance: %s', instance)
|
||||
|
||||
@@ -73,7 +57,23 @@ def post_document_type_change_metadata(sender, instance, **kwargs):
|
||||
)
|
||||
|
||||
|
||||
def handler_index_document(sender, **kwargs):
|
||||
task_index_document.apply_async(
|
||||
kwargs=dict(document_id=kwargs['instance'].document.pk)
|
||||
def handler_post_document_type_metadata_type_add(sender, instance, created, **kwargs):
|
||||
logger.debug('instance: %s', instance)
|
||||
|
||||
if created and instance.required:
|
||||
task_add_required_metadata_type.apply_async(
|
||||
kwargs={
|
||||
'document_type_id': instance.document_type.pk,
|
||||
'metadata_type_id': instance.metadata_type.pk
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
def handler_post_document_type_metadata_type_delete(sender, instance, **kwargs):
|
||||
logger.debug('instance: %s', instance)
|
||||
task_remove_metadata_type.apply_async(
|
||||
kwargs={
|
||||
'document_type_id': instance.document_type.pk,
|
||||
'metadata_type_id': instance.metadata_type.pk
|
||||
}
|
||||
)
|
||||
|
||||
@@ -4,34 +4,35 @@ from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from mayan.apps.permissions import PermissionNamespace
|
||||
|
||||
namespace = PermissionNamespace(name='metadata', label=_('Metadata'))
|
||||
namespace = PermissionNamespace(label=_('Metadata'), name='metadata')
|
||||
|
||||
permission_metadata_document_edit = namespace.add_permission(
|
||||
name='metadata_document_edit', label=_('Edit a document\'s metadata')
|
||||
label=_('Edit a document\'s metadata'), name='metadata_document_edit'
|
||||
)
|
||||
permission_metadata_document_add = namespace.add_permission(
|
||||
name='metadata_document_add', label=_('Add metadata to a document'))
|
||||
label=_('Add metadata to a document'), name='metadata_document_add'
|
||||
)
|
||||
permission_metadata_document_remove = namespace.add_permission(
|
||||
name='metadata_document_remove',
|
||||
label=_('Remove metadata from a document')
|
||||
label=_('Remove metadata from a document'),
|
||||
name='metadata_document_remove'
|
||||
)
|
||||
permission_metadata_document_view = namespace.add_permission(
|
||||
name='metadata_document_view', label=_('View metadata from a document')
|
||||
label=_('View metadata from a document'), name='metadata_document_view'
|
||||
)
|
||||
|
||||
setup_namespace = PermissionNamespace(
|
||||
name='metadata_setup', label=_('Metadata setup')
|
||||
label=_('Metadata setup'), name='metadata_setup'
|
||||
)
|
||||
|
||||
permission_metadata_type_edit = setup_namespace.add_permission(
|
||||
name='metadata_type_edit', label=_('Edit metadata types')
|
||||
label=_('Edit metadata types'), name='metadata_type_edit'
|
||||
)
|
||||
permission_metadata_type_create = setup_namespace.add_permission(
|
||||
name='metadata_type_create', label=_('Create new metadata types')
|
||||
label=_('Create new metadata types'), name='metadata_type_create'
|
||||
)
|
||||
permission_metadata_type_delete = setup_namespace.add_permission(
|
||||
name='metadata_type_delete', label=_('Delete metadata types')
|
||||
label=_('Delete metadata types'), name='metadata_type_delete'
|
||||
)
|
||||
permission_metadata_type_view = setup_namespace.add_permission(
|
||||
name='metadata_type_view', label=_('View metadata types')
|
||||
label=_('View metadata types'), name='metadata_type_view'
|
||||
)
|
||||
|
||||
@@ -33,15 +33,16 @@ class MetadataTestsMixin(object):
|
||||
|
||||
def _request_metadata_type_delete_view(self):
|
||||
return self.post(
|
||||
viewname='metadata:setup_metadata_type_delete', args=(
|
||||
self.metadata_type.pk,
|
||||
),
|
||||
viewname='metadata:setup_metadata_type_delete', kwargs={
|
||||
'pk': self.metadata_type.pk
|
||||
}
|
||||
)
|
||||
|
||||
def _request_metadata_type_edit_view(self):
|
||||
return self.post(
|
||||
viewname='metadata:setup_metadata_type_edit', args=(
|
||||
self.metadata_type.pk,), data={
|
||||
viewname='metadata:setup_metadata_type_edit', kwargs={
|
||||
'pk': self.metadata_type.pk
|
||||
}, data={
|
||||
'label': TEST_METADATA_TYPE_LABEL_EDITED,
|
||||
'name': TEST_METADATA_TYPE_NAME_EDITED
|
||||
}
|
||||
@@ -53,10 +54,10 @@ class MetadataTestsMixin(object):
|
||||
|
||||
return self.post(
|
||||
viewname='metadata:setup_metadata_type_document_types',
|
||||
args=(self.metadata_type.pk,), data={
|
||||
kwargs={'pk': self.metadata_type.pk}, data={
|
||||
'form-TOTAL_FORMS': '1',
|
||||
'form-INITIAL_FORMS': '0',
|
||||
'form-0-relationship_type': 'required',
|
||||
'form-0-relationship_type': 'required'
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@@ -58,40 +58,45 @@ class MetadataTypeAPITestCase(BaseAPITestCase):
|
||||
def _request_metadata_type_delete_view(self):
|
||||
return self.delete(
|
||||
viewname='rest_api:metadatatype-detail',
|
||||
args=(self.metadata_type.pk,)
|
||||
kwargs={'metadata_type_pk': self.metadata_type.pk}
|
||||
)
|
||||
|
||||
def test_metadata_type_delete_no_access(self):
|
||||
self._create_metadata_type()
|
||||
response = self._request_metadata_type_delete_view()
|
||||
|
||||
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
|
||||
self.assertEqual(MetadataType.objects.count(), 1)
|
||||
|
||||
def test_metadata_type_delete_with_access(self):
|
||||
self._create_metadata_type()
|
||||
self.grant_access(
|
||||
permission=permission_metadata_type_delete, obj=self.metadata_type
|
||||
obj=self.metadata_type, permission=permission_metadata_type_delete
|
||||
)
|
||||
|
||||
response = self._request_metadata_type_delete_view()
|
||||
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
||||
|
||||
self.assertEqual(MetadataType.objects.count(), 0)
|
||||
|
||||
def _request_metadata_type_detail_view(self):
|
||||
return self.get(
|
||||
viewname='rest_api:metadatatype-detail',
|
||||
args=(self.metadata_type.pk,)
|
||||
kwargs={'metadata_type_pk': self.metadata_type.pk}
|
||||
)
|
||||
|
||||
def test_metadata_type_detail_view_no_access(self):
|
||||
self._create_metadata_type()
|
||||
|
||||
response = self._request_metadata_type_detail_view()
|
||||
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
|
||||
|
||||
def test_metadata_type_detail_view_with_access(self):
|
||||
self._create_metadata_type()
|
||||
self.grant_access(
|
||||
permission=permission_metadata_type_view, obj=self.metadata_type
|
||||
obj=self.metadata_type, permission=permission_metadata_type_view
|
||||
)
|
||||
|
||||
response = self._request_metadata_type_detail_view()
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
|
||||
@@ -102,7 +107,7 @@ class MetadataTypeAPITestCase(BaseAPITestCase):
|
||||
def _request_metadata_type_edit_view_via_patch(self):
|
||||
return self.patch(
|
||||
viewname='rest_api:metadatatype-detail',
|
||||
args=(self.metadata_type.pk,), data={
|
||||
kwargs={'metadata_type_pk': self.metadata_type.pk}, data={
|
||||
'label': TEST_METADATA_TYPE_LABEL_2,
|
||||
'name': TEST_METADATA_TYPE_NAME_2
|
||||
}
|
||||
@@ -110,6 +115,7 @@ class MetadataTypeAPITestCase(BaseAPITestCase):
|
||||
|
||||
def test_metadata_type_patch_view_no_access(self):
|
||||
self._create_metadata_type()
|
||||
|
||||
response = self._request_metadata_type_edit_view_via_patch()
|
||||
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
|
||||
|
||||
@@ -120,8 +126,9 @@ class MetadataTypeAPITestCase(BaseAPITestCase):
|
||||
def test_metadata_type_patch_view_with_access(self):
|
||||
self._create_metadata_type()
|
||||
self.grant_access(
|
||||
permission=permission_metadata_type_edit, obj=self.metadata_type
|
||||
obj=self.metadata_type, permission=permission_metadata_type_edit
|
||||
)
|
||||
|
||||
response = self._request_metadata_type_edit_view_via_patch()
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
|
||||
@@ -132,7 +139,7 @@ class MetadataTypeAPITestCase(BaseAPITestCase):
|
||||
def _request_metadata_type_edit_view_via_put(self):
|
||||
return self.put(
|
||||
viewname='rest_api:metadatatype-detail',
|
||||
args=(self.metadata_type.pk,), data={
|
||||
kwargs={'metadata_type_pk': self.metadata_type.pk}, data={
|
||||
'label': TEST_METADATA_TYPE_LABEL_2,
|
||||
'name': TEST_METADATA_TYPE_NAME_2
|
||||
}
|
||||
@@ -150,8 +157,9 @@ class MetadataTypeAPITestCase(BaseAPITestCase):
|
||||
def test_metadata_type_put_view_with_access(self):
|
||||
self._create_metadata_type()
|
||||
self.grant_access(
|
||||
permission=permission_metadata_type_edit, obj=self.metadata_type
|
||||
obj=self.metadata_type, permission=permission_metadata_type_edit
|
||||
)
|
||||
|
||||
response = self._request_metadata_type_edit_view_via_put()
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
|
||||
@@ -172,8 +180,9 @@ class MetadataTypeAPITestCase(BaseAPITestCase):
|
||||
def test_metadata_type_list_view_with_access(self):
|
||||
self._create_metadata_type()
|
||||
self.grant_access(
|
||||
permission=permission_metadata_type_view, obj=self.metadata_type
|
||||
obj=self.metadata_type, permission=permission_metadata_type_view
|
||||
)
|
||||
|
||||
response = self._request_metadata_type_list_view()
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
self.assertEqual(
|
||||
@@ -198,22 +207,26 @@ class DocumentTypeMetadataTypeAPITestCase(DocumentTestMixin, BaseAPITestCase):
|
||||
def _request_document_type_metadata_type_create_view(self):
|
||||
return self.post(
|
||||
viewname='rest_api:documenttypemetadatatype-list',
|
||||
args=(self.test_document_type.pk,), data={
|
||||
kwargs={'document_type_pk': self.test_document_type.pk}, data={
|
||||
'metadata_type_pk': self.metadata_type.pk, 'required': False
|
||||
}
|
||||
)
|
||||
|
||||
def test_document_type_metadata_type_create_view_no_access(self):
|
||||
response = self._request_document_type_metadata_type_create_view()
|
||||
|
||||
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
|
||||
self.assertEqual(self.test_document_type.metadata.count(), 0)
|
||||
|
||||
def test_document_type_metadata_type_create_view_with_access(self):
|
||||
self.grant_access(
|
||||
permission=permission_document_type_edit, obj=self.test_document_type
|
||||
obj=self.test_document_type,
|
||||
permission=permission_document_type_edit
|
||||
)
|
||||
|
||||
response = self._request_document_type_metadata_type_create_view()
|
||||
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
||||
|
||||
document_type_metadata_type = DocumentTypeMetadataType.objects.first()
|
||||
self.assertEqual(response.data['id'], document_type_metadata_type.pk)
|
||||
|
||||
@@ -228,43 +241,54 @@ class DocumentTypeMetadataTypeAPITestCase(DocumentTestMixin, BaseAPITestCase):
|
||||
def _request_document_type_metadata_type_delete_view(self):
|
||||
return self.delete(
|
||||
viewname='rest_api:documenttypemetadatatype-detail',
|
||||
args=(
|
||||
self.test_document_type.pk, self.test_document_type_metadata_type.pk,
|
||||
),
|
||||
kwargs={
|
||||
'document_type_pk': self.test_document_type.pk,
|
||||
'metadata_type_pk': self.test_document_type_metadata_type.pk
|
||||
}
|
||||
)
|
||||
|
||||
def test_document_type_metadata_type_delete_view_no_access(self):
|
||||
self._create_document_type_metadata_type()
|
||||
|
||||
response = self._request_document_type_metadata_type_delete_view()
|
||||
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
|
||||
|
||||
self.assertEqual(self.test_document_type.metadata.count(), 1)
|
||||
|
||||
def test_document_type_metadata_type_delete_view_with_access(self):
|
||||
self._create_document_type_metadata_type()
|
||||
self.grant_access(permission=permission_document_type_edit, obj=self.test_document_type)
|
||||
self.grant_access(
|
||||
obj=self.test_document_type,
|
||||
permission=permission_document_type_edit
|
||||
)
|
||||
|
||||
response = self._request_document_type_metadata_type_delete_view()
|
||||
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
||||
|
||||
self.assertEqual(self.test_document_type.metadata.all().count(), 0)
|
||||
|
||||
def _request_document_type_metadata_type_list_view(self):
|
||||
return self.get(
|
||||
viewname='rest_api:documenttypemetadatatype-list',
|
||||
args=(
|
||||
self.test_document_type.pk,
|
||||
),
|
||||
viewname='rest_api:documenttypemetadatatype-list', kwargs={
|
||||
'document_type_pk': self.test_document_type.pk
|
||||
}
|
||||
)
|
||||
|
||||
def test_document_type_metadata_type_list_view_no_access(self):
|
||||
self._create_document_type_metadata_type()
|
||||
|
||||
response = self._request_document_type_metadata_type_list_view()
|
||||
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
|
||||
|
||||
def test_document_type_metadata_type_list_view_with_access(self):
|
||||
self._create_document_type_metadata_type()
|
||||
self.grant_access(permission=permission_document_type_view, obj=self.test_document_type)
|
||||
self.grant_access(
|
||||
obj=self.test_document_type,
|
||||
permission=permission_document_type_view
|
||||
)
|
||||
|
||||
response = self._request_document_type_metadata_type_list_view()
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
|
||||
self.assertEqual(
|
||||
response.data['results'][0]['id'],
|
||||
self.test_document_type_metadata_type.pk
|
||||
@@ -273,50 +297,65 @@ class DocumentTypeMetadataTypeAPITestCase(DocumentTestMixin, BaseAPITestCase):
|
||||
def _request_document_type_metadata_type_edit_view_via_patch(self):
|
||||
return self.patch(
|
||||
viewname='rest_api:documenttypemetadatatype-detail',
|
||||
args=(
|
||||
self.test_document_type.pk, self.test_document_type_metadata_type.pk,
|
||||
), data={
|
||||
kwargs={
|
||||
'document_type_pk': self.test_document_type.pk,
|
||||
'metadata_type_pk': self.test_document_type_metadata_type.pk
|
||||
}, data={
|
||||
'required': True
|
||||
}
|
||||
)
|
||||
|
||||
def test_document_type_metadata_type_patch_view_no_access(self):
|
||||
self._create_document_type_metadata_type()
|
||||
|
||||
response = self._request_document_type_metadata_type_edit_view_via_patch()
|
||||
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
|
||||
|
||||
document_type_metadata_type = DocumentTypeMetadataType.objects.first()
|
||||
self.assertFalse(document_type_metadata_type.required, True)
|
||||
|
||||
def test_document_type_metadata_type_patch_view_with_access(self):
|
||||
self._create_document_type_metadata_type()
|
||||
self.grant_access(permission=permission_document_type_edit, obj=self.test_document_type)
|
||||
self.grant_access(
|
||||
obj=self.test_document_type,
|
||||
permission=permission_document_type_edit
|
||||
)
|
||||
|
||||
response = self._request_document_type_metadata_type_edit_view_via_patch()
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
|
||||
document_type_metadata_type = DocumentTypeMetadataType.objects.first()
|
||||
self.assertEqual(document_type_metadata_type.required, True)
|
||||
|
||||
def _request_document_type_metadata_type_edit_view_via_put(self):
|
||||
return self.put(
|
||||
viewname='rest_api:documenttypemetadatatype-detail',
|
||||
args=(
|
||||
self.test_document_type.pk, self.test_document_type_metadata_type.pk,
|
||||
), data={
|
||||
kwargs={
|
||||
'document_type_pk': self.test_document_type.pk,
|
||||
'metadata_type_pk': self.test_document_type_metadata_type.pk
|
||||
}, data={
|
||||
'required': True
|
||||
}
|
||||
)
|
||||
|
||||
def test_document_type_metadata_type_put_view_no_access(self):
|
||||
self._create_document_type_metadata_type()
|
||||
|
||||
response = self._request_document_type_metadata_type_edit_view_via_put()
|
||||
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
|
||||
|
||||
document_type_metadata_type = DocumentTypeMetadataType.objects.first()
|
||||
self.assertFalse(document_type_metadata_type.required, True)
|
||||
|
||||
def test_document_type_metadata_type_put_view_with_access(self):
|
||||
self._create_document_type_metadata_type()
|
||||
self.grant_access(permission=permission_document_type_edit, obj=self.test_document_type)
|
||||
self.grant_access(
|
||||
obj=self.test_document_type, permission=permission_document_type_edit
|
||||
)
|
||||
|
||||
response = self._request_document_type_metadata_type_edit_view_via_put()
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
|
||||
document_type_metadata_type = DocumentTypeMetadataType.objects.first()
|
||||
self.assertEqual(document_type_metadata_type.required, True)
|
||||
|
||||
@@ -339,7 +378,7 @@ class DocumentMetadataAPITestCase(DocumentTestMixin, BaseAPITestCase):
|
||||
def _request_document_metadata_create_view(self):
|
||||
return self.post(
|
||||
viewname='rest_api:documentmetadata-list',
|
||||
args=(self.test_document.pk,), data={
|
||||
kwargs={'document_pk': self.test_document.pk}, data={
|
||||
'metadata_type_pk': self.metadata_type.pk,
|
||||
'value': TEST_METADATA_VALUE
|
||||
}
|
||||
@@ -347,13 +386,18 @@ class DocumentMetadataAPITestCase(DocumentTestMixin, BaseAPITestCase):
|
||||
|
||||
def test_document_metadata_create_view_no_access(self):
|
||||
response = self._request_document_metadata_create_view()
|
||||
|
||||
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
|
||||
self.assertEqual(self.test_document.metadata.count(), 0)
|
||||
|
||||
def test_document_metadata_create_view_with_access(self):
|
||||
self.grant_access(permission=permission_metadata_document_add, obj=self.test_document)
|
||||
self.grant_access(
|
||||
obj=self.test_document, permission=permission_metadata_document_add
|
||||
)
|
||||
|
||||
response = self._request_document_metadata_create_view()
|
||||
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
||||
|
||||
document_metadata = self.test_document.metadata.first()
|
||||
self.assertEqual(response.data['id'], document_metadata.pk)
|
||||
self.assertEqual(document_metadata.metadata_type, self.metadata_type)
|
||||
@@ -362,6 +406,7 @@ class DocumentMetadataAPITestCase(DocumentTestMixin, BaseAPITestCase):
|
||||
def test_document_metadata_create_duplicate_view(self):
|
||||
self._create_document_metadata()
|
||||
self.grant_permission(permission=permission_metadata_document_add)
|
||||
|
||||
response = self._request_document_metadata_create_view()
|
||||
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|
||||
self.assertEqual(list(response.data.keys())[0], 'non_field_errors')
|
||||
@@ -370,6 +415,7 @@ class DocumentMetadataAPITestCase(DocumentTestMixin, BaseAPITestCase):
|
||||
self.metadata_type.lookup = 'invalid,lookup,values,on,purpose'
|
||||
self.metadata_type.save()
|
||||
self.grant_permission(permission=permission_metadata_document_add)
|
||||
|
||||
response = self._request_document_metadata_create_view()
|
||||
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|
||||
self.assertEqual(list(response.data.keys())[0], 'non_field_errors')
|
||||
@@ -377,11 +423,15 @@ class DocumentMetadataAPITestCase(DocumentTestMixin, BaseAPITestCase):
|
||||
def _request_document_metadata_delete_view(self):
|
||||
return self.delete(
|
||||
viewname='rest_api:documentmetadata-detail',
|
||||
args=(self.test_document.pk, self.test_document_metadata.pk,)
|
||||
kwargs={
|
||||
'document_pk': self.test_document.pk,
|
||||
'metadata_pk': self.test_document_metadata.pk
|
||||
}
|
||||
)
|
||||
|
||||
def test_document_metadata_delete_view_no_access(self):
|
||||
self._create_document_metadata()
|
||||
|
||||
response = self._request_document_metadata_delete_view()
|
||||
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
|
||||
self.assertEqual(self.test_document.metadata.all().count(), 1)
|
||||
@@ -389,29 +439,34 @@ class DocumentMetadataAPITestCase(DocumentTestMixin, BaseAPITestCase):
|
||||
def test_document_metadata_delete_view_with_access(self):
|
||||
self._create_document_metadata()
|
||||
self.grant_access(
|
||||
permission=permission_metadata_document_remove, obj=self.test_document
|
||||
obj=self.test_document,
|
||||
permission=permission_metadata_document_remove
|
||||
)
|
||||
|
||||
response = self._request_document_metadata_delete_view()
|
||||
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
||||
self.assertEqual(self.test_document.metadata.all().count(), 0)
|
||||
|
||||
def _request_document_metadata_list_view(self):
|
||||
return self.get(
|
||||
viewname='rest_api:documentmetadata-list', args=(
|
||||
self.test_document.pk,
|
||||
)
|
||||
viewname='rest_api:documentmetadata-list', kwargs={
|
||||
'document_pk': self.test_document.pk
|
||||
}
|
||||
)
|
||||
|
||||
def test_document_metadata_list_view_no_access(self):
|
||||
self._create_document_metadata()
|
||||
|
||||
response = self._request_document_metadata_list_view()
|
||||
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
|
||||
|
||||
def test_document_metadata_list_view_with_access(self):
|
||||
self._create_document_metadata()
|
||||
self.grant_access(
|
||||
permission=permission_metadata_document_view, obj=self.test_document
|
||||
obj=self.test_document,
|
||||
permission=permission_metadata_document_view
|
||||
)
|
||||
|
||||
response = self._request_document_metadata_list_view()
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
self.assertEqual(
|
||||
@@ -431,25 +486,33 @@ class DocumentMetadataAPITestCase(DocumentTestMixin, BaseAPITestCase):
|
||||
def _request_document_metadata_edit_view_via_patch(self):
|
||||
return self.patch(
|
||||
viewname='rest_api:documentmetadata-detail',
|
||||
args=(self.test_document.pk, self.test_document_metadata.pk,), data={
|
||||
kwargs={
|
||||
'document_pk': self.test_document.pk,
|
||||
'metadata_type': self.test_document_metadata.pk
|
||||
}, data={
|
||||
'value': TEST_METADATA_VALUE_EDITED
|
||||
}
|
||||
)
|
||||
|
||||
def test_document_metadata_patch_view_no_access(self):
|
||||
self._create_document_metadata()
|
||||
|
||||
response = self._request_document_metadata_edit_view_via_patch()
|
||||
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
|
||||
|
||||
self.test_document_metadata.refresh_from_db()
|
||||
self.assertEqual(self.test_document_metadata.value, TEST_METADATA_VALUE)
|
||||
|
||||
def test_document_metadata_patch_view_with_access(self):
|
||||
self._create_document_metadata()
|
||||
self.grant_access(
|
||||
permission=permission_metadata_document_edit, obj=self.test_document
|
||||
obj=self.test_document,
|
||||
permission=permission_metadata_document_edit
|
||||
)
|
||||
|
||||
response = self._request_document_metadata_edit_view_via_patch()
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
|
||||
self.test_document_metadata.refresh_from_db()
|
||||
self.assertEqual(
|
||||
response.data['value'], TEST_METADATA_VALUE_EDITED
|
||||
@@ -461,25 +524,33 @@ class DocumentMetadataAPITestCase(DocumentTestMixin, BaseAPITestCase):
|
||||
def _request_document_metadata_edit_view_via_put(self):
|
||||
return self.put(
|
||||
viewname='rest_api:documentmetadata-detail',
|
||||
args=(self.test_document.pk, self.test_document_metadata.pk,), data={
|
||||
kwargs={
|
||||
'document_pk': self.test_document.pk,
|
||||
'metadata_pk': self.test_document_metadata.pk
|
||||
}, data={
|
||||
'value': TEST_METADATA_VALUE_EDITED
|
||||
}
|
||||
)
|
||||
|
||||
def test_document_metadata_put_view_no_access(self):
|
||||
self._create_document_metadata()
|
||||
|
||||
response = self._request_document_metadata_edit_view_via_put()
|
||||
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
|
||||
|
||||
self.test_document_metadata.refresh_from_db()
|
||||
self.assertEqual(self.test_document_metadata.value, TEST_METADATA_VALUE)
|
||||
|
||||
def test_document_metadata_put_view_with_access(self):
|
||||
self._create_document_metadata()
|
||||
self.grant_access(
|
||||
permission=permission_metadata_document_edit, obj=self.test_document
|
||||
obj=self.test_document,
|
||||
permission=permission_metadata_document_edit
|
||||
)
|
||||
|
||||
response = self._request_document_metadata_edit_view_via_put()
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
|
||||
self.test_document_metadata.refresh_from_db()
|
||||
self.assertEqual(
|
||||
response.data['value'], TEST_METADATA_VALUE_EDITED
|
||||
|
||||
@@ -2,7 +2,7 @@ from __future__ import unicode_literals
|
||||
|
||||
from actstream.models import Action
|
||||
|
||||
from mayan.apps.documents.tests import GenericDocumentViewTestCase
|
||||
from mayan.apps.common.tests import GenericViewTestCase
|
||||
|
||||
from ..events import (
|
||||
event_metadata_type_created, event_metadata_type_edited
|
||||
@@ -15,7 +15,7 @@ from ..permissions import (
|
||||
from .mixins import MetadataTestsMixin
|
||||
|
||||
|
||||
class MetadataTypeEventsTestCase(MetadataTestsMixin, GenericDocumentViewTestCase):
|
||||
class MetadataTypeEventsTestCase(MetadataTestsMixin, GenericViewTestCase):
|
||||
def test_metadata_type_create_event_no_permissions(self):
|
||||
Action.objects.all().delete()
|
||||
|
||||
|
||||
@@ -20,7 +20,9 @@ from .mixins import MetadataTypeTestMixin
|
||||
class MetadataTestCase(DocumentTestMixin, MetadataTypeTestMixin, BaseTestCase):
|
||||
def setUp(self):
|
||||
super(MetadataTestCase, self).setUp()
|
||||
self.test_document_type.metadata.create(metadata_type=self.metadata_type)
|
||||
self.test_document_type.metadata.create(
|
||||
metadata_type=self.metadata_type
|
||||
)
|
||||
|
||||
def test_no_default(self):
|
||||
document_metadata = DocumentMetadata(
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import logging
|
||||
|
||||
from django.core.files.base import File
|
||||
|
||||
from mayan.apps.common.tests import GenericViewTestCase
|
||||
@@ -40,15 +38,17 @@ class DocumentMetadataTestCase(GenericDocumentViewTestCase):
|
||||
name=TEST_METADATA_TYPE_NAME, label=TEST_METADATA_TYPE_LABEL
|
||||
)
|
||||
|
||||
self.test_document_type.metadata.create(metadata_type=self.metadata_type)
|
||||
self.login_user()
|
||||
self.test_document_type.metadata.create(
|
||||
metadata_type=self.metadata_type
|
||||
)
|
||||
|
||||
def test_metadata_add_view_no_permission(self):
|
||||
self.grant_permission(permission=permission_document_view)
|
||||
|
||||
response = self.post(
|
||||
'metadata:metadata_add', args=(self.test_document.pk,),
|
||||
data={'metadata_type': self.metadata_type.pk}
|
||||
viewname='metadata:metadata_add', kwargs={
|
||||
'pk': self.test_document.pk
|
||||
}, data={'metadata_type': self.metadata_type.pk}
|
||||
)
|
||||
self.assertNotContains(
|
||||
response, text=self.metadata_type.label, status_code=200
|
||||
@@ -62,10 +62,13 @@ class DocumentMetadataTestCase(GenericDocumentViewTestCase):
|
||||
self.grant_permission(permission=permission_metadata_document_edit)
|
||||
|
||||
response = self.post(
|
||||
'metadata:metadata_add', args=(self.test_document.pk,),
|
||||
data={'metadata_type': self.metadata_type.pk}, follow=True
|
||||
viewname='metadata:metadata_add', kwargs={
|
||||
'pk': self.test_document.pk
|
||||
}, data={'metadata_type': self.metadata_type.pk}, follow=True
|
||||
)
|
||||
self.assertContains(
|
||||
response=response, text='successfully', status_code=200
|
||||
)
|
||||
self.assertContains(response, 'successfully', status_code=200)
|
||||
|
||||
self.assertEqual(len(self.test_document.metadata.all()), 1)
|
||||
|
||||
@@ -91,13 +94,15 @@ class DocumentMetadataTestCase(GenericDocumentViewTestCase):
|
||||
self.test_document.set_document_type(document_type=document_type_2)
|
||||
|
||||
response = self.get(
|
||||
'metadata:metadata_edit', args=(self.test_document.pk,), follow=True
|
||||
viewname='metadata:metadata_edit', kwargs={
|
||||
'pk': self.test_document.pk
|
||||
}, follow=True
|
||||
)
|
||||
|
||||
self.assertContains(response, 'Edit', status_code=200)
|
||||
self.assertContains(response=response, text='Edit', status_code=200)
|
||||
|
||||
response = self.post(
|
||||
'metadata:metadata_edit', args=(self.test_document.pk,), data={
|
||||
'metadata:metadata_edit', kwargs={'pk': self.test_document.pk},
|
||||
data={
|
||||
'form-0-id': document_metadata_2.metadata_type.pk,
|
||||
'form-0-update': True,
|
||||
'form-0-value': TEST_DOCUMENT_METADATA_VALUE_2,
|
||||
@@ -106,8 +111,9 @@ class DocumentMetadataTestCase(GenericDocumentViewTestCase):
|
||||
'form-MAX_NUM_FORMS': '',
|
||||
}, follow=True
|
||||
)
|
||||
|
||||
self.assertContains(response, 'Metadata for document', status_code=200)
|
||||
self.assertContains(
|
||||
response=response, text='Metadata for document', status_code=200
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
self.test_document.metadata.get(metadata_type=metadata_type_2).value,
|
||||
@@ -125,16 +131,19 @@ class DocumentMetadataTestCase(GenericDocumentViewTestCase):
|
||||
|
||||
# Test display of metadata removal form
|
||||
response = self.get(
|
||||
'metadata:metadata_remove', args=(self.test_document.pk,),
|
||||
viewname='metadata:metadata_remove', kwargs={
|
||||
'pk': self.test_document.pk
|
||||
}
|
||||
)
|
||||
|
||||
self.assertNotContains(
|
||||
response, text=self.metadata_type.label, status_code=200
|
||||
)
|
||||
|
||||
# Test post to metadata removal view
|
||||
response = self.post(
|
||||
'metadata:metadata_remove', args=(self.test_document.pk,), data={
|
||||
viewname='metadata:metadata_remove', kwargs={
|
||||
'pk': self.test_document.pk
|
||||
}, data={
|
||||
'form-0-id': document_metadata.metadata_type.pk,
|
||||
'form-0-update': True,
|
||||
'form-TOTAL_FORMS': '1',
|
||||
@@ -148,7 +157,7 @@ class DocumentMetadataTestCase(GenericDocumentViewTestCase):
|
||||
|
||||
def test_metadata_remove_view_with_permission(self):
|
||||
# Silence unrelated logging
|
||||
logging.getLogger('navigation.classes').setLevel(logging.CRITICAL)
|
||||
self._silence_logger(name='mayan.apps.navigation.classes')
|
||||
|
||||
document_metadata = self.test_document.metadata.create(
|
||||
metadata_type=self.metadata_type, value=''
|
||||
@@ -161,18 +170,20 @@ class DocumentMetadataTestCase(GenericDocumentViewTestCase):
|
||||
|
||||
# Test display of metadata removal form
|
||||
response = self.get(
|
||||
'metadata:metadata_remove', args=(self.test_document.pk,),
|
||||
viewname='metadata:metadata_remove', kwargs={
|
||||
'pk': self.test_document.pk
|
||||
}
|
||||
)
|
||||
|
||||
self.assertContains(
|
||||
response, text=self.metadata_type.label, status_code=200
|
||||
response=response, text=self.metadata_type.label, status_code=200
|
||||
)
|
||||
|
||||
self.assertContains(response, 'emove', status_code=200)
|
||||
self.assertContains(response=response, text='emove', status_code=200)
|
||||
|
||||
# Test post to metadata removal view
|
||||
response = self.post(
|
||||
'metadata:metadata_remove', args=(self.test_document.pk,), data={
|
||||
viewname='metadata:metadata_remove', kwargs={
|
||||
'pk': self.test_document.pk
|
||||
}, data={
|
||||
'form-0-id': document_metadata.metadata_type.pk,
|
||||
'form-0-update': True,
|
||||
'form-TOTAL_FORMS': '1',
|
||||
@@ -180,8 +191,9 @@ class DocumentMetadataTestCase(GenericDocumentViewTestCase):
|
||||
'form-MAX_NUM_FORMS': '',
|
||||
}, follow=True
|
||||
)
|
||||
|
||||
self.assertContains(response, 'Success', status_code=200)
|
||||
self.assertContains(
|
||||
response=response, text='Success', status_code=200
|
||||
)
|
||||
|
||||
self.assertEqual(len(self.test_document.metadata.all()), 0)
|
||||
|
||||
@@ -201,16 +213,15 @@ class DocumentMetadataTestCase(GenericDocumentViewTestCase):
|
||||
document_2.metadata.create(metadata_type=self.metadata_type)
|
||||
|
||||
response = self.get(
|
||||
'metadata:metadata_multiple_edit', data={
|
||||
viewname='metadata:metadata_multiple_edit', data={
|
||||
'id_list': '{},{}'.format(self.test_document.pk, document_2.pk)
|
||||
}
|
||||
)
|
||||
|
||||
self.assertContains(response, 'Edit', status_code=200)
|
||||
self.assertContains(response=response, text='Edit', status_code=200)
|
||||
|
||||
# Test post to metadata removal view
|
||||
response = self.post(
|
||||
'metadata:metadata_multiple_edit', data={
|
||||
viewname='metadata:metadata_multiple_edit', data={
|
||||
'id_list': '{},{}'.format(self.test_document.pk, document_2.pk),
|
||||
'form-0-id': document_metadata.metadata_type.pk,
|
||||
'form-0-value': TEST_METADATA_VALUE_EDITED,
|
||||
@@ -220,7 +231,6 @@ class DocumentMetadataTestCase(GenericDocumentViewTestCase):
|
||||
'form-MAX_NUM_FORMS': '',
|
||||
}, follow=True
|
||||
)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
self.assertEqual(
|
||||
@@ -245,16 +255,15 @@ class DocumentMetadataTestCase(GenericDocumentViewTestCase):
|
||||
document_2.metadata.create(metadata_type=self.metadata_type)
|
||||
|
||||
response = self.get(
|
||||
'metadata:metadata_multiple_remove', data={
|
||||
viewname='metadata:metadata_multiple_remove', data={
|
||||
'id_list': '{},{}'.format(self.test_document.pk, document_2.pk)
|
||||
}
|
||||
)
|
||||
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
||||
# Test post to metadata removal view
|
||||
response = self.post(
|
||||
'metadata:metadata_multiple_remove', data={
|
||||
viewname='metadata:metadata_multiple_remove', data={
|
||||
'id_list': '{},{}'.format(self.test_document.pk, document_2.pk),
|
||||
'form-0-id': document_metadata.metadata_type.pk,
|
||||
'form-0-update': True,
|
||||
@@ -263,7 +272,6 @@ class DocumentMetadataTestCase(GenericDocumentViewTestCase):
|
||||
'form-MAX_NUM_FORMS': '',
|
||||
}, follow=True
|
||||
)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
self.assertEqual(self.test_document.metadata.count(), 0)
|
||||
@@ -280,12 +288,11 @@ class DocumentMetadataTestCase(GenericDocumentViewTestCase):
|
||||
)
|
||||
|
||||
response = self.post(
|
||||
'metadata:metadata_multiple_add', data={
|
||||
viewname='metadata:metadata_multiple_add', data={
|
||||
'id_list': '{},{}'.format(self.test_document.pk, document_2.pk),
|
||||
'metadata_type': self.metadata_type.pk
|
||||
}, follow=True
|
||||
)
|
||||
|
||||
self.assertContains(response, 'Edit', status_code=200)
|
||||
|
||||
def test_single_document_multiple_metadata_add_view(self):
|
||||
@@ -302,7 +309,9 @@ class DocumentMetadataTestCase(GenericDocumentViewTestCase):
|
||||
)
|
||||
|
||||
self.post(
|
||||
'metadata:metadata_add', args=(self.test_document.pk,), data={
|
||||
viewname='metadata:metadata_add', kwargs={
|
||||
'pk': self.test_document.pk
|
||||
}, data={
|
||||
'metadata_type': [self.metadata_type.pk, metadata_type_2.pk],
|
||||
}
|
||||
)
|
||||
@@ -322,19 +331,14 @@ class MetadataTypeViewTestCase(DocumentTestMixin, MetadataTestsMixin, GenericVie
|
||||
auto_create_document_type = False
|
||||
auto_upload_document = False
|
||||
|
||||
def setUp(self):
|
||||
super(MetadataTypeViewTestCase, self).setUp()
|
||||
self.login_user()
|
||||
|
||||
def test_metadata_type_create_view_no_permission(self):
|
||||
response = self._request_metadata_type_create_view()
|
||||
|
||||
self.assertEqual(response.status_code, 403)
|
||||
|
||||
def test_metadata_type_create_view_with_access(self):
|
||||
self.grant_permission(permission=permission_metadata_type_create)
|
||||
response = self._request_metadata_type_create_view()
|
||||
|
||||
response = self._request_metadata_type_create_view()
|
||||
self.assertEqual(response.status_code, 302)
|
||||
|
||||
self.assertQuerysetEqual(
|
||||
@@ -351,8 +355,8 @@ class MetadataTypeViewTestCase(DocumentTestMixin, MetadataTestsMixin, GenericVie
|
||||
self._create_metadata_type()
|
||||
|
||||
response = self._request_metadata_type_delete_view()
|
||||
|
||||
self.assertEqual(response.status_code, 403)
|
||||
|
||||
self.assertQuerysetEqual(
|
||||
qs=MetadataType.objects.values('label', 'name'),
|
||||
values=[
|
||||
@@ -367,11 +371,11 @@ class MetadataTypeViewTestCase(DocumentTestMixin, MetadataTestsMixin, GenericVie
|
||||
self._create_metadata_type()
|
||||
|
||||
self.grant_access(
|
||||
permission=permission_metadata_type_delete,
|
||||
obj=self.metadata_type
|
||||
obj=self.metadata_type,
|
||||
permission=permission_metadata_type_delete
|
||||
)
|
||||
response = self._request_metadata_type_delete_view()
|
||||
|
||||
response = self._request_metadata_type_delete_view()
|
||||
self.assertEqual(response.status_code, 302)
|
||||
|
||||
self.assertEqual(MetadataType.objects.count(), 0)
|
||||
@@ -380,8 +384,8 @@ class MetadataTypeViewTestCase(DocumentTestMixin, MetadataTestsMixin, GenericVie
|
||||
self._create_metadata_type()
|
||||
|
||||
response = self._request_metadata_type_edit_view()
|
||||
|
||||
self.assertEqual(response.status_code, 403)
|
||||
|
||||
self.assertQuerysetEqual(
|
||||
qs=MetadataType.objects.values('label', 'name'),
|
||||
values=[
|
||||
@@ -396,11 +400,11 @@ class MetadataTypeViewTestCase(DocumentTestMixin, MetadataTestsMixin, GenericVie
|
||||
self._create_metadata_type()
|
||||
|
||||
self.grant_access(
|
||||
permission=permission_metadata_type_edit,
|
||||
obj=self.metadata_type
|
||||
obj=self.metadata_type,
|
||||
permission=permission_metadata_type_edit
|
||||
)
|
||||
response = self._request_metadata_type_edit_view()
|
||||
|
||||
response = self._request_metadata_type_edit_view()
|
||||
self.assertEqual(response.status_code, 302)
|
||||
|
||||
self.assertQuerysetEqual(
|
||||
@@ -425,9 +429,10 @@ class MetadataTypeViewTestCase(DocumentTestMixin, MetadataTestsMixin, GenericVie
|
||||
self._create_metadata_type()
|
||||
|
||||
self.grant_access(
|
||||
permission=permission_metadata_type_view,
|
||||
obj=self.metadata_type
|
||||
obj=self.metadata_type,
|
||||
permission=permission_metadata_type_view
|
||||
)
|
||||
|
||||
response = self._request_metadata_type_list_view()
|
||||
self.assertContains(
|
||||
response=response, text=self.metadata_type, status_code=200
|
||||
@@ -439,11 +444,9 @@ class MetadataTypeViewTestCase(DocumentTestMixin, MetadataTestsMixin, GenericVie
|
||||
self.upload_document()
|
||||
|
||||
response = self._request_metadata_type_relationship_edit_view()
|
||||
|
||||
self.assertEqual(response.status_code, 403)
|
||||
|
||||
self.test_document_type.refresh_from_db()
|
||||
|
||||
self.assertEqual(self.test_document_type.metadata.count(), 0)
|
||||
|
||||
def test_metadata_type_relationship_view_with_document_type_access(self):
|
||||
@@ -452,15 +455,14 @@ class MetadataTypeViewTestCase(DocumentTestMixin, MetadataTestsMixin, GenericVie
|
||||
self.upload_document()
|
||||
|
||||
self.grant_access(
|
||||
permission=permission_document_type_edit, obj=self.test_document_type
|
||||
obj=self.test_document_type,
|
||||
permission=permission_document_type_edit
|
||||
)
|
||||
|
||||
response = self._request_metadata_type_relationship_edit_view()
|
||||
|
||||
self.assertEqual(response.status_code, 403)
|
||||
|
||||
self.test_document_type.refresh_from_db()
|
||||
|
||||
self.assertEqual(self.test_document_type.metadata.count(), 0)
|
||||
|
||||
def test_metadata_type_relationship_view_with_metadata_type_access(self):
|
||||
@@ -469,15 +471,13 @@ class MetadataTypeViewTestCase(DocumentTestMixin, MetadataTestsMixin, GenericVie
|
||||
self.upload_document()
|
||||
|
||||
self.grant_access(
|
||||
permission=permission_metadata_type_edit, obj=self.metadata_type
|
||||
obj=self.metadata_type, permission=permission_metadata_type_edit
|
||||
)
|
||||
|
||||
response = self._request_metadata_type_relationship_edit_view()
|
||||
|
||||
self.assertEqual(response.status_code, 302)
|
||||
|
||||
self.test_document_type.refresh_from_db()
|
||||
|
||||
self.assertEqual(self.test_document_type.metadata.count(), 0)
|
||||
|
||||
def test_metadata_type_relationship_view_with_metadata_type_and_document_type_access(self):
|
||||
@@ -486,18 +486,17 @@ class MetadataTypeViewTestCase(DocumentTestMixin, MetadataTestsMixin, GenericVie
|
||||
self.upload_document()
|
||||
|
||||
self.grant_access(
|
||||
permission=permission_metadata_type_edit, obj=self.metadata_type
|
||||
obj=self.metadata_type, permission=permission_metadata_type_edit
|
||||
)
|
||||
self.grant_access(
|
||||
permission=permission_document_type_edit, obj=self.test_document_type
|
||||
obj=self.test_document_type,
|
||||
permission=permission_document_type_edit
|
||||
)
|
||||
|
||||
response = self._request_metadata_type_relationship_edit_view()
|
||||
|
||||
self.assertEqual(response.status_code, 302)
|
||||
|
||||
self.test_document_type.refresh_from_db()
|
||||
|
||||
self.assertQuerysetEqual(
|
||||
qs=self.test_document_type.metadata.values('metadata_type', 'required'),
|
||||
values=[
|
||||
|
||||
@@ -21,16 +21,15 @@ from .mixins import MetadataTypeTestMixin
|
||||
|
||||
|
||||
class DocumentUploadMetadataTestCase(MetadataTypeTestMixin, GenericDocumentViewTestCase):
|
||||
auto_upload_document = False
|
||||
|
||||
def setUp(self):
|
||||
super(DocumentUploadMetadataTestCase, self).setUp()
|
||||
self.login_user()
|
||||
self.source = WebFormSource.objects.create(
|
||||
enabled=True, label=TEST_SOURCE_LABEL,
|
||||
uncompress=TEST_SOURCE_UNCOMPRESS_N
|
||||
)
|
||||
|
||||
self.test_document.delete()
|
||||
|
||||
self.test_document_type.metadata.create(
|
||||
metadata_type=self.metadata_type, required=True
|
||||
)
|
||||
@@ -41,7 +40,7 @@ class DocumentUploadMetadataTestCase(MetadataTypeTestMixin, GenericDocumentViewT
|
||||
url.args['metadata0_value'] = TEST_METADATA_VALUE_UNICODE
|
||||
|
||||
self.grant_access(
|
||||
permission=permission_document_create, obj=self.test_document_type
|
||||
obj=self.test_document_type, permission=permission_document_create
|
||||
)
|
||||
|
||||
# Upload the test document
|
||||
@@ -53,6 +52,7 @@ class DocumentUploadMetadataTestCase(MetadataTypeTestMixin, GenericDocumentViewT
|
||||
}
|
||||
)
|
||||
self.assertEqual(response.status_code, 302)
|
||||
|
||||
self.assertEqual(Document.objects.count(), 1)
|
||||
self.assertEqual(
|
||||
Document.objects.first().metadata.first().value,
|
||||
@@ -76,6 +76,7 @@ class DocumentUploadMetadataTestCase(MetadataTypeTestMixin, GenericDocumentViewT
|
||||
}
|
||||
)
|
||||
self.assertEqual(response.status_code, 302)
|
||||
|
||||
self.assertEqual(Document.objects.count(), 1)
|
||||
self.assertEqual(
|
||||
Document.objects.first().metadata.first().value,
|
||||
@@ -93,5 +94,4 @@ class DocumentUploadMetadataTestCase(MetadataTypeTestMixin, GenericDocumentViewT
|
||||
'document_create_wizard-current_step': 0
|
||||
}
|
||||
)
|
||||
|
||||
self.assertContains(response=response, text='Step 2', status_code=200)
|
||||
|
||||
@@ -80,7 +80,7 @@ class DocumentMetadataAddView(MultipleObjectFormActionView):
|
||||
|
||||
if self.action_count == 1:
|
||||
return HttpResponseRedirect(
|
||||
reverse(
|
||||
redirect_to=reverse(
|
||||
viewname='metadata:metadata_edit', kwargs={
|
||||
'pk': queryset.first().pk
|
||||
}
|
||||
@@ -88,7 +88,7 @@ class DocumentMetadataAddView(MultipleObjectFormActionView):
|
||||
)
|
||||
elif self.action_count > 1:
|
||||
return HttpResponseRedirect(
|
||||
'%s?%s' % (
|
||||
redirect_to='%s?%s' % (
|
||||
reverse(viewname='metadata:metadata_multiple_edit'),
|
||||
urlencode(
|
||||
{
|
||||
@@ -112,9 +112,9 @@ class DocumentMetadataAddView(MultipleObjectFormActionView):
|
||||
'submit_icon_class': icon_document_metadata_add,
|
||||
'submit_label': _('Add'),
|
||||
'title': ungettext(
|
||||
'Add metadata types to document',
|
||||
'Add metadata types to documents',
|
||||
queryset.count()
|
||||
singular='Add metadata types to document',
|
||||
plural='Add metadata types to documents',
|
||||
number=queryset.count()
|
||||
)
|
||||
}
|
||||
|
||||
@@ -248,7 +248,7 @@ class DocumentMetadataEditView(MultipleObjectFormActionView):
|
||||
|
||||
if self.action_count == 1:
|
||||
return HttpResponseRedirect(
|
||||
reverse(
|
||||
redirect_to=reverse(
|
||||
viewname='metadata:metadata_edit', kwargs={
|
||||
'pk': queryset.first().pk
|
||||
}
|
||||
@@ -256,7 +256,7 @@ class DocumentMetadataEditView(MultipleObjectFormActionView):
|
||||
)
|
||||
elif self.action_count > 1:
|
||||
return HttpResponseRedirect(
|
||||
'%s?%s' % (
|
||||
redirect_to='%s?%s' % (
|
||||
reverse(viewname='metadata:metadata_multiple_edit'),
|
||||
urlencode(
|
||||
{
|
||||
@@ -472,7 +472,7 @@ class DocumentMetadataRemoveView(MultipleObjectFormActionView):
|
||||
|
||||
if self.action_count == 1:
|
||||
return HttpResponseRedirect(
|
||||
reverse(
|
||||
redirect_to=reverse(
|
||||
viewname='metadata:metadata_edit', kwargs={
|
||||
'pk': queryset.first().pk
|
||||
}
|
||||
@@ -480,7 +480,7 @@ class DocumentMetadataRemoveView(MultipleObjectFormActionView):
|
||||
)
|
||||
elif self.action_count > 1:
|
||||
return HttpResponseRedirect(
|
||||
'%s?%s' % (
|
||||
redirect_to='%s?%s' % (
|
||||
reverse(viewname='metadata:metadata_multiple_edit'),
|
||||
urlencode(
|
||||
{
|
||||
@@ -505,9 +505,9 @@ class DocumentMetadataRemoveView(MultipleObjectFormActionView):
|
||||
'submit_icon_class': icon_document_metadata_remove,
|
||||
'submit_label': _('Remove'),
|
||||
'title': ungettext(
|
||||
'Remove metadata types from the document',
|
||||
'Remove metadata types from the documents',
|
||||
queryset.count()
|
||||
singular='Remove metadata types from the document',
|
||||
plural='Remove metadata types from the documents',
|
||||
number=queryset.count()
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -29,4 +29,3 @@ def method_group_roles_remove(self, queryset, _user):
|
||||
event_role_edited.commit(
|
||||
actor=_user, action_object=self, target=role
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user