diff --git a/HISTORY.rst b/HISTORY.rst index 7258695062..9aec17a6aa 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -84,6 +84,7 @@ module. * Update group members view permission. The group edit and user edit permission are now required. +* Add keyword arguments to messages uses. 3.1.11 (2019-04-XX) =================== diff --git a/docs/releases/3.2.rst b/docs/releases/3.2.rst index b1e50a6b17..7e09887e66 100644 --- a/docs/releases/3.2.rst +++ b/docs/releases/3.2.rst @@ -116,6 +116,7 @@ Other changes module. * Update group members view permission. The group edit and user edit permission are now required. +* Add keyword arguments to messages uses. Removals -------- diff --git a/mayan/apps/cabinets/views.py b/mayan/apps/cabinets/views.py index 07b844bad2..79606bcc45 100644 --- a/mayan/apps/cabinets/views.py +++ b/mayan/apps/cabinets/views.py @@ -291,24 +291,24 @@ class DocumentAddToCabinetView(MultipleObjectFormActionView): ) if cabinet in cabinet_membership: messages.warning( - self.request, _( + message=_( 'Document: %(document)s is already in ' 'cabinet: %(cabinet)s.' ) % { 'document': instance, 'cabinet': cabinet - } + }, request=self.request ) else: cabinet.add_document( document=instance, user=self.request.user ) messages.success( - self.request, _( + message=_( 'Document: %(document)s added to cabinet: ' '%(cabinet)s successfully.' ) % { 'document': instance, 'cabinet': cabinet - } + }, request=self.request ) @@ -380,22 +380,22 @@ class DocumentRemoveFromCabinetView(MultipleObjectFormActionView): if cabinet not in cabinet_membership: messages.warning( - self.request, _( + message=_( 'Document: %(document)s is not in cabinet: ' '%(cabinet)s.' ) % { 'document': instance, 'cabinet': cabinet - } + }, request=self.request ) else: cabinet.remove_document( document=instance, user=self.request.user ) messages.success( - self.request, _( + message=_( 'Document: %(document)s removed from cabinet: ' '%(cabinet)s.' ) % { 'document': instance, 'cabinet': cabinet - } + }, request=self.request ) diff --git a/mayan/apps/checkouts/views.py b/mayan/apps/checkouts/views.py index b68b21e3a1..6d70406685 100644 --- a/mayan/apps/checkouts/views.py +++ b/mayan/apps/checkouts/views.py @@ -46,11 +46,15 @@ class CheckoutDocumentView(SingleObjectCreateView): instance.document = self.document instance.save() except DocumentAlreadyCheckedOut: - messages.error(self.request, _('Document already checked out.')) + messages.error( + message=_('Document already checked out.'), + request=self.request + ) else: messages.success( - self.request, - _('Document "%s" checked out successfully.') % self.document + message=_( + 'Document "%s" checked out successfully.' + ) % self.document, request=self.request ) return HttpResponseRedirect(self.get_success_url()) @@ -169,10 +173,12 @@ class DocumentCheckinView(ConfirmView): document.check_in(user=self.request.user) except DocumentNotCheckedOut: messages.error( - self.request, _('Document has not been checked out.') + message=_('Document has not been checked out.'), + request=self.request ) else: messages.success( - self.request, - _('Document "%s" checked in successfully.') % document + message=_( + 'Document "%s" checked in successfully.' + ) % document, request=self.request ) diff --git a/mayan/apps/common/views.py b/mayan/apps/common/views.py index e65c39a336..2f1b24f5f4 100644 --- a/mayan/apps/common/views.py +++ b/mayan/apps/common/views.py @@ -190,7 +190,8 @@ class ObjectErrorLogEntryListClearView(ConfirmView): def view_action(self): self.get_object().error_logs.all().delete() messages.success( - self.request, _('Object error log cleared successfully') + message_('Object error log cleared successfully'), + request=self.request ) @@ -308,7 +309,9 @@ def multi_object_action_view(request): ] if not action: - messages.error(request, _('No action selected.')) + messages.error( + message=_('No action selected.'), request=request + ) return HttpResponseRedirect( request.META.get( 'HTTP_REFERER', resolve_url(settings.LOGIN_REDIRECT_URL) @@ -316,7 +319,10 @@ def multi_object_action_view(request): ) if not id_list and not items_property_list: - messages.error(request, _('Must select at least one item.')) + messages.error( + message=_('Must select at least one item.'), + request=request + ) return HttpResponseRedirect( request.META.get( 'HTTP_REFERER', resolve_url(settings.LOGIN_REDIRECT_URL) diff --git a/mayan/apps/django_gpg/views.py b/mayan/apps/django_gpg/views.py index 54842cd3b1..10106203bb 100644 --- a/mayan/apps/django_gpg/views.py +++ b/mayan/apps/django_gpg/views.py @@ -77,17 +77,18 @@ class KeyReceive(ConfirmView): Key.objects.receive_key(key_id=self.kwargs['key_id']) except Exception as exception: messages.error( - self.request, - _('Unable to import key: %(key_id)s; %(error)s') % { + message=_( + 'Unable to import key: %(key_id)s; %(error)s' + ) % { 'key_id': self.kwargs['key_id'], 'error': exception, - } + }, request=self.request ) else: messages.success( - self.request, _('Successfully received key: %(key_id)s') % { + message=_('Successfully received key: %(key_id)s') % { 'key_id': self.kwargs['key_id'], - } + }, request=self.request ) diff --git a/mayan/apps/document_indexing/views.py b/mayan/apps/document_indexing/views.py index 7df03a17e6..45a3af3336 100644 --- a/mayan/apps/document_indexing/views.py +++ b/mayan/apps/document_indexing/views.py @@ -380,13 +380,13 @@ class IndexesRebuildView(FormView): count += 1 messages.success( - self.request, ungettext( + message=ungettext( singular='%(count)d index queued for rebuild.', plural='%(count)d indexes queued for rebuild.', number=count ) % { 'count': count, - } + }, request=self.request ) return super(IndexesRebuildView, self).form_valid(form=form) diff --git a/mayan/apps/document_parsing/views.py b/mayan/apps/document_parsing/views.py index 10636ab59b..af96ded2cc 100644 --- a/mayan/apps/document_parsing/views.py +++ b/mayan/apps/document_parsing/views.py @@ -170,13 +170,13 @@ class DocumentTypeSubmitView(FormView): count += 1 messages.success( - self.request, _( + message=_( '%(count)d documents of type "%(document_type)s" added to the ' 'parsing queue.' ) % { 'count': count, 'document_type': form.cleaned_data['document_type'] - } + }, request=self.request ) return HttpResponseRedirect(self.get_success_url()) diff --git a/mayan/apps/document_signatures/views.py b/mayan/apps/document_signatures/views.py index c553c8a86e..02f53f24f6 100644 --- a/mayan/apps/document_signatures/views.py +++ b/mayan/apps/document_signatures/views.py @@ -65,7 +65,8 @@ class DocumentVersionDetachedSignatureCreateView(FormView): ) except NeedPassphrase: messages.error( - self.request, _('Passphrase is needed to unlock this key.') + message=_('Passphrase is needed to unlock this key.'), + request=self.request ) return HttpResponseRedirect( reverse( @@ -75,7 +76,8 @@ class DocumentVersionDetachedSignatureCreateView(FormView): ) except PassphraseError: messages.error( - self.request, _('Passphrase is incorrect.') + message=_('Passphrase is incorrect.'), + request=self.request ) return HttpResponseRedirect( reverse( @@ -96,7 +98,8 @@ class DocumentVersionDetachedSignatureCreateView(FormView): temporary_file_object.close() messages.success( - self.request, _('Document version signed successfully.') + message=_('Document version signed successfully.'), + request=self.request ) return super( @@ -152,7 +155,8 @@ class DocumentVersionEmbeddedSignatureCreateView(FormView): ) except NeedPassphrase: messages.error( - self.request, _('Passphrase is needed to unlock this key.') + message=_('Passphrase is needed to unlock this key.'), + request=self.request ) return HttpResponseRedirect( reverse( @@ -162,7 +166,8 @@ class DocumentVersionEmbeddedSignatureCreateView(FormView): ) except PassphraseError: messages.error( - self.request, _('Passphrase is incorrect.') + message=_('Passphrase is incorrect.'), + request=self.request ) return HttpResponseRedirect( reverse( @@ -182,7 +187,8 @@ class DocumentVersionEmbeddedSignatureCreateView(FormView): temporary_file_object.close() messages.success( - self.request, _('Document version signed successfully.') + message=_('Document version signed successfully.'), + request=self.request ) return HttpResponseRedirect( @@ -373,5 +379,6 @@ class AllDocumentSignatureVerifyView(ConfirmView): def view_action(self): task_verify_missing_embedded_signature.delay() messages.success( - self.request, _('Signature verification queued successfully.') + message=_('Signature verification queued successfully.'), + request=self.request ) diff --git a/mayan/apps/events/views.py b/mayan/apps/events/views.py index 27b86b50fe..47b448892c 100644 --- a/mayan/apps/events/views.py +++ b/mayan/apps/events/views.py @@ -65,12 +65,14 @@ class EventTypeSubscriptionListView(FormView): instance.save() except Exception as exception: messages.error( - self.request, - _('Error updating event subscription; %s') % exception + message=_( + 'Error updating event subscription; %s' + ) % exception, request=self.request ) else: messages.success( - self.request, _('Event subscriptions updated successfully') + message=_('Event subscriptions updated successfully'), + request=self.request ) return super( @@ -208,12 +210,15 @@ class ObjectEventTypeSubscriptionListView(FormView): instance.save() except Exception as exception: messages.error( - self.request, - _('Error updating object event subscription; %s') % exception + message=_( + 'Error updating object event subscription; %s' + ) % exception, request=self.request ) else: messages.success( - self.request, _('Object event subscriptions updated successfully') + message=_( + 'Object event subscriptions updated successfully' + ), request=self.request ) return super( diff --git a/mayan/apps/linking/views.py b/mayan/apps/linking/views.py index a07128d90a..5da4765127 100644 --- a/mayan/apps/linking/views.py +++ b/mayan/apps/linking/views.py @@ -68,7 +68,8 @@ class ResolvedSmartLinkView(DocumentListView): pass else: messages.error( - self.request, _('Smart link query error: %s' % exception) + message=_('Smart link query error: %s' % exception), + request=self.request ) return queryset diff --git a/mayan/apps/mayan_statistics/views.py b/mayan/apps/mayan_statistics/views.py index 1f8b3eae28..4e10c06fda 100644 --- a/mayan/apps/mayan_statistics/views.py +++ b/mayan/apps/mayan_statistics/views.py @@ -94,7 +94,7 @@ class StatisticQueueView(ConfirmView): def view_action(self): task_execute_statistic.delay(slug=self.get_object().slug) messages.success( - self.request, _( + message=_( 'Statistic "%s" queued successfully for update.' - ) % self.get_object().label + ) % self.get_object().label, request=self.request ) diff --git a/mayan/apps/metadata/views.py b/mayan/apps/metadata/views.py index e74db2a23b..b33f2c7b5c 100644 --- a/mayan/apps/metadata/views.py +++ b/mayan/apps/metadata/views.py @@ -65,7 +65,9 @@ class DocumentMetadataAddView(MultipleObjectFormActionView): if len(set([document.document_type.pk for document in queryset])) > 1: messages.error( - request, _('Selected documents must be of the same type.') + message=_( + 'Selected documents must be of the same type.' + ), request=request ) return HttpResponseRedirect(self.previous_url) @@ -169,8 +171,7 @@ class DocumentMetadataAddView(MultipleObjectFormActionView): created = True except Exception as exception: messages.error( - self.request, - _( + message=_( 'Error adding metadata type ' '"%(metadata_type)s" to document: ' '%(document)s; %(exception)s' @@ -180,29 +181,28 @@ class DocumentMetadataAddView(MultipleObjectFormActionView): 'exception': ', '.join( getattr(exception, 'messages', exception) ) - } + }, request=self.request ) else: if created: messages.success( - self.request, - _( + message=_( 'Metadata type: %(metadata_type)s ' 'successfully added to document %(document)s.' ) % { 'metadata_type': metadata_type, 'document': instance - } + }, request=self.request ) else: messages.warning( - self.request, _( + message=_( 'Metadata type: %(metadata_type)s already ' 'present in document %(document)s.' ) % { 'metadata_type': metadata_type, 'document': instance - } + }, request=self.request ) @@ -229,7 +229,9 @@ class DocumentMetadataEditView(MultipleObjectFormActionView): if len(set([document.document_type.pk for document in queryset])) > 1: messages.error( - request, _('Selected documents must be of the same type.') + message=_( + 'Selected documents must be of the same type.' + ), request=request ) return HttpResponseRedirect(self.previous_url) @@ -368,20 +370,19 @@ class DocumentMetadataEditView(MultipleObjectFormActionView): exception_message = force_text(error) messages.error( - self.request, _( + message=_( 'Error editing metadata for document: ' '%(document)s; %(exception)s.' ) % { 'document': instance, 'exception': exception_message - } + }, request=self.request ) else: messages.success( - self.request, - _( + message=_( 'Metadata for document %s edited successfully.' - ) % instance + ) % instance, request=self.request ) @@ -447,7 +448,9 @@ class DocumentMetadataRemoveView(MultipleObjectFormActionView): if len(set([document.document_type.pk for document in queryset])) > 1: messages.error( - request, _('Selected documents must be of the same type.') + message=_( + 'Selected documents must be of the same type.' + ), request=request ) return HttpResponseRedirect(self.previous_url) @@ -547,24 +550,22 @@ class DocumentMetadataRemoveView(MultipleObjectFormActionView): ) document_metadata.delete(_user=self.request.user) messages.success( - self.request, - _( + message=_( 'Successfully remove metadata type "%(metadata_type)s" from document: %(document)s.' ) % { 'metadata_type': metadata_type, 'document': instance - } + }, request=self.request ) except Exception as exception: messages.error( - self.request, - _( + message=_( 'Error removing metadata type "%(metadata_type)s" from document: %(document)s; %(exception)s' ) % { 'metadata_type': metadata_type, 'document': instance, 'exception': ', '.join(exception.messages) - } + }, request=self.request ) @@ -657,12 +658,14 @@ class SetupDocumentTypeMetadataTypes(FormView): instance.save() except Exception as exception: messages.error( - self.request, - _('Error updating relationship; %s') % exception + message=_( + 'Error updating relationship; %s' + ) % exception, request=self.request ) else: messages.success( - self.request, _('Relationships updated successfully') + message=_('Relationships updated successfully'), + request=self.request ) return super( diff --git a/mayan/apps/ocr/views.py b/mayan/apps/ocr/views.py index 6d8f5d6aff..f1bba6b2bb 100644 --- a/mayan/apps/ocr/views.py +++ b/mayan/apps/ocr/views.py @@ -103,13 +103,13 @@ class DocumentTypeSubmitView(FormView): count += 1 messages.success( - self.request, _( + message=_( '%(count)d documents of type "%(document_type)s" added to the ' 'OCR queue.' ) % { 'count': count, 'document_type': form.cleaned_data['document_type'] - } + }, request=self.request ) return HttpResponseRedirect(self.get_success_url()) diff --git a/mayan/apps/smart_settings/views.py b/mayan/apps/smart_settings/views.py index 5835182ee1..233c64a175 100644 --- a/mayan/apps/smart_settings/views.py +++ b/mayan/apps/smart_settings/views.py @@ -57,7 +57,8 @@ class SettingEditView(FormView): self.get_object().value = form.cleaned_data['value'] Setting.save_configuration() messages.success( - self.request, _('Setting updated successfully.') + message=_('Setting updated successfully.'), + request=self.request ) return super(SettingEditView, self).form_valid(form=form) diff --git a/mayan/apps/sources/views.py b/mayan/apps/sources/views.py index f755866491..2624a6ed09 100644 --- a/mayan/apps/sources/views.py +++ b/mayan/apps/sources/views.py @@ -122,11 +122,10 @@ class UploadBaseView(MultiFormView): if not InteractiveSource.objects.filter(enabled=True).exists(): messages.error( - request, - _( + message=_( 'No interactive document sources have been defined or ' 'none have been enabled, create one before proceeding.' - ) + ), request=request ) return HttpResponseRedirect(reverse('sources:setup_source_list')) @@ -142,7 +141,7 @@ class UploadBaseView(MultiFormView): try: staging_filelist = list(self.source.get_files()) except Exception as exception: - messages.error(self.request, exception) + messages.error(message=exception, request=self.request) staging_filelist = [] finally: subtemplates_list = [ @@ -240,7 +239,7 @@ class UploadInteractiveView(UploadBaseView): forms['source_form'].cleaned_data ) except SourceException as exception: - messages.error(self.request, exception) + messages.error(message=exception, request=self.request) else: shared_uploaded_file = SharedUploadedFile.objects.create( file=uploaded_file.file @@ -254,7 +253,7 @@ class UploadInteractiveView(UploadBaseView): try: self.source.clean_up_upload_file(uploaded_file) except Exception as exception: - messages.error(self.request, exception) + messages.error(message=exception, request=self.request) querystring = furl() querystring.args.update(self.request.GET) @@ -290,11 +289,10 @@ class UploadInteractiveView(UploadBaseView): raise type(exception)(message) else: messages.success( - self.request, - _( + message=_( 'New document queued for upload and will be available ' 'shortly.' - ) + ), request=self.request ) return HttpResponseRedirect( @@ -376,10 +374,9 @@ class UploadInteractiveVersionView(UploadBaseView): # TODO: Try to remove this new version block check from here if NewVersionBlock.objects.is_blocked(self.document): messages.error( - self.request, - _( + message=_( 'Document "%s" is blocked from uploading new versions.' - ) % self.document + ) % self.document, request=self.request ) return HttpResponseRedirect( reverse( @@ -404,7 +401,7 @@ class UploadInteractiveVersionView(UploadBaseView): forms['source_form'].cleaned_data ) except SourceException as exception: - messages.error(self.request, exception) + messages.error(message=exception, request=self.request) else: shared_uploaded_file = SharedUploadedFile.objects.create( file=uploaded_file.file @@ -413,7 +410,7 @@ class UploadInteractiveVersionView(UploadBaseView): try: self.source.clean_up_upload_file(uploaded_file) except Exception as exception: - messages.error(self.request, exception) + messages.error(message=exception, request=self.request) if not self.request.user.is_anonymous: user_id = self.request.user.pk @@ -428,11 +425,10 @@ class UploadInteractiveVersionView(UploadBaseView): )) messages.success( - self.request, - _( + message=_( 'New document version queued for upload and will be ' 'available shortly.' - ) + ), request=self.request ) return HttpResponseRedirect( @@ -532,7 +528,9 @@ class SetupSourceCheckView(ConfirmView): } ) - messages.success(self.request, _('Source check queued.')) + messages.success( + message=_('Source check queued.'), request=self.request + ) class SetupSourceCreateView(SingleObjectCreateView): diff --git a/mayan/apps/tags/views.py b/mayan/apps/tags/views.py index cc545f9a46..96e3fdfae5 100644 --- a/mayan/apps/tags/views.py +++ b/mayan/apps/tags/views.py @@ -100,23 +100,22 @@ class TagAttachActionView(MultipleObjectFormActionView): if tag in attached_tags: messages.warning( - self.request, _( + message=_( 'Document "%(document)s" is already tagged as ' '"%(tag)s"' ) % { 'document': instance, 'tag': tag - } + }, request=self.request ) else: tag.attach_to(document=instance, user=self.request.user) messages.success( - self.request, - _( + message=_( 'Tag "%(tag)s" attached successfully to document ' '"%(document)s".' ) % { 'document': instance, 'tag': tag - } + }, request=self.request ) @@ -168,13 +167,15 @@ class TagDeleteActionView(MultipleObjectConfirmActionView): try: instance.delete() messages.success( - self.request, _('Tag "%s" deleted successfully.') % instance + message=_( + 'Tag "%s" deleted successfully.' + ) % instance, request=self.request ) except Exception as exception: messages.error( - self.request, _('Error deleting tag "%(tag)s": %(error)s') % { + message=_('Error deleting tag "%(tag)s": %(error)s') % { 'tag': instance, 'error': exception - } + }, request=self.request ) @@ -343,20 +344,19 @@ class TagRemoveActionView(MultipleObjectFormActionView): if tag not in attached_tags: messages.warning( - self.request, _( + message=_( 'Document "%(document)s" wasn\'t tagged as "%(tag)s' ) % { 'document': instance, 'tag': tag - } + }, request=self.request ) else: tag.remove_from(document=instance, user=self.request.user) messages.success( - self.request, - _( + message=_( 'Tag "%(tag)s" removed successfully from document ' '"%(document)s".' ) % { 'document': instance, 'tag': tag - } + }, request=self.request ) diff --git a/mayan/apps/task_manager/views.py b/mayan/apps/task_manager/views.py index 05a83a35f7..cc501da70b 100644 --- a/mayan/apps/task_manager/views.py +++ b/mayan/apps/task_manager/views.py @@ -38,8 +38,9 @@ class QueueActiveTaskListView(SingleObjectListView): return self.get_task_list() except Exception as exception: messages.error( - self.request, - _('Unable to retrieve task list; %s') % exception + message=_( + 'Unable to retrieve task list; %s' + ) % exception, request=self.request ) return () diff --git a/mayan/apps/user_management/views.py b/mayan/apps/user_management/views.py index e0a33343c2..41ba798109 100644 --- a/mayan/apps/user_management/views.py +++ b/mayan/apps/user_management/views.py @@ -154,7 +154,8 @@ class UserCreateView(SingleObjectCreateView): user.set_unusable_password() user.save() messages.success( - self.request, _('User "%s" created successfully.') % user + message=_('User "%s" created successfully.') % user, + request=self.request ) return HttpResponseRedirect( reverse('user_management:user_set_password', args=(user.pk,)) @@ -196,24 +197,24 @@ class UserDeleteView(MultipleObjectConfirmActionView): try: if instance.is_superuser or instance.is_staff: messages.error( - self.request, - _( + message=_( 'Super user and staff user deleting is not ' 'allowed, use the admin interface for these cases.' - ) + ), request=self.request ) else: instance.delete() messages.success( - self.request, _( + message=_( 'User "%s" deleted successfully.' - ) % instance + ) % instance, request=self.request ) except Exception as exception: messages.error( - self.request, _( + message=_( 'Error deleting user "%(user)s": %(error)s' - ) % {'user': instance, 'error': exception} + ) % {'user': instance, 'error': exception}, + request=self.request ) @@ -361,26 +362,25 @@ class UserSetPasswordView(MultipleObjectFormActionView): try: if instance.is_superuser or instance.is_staff: messages.error( - self.request, - _( + message=_( 'Super user and staff user password ' 'reseting is not allowed, use the admin ' 'interface for these cases.' - ) + ), request=self.request ) else: instance.set_password(form.cleaned_data['new_password1']) instance.save() messages.success( - self.request, _( + message=_( 'Successful password reset for user: %s.' - ) % instance + ) % instance, request=self.request ) except Exception as exception: messages.error( - self.request, _( + message=_( 'Error reseting password for user "%(user)s": %(error)s' ) % { 'user': instance, 'error': exception - } + }, request=self.request )