예제 #1
0
파일: base.py 프로젝트: NeroSouza/zou
    def generate_fixture_output_file(self,
                                     output_type=None,
                                     revision=1,
                                     name="main",
                                     task=None):
        if output_type is None:
            output_type = self.output_type

        if task is None:
            task_type_id = self.task_type.id
            entity_id = self.entity.id
        else:
            task_type_id = task.task_type_id
            entity_id = task.entity_id

        self.output_file = OutputFile.create(
            comment="",
            revision=revision,
            task_type_id=task_type_id,
            entity_id=entity_id,
            person_id=self.person.id,
            file_status_id=self.file_status.id,
            output_type_id=output_type.id,
            name=name)
        return self.output_file
예제 #2
0
파일: base.py 프로젝트: cgwire/zou
    def generate_fixture_output_file(
        self,
        output_type=None,
        revision=1,
        name="main",
        representation="",
        asset_instance=None,
        temporal_entity_id=None,
        task=None,
    ):
        if output_type is None:
            output_type = self.output_type

        if task is None:
            task_type_id = self.task_type.id
            asset_id = self.asset.id
        else:
            task_type_id = task.task_type_id
            asset_id = task.entity_id

        if asset_instance is None:
            asset_instance_id = None
        else:
            asset_instance_id = asset_instance.id
            if temporal_entity_id is None:
                temporal_entity_id = self.scene.id

        self.output_file = OutputFile.create(
            comment="",
            revision=revision,
            task_type_id=task_type_id,
            entity_id=asset_id,
            person_id=self.person.id,
            file_status_id=self.file_status.id,
            output_type_id=output_type.id,
            asset_instance_id=asset_instance_id,
            representation=representation,
            temporal_entity_id=temporal_entity_id,
            name=name,
        )
        return self.output_file
예제 #3
0
def create_new_output_revision(entity_id,
                               working_file_id,
                               output_type_id,
                               person_id,
                               task_type_id,
                               revision=0,
                               representation="",
                               name="main",
                               comment="",
                               extension="",
                               nb_elements=1,
                               asset_instance_id=None,
                               temporal_entity_id=None):
    """
    Create a new ouput file for given entity. Output type, task type, author
    and source file are required.

    The revision is set as next revision available but it can be forced.
    An extension and a name can be set too.

    An asset instance can be given too. In that case, the output file is
    linked to the asset instance.

    The `temporal_entity_id` concerns only asset instance output files. It is
    here to describe if the output is generated in the context of a shot or in
    the context of a scene.
    """

    if revision < 1:
        try:
            output_file = get_last_output_revision(
                entity_id,
                output_type_id,
                task_type_id,
                name=name,
                asset_instance_id=asset_instance_id,
                temporal_entity_id=temporal_entity_id)

            revision = output_file["revision"] + 1
        except NoOutputFileException:
            revision = 1

    file_status_id = get_default_status()["id"]

    try:
        output_file = OutputFile.get_by(name=name,
                                        entity_id=entity_id,
                                        asset_instance_id=asset_instance_id,
                                        output_type_id=output_type_id,
                                        task_type_id=task_type_id,
                                        temporal_entity_id=temporal_entity_id,
                                        representation=representation,
                                        revision=revision)

        if output_file is None:
            output_file = OutputFile.create(
                name=name,
                comment=comment,
                extension=extension,
                representation=representation,
                revision=revision,
                entity_id=entity_id,
                asset_instance_id=asset_instance_id,
                person_id=person_id,
                source_file_id=working_file_id,
                output_type_id=output_type_id,
                file_status_id=file_status_id,
                task_type_id=task_type_id,
                nb_elements=nb_elements,
                temporal_entity_id=temporal_entity_id)
            events.emit("output_file:new", {"output_file_id": output_file.id})
        else:
            raise EntryAlreadyExistsException

    except IntegrityError:
        raise EntryAlreadyExistsException

    return output_file.serialize()