def remove_episode(episode_id, force=False): """ Remove an episode and all related sequences and shots. """ from zou.app.services import shots_service, assets_service episode = shots_service.get_episode_raw(episode_id) if force: for sequence in Entity.get_all_by(parent_id=episode_id): shots_service.remove_sequence(sequence.id, force=True) for asset in Entity.get_all_by(source_id=episode_id): assets_service.remove_asset(asset.id, force=True) Playlist.delete_all_by(episode_id=episode_id) ScheduleItem.delete_all_by(object_id=episode_id) try: episode.delete() events.emit( "episode:delete", {"episode_id": episode_id}, project_id=str(episode.project_id), ) except IntegrityError: raise ModelWithRelationsDeletionException( "Some data are still linked to this episode.") shots_service.clear_episode_cache(episode_id) return episode.serialize(obj_type="Episode")
def remove_person(person_id, force=True): person = Person.get(person_id) if force: for comment in Comment.get_all_by(person_id=person_id): remove_comment(comment.id) comments = Comment.query.filter( Comment.acknowledgements.contains(person) ) for comment in comments: comment.acknowledgements = [ member for member in comment.acknowledgements if str(member.id) != person_id ] comment.save() ApiEvent.delete_all_by(user_id=person_id) Notification.delete_all_by(person_id=person_id) SearchFilter.delete_all_by(person_id=person_id) DesktopLoginLog.delete_all_by(person_id=person_id) LoginLog.delete_all_by(person_id=person_id) Subscription.delete_all_by(person_id=person_id) TimeSpent.delete_all_by(person_id=person_id) for project in Project.query.filter(Project.team.contains(person)): project.team = [ member for member in project.team if str(member.id) != person_id ] project.save() for task in Task.query.filter(Task.assignees.contains(person)): task.assignees = [ assignee for assignee in task.assignees if str(assignee.id) != person_id ] task.save() for task in Task.get_all_by(assigner_id=person_id): task.update({"assigner_id": None}) for output_file in OutputFile.get_all_by(person_id=person_id): output_file.update({"person_id": None}) for working_file in WorkingFile.get_all_by(person_id=person_id): output_file.update({"person_id": None}) for task in WorkingFile.get_all_by(person_id=person_id): output_file.update({"person_id": None}) try: person.delete() events.emit("person:delete", {"person_id": person.id}) except IntegrityError: raise ModelWithRelationsDeletionException( "Some data are still linked to given person." ) return person.serialize_safe()
def remove_episode(episode_id, force=False): """ Remove an episode and all related sequences and shots. """ episode = get_episode_raw(episode_id) if force: for sequence in Entity.get_all_by(parent_id=episode_id): remove_sequence(sequence.id, force=True) try: episode.delete() except IntegrityError: raise ModelWithRelationsDeletionException( "Some data are still linked to this episode.") return episode.serialize(obj_type="Episode")
def remove_sequence(sequence_id, force=False): """ Remove a sequence and all related shots. """ sequence = get_sequence_raw(sequence_id) if force: for shot in Entity.get_all_by(parent_id=sequence_id): remove_shot(shot.id, force=True) Subscription.delete_all_by(entity_id=sequence_id) try: sequence.delete() except IntegrityError: raise ModelWithRelationsDeletionException( "Some data are still linked to this sequence.") return sequence.serialize(obj_type="Sequence")
def remove_sequence(sequence_id, force=False): """ Remove a sequence and all related shots. """ sequence = get_sequence_raw(sequence_id) if force: for shot in Entity.get_all_by(parent_id=sequence_id): remove_shot(shot.id, force=True) Subscription.delete_all_by(entity_id=sequence_id) ScheduleItem.delete_all_by(object_id=sequence_id) try: sequence.delete() events.emit( "sequence:delete", {"sequence_id": sequence_id}, project_id=str(sequence.project_id), ) except IntegrityError: raise ModelWithRelationsDeletionException( "Some data are still linked to this sequence.") clear_sequence_cache(sequence_id) return sequence.serialize(obj_type="Sequence")