コード例 #1
0
ファイル: shots_service.py プロジェクト: ricekab/zou
def remove_shot(shot_id, force=False):
    """
    Remove given shot from database. If it has tasks linked to it, it marks
    the shot as canceled. Deletion can be forced.
    """
    shot = get_shot_raw(shot_id)
    is_tasks_related = Task.query.filter_by(entity_id=shot_id).count() > 0

    if is_tasks_related and not force:
        shot.update({"canceled": True})
        clear_shot_cache(shot_id)
        events.emit("shot:update", {"shot_id": shot_id})
    else:
        from zou.app.services import tasks_service

        tasks = Task.query.filter_by(entity_id=shot_id).all()
        for task in tasks:
            deletion_service.remove_task(task.id, force=True)
            tasks_service.clear_task_cache(str(task.id))

        EntityVersion.delete_all_by(entity_id=shot_id)
        Subscription.delete_all_by(entity_id=shot_id)
        shot.delete()
        clear_shot_cache(shot_id)
        events.emit("shot:delete", {"shot_id": shot_id})

    deleted_shot = shot.serialize(obj_type="Shot")
    return deleted_shot
コード例 #2
0
ファイル: test_tasks_service.py プロジェクト: mathbou/zou
 def test_remove_task(self):
     self.working_file.delete()
     self.output_file.delete()
     deletion_service.remove_task(self.task_id)
     self.assertRaises(
         TaskNotFoundException, tasks_service.get_task, self.task_id
     )
コード例 #3
0
ファイル: assets_service.py プロジェクト: mathbou/zou
def remove_asset(asset_id, force=False):
    asset = get_asset_raw(asset_id)
    is_tasks_related = Task.query.filter_by(entity_id=asset_id).count() > 0

    if is_tasks_related and not force:
        asset.update({"canceled": True})
        clear_asset_cache(str(asset_id))
        events.emit(
            "asset:update",
            {"asset_id": asset_id},
            project_id=str(asset.project_id),
        )
    else:
        from zou.app.services import tasks_service

        tasks = Task.query.filter_by(entity_id=asset_id).all()
        for task in tasks:
            deletion_service.remove_task(task.id, force=True)
            tasks_service.clear_task_cache(str(task.id))
        asset.delete()
        clear_asset_cache(str(asset_id))
        events.emit(
            "asset:delete",
            {"asset_id": asset_id},
            project_id=str(asset.project_id),
        )
    deleted_asset = asset.serialize(obj_type="Asset")
    return deleted_asset
コード例 #4
0
def remove_shot(shot_id, force=False):
    """
    Remove given shot from database. If it has tasks linked to it, it marks
    the shot as canceled. Deletion can be forced.
    """
    shot = get_shot_raw(shot_id)
    is_tasks_related = Task.query.filter_by(entity_id=shot_id).count() > 0

    if is_tasks_related and not force:
        shot.update({"canceled": True})
    else:
        tasks = Task.query.filter_by(entity_id=shot_id).all()
        for task in tasks:
            deletion_service.remove_task(task.id, force=True)

        subscriptions = Subscription.query.filter_by(entity_id=shot_id).all()
        for subscription in subscriptions:
            subscription.delete()

        shot.delete()

    deleted_shot = shot.serialize(obj_type="Shot")
    events.emit("shot:delete", {
        "shot_id": shot_id
    })
    return deleted_shot
コード例 #5
0
ファイル: task.py プロジェクト: eliemichel/zou
    def delete(self, instance_id):
        """
        Delete a model corresponding at given ID and return it as a JSON
        object.
        """
        parser = reqparse.RequestParser()
        parser.add_argument("force", default=False, type=bool)
        args = parser.parse_args()

        instance = self.get_model_or_404(instance_id)

        try:
            instance_dict = instance.serialize()
            self.check_delete_permissions(instance_dict)
            deletion_service.remove_task(instance_id, force=args["force"])
            events.emit(
                "%s:deletion" % self.model.__tablename__,
                {"%s_id" % self.model.__tablename__: instance.id}
            )
            self.post_delete(instance_dict)

        except IntegrityError as exception:
            current_app.logger.error(str(exception))
            return {"message": str(exception)}, 400

        return {"deletion_success": True}, 204
コード例 #6
0
ファイル: test_tasks_service.py プロジェクト: ricekab/zou
 def test_remove_task_force(self):
     tasks_service.create_comment(self.task.id, self.task_status.id,
                                  self.person.id, "first comment")
     TimeSpent.create(person_id=self.person.id,
                      task_id=self.task.id,
                      date=datetime.date(2017, 9, 23),
                      duration=3600)
     deletion_service.remove_task(self.task_id, force=True)
     self.assertRaises(TaskNotFoundException, tasks_service.get_task,
                       self.task_id)
コード例 #7
0
ファイル: test_tasks_service.py プロジェクト: unit-image/zou
    def test_get_task(self):
        self.assertRaises(TaskNotFoundException, tasks_service.get_task,
                          "wrong-id")
        task = tasks_service.get_task(self.task_id)
        self.assertEqual(str(self.task_id), task["id"])
        self.output_file.delete()
        self.working_file.delete()
        deletion_service.remove_task(task["id"])

        self.assertRaises(TaskNotFoundException, tasks_service.get_task,
                          str(self.task_id))
コード例 #8
0
ファイル: assets.py プロジェクト: eliemichel/zou
 def delete_func(self, asset):
     try:
         asset = assets_service.get_asset_by_shotgun_id(asset.shotgun_id)
         tasks = tasks_service.get_tasks_for_asset(asset["id"])
         if self.is_working_files_linked(tasks):
             assets_service.cancel_asset(asset["id"])
         else:
             for task in tasks:
                 deletion_service.remove_task(task["id"])
             assets_service.remove_asset(asset["id"])
         return asset
     except AssetNotFoundException:
         return None
コード例 #9
0
def remove_asset(asset_id, force=False):
    asset = get_asset_raw(asset_id)
    is_tasks_related = Task.query.filter_by(entity_id=asset_id).count() > 0

    if is_tasks_related and not force:
        asset.update({"canceled": True})
    else:
        tasks = Task.query.filter_by(entity_id=asset_id).all()
        for task in tasks:
            deletion_service.remove_task(task.id, force=True)
        asset.delete()
    deleted_asset = asset.serialize(obj_type="Asset")
    events.emit("asset:delete", {"asset_id": asset_id})
    return deleted_asset
コード例 #10
0
    def delete(self, instance_id):
        """
        Delete a model corresponding at given ID and return it as a JSON
        object.
        """
        parser = reqparse.RequestParser()
        parser.add_argument("force", default=False, type=bool)
        args = parser.parse_args()

        instance = self.get_model_or_404(instance_id)

        try:
            instance_dict = instance.serialize()
            self.check_delete_permissions(instance_dict)
            deletion_service.remove_task(instance_id, force=args["force"])
            tasks_service.clear_task_cache(instance_id)
            self.post_delete(instance_dict)

        except IntegrityError as exception:
            current_app.logger.error(str(exception), exc_info=1)
            return {"message": str(exception)}, 400

        return "", 204
コード例 #11
0
ファイル: edits_service.py プロジェクト: cgwire/zou
def remove_edit(edit_id, force=False):
    """
    Remove given edit from database. If it has tasks linked to it, it marks
    the edit as canceled. Deletion can be forced.
    """
    edit = get_edit_raw(edit_id)
    is_tasks_related = Task.query.filter_by(entity_id=edit_id).count() > 0

    if is_tasks_related and not force:
        edit.update({"canceled": True})
        clear_edit_cache(edit_id)
        events.emit(
            "edit:update",
            {"edit_id": edit_id},
            project_id=str(edit.project_id),
        )
    else:
        from zou.app.services import tasks_service

        tasks = Task.query.filter_by(entity_id=edit_id).all()
        for task in tasks:
            deletion_service.remove_task(task.id, force=True)
            tasks_service.clear_task_cache(str(task.id))

        EntityVersion.delete_all_by(entity_id=edit_id)
        Subscription.delete_all_by(entity_id=edit_id)
        EntityLink.delete_all_by(entity_in_id=edit_id)
        edit.delete()
        clear_edit_cache(edit_id)
        events.emit(
            "edit:delete",
            {"edit_id": edit_id},
            project_id=str(edit.project_id),
        )

    deleted_edit = edit.serialize(obj_type="Edit")
    return deleted_edit
コード例 #12
0
 def delete_func(self, entity):
     deletion_service.remove_task(entity.id)
     tasks_service.clear_task_cache(str(entity.id))
コード例 #13
0
 def delete_func(self, entity):
     deletion_service.remove_task(entity.id)