Ejemplo n.º 1
0
def import_video(tester_id, duration, time):
    """
    Import a video from a tester with a form-data body.

    :param tester_id:
    :param duration:
    :param time:
    :return:
    """
    file = request.files.get('file')
    if file is None:
        return io.bad_request('Missing file')

    video = Video()
    video.tester_id = tester_id
    video.duration = duration

    video.time = datetime.fromtimestamp(time / 1e9)
    video.filename = file.filename
    video.mimetype = file.mimetype
    video.content = file.read()

    VideoPersisor().add_video(video)

    return video
Ejemplo n.º 2
0
def get_tester_metadata(tester_id):
    """
    Get a tester's data by their ID.

    :param tester_id:
    :return:
    """
    persistor = TesterPersisor()

    if not persistor.ensure_tester_is_valid(tester_id):
        return io.bad_request('Tester must have at least one image and video.')

    tester = persistor.get_tester(tester_id)

    if not tester:
        return io.bad_request(f'Tester not found: {tester_id}')

    tester, images_count = tester
    setattr(tester, 'images_count', images_count)

    return tester
Ejemplo n.º 3
0
def get_images(tester_id):
    """
    Get a tester's image data by their ID.

    :param tester_id:
    :return:
    """
    persistor = ImagePersisor()

    if not persistor.ensure_tester_is_valid(tester_id):
        return io.bad_request('Tester must have at least one image and video.')

    return ImagePersisor().get_images(tester_id)
Ejemplo n.º 4
0
def download_video(video_id, tester_id):
    """
    Download a video by it's ID.

    :param video_id:
    :param tester_id:
    :return:
    """
    persistor = VideoPersisor()

    if not persistor.ensure_tester_is_valid(tester_id):
        return io.bad_request('Tester must have at least one image and video.')

    video = persistor.get_video(video_id)

    if not video:
        return io.bad_request(f'Video not found: {video_id}')

    if tester_id != video.tester_id:
        return io.forbidden(
            Error('You are not allowed to perform this action.', 'forbidden'))

    return build_file_response(video)
Ejemplo n.º 5
0
def download_image(image_id, tester_id):
    """
    Download an image by it's ID.

    :param image_id:
    :param tester_id:
    :return:
    """
    persistor = ImagePersisor()

    if not persistor.ensure_tester_is_valid(tester_id):
        return io.bad_request('Tester must have at least one image and video.')

    image = persistor.get_image(image_id)

    if not image:
        return io.bad_request(f'Image not found: {image_id}')

    if tester_id != image.tester_id:
        return io.forbidden(
            Error('You are not allowed to perform this action.', 'forbidden'))

    return build_file_response(image)