gridftp: multiple fixes in handling and presenting errors
[qcg-portal.git] / qcg / views.py
index adc4676..a1986ad 100644 (file)
@@ -17,6 +17,8 @@ from django_openid_auth.views import make_consumer
 from openid.extensions import ax
 
 from filex.forms import HostPathNameForm, RenameForm, ArchiveForm, HostPathForm
+from filex.ftp import FTPOperation, FTPError
+from filex.views import make_url
 from qcg.forms import FiltersForm, ColumnsForm, JobDescriptionForm, EnvFormSet
 from qcg.utils import paginator_context
 from qcg.service import update_user_data, submit_job
@@ -185,7 +187,7 @@ def job_new(request):
 @login_required
 def gridftp(request):
     return render(request, 'qcg/gridftp.html',
-                  {'new_dir_form': HostPathNameForm(), 'rename_form': RenameForm(),  'archive_form': ArchiveForm()})
+                  {'new_dir_form': HostPathNameForm(), 'rename_form': RenameForm(), 'archive_form': ArchiveForm()})
 
 
 @login_required
@@ -195,7 +197,13 @@ def gridftp_upload(request):
     if not form.is_valid():
         raise SuspiciousOperation('Invalid parameters for `gridftp_upload`!')
 
+    error = None
+    try:
+        FTPOperation(request.session['proxy']).info(make_url(form.cleaned_data, 'path'))
+    except FTPError as e:
+        error = e.message
+
     return render(request, 'qcg/gridftp_upload.html',
-                  {'url': reverse('filex:upload') + '?' + urlencode(form.cleaned_data),
+                  {'error': error, 'url': reverse('filex:upload') + '?' + urlencode(form.cleaned_data),
                    'host': form.cleaned_data['host'], 'path': form.cleaned_data['path'],
                    'sep': '/' if form.cleaned_data['path'].startswith('~') else ''})