zou 0.19.56__tar.gz → 0.19.57__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.19.56/zou.egg-info → zou-0.19.57}/PKG-INFO +8 -8
- {zou-0.19.56 → zou-0.19.57}/setup.cfg +7 -7
- zou-0.19.57/zou/__init__.py +1 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/chats/resources.py +3 -1
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/day_off.py +6 -2
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/entity_type.py +3 -6
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/project.py +6 -2
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/schedule_item.py +3 -1
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/export/csv/playlists.py +1 -1
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/export/csv/time_spents.py +1 -1
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/previews/resources.py +3 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/user/__init__.py +5 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/user/resources.py +49 -5
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/organisation.py +5 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/project.py +3 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/subscription.py +2 -2
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/task.py +4 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/services/assets_service.py +7 -4
- {zou-0.19.56 → zou-0.19.57}/zou/app/services/chats_service.py +1 -1
- {zou-0.19.56 → zou-0.19.57}/zou/app/services/emails_service.py +1 -1
- {zou-0.19.56 → zou-0.19.57}/zou/app/services/entities_service.py +3 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/services/names_service.py +2 -2
- {zou-0.19.56 → zou-0.19.57}/zou/app/services/news_service.py +1 -1
- {zou-0.19.56 → zou-0.19.57}/zou/app/services/preview_files_service.py +1 -1
- {zou-0.19.56 → zou-0.19.57}/zou/app/services/shots_service.py +6 -3
- {zou-0.19.56 → zou-0.19.57}/zou/app/services/user_service.py +55 -9
- zou-0.19.57/zou/migrations/versions/8e67c183bed7_add_preference_fields.py +71 -0
- {zou-0.19.56 → zou-0.19.57/zou.egg-info}/PKG-INFO +8 -8
- {zou-0.19.56 → zou-0.19.57}/zou.egg-info/SOURCES.txt +1 -0
- {zou-0.19.56 → zou-0.19.57}/zou.egg-info/requires.txt +7 -9
- zou-0.19.56/zou/__init__.py +0 -1
- {zou-0.19.56 → zou-0.19.57}/LICENSE +0 -0
- {zou-0.19.56 → zou-0.19.57}/README.rst +0 -0
- {zou-0.19.56 → zou-0.19.57}/pyproject.toml +0 -0
- {zou-0.19.56 → zou-0.19.57}/setup.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/__init__.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/api.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/__init__.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/assets/__init__.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/assets/resources.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/auth/__init__.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/auth/resources.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/breakdown/__init__.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/breakdown/resources.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/chats/__init__.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/comments/__init__.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/comments/resources.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/concepts/__init__.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/concepts/resources.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/__init__.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/asset_instance.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/attachment_file.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/base.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/chat.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/chat_message.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/comments.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/custom_action.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/department.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/entity.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/entity_link.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/event.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/file_status.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/metadata_descriptor.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/milestone.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/news.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/notification.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/organisation.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/output_file.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/output_type.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/person.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/playlist.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/preview_background_file.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/preview_file.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/project_status.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/search_filter.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/search_filter_group.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/software.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/status_automation.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/studio.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/subscription.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/task.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/task_status.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/task_type.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/time_spent.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/crud/working_file.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/edits/__init__.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/edits/resources.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/entities/__init__.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/entities/resources.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/events/__init__.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/events/resources.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/export/__init__.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/export/csv/__init__.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/export/csv/assets.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/export/csv/base.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/export/csv/casting.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/export/csv/edits.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/export/csv/persons.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/export/csv/projects.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/export/csv/shots.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/export/csv/task_types.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/export/csv/tasks.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/files/__init__.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/files/resources.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/index/__init__.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/index/resources.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/news/__init__.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/news/resources.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/persons/__init__.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/persons/resources.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/playlists/__init__.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/playlists/resources.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/previews/__init__.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/projects/__init__.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/projects/resources.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/search/__init__.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/search/resources.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/shots/__init__.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/shots/resources.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/source/__init__.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/source/csv/__init__.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/source/csv/assets.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/source/csv/base.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/source/csv/casting.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/source/csv/edits.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/source/csv/persons.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/source/csv/shots.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/source/csv/task_type_estimations.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/source/kitsu.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/source/otio.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/source/shotgun/__init__.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/source/shotgun/assets.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/source/shotgun/base.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/source/shotgun/episode.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/source/shotgun/exception.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/source/shotgun/import_errors.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/source/shotgun/notes.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/source/shotgun/person.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/source/shotgun/project.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/source/shotgun/scene.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/source/shotgun/sequence.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/source/shotgun/shot.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/source/shotgun/status.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/source/shotgun/steps.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/source/shotgun/tasks.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/source/shotgun/team.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/source/shotgun/versions.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/tasks/__init__.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/blueprints/tasks/resources.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/config.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/file_trees/default.json +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/file_trees/simple.json +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/indexer/__init__.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/indexer/indexing.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/mixin.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/__init__.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/asset_instance.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/attachment_file.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/base.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/build_job.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/chat.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/chat_message.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/comment.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/custom_action.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/data_import_error.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/day_off.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/department.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/desktop_login_log.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/entity.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/entity_type.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/event.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/file_status.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/login_log.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/metadata_descriptor.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/milestone.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/news.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/notification.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/output_file.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/output_type.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/person.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/playlist.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/preview_background_file.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/preview_file.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/project_status.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/schedule_item.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/search_filter.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/search_filter_group.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/serializer.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/software.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/status_automation.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/studio.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/task_status.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/task_type.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/time_spent.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/models/working_file.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/services/__init__.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/services/auth_service.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/services/backup_service.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/services/base_service.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/services/breakdown_service.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/services/comments_service.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/services/concepts_service.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/services/custom_actions_service.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/services/deletion_service.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/services/edits_service.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/services/events_service.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/services/exception.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/services/file_tree_service.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/services/files_service.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/services/index_service.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/services/notifications_service.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/services/persons_service.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/services/playlists_service.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/services/projects_service.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/services/scenes_service.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/services/schedule_service.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/services/stats_service.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/services/status_automations_service.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/services/sync_service.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/services/tasks_service.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/services/telemetry_services.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/services/time_spents_service.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/stores/__init__.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/stores/auth_tokens_store.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/stores/file_store.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/stores/publisher_store.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/stores/queue_store.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/swagger.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/utils/__init__.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/utils/api.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/utils/auth.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/utils/cache.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/utils/chats.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/utils/colors.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/utils/commands.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/utils/csv_utils.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/utils/date_helpers.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/utils/dbhelpers.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/utils/emails.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/utils/env.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/utils/events.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/utils/fido.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/utils/fields.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/utils/flask.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/utils/fs.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/utils/git.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/utils/logs.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/utils/monitoring.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/utils/permissions.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/utils/query.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/utils/remote_job.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/utils/saml.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/utils/shell.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/utils/string.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/app/utils/thumbnail.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/cli.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/debug.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/event_stream.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/job_settings.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/README +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/__init__.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/alembic.ini +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/env.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/script.py.mako +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/utils/__init__.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/utils/base.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/003be8a91001_add_start_and_end_dates_to_projects.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/0596674df51d_add_department_mentions_to_comments.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/05ac7e8caa21_remove_unique_constraint_for_taskstatus_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/05b7dc79a416_add_archived_fields_to_main_tables.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/0cf5e0e035fa_drop_column_tasktype_for_shots.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/0ec3762a745d_add_attachment_table.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/0ef6416a507b_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/10cf267d95c9_fix_schedule_item.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/16328eae4b5f_add_new_constraint_for_timespent.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/16df47d76c64_add_some_indexes.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/17ef8f7be758_disallow_null_choicetype.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/1bb55759146f_add_table_studio.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/1cb44194db49_add_file_size_field_to_preview_file.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/1e150c2cea4d_add_nb_entities_out.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/1e2d77a2f0c4_add_hd_by_default_column.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/1fab8c420678_add_attachments_to_message_chats.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/20dfeb36142b_add_projecttaskstatuslink_roles_for_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/23122f290ca2_add_entity_chat_models.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/269d41bfb73f_add_entity_entity_links.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/29df910f04a4_create_unique_constraint_project_id_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/29fe01a6c9eb_add_status_automation_field.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/2adc020885fa_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/2baede80b111_add_entity_status_field.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/306266361f4f_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/328fd44c6347_add_entity_created_by.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/32f134ff1201_add_is_shared_flag_to_filters.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/346250b5304c_add_position_to_preview_files.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/3476e147e632_add_acks_to_comments.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/389cfb9de776_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/38baa9a23b3d_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/398150912a3f_validation_status_preview.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/3b0d1321079e_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/3d5c93bafb9d_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/3e0538ddf80f_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/3fee3bd10f9d_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/4095103c7d01_add_is_clients_isolated_flag_to_projects.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/40dea9555940_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/42ec83db6a01_change_person_preferred_two_factor_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/43d0cf0ed5e7_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/443d1e78a932_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/45c2de366e66_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/45dafbb3f4e1_for_person_contract_type_disallow_null.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/4715c2586036_add_last_preview_file_fields.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/4e3738cdc34c_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/4f2398ebcd49_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/523ee9647bee_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/54ee0d1d60ba_add_build_job_model.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/556526e47daa_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/57222395f2be_add_statusautomation_import_last_revision.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/5798d2c9020b_change_person_role_to_choicetype.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/590aa1ffe731_add_notifications_enabled_flag.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/59a7445a966c_add_entity_is_shared.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/5a291251823c_add_max_retake_parameter.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/5ab9d7a75887_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/5b0fcbb94f24_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/5b7fa3e51701_add_is_client_allowed_flag_to_task_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/5b980f0dc365_add_comment_links.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/5b9fd9ddfe43_add_homepage_and_contract_fields.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/5c0498e264bc_add_slack_fields.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/5e2ce62632a6_add_workflow_to_project.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/680c64565f9d_for_searchfiltergroup_is_shared.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/693cc511d28d_add_taskstatus_priority.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/6aa446ee4072_add_is_for_all_flage_to_playlists.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/6bd3b102d61b_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/6c597e842afa_add_task_type_field_to_playlists.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/6d1b2c60f58b_add_milestone_model.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/6d7fa5a8e9a5_add_timesheets_locked_field_to_org.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/6eeaff945706_add_data_field_on_entity_links.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/6f6049877105_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/7417c8eb70d8_add_for_entity_field_to_playlists.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/772a5e43f05b_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/7748d3d22925_add_columns_to_searchfilter_table_to_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/77d6820f494f_add_reply_to_notif.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/7b1f765677d8_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/7bc746997e8d_add_slack_token_field_to_organisation.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/7dc79d4ed7cd_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/818f7bda2528_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/82e7f7a95e84_add_project_id_to_events.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/82ee682204ab_add_is_generated_from_ldap_column_to_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/8588f254d6b8_add_archived_fields.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/8739ae9fa28b_add_for_client_field.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/87efceb6745b_add_ready_for_to_entity.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/892b264937ec_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/8a1b4a1b7f4a_add_totp_columns_for_person.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/8e4f39e321f4_add_day_off_table.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/8fbd40afbe5f_allow_to_set_float_values_for_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/9010a64e5a2d_add_indices.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/9060dd4f6116_notification_uc.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/925771029620_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/92b40d79ad3f_allow_message_attachments.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/92bdfe07e5f5_discord_integration.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/956659992419_add_columns_for_person_to_store_fido_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/96c79d31e648_add_mail_otp_columns_for_person.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/96f58a4a2a58_person_partial_index_for_email_only_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/971dbf5a0faf_add_short_name_for_asset_type_entity_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/98c90621cf58_add_for_client_flag_to_playlist.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/99825b9cc778_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/9a09467f9b2c_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/9b85c14fa8a7_add_day_off_new_columns.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/9bd17364fc18_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/9e5b3a9b0cee_add_new_column_metadatadescriptor_data_type_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/9f8445f9b42c_add_man_days_fields.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/a23682ccc1f1_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/a252a094e977_add_descriptions_for_entities_tasks_and_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/a519c710877c_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/a65bdadbae2f_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/a66508788c53_add_nb_assets_ready.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/a6c25eed3ea1_add_login_failed_attemps_and_last_login_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/a7c43f3fbc76_add_duration_column_to_the_preview_file.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/aa0a60033106_feedback_request.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/addbbefa7028_add_departments_link_to_metadata_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/ae0127f2fc56_add_previewfile_width_and_previewfile_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/af1790868e2c_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/b45cb782bb9c_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/b4dd0add5f79_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/b8c0a0f9d054_drop_task_status_is_reviewable.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/b8ed0fb263f8_add_person_jti_and_jti_expiration_date.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/b97a71306fc8_add_is_casting_standby_column_to_entity.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/be56dc0fb760_for_is_shared_disallow_nullable.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/bf1347acdee2_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/c49e41f1298b_add_previewbackground.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/c68c2a62cfac_add_mimetype_column_to_attachment.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/c726b98be194_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/c81f3e83bdb5_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/ca28796a2a62_add_is_done_field_to_the_task_model.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/cf3d365de164_add_entity_version_model.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/cf6cec6d6bf5_add_status_field_to_preview_file.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/d80267806131_task_status_new_column_is_default.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/d8dcd5196d57_add_casting_label.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/de8a3de227ef_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/deeacd38d373_for_projecttaskstatuslink_set_default_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/df1834485f57_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/df9f8a147e80_change_file_size_to_big_integer.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/e1ef93f40d3d_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/e29638428dfd_add_schedule_item_table.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/e3f6db74cc1e_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/e839d6603c09_add_person_id_to_shot_history.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/ee2373fbe3a4_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/f0567e8d0c62_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/f0c6cbb61869_add_production_style_field.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/f344b867a911_for_description_of_entity_task_working_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/f4ff5a73d283_add_person_ldap_uid.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/f5b113876a49_add_preferred_two_factor_authentication_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/f5bdca075cdc_add_preview_download_flag_to_projects.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/f874ad5e898a_add_link_entity_type_task_type.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/f995b28fb749_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/fb6b6f188497_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/fb87feaaa094_add_missing_unique_constraints.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/fc322f908695_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/fee7c696166e_.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/feffd3c5b806_introduce_concepts.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/migrations/versions/ffeed4956ab1_add_more_details_to_projects.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/remote/__init__.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/remote/config_payload.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/remote/normalize_movie.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/remote/playlist.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/utils/__init__.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou/utils/movie.py +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou.egg-info/dependency_links.txt +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou.egg-info/entry_points.txt +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou.egg-info/not-zip-safe +0 -0
- {zou-0.19.56 → zou-0.19.57}/zou.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: zou
|
|
3
|
-
Version: 0.19.
|
|
3
|
+
Version: 0.19.57
|
|
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
|
|
@@ -37,11 +37,11 @@ Requires-Dist: flask_sqlalchemy==3.1.1
|
|
|
37
37
|
Requires-Dist: flask-fs2[s3,swift]==0.7.27
|
|
38
38
|
Requires-Dist: flask-jwt-extended==4.6.0
|
|
39
39
|
Requires-Dist: flask-migrate==4.0.7
|
|
40
|
-
Requires-Dist: flask-socketio==5.4.
|
|
40
|
+
Requires-Dist: flask-socketio==5.4.1
|
|
41
41
|
Requires-Dist: flask==3.0.3
|
|
42
42
|
Requires-Dist: gazu==0.10.15
|
|
43
43
|
Requires-Dist: gevent-websocket==0.10.1
|
|
44
|
-
Requires-Dist: gevent==24.
|
|
44
|
+
Requires-Dist: gevent==24.10.1
|
|
45
45
|
Requires-Dist: gunicorn==23.0.0
|
|
46
46
|
Requires-Dist: isoweek==1.3.3
|
|
47
47
|
Requires-Dist: itsdangerous==2.2.0
|
|
@@ -50,7 +50,7 @@ Requires-Dist: ldap3==2.9.1
|
|
|
50
50
|
Requires-Dist: matterhook==0.2
|
|
51
51
|
Requires-Dist: meilisearch==0.31.5
|
|
52
52
|
Requires-Dist: numpy==2.0.1; python_version == "3.9"
|
|
53
|
-
Requires-Dist: numpy==2.1.
|
|
53
|
+
Requires-Dist: numpy==2.1.2; python_version >= "3.10"
|
|
54
54
|
Requires-Dist: opencv-python==4.10.0.84
|
|
55
55
|
Requires-Dist: OpenTimelineIO==0.17.0
|
|
56
56
|
Requires-Dist: OpenTimelineIO-Plugins==0.17.0
|
|
@@ -64,7 +64,7 @@ Requires-Dist: python-nomad==2.0.1
|
|
|
64
64
|
Requires-Dist: python-slugify==8.0.4
|
|
65
65
|
Requires-Dist: python-socketio==5.11.4
|
|
66
66
|
Requires-Dist: pytz==2024.2
|
|
67
|
-
Requires-Dist: redis==5.1.
|
|
67
|
+
Requires-Dist: redis==5.1.1
|
|
68
68
|
Requires-Dist: requests==2.32.3
|
|
69
69
|
Requires-Dist: rq==1.16.2
|
|
70
70
|
Requires-Dist: slackclient==2.9.4
|
|
@@ -85,11 +85,11 @@ Requires-Dist: pytest==8.3.3; extra == "test"
|
|
|
85
85
|
Provides-Extra: monitoring
|
|
86
86
|
Requires-Dist: prometheus-flask-exporter==0.23.1; extra == "monitoring"
|
|
87
87
|
Requires-Dist: pygelf==0.4.2; extra == "monitoring"
|
|
88
|
-
Requires-Dist: sentry-sdk==2.
|
|
88
|
+
Requires-Dist: sentry-sdk==2.16.0; extra == "monitoring"
|
|
89
89
|
Provides-Extra: lint
|
|
90
90
|
Requires-Dist: autoflake==2.3.1; extra == "lint"
|
|
91
|
-
Requires-Dist: black==24.
|
|
92
|
-
Requires-Dist: pre-commit==
|
|
91
|
+
Requires-Dist: black==24.10.0; extra == "lint"
|
|
92
|
+
Requires-Dist: pre-commit==4.0.1; extra == "lint"
|
|
93
93
|
|
|
94
94
|
.. figure:: https://zou.cg-wire.com/kitsu.png
|
|
95
95
|
:alt: Kitsu Logo
|
|
@@ -43,11 +43,11 @@ install_requires =
|
|
|
43
43
|
flask-fs2[swift, s3]==0.7.27
|
|
44
44
|
flask-jwt-extended==4.6.0
|
|
45
45
|
flask-migrate==4.0.7
|
|
46
|
-
flask-socketio==5.4.
|
|
46
|
+
flask-socketio==5.4.1
|
|
47
47
|
flask==3.0.3
|
|
48
48
|
gazu==0.10.15
|
|
49
49
|
gevent-websocket==0.10.1
|
|
50
|
-
gevent==24.
|
|
50
|
+
gevent==24.10.1
|
|
51
51
|
gunicorn==23.0.0
|
|
52
52
|
isoweek==1.3.3
|
|
53
53
|
itsdangerous==2.2.0
|
|
@@ -56,7 +56,7 @@ install_requires =
|
|
|
56
56
|
matterhook==0.2
|
|
57
57
|
meilisearch==0.31.5
|
|
58
58
|
numpy==2.0.1; python_version == '3.9'
|
|
59
|
-
numpy==2.1.
|
|
59
|
+
numpy==2.1.2; python_version >= '3.10'
|
|
60
60
|
opencv-python==4.10.0.84
|
|
61
61
|
OpenTimelineIO==0.17.0
|
|
62
62
|
OpenTimelineIO-Plugins==0.17.0
|
|
@@ -70,7 +70,7 @@ install_requires =
|
|
|
70
70
|
python-slugify==8.0.4
|
|
71
71
|
python-socketio==5.11.4
|
|
72
72
|
pytz==2024.2
|
|
73
|
-
redis==5.1.
|
|
73
|
+
redis==5.1.1
|
|
74
74
|
requests==2.32.3
|
|
75
75
|
rq==1.16.2
|
|
76
76
|
slackclient==2.9.4
|
|
@@ -99,11 +99,11 @@ test =
|
|
|
99
99
|
monitoring =
|
|
100
100
|
prometheus-flask-exporter==0.23.1
|
|
101
101
|
pygelf==0.4.2
|
|
102
|
-
sentry-sdk==2.
|
|
102
|
+
sentry-sdk==2.16.0
|
|
103
103
|
lint =
|
|
104
104
|
autoflake==2.3.1
|
|
105
|
-
black==24.
|
|
106
|
-
pre-commit==
|
|
105
|
+
black==24.10.0
|
|
106
|
+
pre-commit==4.0.1
|
|
107
107
|
|
|
108
108
|
[options.entry_points]
|
|
109
109
|
console_scripts =
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.19.57"
|
|
@@ -116,7 +116,9 @@ class ChatMessagesResource(Resource):
|
|
|
116
116
|
|
|
117
117
|
chat = chats_service.get_chat(entity_id)
|
|
118
118
|
if person["id"] not in chat["participants"]:
|
|
119
|
-
raise WrongParameterException(
|
|
119
|
+
raise WrongParameterException(
|
|
120
|
+
"You are not a participant of this chat"
|
|
121
|
+
)
|
|
120
122
|
|
|
121
123
|
return (
|
|
122
124
|
chats_service.create_chat_message(
|
|
@@ -21,7 +21,9 @@ class DayOffsResource(BaseModelsResource):
|
|
|
21
21
|
if time_spents_service.get_day_offs_between(
|
|
22
22
|
data["date"], data["end_date"], data["person_id"]
|
|
23
23
|
):
|
|
24
|
-
raise WrongParameterException(
|
|
24
|
+
raise WrongParameterException(
|
|
25
|
+
"Day off already exists for this period"
|
|
26
|
+
)
|
|
25
27
|
return data
|
|
26
28
|
|
|
27
29
|
def post_creation(self, instance):
|
|
@@ -67,5 +69,7 @@ class DayOffResource(BaseModelResource):
|
|
|
67
69
|
data.get("person_id", instance_dict["person_id"]),
|
|
68
70
|
exclude_id=instance_dict["id"],
|
|
69
71
|
):
|
|
70
|
-
raise WrongParameterException(
|
|
72
|
+
raise WrongParameterException(
|
|
73
|
+
"Day off already exists for this period"
|
|
74
|
+
)
|
|
71
75
|
return data
|
|
@@ -7,7 +7,6 @@ from zou.app.services import entities_service, assets_service
|
|
|
7
7
|
from zou.app.services.exception import WrongParameterException
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
|
|
11
10
|
class EntityTypesResource(BaseModelsResource):
|
|
12
11
|
def __init__(self):
|
|
13
12
|
BaseModelsResource.__init__(self, EntityType)
|
|
@@ -32,11 +31,9 @@ class EntityTypesResource(BaseModelsResource):
|
|
|
32
31
|
return instance.serialize(relations=True)
|
|
33
32
|
|
|
34
33
|
def check_creation_integrity(self, data):
|
|
35
|
-
entity_type = (
|
|
36
|
-
EntityType.
|
|
37
|
-
|
|
38
|
-
.first()
|
|
39
|
-
)
|
|
34
|
+
entity_type = EntityType.query.filter(
|
|
35
|
+
EntityType.name.ilike(data.get("name", ""))
|
|
36
|
+
).first()
|
|
40
37
|
if entity_type is not None:
|
|
41
38
|
raise WrongParameterException(
|
|
42
39
|
"Entity type with this name already exists"
|
|
@@ -71,7 +71,9 @@ class ProjectsResource(BaseModelsResource):
|
|
|
71
71
|
or data["preview_background_file_id"]
|
|
72
72
|
not in data["preview_background_files_ids"]
|
|
73
73
|
):
|
|
74
|
-
raise WrongParameterException(
|
|
74
|
+
raise WrongParameterException(
|
|
75
|
+
"Invalid preview_background_file_id"
|
|
76
|
+
)
|
|
75
77
|
return data
|
|
76
78
|
|
|
77
79
|
def post_creation(self, project):
|
|
@@ -131,7 +133,9 @@ class ProjectResource(BaseModelResource, ArgsMixin):
|
|
|
131
133
|
data["preview_background_file_id"]
|
|
132
134
|
not in preview_background_files_ids
|
|
133
135
|
):
|
|
134
|
-
raise WrongParameterException(
|
|
136
|
+
raise WrongParameterException(
|
|
137
|
+
"Invalid preview_background_file_id"
|
|
138
|
+
)
|
|
135
139
|
|
|
136
140
|
return data
|
|
137
141
|
|
|
@@ -17,7 +17,9 @@ class ScheduleItemsResource(BaseModelsResource):
|
|
|
17
17
|
object_id=data.get("object_id", None),
|
|
18
18
|
)
|
|
19
19
|
if schedule_item is not None:
|
|
20
|
-
raise WrongParameterException(
|
|
20
|
+
raise WrongParameterException(
|
|
21
|
+
"A similar schedule item already exists"
|
|
22
|
+
)
|
|
21
23
|
return schedule_item
|
|
22
24
|
|
|
23
25
|
|
|
@@ -100,7 +100,7 @@ class PlaylistCsvExport(Resource):
|
|
|
100
100
|
|
|
101
101
|
def build_row(self, shot):
|
|
102
102
|
entity = entities_service.get_entity(shot["entity_id"])
|
|
103
|
-
name, _ = names_service.get_full_entity_name(shot["entity_id"])
|
|
103
|
+
name, _, _ = names_service.get_full_entity_name(shot["entity_id"])
|
|
104
104
|
preview_file = files_service.get_preview_file(shot["preview_file_id"])
|
|
105
105
|
task = tasks_service.get_task(preview_file["task_id"])
|
|
106
106
|
task_type = self.task_type_map[task["task_type_id"]]
|
|
@@ -72,7 +72,7 @@ class TimeSpentsCsvExport(BaseCsvExport):
|
|
|
72
72
|
person_last_name,
|
|
73
73
|
) = time_spent_row
|
|
74
74
|
if entity_type_name == "Shot":
|
|
75
|
-
entity_name, _ = names_service.get_full_entity_name(entity_id)
|
|
75
|
+
entity_name, _, _ = names_service.get_full_entity_name(entity_id)
|
|
76
76
|
|
|
77
77
|
date = ""
|
|
78
78
|
if time_spent.date is not None:
|
|
@@ -33,6 +33,7 @@ from zou.app.blueprints.user.resources import (
|
|
|
33
33
|
FilterGroupResource,
|
|
34
34
|
FilterGroupsResource,
|
|
35
35
|
DesktopLoginLogsResource,
|
|
36
|
+
MarkAllNotificationsAsReadResource,
|
|
36
37
|
NotificationsResource,
|
|
37
38
|
NotificationResource,
|
|
38
39
|
HasTaskSubscribedResource,
|
|
@@ -108,6 +109,10 @@ routes = [
|
|
|
108
109
|
"/actions/user/sequences/<sequence_id>/task-types/<task_type_id>/unsubscribe",
|
|
109
110
|
SequenceUnsubscribeResource,
|
|
110
111
|
),
|
|
112
|
+
(
|
|
113
|
+
"/actions/user/notifications/mark-all-as-read",
|
|
114
|
+
MarkAllNotificationsAsReadResource,
|
|
115
|
+
),
|
|
111
116
|
]
|
|
112
117
|
|
|
113
118
|
blueprint = Blueprint("user", "user")
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from flask import abort
|
|
1
|
+
from flask import abort, request
|
|
2
2
|
from flask_restful import Resource
|
|
3
3
|
|
|
4
4
|
from zou.app.mixin import ArgsMixin
|
|
@@ -593,7 +593,6 @@ class FilterResource(Resource, ArgsMixin):
|
|
|
593
593
|
("project_id", None, None),
|
|
594
594
|
]
|
|
595
595
|
)
|
|
596
|
-
|
|
597
596
|
data = self.clear_empty_fields(
|
|
598
597
|
data, ignored_fields=["search_filter_group_id"]
|
|
599
598
|
)
|
|
@@ -848,13 +847,22 @@ class NotificationsResource(Resource, ArgsMixin):
|
|
|
848
847
|
task_status_id,
|
|
849
848
|
notification_type,
|
|
850
849
|
) = self.get_arguments()
|
|
850
|
+
|
|
851
|
+
read = None
|
|
852
|
+
if request.args.get("read", None) is not None:
|
|
853
|
+
read = self.get_bool_parameter("read")
|
|
854
|
+
watching = None
|
|
855
|
+
if request.args.get("watching", None) is not None:
|
|
856
|
+
watching = self.get_bool_parameter("watching")
|
|
857
|
+
print("watching", watching)
|
|
851
858
|
notifications = user_service.get_last_notifications(
|
|
852
859
|
before=before,
|
|
853
860
|
task_type_id=task_type_id,
|
|
854
861
|
task_status_id=task_status_id,
|
|
855
862
|
notification_type=notification_type,
|
|
863
|
+
read=read,
|
|
864
|
+
watching=watching,
|
|
856
865
|
)
|
|
857
|
-
user_service.mark_notifications_as_read()
|
|
858
866
|
return notifications
|
|
859
867
|
|
|
860
868
|
def get_arguments(self):
|
|
@@ -867,7 +875,7 @@ class NotificationsResource(Resource, ArgsMixin):
|
|
|
867
875
|
)
|
|
868
876
|
|
|
869
877
|
|
|
870
|
-
class NotificationResource(Resource):
|
|
878
|
+
class NotificationResource(Resource, ArgsMixin):
|
|
871
879
|
"""
|
|
872
880
|
Return notification matching given id, only if it's a notification that
|
|
873
881
|
belongs to current user.
|
|
@@ -894,6 +902,42 @@ class NotificationResource(Resource):
|
|
|
894
902
|
"""
|
|
895
903
|
return user_service.get_notification(notification_id)
|
|
896
904
|
|
|
905
|
+
def put(self, notification_id):
|
|
906
|
+
"""
|
|
907
|
+
Change notification read status.
|
|
908
|
+
---
|
|
909
|
+
tags:
|
|
910
|
+
- User
|
|
911
|
+
parameters:
|
|
912
|
+
- in: path
|
|
913
|
+
name: notification_id
|
|
914
|
+
required: True
|
|
915
|
+
type: string
|
|
916
|
+
format: UUID
|
|
917
|
+
x-example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
918
|
+
responses:
|
|
919
|
+
200:
|
|
920
|
+
description: Notification
|
|
921
|
+
"""
|
|
922
|
+
data = self.get_args([("read", None, False, bool)])
|
|
923
|
+
return user_service.update_notification(notification_id, data["read"])
|
|
924
|
+
|
|
925
|
+
|
|
926
|
+
class MarkAllNotificationsAsReadResource(Resource):
|
|
927
|
+
|
|
928
|
+
def post(self):
|
|
929
|
+
"""
|
|
930
|
+
Mark all notifications as read for the current user.
|
|
931
|
+
---
|
|
932
|
+
tags:
|
|
933
|
+
- User
|
|
934
|
+
responses:
|
|
935
|
+
200:
|
|
936
|
+
description: All notifications marked as read
|
|
937
|
+
"""
|
|
938
|
+
user_service.mark_notifications_as_read()
|
|
939
|
+
return {"success": True}
|
|
940
|
+
|
|
897
941
|
|
|
898
942
|
class HasTaskSubscribedResource(Resource):
|
|
899
943
|
"""
|
|
@@ -905,7 +949,7 @@ class HasTaskSubscribedResource(Resource):
|
|
|
905
949
|
Return true if current user has subscribed to given task.
|
|
906
950
|
---
|
|
907
951
|
tags:
|
|
908
|
-
|
|
952
|
+
- User
|
|
909
953
|
parameters:
|
|
910
954
|
- in: path
|
|
911
955
|
name: task_id
|
|
@@ -14,10 +14,13 @@ class Organisation(db.Model, BaseMixin, SerializerMixin):
|
|
|
14
14
|
has_avatar = db.Column(db.Boolean(), default=False)
|
|
15
15
|
use_original_file_name = db.Column(db.Boolean(), default=False)
|
|
16
16
|
timesheets_locked = db.Column(db.Boolean(), default=False)
|
|
17
|
+
format_duration_in_hours = db.Column(db.Boolean(), default=False)
|
|
17
18
|
hd_by_default = db.Column(db.Boolean(), default=False)
|
|
18
19
|
chat_token_slack = db.Column(db.String(80), default="")
|
|
19
20
|
chat_webhook_mattermost = db.Column(db.String(80), default="")
|
|
20
21
|
chat_token_discord = db.Column(db.String(80), default="")
|
|
22
|
+
dark_theme_by_default = db.Column(db.Boolean(), default=False)
|
|
23
|
+
format_duration_in_hours = db.Column(db.Boolean(), default=False)
|
|
21
24
|
|
|
22
25
|
def present(self):
|
|
23
26
|
return fields.serialize_dict(
|
|
@@ -32,6 +35,8 @@ class Organisation(db.Model, BaseMixin, SerializerMixin):
|
|
|
32
35
|
"hd_by_default": self.hd_by_default,
|
|
33
36
|
"use_original_file_name": self.use_original_file_name,
|
|
34
37
|
"timesheets_locked": self.timesheets_locked,
|
|
38
|
+
"dark_theme_by_default": self.dark_theme_by_default,
|
|
39
|
+
"format_duration_in_hours": self.format_duration_in_hours,
|
|
35
40
|
"updated_at": self.updated_at,
|
|
36
41
|
"created_at": self.created_at,
|
|
37
42
|
}
|
|
@@ -142,6 +142,9 @@ class Project(db.Model, BaseMixin, SerializerMixin):
|
|
|
142
142
|
is_preview_download_allowed = db.Column(db.Boolean(), default=False)
|
|
143
143
|
is_set_preview_automated = db.Column(db.Boolean(), default=False)
|
|
144
144
|
homepage = db.Column(db.String(80), default="assets")
|
|
145
|
+
is_publish_default_for_artists = db.Column(db.Boolean(), default=False)
|
|
146
|
+
hd_bitrate_compression = db.Column(db.Integer, default=28)
|
|
147
|
+
ld_bitrate_compression = db.Column(db.Integer, default=6)
|
|
145
148
|
|
|
146
149
|
project_status_id = db.Column(
|
|
147
150
|
UUIDType(binary=False), db.ForeignKey("project_status.id"), index=True
|
|
@@ -22,10 +22,10 @@ class Subscription(db.Model, BaseMixin, SerializerMixin):
|
|
|
22
22
|
|
|
23
23
|
entity_id = db.Column(
|
|
24
24
|
UUIDType(binary=False), db.ForeignKey("entity.id"), index=True
|
|
25
|
-
)
|
|
25
|
+
) # Deprecated
|
|
26
26
|
task_type_id = db.Column(
|
|
27
27
|
UUIDType(binary=False), db.ForeignKey("task_type.id"), index=True
|
|
28
|
-
)
|
|
28
|
+
) # Deprecated
|
|
29
29
|
|
|
30
30
|
__table_args__ = (
|
|
31
31
|
db.UniqueConstraint(
|
|
@@ -33,6 +33,7 @@ class Task(db.Model, BaseMixin, SerializerMixin):
|
|
|
33
33
|
description = db.Column(db.Text())
|
|
34
34
|
|
|
35
35
|
priority = db.Column(db.Integer, default=0)
|
|
36
|
+
difficulty = db.Column(db.Integer, default=3, nullable=False)
|
|
36
37
|
duration = db.Column(db.Float, default=0)
|
|
37
38
|
estimation = db.Column(db.Float, default=0)
|
|
38
39
|
completion_rate = db.Column(db.Integer, default=0)
|
|
@@ -70,6 +71,9 @@ class Task(db.Model, BaseMixin, SerializerMixin):
|
|
|
70
71
|
db.UniqueConstraint(
|
|
71
72
|
"name", "project_id", "task_type_id", "entity_id", name="task_uc"
|
|
72
73
|
),
|
|
74
|
+
db.CheckConstraint(
|
|
75
|
+
"difficulty > 0 AND difficulty < 6", name="check_difficulty"
|
|
76
|
+
),
|
|
73
77
|
)
|
|
74
78
|
|
|
75
79
|
def assignees_as_string(self):
|
|
@@ -104,8 +104,8 @@ def get_assets(criterions={}, is_admin=False):
|
|
|
104
104
|
|
|
105
105
|
if "is_shared" in criterions:
|
|
106
106
|
if not is_admin:
|
|
107
|
-
query = (
|
|
108
|
-
|
|
107
|
+
query = query.join(Project).filter(
|
|
108
|
+
user_service.build_team_filter()
|
|
109
109
|
)
|
|
110
110
|
|
|
111
111
|
if episode_id is not None:
|
|
@@ -127,7 +127,7 @@ def get_assets(criterions={}, is_admin=False):
|
|
|
127
127
|
result += [a for a in query.all() if a.source_id != episode_id]
|
|
128
128
|
else:
|
|
129
129
|
result = query.all()
|
|
130
|
-
return
|
|
130
|
+
return Entity.serialize_list(result, obj_type="Asset")
|
|
131
131
|
|
|
132
132
|
|
|
133
133
|
def get_all_raw_assets():
|
|
@@ -202,6 +202,7 @@ def get_assets_and_tasks(criterions={}, page=1, with_episode_ids=False):
|
|
|
202
202
|
Task.due_date,
|
|
203
203
|
Task.done_date,
|
|
204
204
|
Task.last_comment_date,
|
|
205
|
+
Task.difficulty,
|
|
205
206
|
assignees_table.columns.person,
|
|
206
207
|
).order_by(EntityType.name, Entity.name)
|
|
207
208
|
|
|
@@ -281,6 +282,7 @@ def get_assets_and_tasks(criterions={}, page=1, with_episode_ids=False):
|
|
|
281
282
|
task_due_date,
|
|
282
283
|
task_done_date,
|
|
283
284
|
task_last_comment_date,
|
|
285
|
+
task_difficulty,
|
|
284
286
|
person_id,
|
|
285
287
|
) in query_result:
|
|
286
288
|
if asset.source_id is None:
|
|
@@ -338,6 +340,7 @@ def get_assets_and_tasks(criterions={}, page=1, with_episode_ids=False):
|
|
|
338
340
|
),
|
|
339
341
|
"retake_count": task_retake_count,
|
|
340
342
|
"start_date": fields.serialize_value(task_start_date),
|
|
343
|
+
"difficulty": task_difficulty,
|
|
341
344
|
"task_status_id": str(task_status_id),
|
|
342
345
|
"task_type_id": str(task_type_id),
|
|
343
346
|
"assignees": [],
|
|
@@ -722,7 +725,7 @@ def set_shared_assets(
|
|
|
722
725
|
project_id=None,
|
|
723
726
|
asset_type_id=None,
|
|
724
727
|
asset_ids=None,
|
|
725
|
-
with_events=False
|
|
728
|
+
with_events=False,
|
|
726
729
|
):
|
|
727
730
|
"""
|
|
728
731
|
Set all assets of a project to is_shared=True or False.
|
|
@@ -213,7 +213,7 @@ def get_chats_for_person(person_id):
|
|
|
213
213
|
result = []
|
|
214
214
|
for chat_model, project_id, preview_file_id in chats:
|
|
215
215
|
chat = chat_model.present()
|
|
216
|
-
chat["entity_name"], _ = names_service.get_full_entity_name(
|
|
216
|
+
chat["entity_name"], _, _ = names_service.get_full_entity_name(
|
|
217
217
|
chat["object_id"]
|
|
218
218
|
)
|
|
219
219
|
chat["project_id"] = project_id
|
|
@@ -296,7 +296,7 @@ def get_task_descriptors(person_id, task):
|
|
|
296
296
|
project = projects_service.get_project(task["project_id"])
|
|
297
297
|
task_type = tasks_service.get_task_type(task["task_type_id"])
|
|
298
298
|
entity = entities_service.get_entity(task["entity_id"])
|
|
299
|
-
|
|
299
|
+
entity_name, episode_id, _ = names_service.get_full_entity_name(
|
|
300
300
|
entity["id"]
|
|
301
301
|
)
|
|
302
302
|
|
|
@@ -242,6 +242,7 @@ def get_entities_and_tasks(criterions={}):
|
|
|
242
242
|
Task.due_date,
|
|
243
243
|
Task.done_date,
|
|
244
244
|
Task.last_comment_date,
|
|
245
|
+
Task.difficulty,
|
|
245
246
|
assignees_table.columns.person,
|
|
246
247
|
)
|
|
247
248
|
)
|
|
@@ -272,6 +273,7 @@ def get_entities_and_tasks(criterions={}):
|
|
|
272
273
|
task_due_date,
|
|
273
274
|
task_done_date,
|
|
274
275
|
task_last_comment_date,
|
|
276
|
+
task_difficulty,
|
|
275
277
|
person_id,
|
|
276
278
|
) in query.all():
|
|
277
279
|
entity_id = str(entity.id)
|
|
@@ -315,6 +317,7 @@ def get_entities_and_tasks(criterions={}):
|
|
|
315
317
|
"real_start_date": task_real_start_date,
|
|
316
318
|
"retake_count": task_retake_count,
|
|
317
319
|
"start_date": task_start_date,
|
|
320
|
+
"difficulty": task_difficulty,
|
|
318
321
|
"task_status_id": str(task_status_id),
|
|
319
322
|
"task_type_id": str(task_type_id),
|
|
320
323
|
"assignees": [],
|
|
@@ -52,7 +52,7 @@ def get_full_entity_name(entity_id):
|
|
|
52
52
|
asset_type = entities_service.get_entity_type(entity["entity_type_id"])
|
|
53
53
|
episode_id = entity["source_id"]
|
|
54
54
|
name = "%s / %s" % (asset_type["name"], entity["name"])
|
|
55
|
-
return (name, episode_id)
|
|
55
|
+
return (name, episode_id, entity["preview_file_id"])
|
|
56
56
|
|
|
57
57
|
|
|
58
58
|
def get_preview_file_name(preview_file_id):
|
|
@@ -66,7 +66,7 @@ def get_preview_file_name(preview_file_id):
|
|
|
66
66
|
task = tasks_service.get_task(preview_file["task_id"])
|
|
67
67
|
task_type = tasks_service.get_task_type(task["task_type_id"])
|
|
68
68
|
project = projects_service.get_project(task["project_id"])
|
|
69
|
-
(entity_name, _) = get_full_entity_name(task["entity_id"])
|
|
69
|
+
(entity_name, _, _) = get_full_entity_name(task["entity_id"])
|
|
70
70
|
|
|
71
71
|
if (
|
|
72
72
|
organisation["use_original_file_name"]
|
|
@@ -185,7 +185,7 @@ def get_last_news_for_project(
|
|
|
185
185
|
preview_file_annotations,
|
|
186
186
|
entity_preview_file_id,
|
|
187
187
|
) in news_list:
|
|
188
|
-
|
|
188
|
+
full_entity_name, episode_id, _ = names_service.get_full_entity_name(
|
|
189
189
|
task_entity_id
|
|
190
190
|
)
|
|
191
191
|
|
|
@@ -561,7 +561,7 @@ def get_running_preview_files():
|
|
|
561
561
|
result = preview_file.serialize()
|
|
562
562
|
result["project_id"] = fields.serialize_value(project_id)
|
|
563
563
|
result["task_type_id"] = fields.serialize_value(task_type_id)
|
|
564
|
-
|
|
564
|
+
result["full_entity_name"], _, _ = names_service.get_full_entity_name(
|
|
565
565
|
entity_id
|
|
566
566
|
)
|
|
567
567
|
results.append(result)
|
|
@@ -254,6 +254,7 @@ def get_shots_and_tasks(criterions={}):
|
|
|
254
254
|
Task.done_date,
|
|
255
255
|
Task.last_comment_date,
|
|
256
256
|
Task.nb_assets_ready,
|
|
257
|
+
Task.difficulty,
|
|
257
258
|
assignees_table.columns.person,
|
|
258
259
|
Project.id,
|
|
259
260
|
Project.name,
|
|
@@ -304,6 +305,7 @@ def get_shots_and_tasks(criterions={}):
|
|
|
304
305
|
task_done_date,
|
|
305
306
|
task_last_comment_date,
|
|
306
307
|
task_nb_assets_ready,
|
|
308
|
+
task_difficulty,
|
|
307
309
|
person_id,
|
|
308
310
|
project_id,
|
|
309
311
|
project_name,
|
|
@@ -367,6 +369,7 @@ def get_shots_and_tasks(criterions={}):
|
|
|
367
369
|
"real_start_date": task_real_start_date,
|
|
368
370
|
"retake_count": task_retake_count,
|
|
369
371
|
"start_date": task_start_date,
|
|
372
|
+
"difficulty": task_difficulty,
|
|
370
373
|
"task_status_id": task_status_id,
|
|
371
374
|
"task_type_id": task_type_id,
|
|
372
375
|
"assignees": [],
|
|
@@ -1478,7 +1481,7 @@ def get_weighted_quota_shots_between(
|
|
|
1478
1481
|
for entity, task_duration, duration in query_shots:
|
|
1479
1482
|
shot = entity.serialize()
|
|
1480
1483
|
if shot["id"] not in already_listed:
|
|
1481
|
-
full_name, _ = names_service.get_full_entity_name(shot["id"])
|
|
1484
|
+
full_name, _, _ = names_service.get_full_entity_name(shot["id"])
|
|
1482
1485
|
shot["full_name"] = full_name
|
|
1483
1486
|
shot["weight"] = round(duration / task_duration, 2) or 0
|
|
1484
1487
|
shots.append(shot)
|
|
@@ -1525,7 +1528,7 @@ def get_weighted_quota_shots_between(
|
|
|
1525
1528
|
business_days = (
|
|
1526
1529
|
date_helpers.get_business_days(task_start, task_end) + 1
|
|
1527
1530
|
)
|
|
1528
|
-
full_name, _ = names_service.get_full_entity_name(shot["id"])
|
|
1531
|
+
full_name, _, _ = names_service.get_full_entity_name(shot["id"])
|
|
1529
1532
|
shot["full_name"] = full_name
|
|
1530
1533
|
multiplicator = 1
|
|
1531
1534
|
if task_start >= start and task_end <= end:
|
|
@@ -1583,7 +1586,7 @@ def get_raw_quota_shots_between(
|
|
|
1583
1586
|
|
|
1584
1587
|
for entity in query_shots:
|
|
1585
1588
|
shot = entity.serialize()
|
|
1586
|
-
full_name, _ = names_service.get_full_entity_name(shot["id"])
|
|
1589
|
+
full_name, _, _ = names_service.get_full_entity_name(shot["id"])
|
|
1587
1590
|
shot["full_name"] = full_name
|
|
1588
1591
|
shot["weight"] = 1
|
|
1589
1592
|
shots.append(shot)
|