Convert the document version revert view to CBV. Add document version revert view tests.

This commit is contained in:
Roberto Rosario
2016-03-21 02:37:39 -04:00
parent c07f5a7820
commit 37d6070cab
3 changed files with 77 additions and 33 deletions

View File

@@ -548,6 +548,35 @@ class DocumentVersionListView(SingleObjectListView):
return self.get_document().versions.order_by('-timestamp')
class DocumentVersionRevertView(ConfirmView):
object_permission = permission_document_version_revert
object_permission_related = 'document'
def get_extra_context(self):
return {
'message': _(
'All later version after this one will be deleted too.'
),
'object': self.get_object().document,
'title': _('Revert to this version?'),
}
def get_object(self):
return get_object_or_404(DocumentVersion, pk=self.kwargs['pk'])
def view_action(self):
try:
self.get_object().revert(_user=self.request.user)
messages.success(
self.request, _('Document version reverted successfully')
)
except Exception as exception:
messages.error(
self.request,
_('Error reverting document version; %s') % exception
)
class DocumentView(SingleObjectDetailView):
form_class = DocumentPropertiesForm
model = Document
@@ -1190,30 +1219,3 @@ def document_type_filename_create(request, document_type_id):
'navigation_object_list': ('document_type',),
'title': _('Create quick label for document type: %s') % document_type,
}, context_instance=RequestContext(request))
def document_version_revert(request, document_version_pk):
document_version = get_object_or_404(DocumentVersion, pk=document_version_pk)
try:
Permission.check_permissions(request.user, (permission_document_version_revert,))
except PermissionDenied:
AccessControlList.objects.check_access(permission_document_version_revert, request.user, document_version.document)
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', reverse(settings.LOGIN_REDIRECT_URL))))
if request.method == 'POST':
try:
document_version.revert(_user=request.user)
messages.success(request, _('Document version reverted successfully'))
except Exception as exception:
messages.error(request, _('Error reverting document version; %s') % exception)
return HttpResponseRedirect(previous)
return render_to_response('appearance/generic_confirm.html', {
'previous': previous,
'object': document_version.document,
'title': _('Revert to this version?'),
'message': _('All later version after this one will be deleted too.'),
}, context_instance=RequestContext(request))