+class InfoView(FTPView):
+ def handle(self, ftp, params):
+ return JsonResponse(ftp.info(make_url(params, 'path')))
+
+
+class DeleteView(FTPView):
+ method = 'post'
+ form_class = HostItemsForm
+
+ def handle(self, ftp, params):
+ url = make_url(params)
+ done, fail = [], {}
+
+ for path in params['dirs']:
+ try:
+ ftp.rmdir(url + urlquote(path))
+ except FTPError as e:
+ fail[path] = e.message
+ else:
+ done.append(path)
+
+ for path in params['files']:
+ try:
+ ftp.delete(url + urlquote(path))
+ except FTPError as e:
+ fail[path] = e.message
+ else:
+ done.append(path)
+
+ return JsonResponse({'done': done, 'fail': fail})
+
+
+class MkdirView(FTPView):
+ method = 'post'
+ form_class = HostPathNameForm
+
+ def handle(self, ftp, params):
+ ftp.mkdir(make_url(params, 'path', 'name'))
+
+ return JsonResponse({'success': True})