def _add_task(self, file, case, user): """Adds a new task to database. @param file: file path @param case: case id @param user: user id """ task = Analysis() task.owner = user task.case = case task.file_name = os.path.basename(file) mime = magic.Magic(mime=True) task.image_id = save_file(file_path=file, content_type=mime.from_file(file)) task.thumb_id = create_thumb(file) task.save()
class Command(BaseCommand): """Image submission via command line.""" option_list = BaseCommand.option_list + ( make_option("--target", "-t", dest="target", help="Path of the file or directory to submit"), make_option("--case", "-c", dest="case", help="Case ID, images will be attached to it"), make_option("--username", "-u", dest="username", help="Username"), ) help = "Task submission" def handle(self, *args, **options): """Runs command.""" # Get options. user = Profile.objects.get(username=options["username"].strip()) case = Case.objects.get(pk=options["case"].strip()) # Add directory or files. if os.path.isdir(options["target"]): for file_name in os.listdir(options["target"]): print "INFO: processing {0}".format(file_name) self._add_task(os.path.join(options["target"], file_name), case, user) elif os.path.isfile(options["target"]): print "INFO: processing {0}".format(options["target"]) self._add_task(options["target"], case, user) else: print "ERROR: target is not a file or directory" def _add_task(self, file, case, user): """Adds a new task to database. @param file: file path @param case: case id @param user: user id """ task = Analysis() task.owner = user task.case = case task.file_name = os.path.basename(file) mime = magic.Magic(mime=True) task.image_id = save_file(file_path=file, content_type=mime.from_file(file)) task.thumb_id = create_thumb(file) task.save()
def new_folder(request, case_id): """Load files from a local directory.""" case = get_object_or_404(Case, pk=case_id) # Security check. if not(request.user.is_superuser or request.user in case.users.all()): return render_to_response("error.html", {"error": "You are not authorized to add image to this."}, context_instance=RequestContext(request)) if case.state == "C": return render_to_response("error.html", {"error": "You cannot add an image to a closed case."}, context_instance=RequestContext(request)) if request.method == "POST": form = forms.ImageFolderForm(request.POST) if form.is_valid(): # Check. if not os.path.exists(request.POST.get("path")): return render_to_response("error.html", {"error": "Folder does not exist."}, context_instance=RequestContext(request)) elif not os.path.isdir(request.POST.get("path")): return render_to_response("error.html", {"error": "Folder is not a directory."}, context_instance=RequestContext(request)) # Add all files in directory. for file in os.listdir(request.POST.get("path")): task = Analysis() task.owner = request.user task.case = case task.file_name = file mime = magic.Magic(mime=True) task.image_id = save_file(file_path=os.path.join(request.POST.get("path"), file), content_type=mime.from_file(os.path.join(request.POST.get("path"), file))) task.thumb_id = create_thumb(os.path.join(request.POST.get("path"), file)) task.save() # Auditing. log_activity("I", "Created new analysis {0}".format(task.file_name), request) return HttpResponseRedirect(reverse("analyses.views.show_case", args=(case.id, "list"))) else: form = forms.ImageFolderForm() return render_to_response("analyses/images/new_folder.html", {"form": form, "case": case}, context_instance=RequestContext(request))
def new_image(request, case_id): """Upload a new image.""" case = get_object_or_404(Case, pk=case_id) # Security check. if not request.user.is_superuser and not request.user in case.users.all(): return render_to_response("error.html", {"error": "You are not authorized to add image to this."}, context_instance=RequestContext(request)) if case.state == "C": return render_to_response("error.html", {"error": "You cannot add an image to a closed case."}, context_instance=RequestContext(request)) if request.method == "POST": form = forms.UploadImageForm(request.POST, request.FILES) if form.is_valid(): task = form.save(commit=False) task.owner = request.user task.case = case task.file_name = request.FILES["image"].name task.image_id = save_file(file_path=request.FILES["image"].temporary_file_path(), content_type=request.FILES["image"].content_type) task.thumb_id = create_thumb(request.FILES["image"].temporary_file_path()) task.save() # Auditing. log_activity("I", "Created new analysis {0}".format(task.file_name), request) return HttpResponseRedirect(reverse("analyses.views.show_case", args=(case.id, "list"))) else: form = forms.UploadImageForm() return render_to_response("analyses/images/new_image.html", {"form": form, "case": case}, context_instance=RequestContext(request))
return render_to_response( "error.html", {"error": "You cannot add an image to a closed case."}, context_instance=RequestContext(request)) if request.method == "POST": form = forms.UploadImageForm(request.POST, request.FILES) if form.is_valid(): task = form.save(commit=False) task.owner = request.user task.case = case task.file_name = request.FILES["image"].name task.image_id = save_file( file_path=request.FILES["image"].temporary_file_path(), content_type=request.FILES["image"].content_type) task.thumb_id = create_thumb( request.FILES["image"].temporary_file_path()) task.save() # Auditing. log_activity("I", "Created new analysis {0}".format(task.file_name), request) return HttpResponseRedirect( reverse("analyses.views.show_case", args=(case.id, "list"))) else: form = forms.UploadImageForm() return render_to_response("analyses/images/new_image.html", { "form": form, "case": case }, context_instance=RequestContext(request))