def setUp(self): super(FileTreeTestCase, self).setUp() self.generate_fixture_project_status() self.generate_fixture_project() self.generate_fixture_project_standard() self.generate_fixture_entity_type() self.generate_fixture_entity() self.generate_fixture_entity_standard() self.generate_fixture_episode() self.generate_fixture_sequence() self.generate_fixture_shot() self.generate_fixture_sequence_standard() self.generate_fixture_shot_standard() self.generate_fixture_person() self.generate_fixture_department() self.generate_fixture_task_type() self.generate_fixture_task_status() self.generate_fixture_assigner() self.generate_fixture_task() self.generate_fixture_task_standard() self.generate_fixture_shot_task() self.generate_fixture_shot_task_standard() self.sequence_standard = Entity(name='Seq1', project_id=self.project.id, entity_type_id=self.sequence_type.id) self.sequence_standard.save() self.shot_standard = Entity(name='P001', project_id=self.project_standard.id, entity_type_id=self.shot_type.id, parent_id=self.sequence_standard.id) self.shot_standard.save()
def import_entry(self, data): sequence = Entity.get_by(shotgun_id=data["shotgun_id"], entity_type_id=self.sequence_type["id"]) if sequence is None: sequence = Entity(**data) sequence.save() current_app.logger.info("Sequence created: %s" % sequence) else: # Little hack to avoid integrity errors due to # duplicated data. similar_sequence = Entity.get_by( name=data["name"], parent_id=data["parent_id"], project_id=data["project_id"], entity_type_id=self.sequence_type["id"]) if similar_sequence is None: sequence.update(data) sequence.save() else: sequence.update({ "description": data["description"], "shotgun_id": data["shotgun_id"] }) sequence.save() current_app.logger.info("Sequence updated: %s" % sequence) return sequence
def import_entry(self, data): sequence = Entity.get_by( shotgun_id=data["shotgun_id"], entity_type_id=self.sequence_type["id"], ) similar_sequence = Entity.get_by( name=data["name"], parent_id=data["parent_id"], project_id=data["project_id"], entity_type_id=self.sequence_type["id"], ) if sequence is None and similar_sequence is None: sequence = Entity(**data) sequence.save() current_app.logger.info("Sequence created: %s" % sequence) elif sequence is not None: if similar_sequence is None: sequence.update(data) sequence.save() else: sequence.update( { "description": data["description"], "shotgun_id": data["shotgun_id"], } ) sequence.save() current_app.logger.info("Sequence updated: %s" % sequence) return sequence
def generate_fixture_shot(self): self.shot = Entity(name="P01", description="Description Shot 01", data={ "fps": 25, "frame_in": 0, "frame_out": 100 }, project_id=self.project.id, entity_type_id=self.shot_type.id, parent_id=self.sequence.id) self.shot.save() self.shot_noseq = Entity(name="P01NOSEQ", project_id=self.project.id, entity_type_id=self.shot_type.id) self.shot_noseq.save()
def generate_fixture_entity_character(self): self.entity_character = Entity( name="Rabbit", description="Main character", project_id=self.project.id, entity_type_id=self.entity_type_character.id) self.entity_character.save()
def setUp(self): super(FileTreeTestCase, self).setUp() self.generate_fixture_project_status() self.generate_fixture_project() self.generate_fixture_project_standard() self.generate_fixture_asset_type() self.generate_fixture_asset() self.generate_fixture_episode() self.generate_fixture_sequence() self.generate_fixture_shot() self.generate_fixture_scene() self.generate_fixture_sequence_standard() self.generate_fixture_shot_standard() self.generate_fixture_person() self.generate_fixture_department() self.generate_fixture_task_type() self.generate_fixture_task_status() self.generate_fixture_assigner() self.generate_fixture_task() self.generate_fixture_shot_task() self.generate_fixture_shot_task_standard() self.generate_fixture_software() self.asset_standard = Entity( name='Car', project_id=self.project_standard.id, entity_type_id=self.asset_type.id ) self.asset_standard.save() self.sequence_standard = Entity( name='Seq1', project_id=self.project.id, entity_type_id=self.sequence_type.id ) self.sequence_standard.save() self.shot_standard = Entity( name='P001', project_id=self.project_standard.id, entity_type_id=self.shot_type.id, parent_id=self.sequence_standard.id ) self.shot_standard.save() self.output_type_materials = files_service.get_or_create_output_type( "Materials") self.output_type_cache = files_service.get_or_create_output_type( "Cache") self.output_type_image = files_service.get_or_create_output_type( "Images")
def get_or_create_episode(project_id, name): episode_type = get_episode_type() episode = Entity.get_by(entity_type_id=episode_type["id"], project_id=project_id, name=name) if episode is None: episode = Entity(entity_type_id=episode_type["id"], project_id=project_id, name=name) episode.save() return episode.serialize()
def generate_fixture_sequence(self): if hasattr(self, "episode"): episode_id = self.episode.id else: episode_id = None self.sequence = Entity(name="S01", project_id=self.project.id, entity_type_id=self.sequence_type.id, parent_id=episode_id) self.sequence.save()
def test_get_project_and_type_assets(self): entity_type = EntityType(name="VFX") entity_type.save() entity = Entity(name="Smoke", entity_type_id=entity_type.id, project_id=self.project.id) entity.save() path_ids = (self.project.id, self.entity_type.id) path = "data/projects/%s/asset_types/%s/assets" % path_ids assets = self.get(path) self.assertEquals(len(assets), 1) self.assertDictEqual(assets[0], self.entity_dict)
def generate_fixture_shot_standard(self): self.shot_standard = Entity(name="P01", description="Description Shot 01", data={ "fps": 25, "frame_in": 0, "frame_out": 100 }, project_id=self.project_standard.id, entity_type_id=self.shot_type.id, parent_id=self.sequence_standard.id) self.shot_standard.save()
def get_or_create_sequence(project_id, episode_id, name): sequence_type = get_sequence_type() sequence = Entity.get_by(entity_type_id=sequence_type["id"], parent_id=episode_id, project_id=project_id, name=name) if sequence is None: sequence = Entity(entity_type_id=sequence_type["id"], parent_id=episode_id, project_id=project_id, name=name) sequence.save() return sequence.serialize()
def get_or_create_episode(project_id, name): """ Retrieve episode matching given project and name or create it. """ episode_type = get_episode_type() episode = Entity.get_by( entity_type_id=episode_type["id"], project_id=project_id, name=name ) if episode is None: episode = Entity( entity_type_id=episode_type["id"], project_id=project_id, name=name ) episode.save() return episode.serialize()
def create_asset(project, asset_type, name, description): name = name.capitalize() asset = Entity(project_id=project.id, entity_type_id=asset_type.id, name=name, description=description) asset.save() events.emit( "asset:new", { "asset": asset.serialize(), "asset_type": asset_type.serialize(), "project": project.serialize() }) return asset
def save_entity(self, data): entity = None entities = asset_info.get_assets({"shotgun_id": data["shotgun_id"]}) if len(entities) > 0: entity = entities[0] if entity is None: entity = Entity(**data) entity.save() current_app.logger.info("Entity created: %s" % entity) else: entity.update(data) current_app.logger.info("Entity updated: %s" % entity) return entity
def import_entry(self, data): sequence = Entity.get_by(shotgun_id=data["shotgun_id"], entity_type_id=self.sequence_type["id"]) if sequence is None: sequence = Entity(**data) sequence.save() current_app.logger.info("Sequence created: %s" % sequence) else: sequence.update(data) sequence.save() current_app.logger.info("Sequence updated: %s" % sequence) return sequence
def import_entry(self, data): episode = Entity.get_by(shotgun_id=data["shotgun_id"], entity_type_id=self.episode_type["id"]) if episode is None: episode = Entity(**data) episode.save() current_app.logger.info("Episode created: %s" % episode) else: episode.update(data) episode.save() current_app.logger.info("Episode updated: %s" % episode) return episode
def save_entity(self, data): entity = None try: entity = assets_service.get_raw_asset_by_shotgun_id( data["shotgun_id"]) entity.update(data) current_app.logger.info("Entity updated: %s" % entity) except AssetNotFoundException: if data.get("entity_type_id", None) is not None: entity = Entity(**data) entity.save() current_app.logger.info("Entity created: %s" % entity) else: current_app.logger.info("Entity ignored: %s" % data["name"]) return entity
def import_entry(self, data): scene = Entity.get_by( shotgun_id=data["shotgun_id"], entity_type_id=shots_service.get_scene_type()["id"]) if scene is None: scene = Entity(**data) scene.save() current_app.logger.info("Scene created: %s" % scene) else: scene.update(data) scene.save() current_app.logger.info("Scene updated: %s" % scene) return scene
def get_or_create_sequence(project_id, episode_id, name): """ Retrieve sequence matching given project, episode and name or create it. """ sequence_type = get_sequence_type() sequence = Entity.get_by(entity_type_id=sequence_type["id"], parent_id=episode_id, project_id=project_id, name=name) if sequence is None: sequence = Entity(entity_type_id=sequence_type["id"], parent_id=episode_id, project_id=project_id, name=name) sequence.save() return sequence.serialize()
def generate_fixture_scene(self, name="SC01", project_id=None, sequence_id=None): if project_id is None: project_id = self.project.id if sequence_id is None: sequence_id = self.sequence.id self.scene = Entity(name=name, description="Description Scene 01", data={}, project_id=project_id, entity_type_id=self.scene_type.id, parent_id=self.sequence.id) self.scene.save()
def create_asset(project_id, asset_type_id, name, description, data): project = projects_service.get_project_raw(project_id) asset_type = get_asset_type_raw(asset_type_id) asset = Entity(project_id=project_id, entity_type_id=asset_type_id, name=name, description=description, data=data) asset.save() asset_dict = asset.serialize(obj_type="Asset") events.emit( "asset:new", { "asset": asset_dict, "asset_type": asset_type.serialize(obj_type="AssetType"), "project": project.serialize() }) return asset_dict
def import_entry(self, data): shot = Entity.get_by(shotgun_id=data["shotgun_id"], entity_type_id=shot_info.get_shot_type().id) if shot is None: shot = Entity(**data) shot.save() current_app.logger.info("Shot created: %s" % shot) else: if shot.data is None: shot.data = {} shot.update(data) shot.data.update(data["data"]) shot.save() current_app.logger.info("Shot updated: %s" % shot) return shot
def generate_fixture_sequence_standard(self): self.sequence_standard = Entity(name="S01", project_id=self.project_standard.id, entity_type_id=self.sequence_type.id) self.sequence_standard.save()
def generate_fixture_entity_camera(self): self.entity_camera = Entity(name="Main camera", description="Description Camera", project_id=self.project.id, entity_type_id=self.entity_type_camera.id) self.entity_camera.save()
def generate_fixture_entity_standard(self): self.entity_standard = Entity(name="Car", project_id=self.project_standard.id, entity_type_id=self.entity_type.id) self.entity_standard.save()
def generate_fixture_entity(self): self.entity = Entity(name="Tree", description="Description Tree", project_id=self.project.id, entity_type_id=self.entity_type.id) self.entity.save()
def generate_fixture_episode(self): self.episode = Entity(name="E01", project_id=self.project.id, entity_type_id=self.episode_type.id) self.episode.save()