diff --git a/mayan/apps/common/generics.py b/mayan/apps/common/generics.py index d46dc87fc2..47f0c63ea2 100644 --- a/mayan/apps/common/generics.py +++ b/mayan/apps/common/generics.py @@ -257,7 +257,7 @@ class SimpleView(ViewPermissionCheckMixin, ExtraContextMixin, TemplateView): pass -class SingleObjectCreateView(ViewPermissionCheckMixin, ExtraContextMixin, RedirectionMixin, CreateView): +class SingleObjectCreateView(ObjectNameMixin, ViewPermissionCheckMixin, ExtraContextMixin, RedirectionMixin, CreateView): template_name = 'appearance/generic_form.html' def form_valid(self, form): @@ -282,7 +282,7 @@ class SingleObjectCreateView(ViewPermissionCheckMixin, ExtraContextMixin, Redire messages.error( self.request, _('%(object)s not created, error: %(error)s') % { - 'object': context.get('object_name', _('Object')), + 'object': self.get_object_name(), 'error': exception } ) @@ -293,13 +293,13 @@ class SingleObjectCreateView(ViewPermissionCheckMixin, ExtraContextMixin, Redire self.request, _( '%s created successfully.' - ) % context.get('object_name', _('Object')) + ) % self.get_object_name() ) return HttpResponseRedirect(self.get_success_url()) -class SingleObjectDeleteView(DeleteExtraDataMixin, ViewPermissionCheckMixin, ObjectPermissionCheckMixin, ExtraContextMixin, RedirectionMixin, DeleteView): +class SingleObjectDeleteView(ObjectNameMixin, DeleteExtraDataMixin, ViewPermissionCheckMixin, ObjectPermissionCheckMixin, ExtraContextMixin, RedirectionMixin, DeleteView): template_name = 'appearance/generic_confirm.html' def get_context_data(self, **kwargs): @@ -310,6 +310,7 @@ class SingleObjectDeleteView(DeleteExtraDataMixin, ViewPermissionCheckMixin, Obj def delete(self, request, *args, **kwargs): self.object = self.get_object() context = self.get_context_data() + object_name = self.get_object_name(context=context) try: result = super(SingleObjectDeleteView, self).delete(request, *args, **kwargs) @@ -317,7 +318,7 @@ class SingleObjectDeleteView(DeleteExtraDataMixin, ViewPermissionCheckMixin, Obj messages.error( self.request, _('%(object)s not deleted, error: %(error)s.') % { - 'object': context.get('object_name', _('Object')), + 'object': object_name, 'error': exception } ) @@ -328,7 +329,7 @@ class SingleObjectDeleteView(DeleteExtraDataMixin, ViewPermissionCheckMixin, Obj self.request, _( '%s deleted successfully.' - ) % context.get('object_name', _('Object')) + ) % object_name ) return result @@ -343,7 +344,7 @@ class SingleObjectDetailView(ViewPermissionCheckMixin, ObjectPermissionCheckMixi return context -class SingleObjectEditView(ViewPermissionCheckMixin, ObjectPermissionCheckMixin, ExtraContextMixin, RedirectionMixin, UpdateView): +class SingleObjectEditView(ObjectNameMixin, ViewPermissionCheckMixin, ObjectPermissionCheckMixin, ExtraContextMixin, RedirectionMixin, UpdateView): template_name = 'appearance/generic_form.html' def form_valid(self, form): @@ -361,6 +362,7 @@ class SingleObjectEditView(ViewPermissionCheckMixin, ObjectPermissionCheckMixin, save_extra_data = {} context = self.get_context_data() + object_name = self.get_object_name(context=context) try: self.object.save(**save_extra_data) @@ -368,7 +370,7 @@ class SingleObjectEditView(ViewPermissionCheckMixin, ObjectPermissionCheckMixin, messages.error( self.request, _('%(object)s not updated, error: %(error)s.') % { - 'object': context.get('object_name', _('Object')), + 'object': object_name, 'error': exception } ) @@ -379,7 +381,7 @@ class SingleObjectEditView(ViewPermissionCheckMixin, ObjectPermissionCheckMixin, self.request, _( '%s updated successfully.' - ) % context.get('object_name', _('Object')) + ) % object_name ) return HttpResponseRedirect(self.get_success_url()) diff --git a/mayan/apps/common/mixins.py b/mayan/apps/common/mixins.py index 535a81c660..3d628078b6 100644 --- a/mayan/apps/common/mixins.py +++ b/mayan/apps/common/mixins.py @@ -6,14 +6,15 @@ from django.contrib import messages from django.core.exceptions import PermissionDenied from django.core.urlresolvers import reverse from django.http import HttpResponseRedirect -from django.utils.translation import ungettext +from django.utils.translation import ungettext, ugettext_lazy as _ from permissions import Permission __all__ = ( 'DeleteExtraDataMixin', 'ExtraContextMixin', - 'ObjectListPermissionFilterMixin', 'ObjectPermissionCheckMixin', - 'RedirectionMixin', 'ViewPermissionCheckMixin' + 'ObjectListPermissionFilterMixin', 'ObjectNameMixin', + 'ObjectPermissionCheckMixin', 'RedirectionMixin', + 'ViewPermissionCheckMixin' ) @@ -110,6 +111,22 @@ class ObjectListPermissionFilterMixin(object): return queryset +class ObjectNameMixin(object): + def get_object_name(self, context=None): + if not context: + context = self.get_context_data() + + object_name = context.get('object_name') + + if not object_name: + try: + object_name = self.object._meta.verbose_name + except AttributeError: + object_name = _('Object') + + return object_name + + class ObjectPermissionCheckMixin(object): object_permission = None diff --git a/mayan/apps/folders/views.py b/mayan/apps/folders/views.py index 5cf5c97330..ffde47a614 100644 --- a/mayan/apps/folders/views.py +++ b/mayan/apps/folders/views.py @@ -39,7 +39,6 @@ class FolderCreateView(SingleObjectCreateView): def get_extra_context(self): return { - 'object_name': _('Folder'), 'title': _('Create folder'), } @@ -52,7 +51,6 @@ class FolderDeleteView(SingleObjectDeleteView): def get_extra_context(self): return { 'object': self.get_object(), - 'object_name': _('Folder'), 'title': _('Delete the folder: %s?') % self.get_object(), } @@ -92,7 +90,6 @@ class FolderEditView(SingleObjectEditView): def get_extra_context(self): return { 'object': self.get_object(), - 'object_name': _('Folder'), 'title': _('Edit folder: %s') % self.get_object(), } diff --git a/mayan/apps/linking/views.py b/mayan/apps/linking/views.py index f67a71d0b1..c7e03b0482 100644 --- a/mayan/apps/linking/views.py +++ b/mayan/apps/linking/views.py @@ -113,6 +113,7 @@ class SetupSmartLinkDocumentTypesView(AssignRemoveView): return get_object_or_404(SmartLink, pk=self.kwargs['pk']) def left_list(self): + # TODO: filter document type list by user ACL return AssignRemoveView.generate_choices( DocumentType.objects.exclude( pk__in=self.get_object().document_types.all() @@ -123,6 +124,7 @@ class SetupSmartLinkDocumentTypesView(AssignRemoveView): self.get_object().document_types.remove(item) def right_list(self): + # TODO: filter document type list by user ACL return AssignRemoveView.generate_choices( self.get_object().document_types.all() ) @@ -230,7 +232,6 @@ class SmartLinkConditionListView(SingleObjectListView): class SmartLinkConditionCreateView(SingleObjectCreateView): form_class = SmartLinkConditionForm - object_name = _('SmartLink condition') def dispatch(self, request, *args, **kwargs): try: @@ -252,7 +253,6 @@ class SmartLinkConditionCreateView(SingleObjectCreateView): 'Add new conditions to smart link: "%s"' ) % self.get_smart_link(), 'object': self.get_smart_link(), - 'object_name': _('Smart link condition'), } def get_instance_extra_data(self): @@ -296,7 +296,6 @@ class SmartLinkConditionEditView(SingleObjectEditView): 'condition': self.get_object(), 'navigation_object_list': ('object', 'condition'), 'object': self.get_object().smart_link, - 'object_name': _('Smart link condition'), 'title': _('Edit smart link condition'), } @@ -331,7 +330,6 @@ class SmartLinkConditionDeleteView(SingleObjectDeleteView): 'condition': self.get_object(), 'navigation_object_list': ('object', 'condition'), 'object': self.get_object().smart_link, - 'object_name': _('Smart link condition'), 'title': _( 'Delete smart link condition: "%s"?' ) % self.get_object(), diff --git a/mayan/apps/motd/views.py b/mayan/apps/motd/views.py index c7af38a035..8d1c391e7d 100644 --- a/mayan/apps/motd/views.py +++ b/mayan/apps/motd/views.py @@ -26,7 +26,6 @@ class MessageCreateView(SingleObjectCreateView): def get_extra_context(self): return { - 'object_name': _('Message'), 'title': _('Create message'), } @@ -40,7 +39,6 @@ class MessageDeleteView(SingleObjectDeleteView): return { 'message': None, 'object': self.get_object(), - 'object_name': _('Message'), 'title': _('Delete the message: %s?') % self.get_object(), } @@ -54,7 +52,6 @@ class MessageEditView(SingleObjectEditView): def get_extra_context(self): return { 'object': self.get_object(), - 'object_name': _('Message'), 'title': _('Edit message: %s') % self.get_object(), }