Extract context object name from the models meta options.
This commit is contained in:
@@ -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())
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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(),
|
||||
}
|
||||
|
||||
|
||||
@@ -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(),
|
||||
|
||||
@@ -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(),
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user