def api_file_upload(request): """ Upload a file to the storage system """ try: fobj = request.FILES["file"] checksum, ext = fobj._name.split(".") try: request.user.check_staged_space(fobj._size, checksum) except Exception as e: return HttpResponseForbidden(str(e)) write_file_to_storage(fobj, check_valid=True) StagedFile.objects.get_or_create( checksum=checksum, file_size=fobj._size, uploaded_by=request.user ) return HttpResponse(json.dumps({ "success": True, })) except KeyError: return HttpResponseBadRequest("Invalid file upload request") except Exception as e: handle_server_error(request) return HttpResponseServerError(content=str(e), reason=str(e))
def api_file_upload(request): """ Upload a file to the storage system """ try: fobj = request.FILES["file"] checksum, ext = fobj._name.split(".") try: request.user.check_staged_space(fobj._size, checksum) except Exception as e: return HttpResponseForbidden(str(e)) write_file_to_storage(fobj, check_valid=True) StagedFile.objects.get_or_create( checksum=checksum, file_size=fobj._size, uploaded_by=request.user ) return Response({ "success": True, }) except KeyError: return HttpResponseBadRequest("Invalid file upload request") except Exception as e: handle_server_error(request) return HttpResponseServerError(content=str(e), reason=str(e))
def create_file(display_name, preset_id, ext, user=None): with tempfile.NamedTemporaryFile(suffix=".{}".format(ext), mode='w+t', delete=False) as f: f.write(":)") f.flush() size = f.tell() filename = write_file_to_storage(f, name=f.name) checksum, _ext = os.path.splitext(filename) f.seek(0) file_object = File( file_size=size, file_on_disk=DjFile(f), checksum=checksum, file_format_id=ext, original_filename=display_name, preset_id=preset_id, uploaded_by=user, ) file_object.save() f.close() os.unlink(f.name) return file_object
def create_file(display_name, preset_id, ext, user=None): with tempfile.NamedTemporaryFile(suffix=".{}".format(ext), mode='w+t', delete=False) as f: f.write(":)") f.flush() size = f.tell() filename = write_file_to_storage(f, name=f.name) checksum, _ext = os.path.splitext(filename) f.seek(0) file_object = File( file_size=size, file_on_disk=DjFile(f), checksum=checksum, file_format_id=ext, original_filename=display_name, preset_id=preset_id, uploaded_by=user, language_id="mul" if FormatPreset.objects.filter(id=preset_id, multi_language=True).exists() else None, ) file_object.save() f.close() os.unlink(f.name) return file_object
def create_file(display_name, preset_id, ext, user=None): with tempfile.NamedTemporaryFile(suffix=".{}".format(ext), mode="wb+", delete=False) as f: f.write(b":)") f.flush() size = f.tell() filename = write_file_to_storage(f, name=f.name) checksum, _ext = os.path.splitext(filename) f.seek(0) file_object = File( file_size=size, file_on_disk=DjFile(f), checksum=checksum, file_format_id=ext, original_filename=display_name, preset_id=preset_id, uploaded_by=user, language_id="mul" if FormatPreset.objects.filter( id=preset_id, multi_language=True).exists() else None, ) file_object.save() f.close() os.unlink(f.name) return file_object
def api_file_upload(request): """ Upload a file to the storage system """ try: fobj = request.FILES["file"] formatted_filename = write_file_to_storage(fobj, check_valid=True) return HttpResponse(json.dumps({ "success": True, })) except KeyError: raise SuspiciousOperation("Invalid file upload request")
def thumbnail_upload(request): if request.method == 'POST': fobj = request.FILES.values()[0] formatted_filename = write_file_to_storage(fobj) return HttpResponse(json.dumps({ "success": True, "formatted_filename": formatted_filename, "file": None, "path": generate_storage_url(formatted_filename), }))
def write_to_thumbnail_file(raw_thumbnail): """ write_to_thumbnail_file: Convert base64 thumbnail to file Args: raw_thumbnail (str): base64 encoded thumbnail Returns: thumbnail filename """ if raw_thumbnail and isinstance(raw_thumbnail, str) and raw_thumbnail != "" and 'static' not in raw_thumbnail: with SimpleUploadedFile('temp.png', raw_thumbnail.replace('data:image/png;base64,', '').decode('base64')) as tempf: filename = write_file_to_storage(tempf, check_valid=False) logging.info("\tCreated thumbnail {}".format(filename)) return filename
def write_to_thumbnail_file(raw_thumbnail): """ write_to_thumbnail_file: Convert base64 thumbnail to file Args: raw_thumbnail (str): base64 encoded thumbnail Returns: thumbnail filename """ if raw_thumbnail and isinstance(raw_thumbnail, str) and raw_thumbnail != "" and 'static' not in raw_thumbnail: with SimpleUploadedFile('temp.png',raw_thumbnail.replace('data:image/png;base64,', '').decode('base64')) as tempf: filename = write_file_to_storage(tempf, check_valid=False) logging.info("\tCreated thumbnail {}".format(filename)) return filename
def thumbnail_upload(request): if request.method == 'POST': fobj = request.FILES.values()[0] checksum = get_hash(DjFile(fobj)) request.user.check_space(fobj._size, checksum) formatted_filename = write_file_to_storage(fobj) return HttpResponse( json.dumps({ "success": True, "formatted_filename": formatted_filename, "file": None, "path": generate_storage_url(formatted_filename), }))
def compress_video_wrapper(file_object): with tempfile.NamedTemporaryFile(suffix=".{}".format(file_formats.MP4)) as tempf: tempf.close() compress_video(str(file_object.file_on_disk), tempf.name, overwrite=True) filename = write_file_to_storage(open(tempf.name, 'rb'), name=tempf.name) checksum, ext = os.path.splitext(filename) file_location = generate_file_on_disk_name(checksum, filename) low_res_object = File( file_on_disk=DjFile(open(file_location, 'rb')), file_format_id=file_formats.MP4, original_filename=file_object.original_filename, contentnode=file_object.contentnode, file_size=os.path.getsize(file_location), preset_id=format_presets.VIDEO_LOW_RES, ) low_res_object.save() return low_res_object
def compress_video_wrapper(file_object): with tempfile.NamedTemporaryFile(suffix=".{}".format(file_formats.MP4)) as tempf: tempf.close() compress_video(str(file_object.file_on_disk), tempf.name, overwrite=True) filename = write_file_to_storage(open(tempf.name, 'rb'), name=tempf.name) checksum, ext = os.path.splitext(filename) file_location = generate_file_on_disk_name(checksum, filename) low_res_object = File( file_on_disk=DjFile(open(file_location, 'rb')), file_format_id=file_formats.MP4, original_filename = file_object.original_filename, contentnode=file_object.contentnode, file_size=os.path.getsize(file_location), preset_id=format_presets.VIDEO_LOW_RES, ) low_res_object.save() return low_res_object
def thumbnail_upload(request): # Used for channels if request.method != 'POST': return HttpResponseBadRequest("Only POST requests are allowed on this endpoint.") fobj = request.FILES.values()[0] checksum = get_hash(DjFile(fobj)) request.user.check_space(fobj._size, checksum) formatted_filename = write_file_to_storage(fobj) return HttpResponse(json.dumps({ "success": True, "formatted_filename": formatted_filename, "file": None, "path": generate_storage_url(formatted_filename), "encoding": get_thumbnail_encoding(formatted_filename), }))
def generate_file( self, contentnode_id, display_name, preset_id, extension, ): if extension not in self.temporary_files: with tempfile.NamedTemporaryFile(suffix=".{}".format(extension), mode="wb+", delete=False) as f: f.write(b":)") f.flush() size = f.tell() filename = write_file_to_storage(f, name=f.name) checksum, _ext = os.path.splitext(filename) f.seek(0) self.temporary_files[extension] = { "filename": filename, "checksum": checksum, "size": size, } file_info = self.temporary_files[extension] file = File( file_size=file_info["size"], file_on_disk=file_info["filename"], checksum=file_info["checksum"], file_format_id=extension, original_filename=display_name, preset_id=preset_id, uploaded_by=self.user, language_id="mul" if preset_id in multi_lang else None, id=uuid4_hex(), contentnode_id=contentnode_id, ) self.files.append(file)