Fix document list generation for the document's type change views. Move type change event and recent document addition to the models. Add view tests for the document's type change views.

This commit is contained in:
Roberto Rosario
2015-10-20 20:03:54 -04:00
parent ebfd37ebf5
commit 9fbc8647b8
4 changed files with 171 additions and 25 deletions

View File

@@ -624,21 +624,24 @@ def document_document_type_edit(request, document_id=None, document_id_list=None
post_action_redirect = None
if document_id:
documents = [get_object_or_404(Document, pk=document_id)]
queryset = Document.objects.filter(pk=document_id)
post_action_redirect = reverse('documents:document_list_recent')
elif document_id_list:
documents = [get_object_or_404(Document, pk=document_id) for document_id in document_id_list.split(',')]
else:
queryset = Document.objects.filter(pk__in=document_id_list)
if not queryset:
messages.error(request, _('Must provide at least one document.'))
return HttpResponseRedirect(request.META.get('HTTP_REFERER', reverse(settings.LOGIN_REDIRECT_URL)))
return HttpResponseRedirect(
request.META.get('HTTP_REFERER', reverse(settings.LOGIN_REDIRECT_URL))
)
try:
Permission.check_permissions(
request.user, (permission_document_properties_edit,)
)
except PermissionDenied:
documents = AccessControlList.objects.filter_by_access(
permission_document_properties_edit, request.user, documents
queryset = AccessControlList.objects.filter_by_access(
permission_document_properties_edit, request.user, queryset
)
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', reverse(settings.LOGIN_REDIRECT_URL))))
@@ -648,15 +651,21 @@ def document_document_type_edit(request, document_id=None, document_id_list=None
form = DocumentTypeSelectForm(request.POST)
if form.is_valid():
for document in documents:
document.set_document_type(form.cleaned_data['document_type'])
event_document_type_change.commit(actor=request.user, target=document)
document.add_as_recent_document_for_user(request.user)
for instance in queryset:
instance.set_document_type(
form.cleaned_data['document_type'], _user=request.user
)
messages.success(request, _('Document type changed successfully.'))
messages.success(
request, _(
'Document type for "%s" changed successfully.'
) % instance
)
return HttpResponseRedirect(next)
else:
form = DocumentTypeSelectForm(initial={'document_type': documents[0].document_type})
form = DocumentTypeSelectForm(
initial={'document_type': queryset.first().document_type}
)
context = {
'form': form,
@@ -666,20 +675,24 @@ def document_document_type_edit(request, document_id=None, document_id_list=None
'title': ungettext(
'Change the type of the selected document.',
'Change the type of the selected documents.',
len(documents)
queryset.count()
)
}
if len(documents) == 1:
context['object'] = documents[0]
if queryset.count() == 1:
context['object'] = queryset.first()
return render_to_response('appearance/generic_form.html', context,
context_instance=RequestContext(request))
return render_to_response(
'appearance/generic_form.html', context,
context_instance=RequestContext(request)
)
def document_multiple_document_type_edit(request):
return document_document_type_edit(
request, document_id_list=request.GET.get('id_list', [])
request, document_id_list=request.GET.get(
'id_list', request.POST.get('id_list', '')
).split(',')
)