def handle_get_folder(self, data): shop = get_shop(self.request) try: folder_id = int(data.get("id", 0)) if folder_id: folder = _get_folder_query(shop).get(pk=folder_id) subfolders = folder.get_children().filter(_get_folder_query_filter(shop)) files = _get_file_query(shop, folder) else: folder = None subfolders = _get_folder_query(shop).filter(parent=None) files = _get_file_query(shop).filter(folder=None) except ObjectDoesNotExist: return JsonResponse({ "folder": None, "error": "Error! Folder does not exist." }) if self.filter == "images": files = files.instance_of(Image) return JsonResponse({"folder": { "id": folder.id if folder else 0, "name": get_folder_name(folder), "files": [filer_file_to_json_dict(file) for file in files if file.is_public], "folders": [ # Explicitly pass empty list of children to avoid recursion filer_folder_to_json_dict(subfolder, children=()) for subfolder in subfolders.order_by("name") ] }})
def _process_form(request, folder): try: form = UploadImageForm(request.POST, request.FILES) if form.is_valid(): filer_file = filer_image_from_upload( request, path=folder, upload_data=request.FILES['file']) elif not request.FILES["file"].content_type.startswith("image/"): form = UploadFileForm(request.POST, request.FILES) if form.is_valid(): filer_file = filer_file_from_upload( request, path=folder, upload_data=request.FILES['file']) if not form.is_valid(): return JsonResponse({"error": form.errors}, status=400) ensure_media_file(get_shop(request), filer_file) except Exception as exc: return JsonResponse({"error": force_text(exc)}, status=500) return JsonResponse({ "file": filer_file_to_json_dict(filer_file), "message": _("%(file)s uploaded to %(folder)s") % { "file": filer_file.label, "folder": get_folder_name(folder) } })
def media_upload(request, *args, **kwargs): if not settings.SHUUP_CUSTOMER_INFORMATION_ALLOW_PICTURE_UPLOAD: return HttpResponseForbidden() shop = get_shop(request) folder = get_or_create_folder(shop, "/contacts") form = UploadImageForm(request.POST, request.FILES) if form.is_valid(): filer_file = filer_image_from_upload(request, path=folder, upload_data=request.FILES['file']) else: error_messages = [] for validation_error in form.errors.as_data().get("file", []): error_messages += validation_error.messages return JsonResponse({"error": ", ".join([msg for msg in error_messages])}, status=400) ensure_media_file(shop, filer_file) return JsonResponse({"file": filer_file_to_json_dict(filer_file)})