def download(request, object_id): """ Renders the resource download/purchase view including license selection, etc. """ if not request.user.is_active: return HttpResponseForbidden() # here we are only interested in licenses (or their names) of the specified # resource that allow the current user a download/purchase resource = get_object_or_404(resourceInfoType_model, pk=object_id) licences = _get_licences(resource, request.user) licence_choice = None if request.method == "POST": licence_choice = request.POST.get('licence', None) if licence_choice and 'in_licence_agree_form' in request.POST: la_form = LicenseAgreementForm(licence_choice, data=request.POST) if la_form.is_valid(): return _provide_download(request, resource, licences[licence_choice][0].downloadLocation) else: return render_to_response('repository/licence_agreement.html', { 'form': la_form, 'resource': resource, 'licence_path': \ LICENCEINFOTYPE_URLS_LICENCE_CHOICES[licence_choice][0], 'download_available': licences[licence_choice][1] }, context_instance=RequestContext(request)) elif licence_choice and not licence_choice in licences: licence_choice = None if len(licences) == 1: # no need to manually choose amongst 1 license ... licence_choice = licences.iterkeys().next() if licence_choice: return render_to_response('repository/licence_agreement.html', { 'form': LicenseAgreementForm(licence_choice), 'resource': resource, 'licence_path': \ LICENCEINFOTYPE_URLS_LICENCE_CHOICES[licence_choice][0], 'download_available': licences[licence_choice][1] }, context_instance=RequestContext(request)) elif len(licences) > 1: return render_to_response('repository/licence_selection.html', { 'form': LicenseSelectionForm(licences), 'resource': resource }, context_instance=RequestContext(request)) else: return render_to_response('repository/lr_not_downloadable.html', { 'resource': resource, 'reason': 'no_suitable_license' }, context_instance=RequestContext(request))
def download(request, object_id): """ Renders the resource download/purchase view including license selection, etc. """ user_membership = _get_user_membership(request.user) # here we are only interested in licenses (or their names) of the specified # resource that allow the current user a download/purchase resource = get_object_or_404(resourceInfoType_model, storage_object__identifier=object_id, storage_object__publication_status=PUBLISHED) licences = _get_licences(resource, user_membership) # Check whether the resource is from the current node, or whether it must be # redirected to the master copy if not resource.storage_object.master_copy: return render_to_response('repository/redirect.html', { 'resource': resource, 'redirection_url': model_utils.get_lr_master_url(resource) }, context_instance=RequestContext(request)) licence_choice = None if request.method == "POST": licence_choice = request.POST.get('licence', None) if licence_choice and 'in_licence_agree_form' in request.POST: la_form = LicenseAgreementForm(licence_choice, data=request.POST) if la_form.is_valid(): # before really providing the download, we have to make sure # that the user hasn't tried to circumvent the permission system if licences[licence_choice][1]: return _provide_download(request, resource, licences[licence_choice][0].downloadLocation) else: return render_to_response('repository/licence_agreement.html', { 'form': la_form, 'resource': resource, 'licence_name': licence_choice, 'licence_path': \ LICENCEINFOTYPE_URLS_LICENCE_CHOICES[licence_choice][0], 'download_available': licences[licence_choice][1] }, context_instance=RequestContext(request)) elif licence_choice and not licence_choice in licences: licence_choice = None if len(licences) == 1: # no need to manually choose amongst 1 license ... licence_choice = licences.iterkeys().next() if licence_choice: return render_to_response('repository/licence_agreement.html', { 'form': LicenseAgreementForm(licence_choice), 'resource': resource, 'licence_name': licence_choice, 'licence_path': \ LICENCEINFOTYPE_URLS_LICENCE_CHOICES[licence_choice][0], 'download_available': licences[licence_choice][1] }, context_instance=RequestContext(request)) elif len(licences) > 1: return render_to_response('repository/licence_selection.html', { 'form': LicenseSelectionForm(licences), 'resource': resource }, context_instance=RequestContext(request)) else: return render_to_response('repository/lr_not_downloadable.html', { 'resource': resource, 'reason': 'no_suitable_license' }, context_instance=RequestContext(request))