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
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
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)
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)
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)