Ejemplo n.º 1
0
    def post(self, instance_id):
        if not self.is_exist(instance_id):
            abort(404)

        if not self.is_allowed(instance_id):
            abort(403)

        uploaded_file = request.files["file"]

        folder_path = thumbnail_utils.get_preview_folder_name(
            "originals",
            instance_id
        )
        extension = uploaded_file.filename[-4:]
        if extension in [".png", ".jpg"]:
            thumbnail_utils.save_file(
                folder_path,
                instance_id,
                uploaded_file,
                size=None
            )
            if extension == ".jpg":
                thumbnail_utils.convert_jpg_to_png(
                    folder_path,
                    instance_id
                )

            thumbnail_utils.generate_preview_variants(instance_id)
            self.emit_app_preview_event(instance_id)

            return thumbnail_utils.get_preview_url_path(instance_id), 201

        elif extension in [".mp4", ".mov"]:
            from moviepy.editor import VideoFileClip
            file_name = "%s%s" % (instance_id, extension)
            folder = thumbnail_utils.create_folder(folder_path)
            file_path = os.path.join(folder, file_name)
            picture_path = os.path.join(folder, "%s.png" % instance_id)
            uploaded_file.save(file_path + '.tmp')
            clip = VideoFileClip(file_path + '.tmp')

            clip = clip.resize(height=720)
            clip.save_frame(picture_path, round(clip.duration / 2))
            thumbnail_utils.generate_preview_variants(instance_id)

            file_name = "%s%s" % (instance_id, extension)
            clip.write_videofile(os.path.join(folder, instance_id + ".mp4"))
            self.emit_app_preview_event(instance_id)

            return {}, 201

        else:
            abort(400, "Wrong file format")
Ejemplo n.º 2
0
    def post(self, instance_id):
        if not self.is_exist(instance_id):
            abort(404)

        self.check_permissions(instance_id)
        self.prepare_creation(instance_id)

        tmp_folder = current_app.config["TMP_DIR"]
        uploaded_file = request.files["file"]
        thumbnail_path = thumbnail_utils.save_file(
            tmp_folder, instance_id, uploaded_file
        )
        thumbnail_path = thumbnail_utils.turn_into_thumbnail(
            thumbnail_path, size=self.size
        )
        file_store.add_picture("thumbnails", instance_id, thumbnail_path)
        os.remove(thumbnail_path)
        self.clear_cache_file(instance_id)

        thumbnail_url_path = thumbnail_utils.url_path(
            self.data_type, instance_id
        )
        self.emit_event(instance_id)

        return {"thumbnail_path": thumbnail_url_path}, 201
Ejemplo n.º 3
0
 def save_picture_preview(self, instance_id, uploaded_file):
     """
     Get uploaded picture, build thumbnails then save everything in the file
     storage.
     """
     tmp_folder = current_app.config["TMP_DIR"]
     original_tmp_path = thumbnail_utils.save_file(tmp_folder, instance_id,
                                                   uploaded_file)
     return self.save_variants(original_tmp_path, instance_id)
Ejemplo n.º 4
0
    def post(self, instance_id):
        if not self.is_exist(instance_id):
            abort(404)

        self.check_permissions(instance_id)
        self.prepare_creation(instance_id)
        uploaded_file = request.files["file"]
        thumbnail_utils.save_file(self.data_type,
                                  instance_id,
                                  uploaded_file,
                                  size=self.size)

        thumbnail_url_path = \
            thumbnail_utils.url_path(
                self.data_type,
                instance_id
            )

        return {"thumbnail_path": thumbnail_url_path}, 201
Ejemplo n.º 5
0
    def test_save_file(self):
        file_path_fixture = self.get_fixture_file_path("thumbnails/th01.png")
        th_file = FileStorage(stream=open(file_path_fixture, "rb"),
                              filename="th01.png")
        full_path = thumbnail.save_file("shots", "instance-id", th_file)

        thumbnail.turn_into_thumbnail(full_path, thumbnail.RECTANGLE_SIZE)
        im = Image.open(full_path)
        (width, height) = im.size
        self.assertEqual(width, 150)
        self.assertEqual(height, 100)
Ejemplo n.º 6
0
    def post(self, instance_id):
        if not self.is_exist(instance_id):
            abort(404)

        uploaded_file = request.files["file"]
        thumbnail_utils.save_file(
            self.data_type,
            instance_id,
            uploaded_file,
            size=self.size
        )

        thumbnail_url_path = \
            thumbnail_utils.url_path(
                self.data_type,
                instance_id
            )
        result = {"thumbnail_path": thumbnail_url_path}

        return result, 201
Ejemplo n.º 7
0
 def save_picture_preview(self, instance_id, uploaded_file):
     """
     Get uploaded picture, build thumbnails then save everything in the file
     storage.
     """
     tmp_folder = current_app.config["TMP_DIR"]
     original_tmp_path = thumbnail_utils.save_file(tmp_folder, instance_id,
                                                   uploaded_file)
     file_size = fs.get_file_size(original_tmp_path)
     preview_files_service.update_preview_file(instance_id,
                                               {"file_size": file_size},
                                               silent=True)
     return preview_files_service.save_variants(instance_id,
                                                original_tmp_path)