zou 0.20.11__tar.gz → 0.20.13__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {zou-0.20.11/zou.egg-info → zou-0.20.13}/PKG-INFO +8 -8
- {zou-0.20.11 → zou-0.20.13}/setup.cfg +7 -7
- zou-0.20.13/zou/__init__.py +1 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/__init__.py +4 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/assets/resources.py +1 -1
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/preview_file.py +3 -1
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/index/resources.py +1 -1
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/projects/resources.py +9 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/source/csv/task_type_estimations.py +3 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/tasks/resources.py +4 -2
- {zou-0.20.11 → zou-0.20.13}/zou/app/config.py +1 -1
- {zou-0.20.11 → zou-0.20.13}/zou/app/indexer/indexing.py +29 -18
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/entity_type.py +21 -10
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/metadata_descriptor.py +24 -10
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/person.py +10 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/services/comments_service.py +15 -14
- {zou-0.20.11 → zou-0.20.13}/zou/app/services/index_service.py +19 -8
- {zou-0.20.11 → zou-0.20.13}/zou/app/services/tasks_service.py +11 -19
- {zou-0.20.11 → zou-0.20.13}/zou/app/services/user_service.py +1 -1
- {zou-0.20.11 → zou-0.20.13}/zou/cli.py +0 -8
- zou-0.20.13/zou/migrations/versions/20a8ad264659_tasktypeassettypelink_.py +132 -0
- zou-0.20.13/zou/migrations/versions/539a3a00c417_for_departmentlink_index_person_id_.py +50 -0
- {zou-0.20.11 → zou-0.20.13/zou.egg-info}/PKG-INFO +8 -8
- {zou-0.20.11 → zou-0.20.13}/zou.egg-info/SOURCES.txt +2 -0
- {zou-0.20.11 → zou-0.20.13}/zou.egg-info/requires.txt +7 -7
- zou-0.20.11/zou/__init__.py +0 -1
- {zou-0.20.11 → zou-0.20.13}/LICENSE +0 -0
- {zou-0.20.11 → zou-0.20.13}/README.rst +0 -0
- {zou-0.20.11 → zou-0.20.13}/pyproject.toml +0 -0
- {zou-0.20.11 → zou-0.20.13}/setup.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/api.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/__init__.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/assets/__init__.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/auth/__init__.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/auth/resources.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/breakdown/__init__.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/breakdown/resources.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/chats/__init__.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/chats/resources.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/comments/__init__.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/comments/resources.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/concepts/__init__.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/concepts/resources.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/__init__.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/asset_instance.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/attachment_file.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/base.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/chat.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/chat_message.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/comments.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/custom_action.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/day_off.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/department.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/entity.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/entity_link.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/entity_type.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/event.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/file_status.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/metadata_descriptor.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/milestone.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/news.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/notification.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/organisation.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/output_file.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/output_type.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/person.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/playlist.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/preview_background_file.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/project.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/project_status.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/schedule_item.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/search_filter.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/search_filter_group.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/software.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/status_automation.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/studio.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/subscription.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/task.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/task_status.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/task_type.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/time_spent.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/crud/working_file.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/edits/__init__.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/edits/resources.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/entities/__init__.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/entities/resources.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/events/__init__.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/events/resources.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/export/__init__.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/export/csv/__init__.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/export/csv/assets.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/export/csv/base.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/export/csv/casting.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/export/csv/edits.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/export/csv/persons.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/export/csv/playlists.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/export/csv/projects.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/export/csv/shots.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/export/csv/task_types.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/export/csv/tasks.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/export/csv/time_spents.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/files/__init__.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/files/resources.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/index/__init__.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/news/__init__.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/news/resources.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/persons/__init__.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/persons/resources.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/playlists/__init__.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/playlists/resources.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/previews/__init__.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/previews/resources.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/projects/__init__.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/search/__init__.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/search/resources.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/shots/__init__.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/shots/resources.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/source/__init__.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/source/csv/__init__.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/source/csv/assets.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/source/csv/base.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/source/csv/casting.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/source/csv/edits.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/source/csv/persons.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/source/csv/shots.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/source/kitsu.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/source/otio.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/source/shotgun/__init__.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/source/shotgun/assets.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/source/shotgun/base.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/source/shotgun/episode.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/source/shotgun/exception.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/source/shotgun/import_errors.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/source/shotgun/notes.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/source/shotgun/person.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/source/shotgun/project.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/source/shotgun/scene.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/source/shotgun/sequence.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/source/shotgun/shot.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/source/shotgun/status.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/source/shotgun/steps.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/source/shotgun/tasks.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/source/shotgun/team.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/source/shotgun/versions.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/tasks/__init__.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/user/__init__.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/blueprints/user/resources.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/file_trees/default.json +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/file_trees/simple.json +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/indexer/__init__.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/mixin.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/__init__.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/asset_instance.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/attachment_file.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/base.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/build_job.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/chat.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/chat_message.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/comment.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/custom_action.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/data_import_error.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/day_off.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/department.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/desktop_login_log.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/entity.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/event.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/file_status.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/login_log.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/milestone.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/news.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/notification.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/organisation.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/output_file.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/output_type.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/playlist.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/preview_background_file.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/preview_file.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/project.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/project_status.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/schedule_item.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/search_filter.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/search_filter_group.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/serializer.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/software.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/status_automation.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/studio.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/subscription.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/task.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/task_status.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/task_type.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/time_spent.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/models/working_file.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/services/__init__.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/services/assets_service.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/services/auth_service.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/services/backup_service.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/services/base_service.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/services/breakdown_service.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/services/chats_service.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/services/concepts_service.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/services/custom_actions_service.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/services/deletion_service.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/services/edits_service.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/services/emails_service.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/services/entities_service.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/services/events_service.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/services/exception.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/services/file_tree_service.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/services/files_service.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/services/names_service.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/services/news_service.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/services/notifications_service.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/services/persons_service.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/services/playlists_service.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/services/preview_files_service.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/services/projects_service.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/services/scenes_service.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/services/schedule_service.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/services/shots_service.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/services/stats_service.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/services/status_automations_service.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/services/sync_service.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/services/telemetry_services.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/services/time_spents_service.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/stores/__init__.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/stores/auth_tokens_store.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/stores/file_store.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/stores/publisher_store.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/stores/queue_store.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/swagger.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/utils/__init__.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/utils/api.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/utils/auth.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/utils/cache.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/utils/chats.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/utils/colors.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/utils/commands.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/utils/csv_utils.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/utils/date_helpers.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/utils/dbhelpers.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/utils/emails.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/utils/env.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/utils/events.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/utils/fido.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/utils/fields.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/utils/flask.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/utils/fs.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/utils/git.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/utils/logs.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/utils/monitoring.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/utils/permissions.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/utils/query.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/utils/redis.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/utils/remote_job.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/utils/saml.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/utils/shell.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/utils/string.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/app/utils/thumbnail.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/debug.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/event_stream.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/job_settings.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/README +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/__init__.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/alembic.ini +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/env.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/script.py.mako +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/utils/__init__.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/utils/base.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/003be8a91001_add_start_and_end_dates_to_projects.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/0596674df51d_add_department_mentions_to_comments.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/05ac7e8caa21_remove_unique_constraint_for_taskstatus_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/05b7dc79a416_add_archived_fields_to_main_tables.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/0cf5e0e035fa_drop_column_tasktype_for_shots.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/0ec3762a745d_add_attachment_table.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/0ef6416a507b_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/10cf267d95c9_fix_schedule_item.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/16328eae4b5f_add_new_constraint_for_timespent.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/16df47d76c64_add_some_indexes.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/17ef8f7be758_disallow_null_choicetype.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/1bb55759146f_add_table_studio.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/1cb44194db49_add_file_size_field_to_preview_file.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/1e150c2cea4d_add_nb_entities_out.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/1e2d77a2f0c4_add_hd_by_default_column.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/1fab8c420678_add_attachments_to_message_chats.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/20dfeb36142b_add_projecttaskstatuslink_roles_for_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/23122f290ca2_add_entity_chat_models.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/269d41bfb73f_add_entity_entity_links.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/29df910f04a4_create_unique_constraint_project_id_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/29fe01a6c9eb_add_status_automation_field.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/2adc020885fa_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/2baede80b111_add_entity_status_field.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/306266361f4f_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/328fd44c6347_add_entity_created_by.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/32f134ff1201_add_is_shared_flag_to_filters.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/346250b5304c_add_position_to_preview_files.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/3476e147e632_add_acks_to_comments.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/389cfb9de776_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/38baa9a23b3d_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/398150912a3f_validation_status_preview.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/3b0d1321079e_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/3d5c93bafb9d_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/3e0538ddf80f_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/3fee3bd10f9d_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/4095103c7d01_add_is_clients_isolated_flag_to_projects.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/40dea9555940_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/42ec83db6a01_change_person_preferred_two_factor_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/43d0cf0ed5e7_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/443d1e78a932_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/45c2de366e66_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/45dafbb3f4e1_for_person_contract_type_disallow_null.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/4715c2586036_add_last_preview_file_fields.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/4e3738cdc34c_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/4f2398ebcd49_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/523ee9647bee_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/54ee0d1d60ba_add_build_job_model.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/556526e47daa_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/57222395f2be_add_statusautomation_import_last_revision.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/5798d2c9020b_change_person_role_to_choicetype.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/590aa1ffe731_add_notifications_enabled_flag.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/59a7445a966c_add_entity_is_shared.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/5a291251823c_add_max_retake_parameter.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/5ab9d7a75887_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/5b0fcbb94f24_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/5b7fa3e51701_add_is_client_allowed_flag_to_task_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/5b980f0dc365_add_comment_links.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/5b9fd9ddfe43_add_homepage_and_contract_fields.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/5c0498e264bc_add_slack_fields.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/5e2ce62632a6_add_workflow_to_project.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/680c64565f9d_for_searchfiltergroup_is_shared.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/693cc511d28d_add_taskstatus_priority.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/6aa446ee4072_add_is_for_all_flage_to_playlists.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/6bd3b102d61b_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/6c597e842afa_add_task_type_field_to_playlists.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/6d1b2c60f58b_add_milestone_model.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/6d7fa5a8e9a5_add_timesheets_locked_field_to_org.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/6eeaff945706_add_data_field_on_entity_links.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/6f6049877105_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/7417c8eb70d8_add_for_entity_field_to_playlists.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/772a5e43f05b_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/7748d3d22925_add_columns_to_searchfilter_table_to_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/77d6820f494f_add_reply_to_notif.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/7b1f765677d8_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/7bc746997e8d_add_slack_token_field_to_organisation.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/7dc79d4ed7cd_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/818f7bda2528_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/82e7f7a95e84_add_project_id_to_events.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/82ee682204ab_add_is_generated_from_ldap_column_to_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/8588f254d6b8_add_archived_fields.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/8739ae9fa28b_add_for_client_field.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/87efceb6745b_add_ready_for_to_entity.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/892b264937ec_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/8a1b4a1b7f4a_add_totp_columns_for_person.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/8e4f39e321f4_add_day_off_table.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/8e67c183bed7_add_preference_fields.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/8fbd40afbe5f_allow_to_set_float_values_for_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/9010a64e5a2d_add_indices.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/9060dd4f6116_notification_uc.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/925771029620_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/92b40d79ad3f_allow_message_attachments.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/92bdfe07e5f5_discord_integration.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/956659992419_add_columns_for_person_to_store_fido_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/96c79d31e648_add_mail_otp_columns_for_person.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/96f58a4a2a58_person_partial_index_for_email_only_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/971dbf5a0faf_add_short_name_for_asset_type_entity_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/98c90621cf58_add_for_client_flag_to_playlist.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/99825b9cc778_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/9a09467f9b2c_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/9b85c14fa8a7_add_day_off_new_columns.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/9bd17364fc18_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/9d3bb33c6fc6_add_department_keys_to_filter_models.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/9e5b3a9b0cee_add_new_column_metadatadescriptor_data_type_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/9f8445f9b42c_add_man_days_fields.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/a23682ccc1f1_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/a252a094e977_add_descriptions_for_entities_tasks_and_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/a519c710877c_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/a65bdadbae2f_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/a66508788c53_add_nb_assets_ready.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/a6c25eed3ea1_add_login_failed_attemps_and_last_login_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/a7c43f3fbc76_add_duration_column_to_the_preview_file.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/aa0a60033106_feedback_request.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/addbbefa7028_add_departments_link_to_metadata_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/ae0127f2fc56_add_previewfile_width_and_previewfile_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/af1790868e2c_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/b45cb782bb9c_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/b4dd0add5f79_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/b8c0a0f9d054_drop_task_status_is_reviewable.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/b8ed0fb263f8_add_person_jti_and_jti_expiration_date.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/b97a71306fc8_add_is_casting_standby_column_to_entity.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/be56dc0fb760_for_is_shared_disallow_nullable.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/bf1347acdee2_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/c49e41f1298b_add_previewbackground.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/c68c2a62cfac_add_mimetype_column_to_attachment.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/c726b98be194_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/c81f3e83bdb5_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/ca28796a2a62_add_is_done_field_to_the_task_model.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/cf3d365de164_add_entity_version_model.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/cf6cec6d6bf5_add_status_field_to_preview_file.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/d80267806131_task_status_new_column_is_default.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/d8dcd5196d57_add_casting_label.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/de8a3de227ef_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/deeacd38d373_for_projecttaskstatuslink_set_default_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/df1834485f57_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/df9f8a147e80_change_file_size_to_big_integer.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/e1ef93f40d3d_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/e29638428dfd_add_schedule_item_table.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/e3f6db74cc1e_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/e839d6603c09_add_person_id_to_shot_history.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/ee2373fbe3a4_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/f0567e8d0c62_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/f0c6cbb61869_add_production_style_field.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/f344b867a911_for_description_of_entity_task_working_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/f4ff5a73d283_add_person_ldap_uid.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/f5b113876a49_add_preferred_two_factor_authentication_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/f5bdca075cdc_add_preview_download_flag_to_projects.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/f874ad5e898a_add_link_entity_type_task_type.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/f995b28fb749_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/fb6b6f188497_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/fb87feaaa094_add_missing_unique_constraints.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/fc322f908695_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/fee7c696166e_.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/feffd3c5b806_introduce_concepts.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/migrations/versions/ffeed4956ab1_add_more_details_to_projects.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/remote/__init__.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/remote/config_payload.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/remote/normalize_movie.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/remote/playlist.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/utils/__init__.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou/utils/movie.py +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou.egg-info/dependency_links.txt +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou.egg-info/entry_points.txt +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou.egg-info/not-zip-safe +0 -0
- {zou-0.20.11 → zou-0.20.13}/zou.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: zou
|
|
3
|
-
Version: 0.20.
|
|
3
|
+
Version: 0.20.13
|
|
4
4
|
Summary: API to store and manage the data of your animation production
|
|
5
5
|
Home-page: https://zou.cg-wire.com
|
|
6
6
|
Author: CG Wire
|
|
@@ -41,7 +41,7 @@ Requires-Dist: flask-jwt-extended==4.7.1
|
|
|
41
41
|
Requires-Dist: flask-migrate==4.1.0
|
|
42
42
|
Requires-Dist: flask-socketio==5.5.1
|
|
43
43
|
Requires-Dist: flask==3.1.0
|
|
44
|
-
Requires-Dist: gazu==0.10.
|
|
44
|
+
Requires-Dist: gazu==0.10.25
|
|
45
45
|
Requires-Dist: gevent-websocket==0.10.1
|
|
46
46
|
Requires-Dist: gevent==24.11.1
|
|
47
47
|
Requires-Dist: gunicorn==23.0.0
|
|
@@ -52,14 +52,14 @@ Requires-Dist: ldap3==2.9.1
|
|
|
52
52
|
Requires-Dist: matterhook==0.2
|
|
53
53
|
Requires-Dist: meilisearch==0.33.1
|
|
54
54
|
Requires-Dist: numpy==2.0.1; python_version == "3.9"
|
|
55
|
-
Requires-Dist: numpy==2.2.
|
|
56
|
-
Requires-Dist: opencv-python==4.
|
|
55
|
+
Requires-Dist: numpy==2.2.2; python_version >= "3.10"
|
|
56
|
+
Requires-Dist: opencv-python==4.11.0.86
|
|
57
57
|
Requires-Dist: OpenTimelineIO==0.17.0
|
|
58
58
|
Requires-Dist: OpenTimelineIO-Plugins==0.17.0
|
|
59
|
-
Requires-Dist: orjson==3.10.
|
|
59
|
+
Requires-Dist: orjson==3.10.15
|
|
60
60
|
Requires-Dist: pillow==11.1.0
|
|
61
61
|
Requires-Dist: psutil==6.1.1
|
|
62
|
-
Requires-Dist: psycopg[binary]==3.2.
|
|
62
|
+
Requires-Dist: psycopg[binary]==3.2.4
|
|
63
63
|
Requires-Dist: pyotp==2.9.0
|
|
64
64
|
Requires-Dist: pysaml2==7.5.0
|
|
65
65
|
Requires-Dist: python-nomad==2.0.1
|
|
@@ -87,11 +87,11 @@ Requires-Dist: pytest==8.3.4; extra == "test"
|
|
|
87
87
|
Provides-Extra: monitoring
|
|
88
88
|
Requires-Dist: prometheus-flask-exporter==0.23.1; extra == "monitoring"
|
|
89
89
|
Requires-Dist: pygelf==0.4.2; extra == "monitoring"
|
|
90
|
-
Requires-Dist: sentry-sdk==2.
|
|
90
|
+
Requires-Dist: sentry-sdk==2.20.0; extra == "monitoring"
|
|
91
91
|
Provides-Extra: lint
|
|
92
92
|
Requires-Dist: autoflake==2.3.1; extra == "lint"
|
|
93
93
|
Requires-Dist: black==24.10.0; extra == "lint"
|
|
94
|
-
Requires-Dist: pre-commit==4.0
|
|
94
|
+
Requires-Dist: pre-commit==4.1.0; extra == "lint"
|
|
95
95
|
Dynamic: requires-python
|
|
96
96
|
|
|
97
97
|
.. figure:: https://zou.cg-wire.com/kitsu.png
|
|
@@ -47,7 +47,7 @@ install_requires =
|
|
|
47
47
|
flask-migrate==4.1.0
|
|
48
48
|
flask-socketio==5.5.1
|
|
49
49
|
flask==3.1.0
|
|
50
|
-
gazu==0.10.
|
|
50
|
+
gazu==0.10.25
|
|
51
51
|
gevent-websocket==0.10.1
|
|
52
52
|
gevent==24.11.1
|
|
53
53
|
gunicorn==23.0.0
|
|
@@ -58,14 +58,14 @@ install_requires =
|
|
|
58
58
|
matterhook==0.2
|
|
59
59
|
meilisearch==0.33.1
|
|
60
60
|
numpy==2.0.1; python_version == '3.9'
|
|
61
|
-
numpy==2.2.
|
|
62
|
-
opencv-python==4.
|
|
61
|
+
numpy==2.2.2; python_version >= '3.10'
|
|
62
|
+
opencv-python==4.11.0.86
|
|
63
63
|
OpenTimelineIO==0.17.0
|
|
64
64
|
OpenTimelineIO-Plugins==0.17.0
|
|
65
|
-
orjson==3.10.
|
|
65
|
+
orjson==3.10.15
|
|
66
66
|
pillow==11.1.0
|
|
67
67
|
psutil==6.1.1
|
|
68
|
-
psycopg[binary]==3.2.
|
|
68
|
+
psycopg[binary]==3.2.4
|
|
69
69
|
pyotp==2.9.0
|
|
70
70
|
pysaml2==7.5.0
|
|
71
71
|
python-nomad==2.0.1
|
|
@@ -101,11 +101,11 @@ test =
|
|
|
101
101
|
monitoring =
|
|
102
102
|
prometheus-flask-exporter==0.23.1
|
|
103
103
|
pygelf==0.4.2
|
|
104
|
-
sentry-sdk==2.
|
|
104
|
+
sentry-sdk==2.20.0
|
|
105
105
|
lint =
|
|
106
106
|
autoflake==2.3.1
|
|
107
107
|
black==24.10.0
|
|
108
|
-
pre-commit==4.0
|
|
108
|
+
pre-commit==4.1.0
|
|
109
109
|
|
|
110
110
|
[options.entry_points]
|
|
111
111
|
console_scripts =
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.20.13"
|
|
@@ -25,6 +25,7 @@ from meilisearch.errors import (
|
|
|
25
25
|
|
|
26
26
|
from zou.app import config, swagger
|
|
27
27
|
from zou.app.stores import auth_tokens_store, file_store
|
|
28
|
+
from zou.app.indexer import indexing
|
|
28
29
|
from zou.app.services.exception import (
|
|
29
30
|
ModelWithRelationsDeletionException,
|
|
30
31
|
PersonNotFoundException,
|
|
@@ -72,6 +73,9 @@ if config.SAML_ENABLED:
|
|
|
72
73
|
|
|
73
74
|
app.extensions["fido_server"] = get_fido_server()
|
|
74
75
|
|
|
76
|
+
if config.INDEXER.get("key") is not None:
|
|
77
|
+
app.extensions["indexer_client"] = indexing.init_client()
|
|
78
|
+
|
|
75
79
|
|
|
76
80
|
@app.teardown_appcontext
|
|
77
81
|
def shutdown_session(exception=None):
|
|
@@ -98,7 +98,9 @@ class PreviewFileResource(BaseModelResource):
|
|
|
98
98
|
instance_dict = instance.serialize()
|
|
99
99
|
self.check_delete_permissions(instance_dict)
|
|
100
100
|
self.pre_delete(instance_dict)
|
|
101
|
-
deletion_service.remove_preview_file(
|
|
101
|
+
deletion_service.remove_preview_file(
|
|
102
|
+
instance, force=self.get_force()
|
|
103
|
+
)
|
|
102
104
|
self.emit_delete_event(instance_dict)
|
|
103
105
|
self.post_delete(instance_dict)
|
|
104
106
|
|
|
@@ -11,6 +11,7 @@ from zou.app.services import (
|
|
|
11
11
|
)
|
|
12
12
|
from zou.app.utils import permissions
|
|
13
13
|
from zou.app.services.exception import WrongParameterException
|
|
14
|
+
from zou.app.models.metadata_descriptor import METADATA_DESCRIPTOR_TYPES
|
|
14
15
|
|
|
15
16
|
|
|
16
17
|
class OpenProjectsResource(Resource, ArgsMixin):
|
|
@@ -715,6 +716,10 @@ class ProductionMetadataDescriptorsResource(Resource, ArgsMixin):
|
|
|
715
716
|
if len(args["name"]) == 0:
|
|
716
717
|
raise WrongParameterException("Name cannot be empty.")
|
|
717
718
|
|
|
719
|
+
types = [type_name for type_name, _ in METADATA_DESCRIPTOR_TYPES]
|
|
720
|
+
if args["data_type"] not in types:
|
|
721
|
+
raise WrongParameterException("Invalid data_type")
|
|
722
|
+
|
|
718
723
|
return (
|
|
719
724
|
projects_service.add_metadata_descriptor(
|
|
720
725
|
project_id,
|
|
@@ -828,6 +833,10 @@ class ProductionMetadataDescriptorResource(Resource, ArgsMixin):
|
|
|
828
833
|
if len(args["name"]) == 0:
|
|
829
834
|
raise WrongParameterException("Name cannot be empty.")
|
|
830
835
|
|
|
836
|
+
types = [type_name for type_name, _ in METADATA_DESCRIPTOR_TYPES]
|
|
837
|
+
if args["data_type"] not in types:
|
|
838
|
+
raise WrongParameterException("Invalid data_type")
|
|
839
|
+
|
|
831
840
|
args["for_client"] = args["for_client"] == "True"
|
|
832
841
|
|
|
833
842
|
return projects_service.update_metadata_descriptor(descriptor_id, args)
|
|
@@ -123,6 +123,9 @@ class TaskTypeEstimationsCsvImportResource(BaseCsvProjectImportResource):
|
|
|
123
123
|
new_data["start_date"], float(row["Estimation"]) - 1
|
|
124
124
|
)
|
|
125
125
|
|
|
126
|
+
if row.get("Difficulty") not in [None, ""]:
|
|
127
|
+
new_data["difficulty"] = int(row["Difficulty"])
|
|
128
|
+
|
|
126
129
|
tasks_service.update_task(self.tasks_map[entity_id], new_data)
|
|
127
130
|
|
|
128
131
|
|
|
@@ -78,7 +78,7 @@ class AddPreviewResource(Resource, ArgsMixin):
|
|
|
78
78
|
return preview_file, 201
|
|
79
79
|
|
|
80
80
|
|
|
81
|
-
class AddExtraPreviewResource(Resource):
|
|
81
|
+
class AddExtraPreviewResource(Resource, ArgsMixin):
|
|
82
82
|
"""
|
|
83
83
|
Add a preview to given comment.
|
|
84
84
|
"""
|
|
@@ -160,7 +160,9 @@ class AddExtraPreviewResource(Resource):
|
|
|
160
160
|
"""
|
|
161
161
|
task = tasks_service.get_task(task_id)
|
|
162
162
|
user_service.check_project_access(task["project_id"])
|
|
163
|
-
deletion_service.remove_preview_file_by_id(
|
|
163
|
+
deletion_service.remove_preview_file_by_id(
|
|
164
|
+
preview_file_id, force=self.get_force()
|
|
165
|
+
)
|
|
164
166
|
return "", 204
|
|
165
167
|
|
|
166
168
|
|
|
@@ -58,7 +58,7 @@ INDEXER = {
|
|
|
58
58
|
"host": os.getenv("INDEXER_HOST", "localhost"),
|
|
59
59
|
"port": os.getenv("INDEXER_PORT", "7700"),
|
|
60
60
|
"protocol": os.getenv("INDEXER_PROTOCOL", "http"),
|
|
61
|
-
"key": os.getenv("INDEXER_KEY"
|
|
61
|
+
"key": os.getenv("INDEXER_KEY"),
|
|
62
62
|
"timeout": int(os.getenv("INDEXER_TIMEOUT", 5000)),
|
|
63
63
|
}
|
|
64
64
|
|
|
@@ -3,24 +3,35 @@ from meilisearch.errors import MeilisearchApiError
|
|
|
3
3
|
|
|
4
4
|
from zou.app import config
|
|
5
5
|
from zou.app.utils import cache
|
|
6
|
+
from flask import current_app
|
|
6
7
|
|
|
7
|
-
client = None
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
def init():
|
|
9
|
+
def init_client():
|
|
11
10
|
"""
|
|
12
11
|
Configure Meilisearch client.
|
|
13
12
|
"""
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
13
|
+
protocol = config.INDEXER["protocol"]
|
|
14
|
+
host = config.INDEXER["host"]
|
|
15
|
+
port = config.INDEXER["port"]
|
|
16
|
+
return meilisearch.Client(
|
|
17
|
+
f"{protocol}://{host}:{port}",
|
|
18
|
+
config.INDEXER["key"],
|
|
19
|
+
timeout=config.INDEXER["timeout"],
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class IndexerNotInitializedError(Exception):
|
|
24
|
+
pass
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def get_client():
|
|
28
|
+
"""
|
|
29
|
+
Get Meilisearch client.
|
|
30
|
+
"""
|
|
31
|
+
try:
|
|
32
|
+
return current_app.extensions["indexer_client"]
|
|
33
|
+
except KeyError:
|
|
34
|
+
raise IndexerNotInitializedError()
|
|
24
35
|
|
|
25
36
|
|
|
26
37
|
def create_index(index_name, searchable_fields=[], filterable_fields=[]):
|
|
@@ -34,6 +45,7 @@ def create_index(index_name, searchable_fields=[], filterable_fields=[]):
|
|
|
34
45
|
except MeilisearchApiError:
|
|
35
46
|
pass
|
|
36
47
|
if index is None:
|
|
48
|
+
client = get_client()
|
|
37
49
|
task = client.create_index(index_name, {"primaryKey": "id"})
|
|
38
50
|
client.wait_for_task(
|
|
39
51
|
task.task_uid, timeout_in_ms=config.INDEXER["timeout"]
|
|
@@ -57,8 +69,7 @@ def get_index(index_name):
|
|
|
57
69
|
"""
|
|
58
70
|
Get index matching given name.
|
|
59
71
|
"""
|
|
60
|
-
|
|
61
|
-
index = client.get_index(index_name)
|
|
72
|
+
index = get_client().get_index(index_name)
|
|
62
73
|
return index
|
|
63
74
|
|
|
64
75
|
|
|
@@ -69,7 +80,7 @@ def clear_index(index_name):
|
|
|
69
80
|
cache.cache.delete_memoized(get_index)
|
|
70
81
|
index = get_index(index_name)
|
|
71
82
|
task = index.delete_all_documents()
|
|
72
|
-
|
|
83
|
+
get_client().wait_for_task(
|
|
73
84
|
task.task_uid, timeout_in_ms=config.INDEXER["timeout"]
|
|
74
85
|
)
|
|
75
86
|
return index
|
|
@@ -80,7 +91,7 @@ def index_document(index, document):
|
|
|
80
91
|
Add given document to given index.
|
|
81
92
|
"""
|
|
82
93
|
task = index.add_documents([document])
|
|
83
|
-
|
|
94
|
+
get_client().wait_for_task(
|
|
84
95
|
task.task_uid, timeout_in_ms=config.INDEXER["timeout"]
|
|
85
96
|
)
|
|
86
97
|
return index
|
|
@@ -91,7 +102,7 @@ def index_documents(index, documents):
|
|
|
91
102
|
Add given documents to given index.
|
|
92
103
|
"""
|
|
93
104
|
task = index.add_documents(documents)
|
|
94
|
-
|
|
105
|
+
get_client().wait_for_task(
|
|
95
106
|
task.task_uid, timeout_in_ms=config.INDEXER["timeout"]
|
|
96
107
|
)
|
|
97
108
|
return documents
|
|
@@ -5,19 +5,28 @@ from zou.app.models.serializer import SerializerMixin
|
|
|
5
5
|
from zou.app.models.base import BaseMixin
|
|
6
6
|
from zou.app.models.task_type import TaskType
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
db.Column(
|
|
11
|
-
"asset_type_id",
|
|
8
|
+
|
|
9
|
+
class TaskTypeAssetTypeLink(db.Model):
|
|
10
|
+
asset_type_id = db.Column(
|
|
12
11
|
UUIDType(binary=False),
|
|
13
12
|
db.ForeignKey("entity_type.id"),
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
index=True,
|
|
14
|
+
primary_key=True,
|
|
15
|
+
)
|
|
16
|
+
task_type_id = db.Column(
|
|
17
17
|
UUIDType(binary=False),
|
|
18
18
|
db.ForeignKey("task_type.id"),
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
index=True,
|
|
20
|
+
primary_key=True,
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
__table_args__ = (
|
|
24
|
+
db.UniqueConstraint(
|
|
25
|
+
"asset_type_id",
|
|
26
|
+
"task_type_id",
|
|
27
|
+
name="task_type_asset_type_link_uc",
|
|
28
|
+
),
|
|
29
|
+
)
|
|
21
30
|
|
|
22
31
|
|
|
23
32
|
class EntityType(db.Model, BaseMixin, SerializerMixin):
|
|
@@ -30,7 +39,9 @@ class EntityType(db.Model, BaseMixin, SerializerMixin):
|
|
|
30
39
|
short_name = db.Column(db.String(20))
|
|
31
40
|
description = db.Column(db.Text())
|
|
32
41
|
task_types = db.relationship(
|
|
33
|
-
|
|
42
|
+
TaskType,
|
|
43
|
+
secondary=TaskTypeAssetTypeLink.__table__,
|
|
44
|
+
lazy="joined",
|
|
34
45
|
)
|
|
35
46
|
archived = db.Column(db.Boolean(), default=False)
|
|
36
47
|
|
|
@@ -4,18 +4,31 @@ from sqlalchemy.dialects.postgresql import JSONB
|
|
|
4
4
|
from zou.app import db
|
|
5
5
|
from zou.app.models.serializer import SerializerMixin
|
|
6
6
|
from zou.app.models.base import BaseMixin
|
|
7
|
+
from zou.app.models.department import Department
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
db.Column(
|
|
11
|
-
"metadata_descriptor_id",
|
|
9
|
+
|
|
10
|
+
class DepartmentMetadataDescriptorLink(db.Model):
|
|
11
|
+
metadata_descriptor_id = db.Column(
|
|
12
12
|
UUIDType(binary=False),
|
|
13
13
|
db.ForeignKey("metadata_descriptor.id"),
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
)
|
|
14
|
+
index=True,
|
|
15
|
+
primary_key=True,
|
|
16
|
+
)
|
|
17
|
+
department_id = db.Column(
|
|
18
|
+
UUIDType(binary=False),
|
|
19
|
+
db.ForeignKey("department.id"),
|
|
20
|
+
index=True,
|
|
21
|
+
primary_key=True,
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
__table_args__ = (
|
|
25
|
+
db.UniqueConstraint(
|
|
26
|
+
"metadata_descriptor_id",
|
|
27
|
+
"department_id",
|
|
28
|
+
name="department_metadata_descriptor_link_uc",
|
|
29
|
+
),
|
|
30
|
+
)
|
|
31
|
+
|
|
19
32
|
|
|
20
33
|
METADATA_DESCRIPTOR_TYPES = [
|
|
21
34
|
("string", "String"),
|
|
@@ -46,7 +59,8 @@ class MetadataDescriptor(db.Model, BaseMixin, SerializerMixin):
|
|
|
46
59
|
choices = db.Column(JSONB)
|
|
47
60
|
for_client = db.Column(db.Boolean(), default=False, index=True)
|
|
48
61
|
departments = db.relationship(
|
|
49
|
-
|
|
62
|
+
Department,
|
|
63
|
+
secondary=DepartmentMetadataDescriptorLink.__table__,
|
|
50
64
|
)
|
|
51
65
|
|
|
52
66
|
__table_args__ = (
|
|
@@ -49,11 +49,21 @@ class DepartmentLink(db.Model):
|
|
|
49
49
|
UUIDType(binary=False),
|
|
50
50
|
db.ForeignKey("person.id"),
|
|
51
51
|
primary_key=True,
|
|
52
|
+
index=True,
|
|
52
53
|
)
|
|
53
54
|
department_id = db.Column(
|
|
54
55
|
UUIDType(binary=False),
|
|
55
56
|
db.ForeignKey("department.id"),
|
|
56
57
|
primary_key=True,
|
|
58
|
+
index=True,
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
__table_args__ = (
|
|
62
|
+
db.UniqueConstraint(
|
|
63
|
+
"person_id",
|
|
64
|
+
"department_id",
|
|
65
|
+
name="department_link_uc",
|
|
66
|
+
),
|
|
57
67
|
)
|
|
58
68
|
|
|
59
69
|
|
|
@@ -252,24 +252,25 @@ def _run_status_automation(automation, task, person_id):
|
|
|
252
252
|
task["id"]
|
|
253
253
|
)
|
|
254
254
|
)
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
255
|
+
if preview_file is not None:
|
|
256
|
+
preview_files = (
|
|
257
|
+
preview_files_service.get_preview_files_for_revision(
|
|
258
|
+
preview_file["task_id"], preview_file["revision"]
|
|
259
|
+
)
|
|
258
260
|
)
|
|
259
|
-
)
|
|
260
261
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
262
|
+
for preview_file in preview_files:
|
|
263
|
+
new_preview_file = (
|
|
264
|
+
tasks_service.add_preview_file_to_comment(
|
|
265
|
+
new_comment["id"],
|
|
266
|
+
new_comment["person_id"],
|
|
267
|
+
task_to_update["id"],
|
|
268
|
+
)
|
|
267
269
|
)
|
|
268
|
-
)
|
|
269
270
|
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
271
|
+
preview_files_service.copy_preview_file_in_another_one(
|
|
272
|
+
preview_file["id"], new_preview_file["id"]
|
|
273
|
+
)
|
|
273
274
|
|
|
274
275
|
elif automation["out_field_type"] == "ready_for":
|
|
275
276
|
try:
|
|
@@ -12,9 +12,8 @@ from zou.app.services import (
|
|
|
12
12
|
|
|
13
13
|
def get_index(index_name):
|
|
14
14
|
"""
|
|
15
|
-
Retrieve
|
|
15
|
+
Retrieve meilisearch index from disk. It is required to perform any operations.
|
|
16
16
|
"""
|
|
17
|
-
indexing.init()
|
|
18
17
|
return indexing.get_index(index_name)
|
|
19
18
|
|
|
20
19
|
|
|
@@ -193,9 +192,11 @@ def index_asset(asset):
|
|
|
193
192
|
document = prepare_asset(asset)
|
|
194
193
|
indexing.index_document(index, document)
|
|
195
194
|
return document
|
|
195
|
+
except indexing.IndexerNotInitializedError:
|
|
196
|
+
pass
|
|
196
197
|
except:
|
|
197
198
|
app.logger.error("Indexer is not reachable, indexation failed.")
|
|
198
|
-
|
|
199
|
+
return {}
|
|
199
200
|
|
|
200
201
|
|
|
201
202
|
def index_person(person):
|
|
@@ -207,9 +208,11 @@ def index_person(person):
|
|
|
207
208
|
document = prepare_person(person)
|
|
208
209
|
indexing.index_document(index, document)
|
|
209
210
|
return document
|
|
211
|
+
except indexing.IndexerNotInitializedError:
|
|
212
|
+
pass
|
|
210
213
|
except:
|
|
211
214
|
app.logger.error("Indexer is not reachable, indexation failed.")
|
|
212
|
-
|
|
215
|
+
return {}
|
|
213
216
|
|
|
214
217
|
|
|
215
218
|
def index_shot(shot):
|
|
@@ -221,9 +224,11 @@ def index_shot(shot):
|
|
|
221
224
|
document = prepare_shot(shot)
|
|
222
225
|
indexing.index_document(index, document)
|
|
223
226
|
return document
|
|
227
|
+
except indexing.IndexerNotInitializedError:
|
|
228
|
+
pass
|
|
224
229
|
except:
|
|
225
230
|
app.logger.error("Indexer is not reachable, indexation failed.")
|
|
226
|
-
|
|
231
|
+
return {}
|
|
227
232
|
|
|
228
233
|
|
|
229
234
|
def prepare_asset(asset):
|
|
@@ -320,9 +325,11 @@ def remove_asset_index(asset_id):
|
|
|
320
325
|
"""
|
|
321
326
|
try:
|
|
322
327
|
return indexing.remove_document(get_asset_index(), asset_id)
|
|
328
|
+
except indexing.IndexerNotInitializedError:
|
|
329
|
+
pass
|
|
323
330
|
except:
|
|
324
331
|
app.logger.error("Indexer is not reachable, indexation failed.")
|
|
325
|
-
|
|
332
|
+
return {}
|
|
326
333
|
|
|
327
334
|
|
|
328
335
|
def remove_person_index(person_id):
|
|
@@ -331,9 +338,11 @@ def remove_person_index(person_id):
|
|
|
331
338
|
"""
|
|
332
339
|
try:
|
|
333
340
|
return indexing.remove_document(get_person_index(), person_id)
|
|
341
|
+
except indexing.IndexerNotInitializedError:
|
|
342
|
+
pass
|
|
334
343
|
except:
|
|
335
344
|
app.logger.error("Indexer is not reachable, indexation failed.")
|
|
336
|
-
|
|
345
|
+
return {}
|
|
337
346
|
|
|
338
347
|
|
|
339
348
|
def remove_shot_index(shot_id):
|
|
@@ -342,6 +351,8 @@ def remove_shot_index(shot_id):
|
|
|
342
351
|
"""
|
|
343
352
|
try:
|
|
344
353
|
return indexing.remove_document(get_shot_index(), shot_id)
|
|
354
|
+
except indexing.IndexerNotInitializedError:
|
|
355
|
+
pass
|
|
345
356
|
except:
|
|
346
357
|
app.logger.error("Indexer is not reachable, indexation failed.")
|
|
347
|
-
|
|
358
|
+
return {}
|
|
@@ -376,25 +376,17 @@ def _get_entity_task_query():
|
|
|
376
376
|
|
|
377
377
|
|
|
378
378
|
def _convert_rows_to_detailed_tasks(rows, relations=False):
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
task = get_task(str(task_object.id), relations=relations)
|
|
391
|
-
task["project_name"] = project_name
|
|
392
|
-
task["task_type_name"] = task_type_name
|
|
393
|
-
task["task_status_name"] = task_status_name
|
|
394
|
-
task["entity_type_name"] = entity_type_name
|
|
395
|
-
task["entity_name"] = entity_name
|
|
396
|
-
results.append(task)
|
|
397
|
-
return results
|
|
379
|
+
return [
|
|
380
|
+
{
|
|
381
|
+
**task_object.serialize(relations=relations),
|
|
382
|
+
"project_name": project_name,
|
|
383
|
+
"task_type_name": task_type_name,
|
|
384
|
+
"task_status_name": task_status_name,
|
|
385
|
+
"entity_type_name": entity_type_name,
|
|
386
|
+
"entity_name": entity_name,
|
|
387
|
+
}
|
|
388
|
+
for task_object, project_name, task_type_name, task_status_name, entity_type_name, entity_name in rows
|
|
389
|
+
]
|
|
398
390
|
|
|
399
391
|
|
|
400
392
|
def get_task_types_for_shot(shot_id):
|
|
@@ -1424,7 +1424,7 @@ def get_last_notifications(
|
|
|
1424
1424
|
)
|
|
1425
1425
|
reply_mentions = reply.get("mentions", []) or []
|
|
1426
1426
|
reply_department_mentions = (
|
|
1427
|
-
reply.get("
|
|
1427
|
+
reply.get("department_mentions", []) or []
|
|
1428
1428
|
)
|
|
1429
1429
|
if reply is not None:
|
|
1430
1430
|
reply_text = reply["text"]
|
|
@@ -507,14 +507,6 @@ def reset_search_index():
|
|
|
507
507
|
commands.reset_search_index()
|
|
508
508
|
|
|
509
509
|
|
|
510
|
-
@cli.command()
|
|
511
|
-
def init_search_index():
|
|
512
|
-
"""
|
|
513
|
-
Init search index.
|
|
514
|
-
"""
|
|
515
|
-
commands.init_search_index()
|
|
516
|
-
|
|
517
|
-
|
|
518
510
|
@cli.command()
|
|
519
511
|
@click.option("--query", default="")
|
|
520
512
|
def search_asset(query):
|