Exemplo n.º 1
0
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))
Exemplo n.º 2
0
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))
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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
Exemplo n.º 5
0
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")
Exemplo n.º 7
0
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),
        }))
Exemplo n.º 8
0
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")
Exemplo n.º 9
0
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
Exemplo n.º 10
0
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
Exemplo n.º 11
0
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),
            }))
Exemplo n.º 12
0
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
Exemplo n.º 13
0
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
Exemplo n.º 14
0
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),
    }))
Exemplo n.º 15
0
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),
    }))
Exemplo n.º 16
0
    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)