diff --git a/mayan/apps/file_metadata/views.py b/mayan/apps/file_metadata/views.py index 5a5c9bd621..7c3a6fbf10 100644 --- a/mayan/apps/file_metadata/views.py +++ b/mayan/apps/file_metadata/views.py @@ -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 diff --git a/mayan/apps/mailer/__init__.py b/mayan/apps/mailer/__init__.py index 1e8156d5fe..388c4568cc 100644 --- a/mayan/apps/mailer/__init__.py +++ b/mayan/apps/mailer/__init__.py @@ -1,5 +1,3 @@ from __future__ import unicode_literals -from .classes import * # NOQA - default_app_config = 'mayan.apps.mailer.apps.MailerApp' diff --git a/mayan/apps/mailer/apps.py b/mayan/apps/mailer/apps.py index fee2a4ec24..6a2323157a 100644 --- a/mayan/apps/mailer/apps.py +++ b/mayan/apps/mailer/apps.py @@ -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( diff --git a/mayan/apps/mailer/events.py b/mayan/apps/mailer/events.py index 881c2b214c..a55b158960 100644 --- a/mayan/apps/mailer/events.py +++ b/mayan/apps/mailer/events.py @@ -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' ) diff --git a/mayan/apps/mailer/models.py b/mayan/apps/mailer/models.py index 4104b6471b..cf37aeb94d 100644 --- a/mayan/apps/mailer/models.py +++ b/mayan/apps/mailer/models.py @@ -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. diff --git a/mayan/apps/mailer/permissions.py b/mayan/apps/mailer/permissions.py index 57cd9c6422..3d1a0fdfd6 100644 --- a/mayan/apps/mailer/permissions.py +++ b/mayan/apps/mailer/permissions.py @@ -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' ) diff --git a/mayan/apps/mailer/queues.py b/mayan/apps/mailer/queues.py index 749c3b3b84..b086590da5 100644 --- a/mayan/apps/mailer/queues.py +++ b/mayan/apps/mailer/queues.py @@ -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' ) diff --git a/mayan/apps/mailer/settings.py b/mayan/apps/mailer/settings.py index eb949686fa..ed689b60a3 100644 --- a/mayan/apps/mailer/settings.py +++ b/mayan/apps/mailer/settings.py @@ -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 }}'), diff --git a/mayan/apps/mailer/views.py b/mayan/apps/mailer/views.py index c7a3da13b8..cc09818a0f 100644 --- a/mayan/apps/mailer/views.py +++ b/mayan/apps/mailer/views.py @@ -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 { diff --git a/mayan/apps/mayan_statistics/classes.py b/mayan/apps/mayan_statistics/classes.py index 031ffde7a6..776684dd84 100644 --- a/mayan/apps/mayan_statistics/classes.py +++ b/mayan/apps/mayan_statistics/classes.py @@ -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 diff --git a/mayan/apps/mayan_statistics/permissions.py b/mayan/apps/mayan_statistics/permissions.py index 453eeeaeae..3976ebc099 100644 --- a/mayan/apps/mayan_statistics/permissions.py +++ b/mayan/apps/mayan_statistics/permissions.py @@ -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' ) diff --git a/mayan/apps/mayan_statistics/queues.py b/mayan/apps/mayan_statistics/queues.py index f7a33a07ee..29a7881032 100644 --- a/mayan/apps/mayan_statistics/queues.py +++ b/mayan/apps/mayan_statistics/queues.py @@ -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' ) diff --git a/mayan/apps/mayan_statistics/tests/test_views.py b/mayan/apps/mayan_statistics/tests/test_views.py index 56537a0aca..4eeab8a6fb 100644 --- a/mayan/apps/mayan_statistics/tests/test_views.py +++ b/mayan/apps/mayan_statistics/tests/test_views.py @@ -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) diff --git a/mayan/apps/mayan_statistics/views.py b/mayan/apps/mayan_statistics/views.py index 384b61e51f..1b82c1ea38 100644 --- a/mayan/apps/mayan_statistics/views.py +++ b/mayan/apps/mayan_statistics/views.py @@ -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']) diff --git a/mayan/apps/metadata/apps.py b/mayan/apps/metadata/apps.py index f1d68d95bd..26c8f673f9 100644 --- a/mayan/apps/metadata/apps.py +++ b/mayan/apps/metadata/apps.py @@ -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 ) diff --git a/mayan/apps/metadata/events.py b/mayan/apps/metadata/events.py index 769eb07119..73c650ee74 100644 --- a/mayan/apps/metadata/events.py +++ b/mayan/apps/metadata/events.py @@ -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' ) diff --git a/mayan/apps/metadata/handlers.py b/mayan/apps/metadata/handlers.py index f1e0c0cf65..6f1b8067dc 100644 --- a/mayan/apps/metadata/handlers.py +++ b/mayan/apps/metadata/handlers.py @@ -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 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 handler_index_document(sender, **kwargs): + task_index_document.apply_async( + kwargs=dict(document_id=kwargs['instance'].document.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 + } ) diff --git a/mayan/apps/metadata/permissions.py b/mayan/apps/metadata/permissions.py index 82d6275349..03904f03c5 100644 --- a/mayan/apps/metadata/permissions.py +++ b/mayan/apps/metadata/permissions.py @@ -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' ) diff --git a/mayan/apps/metadata/tests/mixins.py b/mayan/apps/metadata/tests/mixins.py index 86d4cc5591..1a4ae6206f 100644 --- a/mayan/apps/metadata/tests/mixins.py +++ b/mayan/apps/metadata/tests/mixins.py @@ -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' } ) diff --git a/mayan/apps/metadata/tests/test_api.py b/mayan/apps/metadata/tests/test_api.py index b6f7089c07..7b48afcae6 100644 --- a/mayan/apps/metadata/tests/test_api.py +++ b/mayan/apps/metadata/tests/test_api.py @@ -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 diff --git a/mayan/apps/metadata/tests/test_events.py b/mayan/apps/metadata/tests/test_events.py index d7e3e188b8..cfb730eb34 100644 --- a/mayan/apps/metadata/tests/test_events.py +++ b/mayan/apps/metadata/tests/test_events.py @@ -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() diff --git a/mayan/apps/metadata/tests/test_models.py b/mayan/apps/metadata/tests/test_models.py index 63b5896aba..75892e95f3 100644 --- a/mayan/apps/metadata/tests/test_models.py +++ b/mayan/apps/metadata/tests/test_models.py @@ -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( diff --git a/mayan/apps/metadata/tests/test_views.py b/mayan/apps/metadata/tests/test_views.py index 4f7eb0a6cb..d9345ed36c 100644 --- a/mayan/apps/metadata/tests/test_views.py +++ b/mayan/apps/metadata/tests/test_views.py @@ -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=[ diff --git a/mayan/apps/metadata/tests/test_wizard_steps.py b/mayan/apps/metadata/tests/test_wizard_steps.py index 44f8b176c1..c70fddb2e6 100644 --- a/mayan/apps/metadata/tests/test_wizard_steps.py +++ b/mayan/apps/metadata/tests/test_wizard_steps.py @@ -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) diff --git a/mayan/apps/metadata/views.py b/mayan/apps/metadata/views.py index a704c6f074..f50b783d1f 100644 --- a/mayan/apps/metadata/views.py +++ b/mayan/apps/metadata/views.py @@ -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() ) } diff --git a/mayan/apps/permissions/methods.py b/mayan/apps/permissions/methods.py index 6e9204c5a9..97b494f8d2 100644 --- a/mayan/apps/permissions/methods.py +++ b/mayan/apps/permissions/methods.py @@ -29,4 +29,3 @@ def method_group_roles_remove(self, queryset, _user): event_role_edited.commit( actor=_user, action_object=self, target=role ) -