Extract context object name from the models meta options.

This commit is contained in:
Roberto Rosario
2016-03-19 01:57:30 -04:00
parent 34184e0726
commit ed8ac47240
5 changed files with 33 additions and 22 deletions

View File

@@ -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())

View File

@@ -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

View File

@@ -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(),
}

View File

@@ -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(),

View File

@@ -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(),
}