def export(request, task_id): if request.method == "POST": taken_dirs = request.POST.getlist("dirs") taken_files = request.POST.getlist("files") if not taken_dirs and not taken_files: return view_error( request, "Please select at least one directory or file" " to be exported." ) zip = Task.create_zip( task_id=task_id, taken_dirs=taken_dirs, taken_files=taken_files ) if not zip: return view_error(request, "Failed to create zip.") response = HttpResponse( zip.getvalue(), content_type="application/zip" ) response["Content-Disposition"] = ( "attachment; filename=%s.zip" % task_id ) return response report = AnalysisController.get_report(task_id) dirs, files = Task.get_files(task_id) return render_template( request, "analysis/export.html", report=report, dirs=dirs, files=files )
def test_get_files(self): fake_task = cwd(analysis=1) shutil.copytree("tests/files/sample_analysis_storage", fake_task) dirs, files = Task.get_files(1) assert len(dirs) == 6 assert len(files) == 10 assert "dump.pcap" in files assert ("logs", 1) in dirs
def get_files(request, body): task_id = body.get('task_id', None) if not task_id: return json_error_response("invalid task_id") if not os.path.isfile(cwd("reports", "report.json", analysis=task_id)): raise Http404("Task %s: report.json not found" % task_id) dirs, files = Task.get_files(task_id) return JsonResponse({"dirs": dirs, "files": files}, safe=False)