zou 0.19.42__tar.gz → 0.19.44__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.42/zou.egg-info → zou-0.19.44}/PKG-INFO +5 -5
- {zou-0.19.42 → zou-0.19.44}/setup.cfg +4 -4
- zou-0.19.44/zou/__init__.py +1 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/organisation.py +0 -4
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/previews/resources.py +0 -2
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/shots/__init__.py +5 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/shots/resources.py +49 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/attachment_file.py +1 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/entity_type.py +2 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/task_status.py +1 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/task_type.py +1 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/services/preview_files_service.py +8 -4
- {zou-0.19.42 → zou-0.19.44}/zou/app/services/shots_service.py +73 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/services/sync_service.py +30 -30
- {zou-0.19.42 → zou-0.19.44}/zou/app/utils/commands.py +90 -1
- {zou-0.19.42 → zou-0.19.44}/zou/cli.py +39 -5
- zou-0.19.44/zou/migrations/versions/971dbf5a0faf_add_short_name_for_asset_type_entity_.py +33 -0
- zou-0.19.44/zou/migrations/versions/a252a094e977_add_descriptions_for_entities_tasks_and_.py +40 -0
- {zou-0.19.42 → zou-0.19.44/zou.egg-info}/PKG-INFO +5 -5
- {zou-0.19.42 → zou-0.19.44}/zou.egg-info/SOURCES.txt +2 -0
- {zou-0.19.42 → zou-0.19.44}/zou.egg-info/requires.txt +4 -4
- zou-0.19.42/zou/__init__.py +0 -1
- {zou-0.19.42 → zou-0.19.44}/LICENSE +0 -0
- {zou-0.19.42 → zou-0.19.44}/README.rst +0 -0
- {zou-0.19.42 → zou-0.19.44}/pyproject.toml +0 -0
- {zou-0.19.42 → zou-0.19.44}/setup.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/__init__.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/api.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/__init__.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/assets/__init__.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/assets/resources.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/auth/__init__.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/auth/resources.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/breakdown/__init__.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/breakdown/resources.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/chats/__init__.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/chats/resources.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/comments/__init__.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/comments/resources.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/concepts/__init__.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/concepts/resources.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/__init__.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/asset_instance.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/attachment_file.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/base.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/chat.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/chat_message.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/comments.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/custom_action.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/day_off.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/department.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/entity.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/entity_link.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/entity_type.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/event.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/file_status.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/metadata_descriptor.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/milestone.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/news.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/notification.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/output_file.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/output_type.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/person.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/playlist.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/preview_background_file.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/preview_file.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/project.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/project_status.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/schedule_item.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/search_filter.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/search_filter_group.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/software.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/status_automation.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/studio.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/subscription.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/task.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/task_status.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/task_type.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/time_spent.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/working_file.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/edits/__init__.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/edits/resources.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/entities/__init__.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/entities/resources.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/events/__init__.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/events/resources.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/export/__init__.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/export/csv/__init__.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/export/csv/assets.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/export/csv/base.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/export/csv/casting.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/export/csv/edits.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/export/csv/persons.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/export/csv/playlists.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/export/csv/projects.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/export/csv/shots.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/export/csv/task_types.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/export/csv/tasks.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/export/csv/time_spents.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/files/__init__.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/files/resources.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/index/__init__.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/index/resources.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/news/__init__.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/news/resources.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/persons/__init__.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/persons/resources.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/playlists/__init__.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/playlists/resources.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/previews/__init__.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/projects/__init__.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/projects/resources.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/search/__init__.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/search/resources.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/__init__.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/csv/__init__.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/csv/assets.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/csv/base.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/csv/casting.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/csv/edits.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/csv/persons.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/csv/shots.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/csv/task_type_estimations.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/kitsu.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/otio.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/shotgun/__init__.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/shotgun/assets.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/shotgun/base.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/shotgun/episode.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/shotgun/exception.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/shotgun/import_errors.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/shotgun/notes.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/shotgun/person.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/shotgun/project.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/shotgun/scene.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/shotgun/sequence.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/shotgun/shot.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/shotgun/status.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/shotgun/steps.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/shotgun/tasks.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/shotgun/team.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/shotgun/versions.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/tasks/__init__.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/tasks/resources.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/user/__init__.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/user/resources.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/config.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/file_trees/default.json +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/file_trees/simple.json +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/indexer/__init__.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/indexer/indexing.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/mixin.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/__init__.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/asset_instance.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/base.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/build_job.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/chat.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/chat_message.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/comment.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/custom_action.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/data_import_error.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/day_off.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/department.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/desktop_login_log.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/entity.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/event.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/file_status.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/login_log.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/metadata_descriptor.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/milestone.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/news.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/notification.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/organisation.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/output_file.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/output_type.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/person.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/playlist.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/preview_background_file.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/preview_file.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/project.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/project_status.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/schedule_item.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/search_filter.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/search_filter_group.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/serializer.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/software.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/status_automation.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/studio.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/subscription.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/task.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/time_spent.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/models/working_file.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/services/__init__.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/services/assets_service.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/services/auth_service.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/services/backup_service.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/services/base_service.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/services/breakdown_service.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/services/chats_service.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/services/comments_service.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/services/concepts_service.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/services/custom_actions_service.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/services/deletion_service.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/services/edits_service.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/services/emails_service.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/services/entities_service.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/services/events_service.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/services/exception.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/services/file_tree_service.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/services/files_service.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/services/index_service.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/services/names_service.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/services/news_service.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/services/notifications_service.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/services/persons_service.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/services/playlists_service.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/services/projects_service.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/services/scenes_service.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/services/schedule_service.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/services/stats_service.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/services/status_automations_service.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/services/tasks_service.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/services/telemetry_services.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/services/time_spents_service.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/services/user_service.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/stores/__init__.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/stores/auth_tokens_store.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/stores/file_store.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/stores/publisher_store.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/stores/queue_store.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/swagger.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/utils/__init__.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/utils/api.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/utils/auth.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/utils/cache.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/utils/chats.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/utils/colors.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/utils/csv_utils.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/utils/date_helpers.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/utils/dbhelpers.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/utils/emails.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/utils/env.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/utils/events.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/utils/fields.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/utils/flask.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/utils/fs.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/utils/git.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/utils/logs.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/utils/monitoring.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/utils/permissions.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/utils/query.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/utils/remote_job.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/utils/shell.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/utils/string.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/app/utils/thumbnail.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/debug.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/event_stream.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/job_settings.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/README +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/__init__.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/alembic.ini +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/env.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/script.py.mako +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/utils/__init__.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/utils/base.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/003be8a91001_add_start_and_end_dates_to_projects.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/0596674df51d_add_department_mentions_to_comments.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/05ac7e8caa21_remove_unique_constraint_for_taskstatus_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/05b7dc79a416_add_archived_fields_to_main_tables.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/0cf5e0e035fa_drop_column_tasktype_for_shots.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/0ec3762a745d_add_attachment_table.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/0ef6416a507b_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/10cf267d95c9_fix_schedule_item.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/16328eae4b5f_add_new_constraint_for_timespent.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/16df47d76c64_add_some_indexes.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/17ef8f7be758_disallow_null_choicetype.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/1bb55759146f_add_table_studio.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/1cb44194db49_add_file_size_field_to_preview_file.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/1e150c2cea4d_add_nb_entities_out.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/1e2d77a2f0c4_add_hd_by_default_column.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/1fab8c420678_add_attachments_to_message_chats.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/20dfeb36142b_add_projecttaskstatuslink_roles_for_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/23122f290ca2_add_entity_chat_models.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/269d41bfb73f_add_entity_entity_links.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/29df910f04a4_create_unique_constraint_project_id_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/29fe01a6c9eb_add_status_automation_field.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/2adc020885fa_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/2baede80b111_add_entity_status_field.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/306266361f4f_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/328fd44c6347_add_entity_created_by.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/32f134ff1201_add_is_shared_flag_to_filters.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/346250b5304c_add_position_to_preview_files.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/3476e147e632_add_acks_to_comments.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/389cfb9de776_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/38baa9a23b3d_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/398150912a3f_validation_status_preview.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/3b0d1321079e_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/3d5c93bafb9d_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/3e0538ddf80f_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/3fee3bd10f9d_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/4095103c7d01_add_is_clients_isolated_flag_to_projects.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/40dea9555940_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/42ec83db6a01_change_person_preferred_two_factor_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/43d0cf0ed5e7_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/443d1e78a932_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/45c2de366e66_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/45dafbb3f4e1_for_person_contract_type_disallow_null.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/4715c2586036_add_last_preview_file_fields.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/4e3738cdc34c_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/4f2398ebcd49_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/523ee9647bee_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/54ee0d1d60ba_add_build_job_model.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/556526e47daa_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/57222395f2be_add_statusautomation_import_last_revision.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/5798d2c9020b_change_person_role_to_choicetype.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/590aa1ffe731_add_notifications_enabled_flag.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/5a291251823c_add_max_retake_parameter.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/5ab9d7a75887_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/5b0fcbb94f24_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/5b7fa3e51701_add_is_client_allowed_flag_to_task_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/5b980f0dc365_add_comment_links.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/5b9fd9ddfe43_add_homepage_and_contract_fields.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/5c0498e264bc_add_slack_fields.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/5e2ce62632a6_add_workflow_to_project.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/680c64565f9d_for_searchfiltergroup_is_shared.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/693cc511d28d_add_taskstatus_priority.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/6aa446ee4072_add_is_for_all_flage_to_playlists.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/6bd3b102d61b_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/6c597e842afa_add_task_type_field_to_playlists.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/6d1b2c60f58b_add_milestone_model.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/6d7fa5a8e9a5_add_timesheets_locked_field_to_org.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/6eeaff945706_add_data_field_on_entity_links.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/6f6049877105_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/7417c8eb70d8_add_for_entity_field_to_playlists.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/772a5e43f05b_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/7748d3d22925_add_columns_to_searchfilter_table_to_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/77d6820f494f_add_reply_to_notif.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/7b1f765677d8_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/7bc746997e8d_add_slack_token_field_to_organisation.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/7dc79d4ed7cd_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/818f7bda2528_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/82e7f7a95e84_add_project_id_to_events.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/82ee682204ab_add_is_generated_from_ldap_column_to_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/8588f254d6b8_add_archived_fields.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/8739ae9fa28b_add_for_client_field.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/87efceb6745b_add_ready_for_to_entity.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/892b264937ec_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/8a1b4a1b7f4a_add_totp_columns_for_person.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/8e4f39e321f4_add_day_off_table.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/8fbd40afbe5f_allow_to_set_float_values_for_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/9010a64e5a2d_add_indices.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/9060dd4f6116_notification_uc.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/925771029620_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/92b40d79ad3f_allow_message_attachments.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/92bdfe07e5f5_discord_integration.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/956659992419_add_columns_for_person_to_store_fido_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/96c79d31e648_add_mail_otp_columns_for_person.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/96f58a4a2a58_person_partial_index_for_email_only_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/98c90621cf58_add_for_client_flag_to_playlist.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/99825b9cc778_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/9a09467f9b2c_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/9b85c14fa8a7_add_day_off_new_columns.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/9bd17364fc18_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/9e5b3a9b0cee_add_new_column_metadatadescriptor_data_type_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/9f8445f9b42c_add_man_days_fields.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/a23682ccc1f1_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/a519c710877c_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/a65bdadbae2f_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/a66508788c53_add_nb_assets_ready.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/a6c25eed3ea1_add_login_failed_attemps_and_last_login_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/a7c43f3fbc76_add_duration_column_to_the_preview_file.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/aa0a60033106_feedback_request.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/addbbefa7028_add_departments_link_to_metadata_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/ae0127f2fc56_add_previewfile_width_and_previewfile_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/af1790868e2c_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/b45cb782bb9c_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/b4dd0add5f79_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/b8c0a0f9d054_drop_task_status_is_reviewable.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/b8ed0fb263f8_add_person_jti_and_jti_expiration_date.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/b97a71306fc8_add_is_casting_standby_column_to_entity.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/be56dc0fb760_for_is_shared_disallow_nullable.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/bf1347acdee2_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/c49e41f1298b_add_previewbackground.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/c68c2a62cfac_add_mimetype_column_to_attachment.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/c726b98be194_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/c81f3e83bdb5_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/cf3d365de164_add_entity_version_model.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/cf6cec6d6bf5_add_status_field_to_preview_file.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/d80267806131_task_status_new_column_is_default.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/d8dcd5196d57_add_casting_label.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/de8a3de227ef_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/deeacd38d373_for_projecttaskstatuslink_set_default_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/df1834485f57_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/df9f8a147e80_change_file_size_to_big_integer.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/e1ef93f40d3d_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/e29638428dfd_add_schedule_item_table.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/e3f6db74cc1e_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/e839d6603c09_add_person_id_to_shot_history.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/ee2373fbe3a4_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/f0567e8d0c62_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/f0c6cbb61869_add_production_style_field.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/f344b867a911_for_description_of_entity_task_working_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/f4ff5a73d283_add_person_ldap_uid.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/f5b113876a49_add_preferred_two_factor_authentication_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/f5bdca075cdc_add_preview_download_flag_to_projects.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/f874ad5e898a_add_link_entity_type_task_type.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/f995b28fb749_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/fb6b6f188497_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/fb87feaaa094_add_missing_unique_constraints.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/fc322f908695_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/fee7c696166e_.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/feffd3c5b806_introduce_concepts.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/ffeed4956ab1_add_more_details_to_projects.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/remote/__init__.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/remote/config_payload.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/remote/normalize_movie.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/remote/playlist.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/utils/__init__.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou/utils/movie.py +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou.egg-info/dependency_links.txt +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou.egg-info/entry_points.txt +0 -0
- {zou-0.19.42 → zou-0.19.44}/zou.egg-info/not-zip-safe +0 -0
- {zou-0.19.42 → zou-0.19.44}/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.44
|
|
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
|
|
@@ -23,7 +23,7 @@ Requires-Python: >=3.8.1, <3.13
|
|
|
23
23
|
License-File: LICENSE
|
|
24
24
|
Requires-Dist: babel==2.15.0
|
|
25
25
|
Requires-Dist: click==8.1.7
|
|
26
|
-
Requires-Dist: discord.py==2.
|
|
26
|
+
Requires-Dist: discord.py==2.4.0
|
|
27
27
|
Requires-Dist: email-validator==2.2.0
|
|
28
28
|
Requires-Dist: ffmpeg-python==0.2.0
|
|
29
29
|
Requires-Dist: fido2==1.1.3
|
|
@@ -53,7 +53,7 @@ Requires-Dist: meilisearch==0.31.3
|
|
|
53
53
|
Requires-Dist: numpy==1.24.4; python_version == "3.8"
|
|
54
54
|
Requires-Dist: numpy==2.0.0; python_version >= "3.9"
|
|
55
55
|
Requires-Dist: opencv-python==4.10.0.84
|
|
56
|
-
Requires-Dist: OpenTimelineIO==0.
|
|
56
|
+
Requires-Dist: OpenTimelineIO==0.17.0
|
|
57
57
|
Requires-Dist: orjson==3.10.5
|
|
58
58
|
Requires-Dist: pillow==10.3.0
|
|
59
59
|
Requires-Dist: psutil==6.0.0
|
|
@@ -63,7 +63,7 @@ Requires-Dist: python-nomad==2.0.1
|
|
|
63
63
|
Requires-Dist: python-slugify==8.0.4
|
|
64
64
|
Requires-Dist: python-socketio==5.11.3
|
|
65
65
|
Requires-Dist: pytz==2024.1
|
|
66
|
-
Requires-Dist: redis==5.0.
|
|
66
|
+
Requires-Dist: redis==5.0.7
|
|
67
67
|
Requires-Dist: requests==2.32.3
|
|
68
68
|
Requires-Dist: rq==1.16.2
|
|
69
69
|
Requires-Dist: slackclient==2.9.4
|
|
@@ -84,7 +84,7 @@ Requires-Dist: pytest==8.2.2; extra == "test"
|
|
|
84
84
|
Provides-Extra: monitoring
|
|
85
85
|
Requires-Dist: prometheus-flask-exporter==0.23.0; extra == "monitoring"
|
|
86
86
|
Requires-Dist: pygelf==0.4.2; extra == "monitoring"
|
|
87
|
-
Requires-Dist: sentry-sdk==2.
|
|
87
|
+
Requires-Dist: sentry-sdk==2.7.1; extra == "monitoring"
|
|
88
88
|
Provides-Extra: lint
|
|
89
89
|
Requires-Dist: autoflake==2.3.1; extra == "lint"
|
|
90
90
|
Requires-Dist: black==24.4.2; extra == "lint"
|
|
@@ -29,7 +29,7 @@ packages = find:
|
|
|
29
29
|
install_requires =
|
|
30
30
|
babel==2.15.0
|
|
31
31
|
click==8.1.7
|
|
32
|
-
discord.py==2.
|
|
32
|
+
discord.py==2.4.0
|
|
33
33
|
email-validator==2.2.0
|
|
34
34
|
ffmpeg-python==0.2.0
|
|
35
35
|
fido2==1.1.3
|
|
@@ -59,7 +59,7 @@ install_requires =
|
|
|
59
59
|
numpy==1.24.4; python_version == '3.8'
|
|
60
60
|
numpy==2.0.0; python_version >= '3.9'
|
|
61
61
|
opencv-python==4.10.0.84
|
|
62
|
-
OpenTimelineIO==0.
|
|
62
|
+
OpenTimelineIO==0.17.0
|
|
63
63
|
orjson==3.10.5
|
|
64
64
|
pillow==10.3.0
|
|
65
65
|
psutil==6.0.0
|
|
@@ -69,7 +69,7 @@ install_requires =
|
|
|
69
69
|
python-slugify==8.0.4
|
|
70
70
|
python-socketio==5.11.3
|
|
71
71
|
pytz==2024.1
|
|
72
|
-
redis==5.0.
|
|
72
|
+
redis==5.0.7
|
|
73
73
|
requests==2.32.3
|
|
74
74
|
rq==1.16.2
|
|
75
75
|
slackclient==2.9.4
|
|
@@ -98,7 +98,7 @@ test =
|
|
|
98
98
|
monitoring =
|
|
99
99
|
prometheus-flask-exporter==0.23.0
|
|
100
100
|
pygelf==0.4.2
|
|
101
|
-
sentry-sdk==2.
|
|
101
|
+
sentry-sdk==2.7.1
|
|
102
102
|
lint =
|
|
103
103
|
autoflake==2.3.1
|
|
104
104
|
black==24.4.2
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.19.44"
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
from zou.app.models.organisation import Organisation
|
|
2
|
-
from zou.app.utils import fields
|
|
3
2
|
from zou.app.blueprints.crud.base import BaseModelResource, BaseModelsResource
|
|
4
3
|
|
|
5
4
|
|
|
@@ -7,9 +6,6 @@ class OrganisationsResource(BaseModelsResource):
|
|
|
7
6
|
def __init__(self):
|
|
8
7
|
BaseModelsResource.__init__(self, Organisation)
|
|
9
8
|
|
|
10
|
-
def get(self):
|
|
11
|
-
return fields.serialize_list(Organisation.query.all())
|
|
12
|
-
|
|
13
9
|
def check_read_permissions(self):
|
|
14
10
|
return True
|
|
15
11
|
|
|
@@ -338,8 +338,6 @@ class CreatePreviewFilePictureResource(Resource, ArgsMixin):
|
|
|
338
338
|
preview_files_service.prepare_and_store_movie(
|
|
339
339
|
preview_file_id, uploaded_movie_path, normalize=normalize
|
|
340
340
|
)
|
|
341
|
-
preview_file = files_service.get_preview_file(preview_file_id)
|
|
342
|
-
tasks_service.update_preview_file_info(preview_file)
|
|
343
341
|
return preview_file_id
|
|
344
342
|
|
|
345
343
|
def save_file_preview(self, instance_id, uploaded_file, extension):
|
|
@@ -42,6 +42,7 @@ from zou.app.blueprints.shots.resources import (
|
|
|
42
42
|
EpisodeAssetTasksResource,
|
|
43
43
|
SequenceShotTasksResource,
|
|
44
44
|
ProjectQuotasResource,
|
|
45
|
+
SetShotsFramesResource,
|
|
45
46
|
)
|
|
46
47
|
|
|
47
48
|
routes = [
|
|
@@ -94,6 +95,10 @@ routes = [
|
|
|
94
95
|
"/data/projects/<project_id>/quotas/<task_type_id>",
|
|
95
96
|
ProjectQuotasResource,
|
|
96
97
|
),
|
|
98
|
+
(
|
|
99
|
+
"/actions/projects/<project_id>/task-types/<task_type_id>/set-shot-nb-frames",
|
|
100
|
+
SetShotsFramesResource,
|
|
101
|
+
)
|
|
97
102
|
]
|
|
98
103
|
|
|
99
104
|
|
|
@@ -18,6 +18,7 @@ from zou.app.services import (
|
|
|
18
18
|
|
|
19
19
|
from zou.app.mixin import ArgsMixin
|
|
20
20
|
from zou.app.utils import fields, query, permissions
|
|
21
|
+
from zou.app.services.exception import WrongParameterException
|
|
21
22
|
|
|
22
23
|
|
|
23
24
|
class ShotResource(Resource, ArgsMixin):
|
|
@@ -1526,3 +1527,51 @@ class ProjectQuotasResource(Resource, ArgsMixin):
|
|
|
1526
1527
|
return shots_service.get_raw_quotas(
|
|
1527
1528
|
project_id, task_type_id, args["studio_id"]
|
|
1528
1529
|
)
|
|
1530
|
+
|
|
1531
|
+
|
|
1532
|
+
|
|
1533
|
+
class SetShotsFramesResource(Resource, ArgsMixin):
|
|
1534
|
+
@jwt_required()
|
|
1535
|
+
def post(self, project_id, task_type_id):
|
|
1536
|
+
"""
|
|
1537
|
+
Set frames for given shots.
|
|
1538
|
+
---
|
|
1539
|
+
tags:
|
|
1540
|
+
- Shots
|
|
1541
|
+
parameters:
|
|
1542
|
+
- in: formData
|
|
1543
|
+
name: shots
|
|
1544
|
+
required: True
|
|
1545
|
+
type: array
|
|
1546
|
+
items:
|
|
1547
|
+
type: object
|
|
1548
|
+
properties:
|
|
1549
|
+
shot_id:
|
|
1550
|
+
type: string
|
|
1551
|
+
format: UUID
|
|
1552
|
+
x-example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
1553
|
+
nb_frames:
|
|
1554
|
+
type: integer
|
|
1555
|
+
x-example: 24
|
|
1556
|
+
responses:
|
|
1557
|
+
200:
|
|
1558
|
+
description: Frames set for given shots
|
|
1559
|
+
"""
|
|
1560
|
+
user_service.check_manager_project_access(project_id)
|
|
1561
|
+
if not fields.is_valid_id(task_type_id) or \
|
|
1562
|
+
not fields.is_valid_id(project_id):
|
|
1563
|
+
raise WrongParameterException("Invalid project or task type id")
|
|
1564
|
+
|
|
1565
|
+
episode_id = self.get_episode_id()
|
|
1566
|
+
if not episode_id in ["", None] and \
|
|
1567
|
+
not fields.is_valid_id(episode_id):
|
|
1568
|
+
raise WrongParameterException("Invalid episode id")
|
|
1569
|
+
|
|
1570
|
+
if episode_id == "":
|
|
1571
|
+
episode_id = None
|
|
1572
|
+
|
|
1573
|
+
return shots_service.set_frames_from_task_type_preview_files(
|
|
1574
|
+
project_id,
|
|
1575
|
+
task_type_id,
|
|
1576
|
+
episode_id=episode_id,
|
|
1577
|
+
)
|
|
@@ -42,6 +42,7 @@ class AttachmentFile(db.Model, BaseMixin, SerializerMixin):
|
|
|
42
42
|
def create_from_import(cls, data):
|
|
43
43
|
data.pop("type", None)
|
|
44
44
|
data.pop("comment", None)
|
|
45
|
+
data.pop("chat_message", None)
|
|
45
46
|
previous_data = cls.get(data["id"])
|
|
46
47
|
if previous_data is None:
|
|
47
48
|
return cls.create(**data)
|
|
@@ -27,6 +27,8 @@ class EntityType(db.Model, BaseMixin, SerializerMixin):
|
|
|
27
27
|
"""
|
|
28
28
|
|
|
29
29
|
name = db.Column(db.String(30), unique=True, nullable=False, index=True)
|
|
30
|
+
short_name = db.Column(db.String(20))
|
|
31
|
+
description = db.Column(db.Text())
|
|
30
32
|
task_types = db.relationship(
|
|
31
33
|
"TaskType", secondary=task_type_link, lazy="joined"
|
|
32
34
|
)
|
|
@@ -15,6 +15,7 @@ class TaskStatus(db.Model, BaseMixin, SerializerMixin):
|
|
|
15
15
|
short_name = db.Column(
|
|
16
16
|
db.String(10), unique=True, nullable=False, index=True
|
|
17
17
|
)
|
|
18
|
+
description = db.Column(db.Text())
|
|
18
19
|
color = db.Column(db.String(7), nullable=False)
|
|
19
20
|
priority = db.Column(db.Integer, default=1)
|
|
20
21
|
|
|
@@ -12,6 +12,7 @@ class TaskType(db.Model, BaseMixin, SerializerMixin):
|
|
|
12
12
|
|
|
13
13
|
name = db.Column(db.String(40), nullable=False)
|
|
14
14
|
short_name = db.Column(db.String(20))
|
|
15
|
+
description = db.Column(db.Text())
|
|
15
16
|
color = db.Column(db.String(7), default="#FFFFFF")
|
|
16
17
|
priority = db.Column(db.Integer, default=1)
|
|
17
18
|
for_entity = db.Column(db.String(30), default="Asset")
|
|
@@ -163,7 +163,10 @@ def set_preview_file_as_ready(preview_file_id):
|
|
|
163
163
|
|
|
164
164
|
|
|
165
165
|
def prepare_and_store_movie(
|
|
166
|
-
preview_file_id,
|
|
166
|
+
preview_file_id,
|
|
167
|
+
uploaded_movie_path,
|
|
168
|
+
normalize=True,
|
|
169
|
+
add_source_to_file_store=True,
|
|
167
170
|
):
|
|
168
171
|
"""
|
|
169
172
|
Prepare movie preview, normalize the movie as a .mp4, build the thumbnails
|
|
@@ -196,13 +199,14 @@ def prepare_and_store_movie(
|
|
|
196
199
|
if normalize:
|
|
197
200
|
current_app.logger.info("start normalization")
|
|
198
201
|
try:
|
|
202
|
+
if add_source_to_file_store:
|
|
203
|
+
file_store.add_movie(
|
|
204
|
+
"source", preview_file_id, uploaded_movie_path
|
|
205
|
+
)
|
|
199
206
|
if (
|
|
200
207
|
config.ENABLE_JOB_QUEUE_REMOTE
|
|
201
208
|
and len(config.JOB_QUEUE_NOMAD_NORMALIZE_JOB) > 0
|
|
202
209
|
):
|
|
203
|
-
file_store.add_movie(
|
|
204
|
-
"source", preview_file_id, uploaded_movie_path
|
|
205
|
-
)
|
|
206
210
|
result = _run_remote_normalize_movie(
|
|
207
211
|
current_app, preview_file_id, fps, width, height
|
|
208
212
|
)
|
|
@@ -20,6 +20,7 @@ from zou.app.models.entity import (
|
|
|
20
20
|
)
|
|
21
21
|
from zou.app.models.person import Person
|
|
22
22
|
from zou.app.models.project import Project
|
|
23
|
+
from zou.app.models.preview_file import PreviewFile
|
|
23
24
|
from zou.app.models.schedule_item import ScheduleItem
|
|
24
25
|
from zou.app.models.subscription import Subscription
|
|
25
26
|
from zou.app.models.task import Task
|
|
@@ -1525,3 +1526,75 @@ def get_all_raw_shots():
|
|
|
1525
1526
|
"""
|
|
1526
1527
|
query = Entity.query.filter(Entity.entity_type_id == get_shot_type()["id"])
|
|
1527
1528
|
return query.all()
|
|
1529
|
+
|
|
1530
|
+
|
|
1531
|
+
def set_frames_from_task_type_preview_files(
|
|
1532
|
+
project_id,
|
|
1533
|
+
task_type_id,
|
|
1534
|
+
episode_id=None,
|
|
1535
|
+
):
|
|
1536
|
+
from zou.app import db
|
|
1537
|
+
|
|
1538
|
+
shot_type = get_shot_type()
|
|
1539
|
+
Shot = aliased(Entity)
|
|
1540
|
+
Sequence = aliased(Entity)
|
|
1541
|
+
|
|
1542
|
+
if episode_id is not None:
|
|
1543
|
+
subquery = (
|
|
1544
|
+
db.session.query(
|
|
1545
|
+
Shot.id.label("entity_id"),
|
|
1546
|
+
func.max(PreviewFile.created_at).label("max_created_at")
|
|
1547
|
+
)
|
|
1548
|
+
.join(Task, PreviewFile.task_id == Task.id)
|
|
1549
|
+
.join(Shot, Task.entity_id == Shot.id)
|
|
1550
|
+
.join(Sequence, Sequence.id == Shot.parent_id)
|
|
1551
|
+
.filter(Shot.project_id == project_id)
|
|
1552
|
+
.filter(Shot.entity_type_id == shot_type["id"])
|
|
1553
|
+
.filter(Task.task_type_id == task_type_id)
|
|
1554
|
+
.filter(Sequence.parent_id == episode_id)
|
|
1555
|
+
.group_by(Shot.id)
|
|
1556
|
+
.subquery()
|
|
1557
|
+
)
|
|
1558
|
+
else:
|
|
1559
|
+
subquery = (
|
|
1560
|
+
db.session.query(
|
|
1561
|
+
Shot.id.label("entity_id"),
|
|
1562
|
+
func.max(PreviewFile.created_at).label("max_created_at")
|
|
1563
|
+
)
|
|
1564
|
+
.join(Task, PreviewFile.task_id == Task.id)
|
|
1565
|
+
.join(Shot, Task.entity_id == Shot.id)
|
|
1566
|
+
.filter(Shot.project_id == project_id)
|
|
1567
|
+
.filter(Shot.entity_type_id == shot_type["id"])
|
|
1568
|
+
.filter(Task.task_type_id == task_type_id)
|
|
1569
|
+
.group_by(Shot.id)
|
|
1570
|
+
.subquery()
|
|
1571
|
+
)
|
|
1572
|
+
|
|
1573
|
+
query = (
|
|
1574
|
+
db.session.query(
|
|
1575
|
+
Shot,
|
|
1576
|
+
PreviewFile.duration
|
|
1577
|
+
)
|
|
1578
|
+
.join(Task, Task.entity_id == Shot.id)
|
|
1579
|
+
.join(subquery, (Shot.id == subquery.c.entity_id))
|
|
1580
|
+
.join(PreviewFile,
|
|
1581
|
+
(PreviewFile.task_id == Task.id) &
|
|
1582
|
+
(PreviewFile.created_at == subquery.c.max_created_at))
|
|
1583
|
+
.filter(Task.task_type_id == task_type_id)
|
|
1584
|
+
.filter(Shot.project_id == project_id)
|
|
1585
|
+
)
|
|
1586
|
+
|
|
1587
|
+
results = query.all()
|
|
1588
|
+
project = projects_service.get_project(project_id)
|
|
1589
|
+
updates = []
|
|
1590
|
+
for (shot, preview_duration) in results:
|
|
1591
|
+
nb_frames = round(preview_duration * int(project["fps"]))
|
|
1592
|
+
updates.append({
|
|
1593
|
+
"id": shot.id,
|
|
1594
|
+
"nb_frames": nb_frames,
|
|
1595
|
+
})
|
|
1596
|
+
clear_shot_cache(str(shot.id))
|
|
1597
|
+
|
|
1598
|
+
db.session.bulk_update_mappings(Shot, updates)
|
|
1599
|
+
db.session.commit()
|
|
1600
|
+
return updates
|
|
@@ -172,15 +172,15 @@ project_events = [
|
|
|
172
172
|
]
|
|
173
173
|
|
|
174
174
|
main_events = [
|
|
175
|
-
"person",
|
|
176
|
-
"organisation",
|
|
177
|
-
"project-status",
|
|
178
|
-
"department",
|
|
179
175
|
"studio",
|
|
176
|
+
"department",
|
|
180
177
|
"task-type",
|
|
181
178
|
"task-status",
|
|
182
179
|
"custom-action",
|
|
180
|
+
"organisation",
|
|
181
|
+
"project-status",
|
|
183
182
|
"asset-type",
|
|
183
|
+
"person",
|
|
184
184
|
"project",
|
|
185
185
|
]
|
|
186
186
|
|
|
@@ -408,35 +408,35 @@ def sync_entries(model_name, model, project=None):
|
|
|
408
408
|
"""
|
|
409
409
|
instances = []
|
|
410
410
|
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
411
|
+
page = 1
|
|
412
|
+
init = True
|
|
413
|
+
results = {"nb_pages": 2}
|
|
414
|
+
params = {
|
|
415
|
+
"relations": "true",
|
|
416
|
+
}
|
|
417
|
+
if model_name == "persons":
|
|
418
|
+
params["with_pass_hash"] = "true"
|
|
419
|
+
if project is not None and model_name in [
|
|
420
|
+
"projects",
|
|
421
|
+
"search-filters",
|
|
422
|
+
"search-filter-groups",
|
|
423
|
+
]:
|
|
418
424
|
project = gazu.project.get_project_by_name(project)
|
|
419
425
|
if model_name == "projects":
|
|
420
|
-
|
|
426
|
+
params = {"id": project["id"]}
|
|
421
427
|
elif model_name in ["search-filters", "search-filter-groups"]:
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
"%s?relations=true&page=%d" % (model_name, page)
|
|
435
|
-
)
|
|
436
|
-
instances += results["data"]
|
|
437
|
-
page += 1
|
|
438
|
-
init = False
|
|
439
|
-
model.create_from_import_list(results["data"])
|
|
428
|
+
params = {"project_id": project["id"]}
|
|
429
|
+
while init or results["nb_pages"] >= page:
|
|
430
|
+
params["page"] = page
|
|
431
|
+
results = gazu.client.fetch_all(model_name, params=params)
|
|
432
|
+
if model_name == "task-status" and results["data"]:
|
|
433
|
+
results["data"] = [
|
|
434
|
+
r for r in results["data"] if not r["for_concept"]
|
|
435
|
+
]
|
|
436
|
+
instances += results["data"]
|
|
437
|
+
page += 1
|
|
438
|
+
init = False
|
|
439
|
+
model.create_from_import_list(results["data"])
|
|
440
440
|
|
|
441
441
|
logger.info("%s %s synced." % (len(instances), model_name))
|
|
442
442
|
|
|
@@ -3,11 +3,13 @@
|
|
|
3
3
|
import os
|
|
4
4
|
import datetime
|
|
5
5
|
import tempfile
|
|
6
|
+
import sys
|
|
7
|
+
import shutil
|
|
6
8
|
|
|
7
9
|
|
|
8
10
|
from ldap3 import Server, Connection, ALL, NTLM, SIMPLE
|
|
9
11
|
from zou.app.utils import thumbnail as thumbnail_utils, auth
|
|
10
|
-
from zou.app.stores import auth_tokens_store, file_store
|
|
12
|
+
from zou.app.stores import auth_tokens_store, file_store, queue_store
|
|
11
13
|
from zou.app.services import (
|
|
12
14
|
assets_service,
|
|
13
15
|
backup_service,
|
|
@@ -23,6 +25,8 @@ from zou.app.services import (
|
|
|
23
25
|
tasks_service,
|
|
24
26
|
)
|
|
25
27
|
from zou.app.models.person import Person
|
|
28
|
+
from zou.app.models.preview_file import PreviewFile
|
|
29
|
+
from zou.app.models.task import Task
|
|
26
30
|
from sqlalchemy.sql.expression import not_
|
|
27
31
|
|
|
28
32
|
from zou.app.services.exception import (
|
|
@@ -717,3 +721,88 @@ def create_bot(
|
|
|
717
721
|
is_bot=True,
|
|
718
722
|
)
|
|
719
723
|
print(bot["access_token"])
|
|
724
|
+
|
|
725
|
+
|
|
726
|
+
def renormalize_movie_preview_files(
|
|
727
|
+
preview_file_id=None, project_id=None, all_broken=None, all_processing=None
|
|
728
|
+
):
|
|
729
|
+
with app.app_context():
|
|
730
|
+
if preview_file_id is None and not all_broken and not all_processing:
|
|
731
|
+
print("You must specify at least one option.")
|
|
732
|
+
sys.exit(1)
|
|
733
|
+
else:
|
|
734
|
+
query = PreviewFile.query.filter(
|
|
735
|
+
PreviewFile.extension == "mp4"
|
|
736
|
+
).order_by(PreviewFile.created_at.asc())
|
|
737
|
+
|
|
738
|
+
if preview_file_id is not None:
|
|
739
|
+
query = query.filter(PreviewFile.id == preview_file_id)
|
|
740
|
+
|
|
741
|
+
if project_id is not None:
|
|
742
|
+
query = query.join(Task).filter(
|
|
743
|
+
PreviewFile.project_id == project_id
|
|
744
|
+
)
|
|
745
|
+
|
|
746
|
+
if all_broken and all_processing:
|
|
747
|
+
query = query.filter(
|
|
748
|
+
PreviewFile.status.in_(("broken", "processing"))
|
|
749
|
+
)
|
|
750
|
+
elif all_broken:
|
|
751
|
+
query = query.filter(PreviewFile.status == "broken")
|
|
752
|
+
elif all_processing:
|
|
753
|
+
query = query.filter(PreviewFile.status == "processing")
|
|
754
|
+
|
|
755
|
+
preview_files = query.all()
|
|
756
|
+
len_preview_files = len(preview_files)
|
|
757
|
+
if len_preview_files == 0:
|
|
758
|
+
print("No preview files found.")
|
|
759
|
+
sys.exit(1)
|
|
760
|
+
else:
|
|
761
|
+
for i, preview_file in enumerate(preview_files):
|
|
762
|
+
try:
|
|
763
|
+
preview_file_id = str(preview_file.id)
|
|
764
|
+
print(
|
|
765
|
+
f"Renormalizing preview file {preview_file_id} ({i+1}/{len_preview_files})."
|
|
766
|
+
)
|
|
767
|
+
extension = preview_file.extension
|
|
768
|
+
uploaded_movie_path = os.path.join(
|
|
769
|
+
config.TMP_DIR,
|
|
770
|
+
f"{preview_file_id}.{extension}.tmp",
|
|
771
|
+
)
|
|
772
|
+
if config.FS_BACKEND == "local":
|
|
773
|
+
shutil.copyfile(
|
|
774
|
+
file_store.get_local_movie_path(
|
|
775
|
+
"source", preview_file_id
|
|
776
|
+
),
|
|
777
|
+
uploaded_movie_path,
|
|
778
|
+
)
|
|
779
|
+
else:
|
|
780
|
+
sync_service.download_file(
|
|
781
|
+
uploaded_movie_path,
|
|
782
|
+
"source",
|
|
783
|
+
file_store.open_movie,
|
|
784
|
+
str(preview_file_id),
|
|
785
|
+
)
|
|
786
|
+
if config.ENABLE_JOB_QUEUE:
|
|
787
|
+
queue_store.job_queue.enqueue(
|
|
788
|
+
preview_files_service.prepare_and_store_movie,
|
|
789
|
+
args=(
|
|
790
|
+
preview_file_id,
|
|
791
|
+
uploaded_movie_path,
|
|
792
|
+
True,
|
|
793
|
+
False,
|
|
794
|
+
),
|
|
795
|
+
job_timeout=int(config.JOB_QUEUE_TIMEOUT),
|
|
796
|
+
)
|
|
797
|
+
else:
|
|
798
|
+
preview_files_service.prepare_and_store_movie(
|
|
799
|
+
preview_file_id,
|
|
800
|
+
uploaded_movie_path,
|
|
801
|
+
normalize=True,
|
|
802
|
+
add_source_to_file_store=False,
|
|
803
|
+
)
|
|
804
|
+
except Exception as e:
|
|
805
|
+
print(
|
|
806
|
+
f"Renormalization of preview file {preview_file_id} failed: {e}"
|
|
807
|
+
)
|
|
808
|
+
continue
|
|
@@ -456,13 +456,13 @@ def upload_files_to_cloud_storage(days):
|
|
|
456
456
|
|
|
457
457
|
|
|
458
458
|
@cli.command()
|
|
459
|
-
@click.option("--
|
|
460
|
-
def clean_tasks_data(
|
|
459
|
+
@click.option("--project-id")
|
|
460
|
+
def clean_tasks_data(project_id):
|
|
461
461
|
"""
|
|
462
462
|
Reset task models data (retake count, wip start date and end date)
|
|
463
463
|
"""
|
|
464
|
-
if
|
|
465
|
-
commands.reset_tasks_data(
|
|
464
|
+
if project_id is not None:
|
|
465
|
+
commands.reset_tasks_data(project_id)
|
|
466
466
|
|
|
467
467
|
|
|
468
468
|
@cli.command()
|
|
@@ -569,7 +569,7 @@ def reset_breakdown_data():
|
|
|
569
569
|
@click.option("--email", required=True)
|
|
570
570
|
@click.option("--name", required=True)
|
|
571
571
|
@click.option(
|
|
572
|
-
"--
|
|
572
|
+
"--expiration-date",
|
|
573
573
|
required=False,
|
|
574
574
|
default=None,
|
|
575
575
|
show_default=True,
|
|
@@ -593,5 +593,39 @@ def create_bot(
|
|
|
593
593
|
)
|
|
594
594
|
|
|
595
595
|
|
|
596
|
+
@cli.command()
|
|
597
|
+
@click.option(
|
|
598
|
+
"--preview-file-id",
|
|
599
|
+
required=False,
|
|
600
|
+
default=None,
|
|
601
|
+
show_default=True,
|
|
602
|
+
)
|
|
603
|
+
@click.option(
|
|
604
|
+
"--project-id",
|
|
605
|
+
required=False,
|
|
606
|
+
default=None,
|
|
607
|
+
show_default=True,
|
|
608
|
+
)
|
|
609
|
+
@click.option("--all-broken", is_flag=True, default=False, show_default=True)
|
|
610
|
+
@click.option(
|
|
611
|
+
"--all-processing", is_flag=True, default=False, show_default=True
|
|
612
|
+
)
|
|
613
|
+
def renormalize_movie_preview_files(
|
|
614
|
+
preview_file_id,
|
|
615
|
+
project_id,
|
|
616
|
+
all_broken,
|
|
617
|
+
all_processing,
|
|
618
|
+
):
|
|
619
|
+
"""
|
|
620
|
+
Renormalize all preview files.
|
|
621
|
+
"""
|
|
622
|
+
commands.renormalize_movie_preview_files(
|
|
623
|
+
preview_file_id,
|
|
624
|
+
project_id,
|
|
625
|
+
all_broken,
|
|
626
|
+
all_processing,
|
|
627
|
+
)
|
|
628
|
+
|
|
629
|
+
|
|
596
630
|
if __name__ == "__main__":
|
|
597
631
|
cli()
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"""Add short_name for Asset Type entity_type
|
|
2
|
+
|
|
3
|
+
Revision ID: 971dbf5a0faf
|
|
4
|
+
Revises: a252a094e977
|
|
5
|
+
Create Date: 2024-06-20 19:51:15.758780
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from alembic import op
|
|
10
|
+
import sqlalchemy as sa
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
# revision identifiers, used by Alembic.
|
|
14
|
+
revision = "971dbf5a0faf"
|
|
15
|
+
down_revision = "a252a094e977"
|
|
16
|
+
branch_labels = None
|
|
17
|
+
depends_on = None
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def upgrade():
|
|
21
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
22
|
+
op.add_column(
|
|
23
|
+
"entity_type",
|
|
24
|
+
sa.Column("short_name", sa.String(length=20), nullable=True),
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
# ### end Alembic commands ###
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def downgrade():
|
|
31
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
32
|
+
op.drop_column("entity_type", "short_name")
|
|
33
|
+
# ### end Alembic commands ###
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"""Add descriptions for entities tasks and statuses
|
|
2
|
+
|
|
3
|
+
Revision ID: a252a094e977
|
|
4
|
+
Revises: 1bb55759146f
|
|
5
|
+
Create Date: 2024-06-20 20:37:21.885953
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from alembic import op
|
|
10
|
+
import sqlalchemy as sa
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
# revision identifiers, used by Alembic.
|
|
14
|
+
revision = "a252a094e977"
|
|
15
|
+
down_revision = "1bb55759146f"
|
|
16
|
+
branch_labels = None
|
|
17
|
+
depends_on = None
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def upgrade():
|
|
21
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
22
|
+
op.add_column(
|
|
23
|
+
"task_type", sa.Column("description", sa.Text(), nullable=True)
|
|
24
|
+
)
|
|
25
|
+
op.add_column(
|
|
26
|
+
"task_status", sa.Column("description", sa.Text(), nullable=True)
|
|
27
|
+
)
|
|
28
|
+
op.add_column(
|
|
29
|
+
"entity_type", sa.Column("description", sa.Text(), nullable=True)
|
|
30
|
+
)
|
|
31
|
+
# ### end Alembic commands ###
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def downgrade():
|
|
35
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
36
|
+
op.drop_column("task_type", "description")
|
|
37
|
+
op.drop_column("task_status", "description")
|
|
38
|
+
op.drop_column("entity_type", "description")
|
|
39
|
+
|
|
40
|
+
# ### end Alembic commands ###
|