zou 0.20.42__tar.gz → 0.20.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.20.42/zou.egg-info → zou-0.20.44}/PKG-INFO +6 -6
- {zou-0.20.42 → zou-0.20.44}/setup.cfg +5 -5
- zou-0.20.44/zou/__init__.py +1 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/assets/resources.py +32 -69
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/projects/resources.py +7 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/source/csv/task_type_estimations.py +3 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/budget_entry.py +3 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/services/assets_service.py +1 -4
- {zou-0.20.42 → zou-0.20.44}/zou/app/services/budget_service.py +15 -0
- zou-0.20.44/zou/migrations/versions/e7e633bd6fa2_add_exceptions_to_budget_entries.py +39 -0
- {zou-0.20.42 → zou-0.20.44/zou.egg-info}/PKG-INFO +6 -6
- {zou-0.20.42 → zou-0.20.44}/zou.egg-info/SOURCES.txt +1 -0
- {zou-0.20.42 → zou-0.20.44}/zou.egg-info/requires.txt +5 -5
- zou-0.20.42/zou/__init__.py +0 -1
- {zou-0.20.42 → zou-0.20.44}/LICENSE +0 -0
- {zou-0.20.42 → zou-0.20.44}/README.rst +0 -0
- {zou-0.20.42 → zou-0.20.44}/pyproject.toml +0 -0
- {zou-0.20.42 → zou-0.20.44}/setup.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/__init__.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/api.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/__init__.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/assets/__init__.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/auth/__init__.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/auth/resources.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/breakdown/__init__.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/breakdown/resources.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/chats/__init__.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/chats/resources.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/comments/__init__.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/comments/resources.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/concepts/__init__.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/concepts/resources.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/__init__.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/asset_instance.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/attachment_file.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/base.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/budget.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/budget_entry.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/chat.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/chat_message.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/comments.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/custom_action.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/day_off.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/department.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/entity.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/entity_link.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/entity_type.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/event.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/file_status.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/metadata_descriptor.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/milestone.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/news.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/notification.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/organisation.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/output_file.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/output_type.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/person.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/playlist.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/plugin.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/preview_background_file.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/preview_file.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/project.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/project_status.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/salary_scale.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/schedule_item.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/search_filter.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/search_filter_group.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/software.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/status_automation.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/studio.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/subscription.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/task.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/task_status.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/task_type.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/time_spent.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/crud/working_file.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/edits/__init__.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/edits/resources.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/entities/__init__.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/entities/resources.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/events/__init__.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/events/resources.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/export/__init__.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/export/csv/__init__.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/export/csv/assets.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/export/csv/base.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/export/csv/casting.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/export/csv/edits.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/export/csv/persons.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/export/csv/playlists.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/export/csv/projects.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/export/csv/shots.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/export/csv/task_types.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/export/csv/tasks.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/export/csv/time_spents.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/files/__init__.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/files/resources.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/index/__init__.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/index/resources.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/news/__init__.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/news/resources.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/persons/__init__.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/persons/resources.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/playlists/__init__.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/playlists/resources.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/previews/__init__.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/previews/resources.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/projects/__init__.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/search/__init__.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/search/resources.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/shots/__init__.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/shots/resources.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/source/__init__.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/source/csv/__init__.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/source/csv/assets.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/source/csv/base.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/source/csv/casting.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/source/csv/edits.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/source/csv/persons.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/source/csv/shots.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/source/kitsu.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/source/otio.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/source/shotgun/__init__.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/source/shotgun/assets.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/source/shotgun/base.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/source/shotgun/episode.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/source/shotgun/exception.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/source/shotgun/import_errors.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/source/shotgun/notes.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/source/shotgun/person.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/source/shotgun/project.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/source/shotgun/scene.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/source/shotgun/sequence.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/source/shotgun/shot.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/source/shotgun/status.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/source/shotgun/steps.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/source/shotgun/tasks.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/source/shotgun/team.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/source/shotgun/versions.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/tasks/__init__.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/tasks/resources.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/user/__init__.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/blueprints/user/resources.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/config.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/file_trees/default.json +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/file_trees/simple.json +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/indexer/__init__.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/indexer/indexing.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/mixin.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/__init__.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/asset_instance.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/attachment_file.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/base.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/budget.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/build_job.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/chat.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/chat_message.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/comment.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/custom_action.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/data_import_error.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/day_off.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/department.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/desktop_login_log.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/entity.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/entity_type.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/event.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/file_status.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/login_log.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/metadata_descriptor.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/milestone.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/news.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/notification.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/organisation.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/output_file.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/output_type.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/person.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/playlist.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/plugin.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/preview_background_file.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/preview_file.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/project.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/project_status.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/salary_scale.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/schedule_item.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/search_filter.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/search_filter_group.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/serializer.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/software.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/status_automation.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/studio.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/subscription.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/task.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/task_status.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/task_type.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/time_spent.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/models/working_file.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/services/__init__.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/services/auth_service.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/services/backup_service.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/services/base_service.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/services/breakdown_service.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/services/chats_service.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/services/comments_service.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/services/concepts_service.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/services/custom_actions_service.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/services/deletion_service.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/services/edits_service.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/services/emails_service.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/services/entities_service.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/services/events_service.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/services/exception.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/services/file_tree_service.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/services/files_service.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/services/index_service.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/services/names_service.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/services/news_service.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/services/notifications_service.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/services/persons_service.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/services/playlists_service.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/services/plugins_service.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/services/preview_files_service.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/services/projects_service.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/services/scenes_service.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/services/schedule_service.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/services/shots_service.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/services/stats_service.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/services/status_automations_service.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/services/sync_service.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/services/tasks_service.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/services/telemetry_services.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/services/time_spents_service.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/services/user_service.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/stores/__init__.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/stores/auth_tokens_store.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/stores/file_store.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/stores/publisher_store.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/stores/queue_store.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/swagger.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/utils/__init__.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/utils/api.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/utils/auth.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/utils/cache.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/utils/chats.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/utils/colors.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/utils/commands.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/utils/csv_utils.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/utils/date_helpers.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/utils/dbhelpers.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/utils/emails.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/utils/env.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/utils/events.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/utils/fido.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/utils/fields.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/utils/flask.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/utils/fs.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/utils/git.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/utils/logs.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/utils/monitoring.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/utils/permissions.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/utils/plugins.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/utils/query.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/utils/redis.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/utils/remote_job.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/utils/saml.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/utils/shell.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/utils/string.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/app/utils/thumbnail.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/cli.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/debug.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/event_stream.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/job_settings.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/README +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/__init__.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/alembic.ini +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/env.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/script.py.mako +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/utils/__init__.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/utils/base.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/003be8a91001_add_start_and_end_dates_to_projects.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/0596674df51d_add_department_mentions_to_comments.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/05ac7e8caa21_remove_unique_constraint_for_taskstatus_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/05b7dc79a416_add_archived_fields_to_main_tables.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/06552e22f9e7_add_comment_updated_by.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/0cf5e0e035fa_drop_column_tasktype_for_shots.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/0ec3762a745d_add_attachment_table.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/0ef6416a507b_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/10cf267d95c9_fix_schedule_item.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/16328eae4b5f_add_new_constraint_for_timespent.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/16df47d76c64_add_some_indexes.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/17ef8f7be758_disallow_null_choicetype.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/1bb55759146f_add_table_studio.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/1cb44194db49_add_file_size_field_to_preview_file.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/1e150c2cea4d_add_nb_entities_out.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/1e2d77a2f0c4_add_hd_by_default_column.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/1fab8c420678_add_attachments_to_message_chats.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/20a8ad264659_tasktypeassettypelink_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/20dfeb36142b_add_projecttaskstatuslink_roles_for_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/23122f290ca2_add_entity_chat_models.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/269d41bfb73f_add_entity_entity_links.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/2762a797f1f9_add_people_salary_information.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/29df910f04a4_create_unique_constraint_project_id_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/29fe01a6c9eb_add_status_automation_field.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/2adc020885fa_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/2baede80b111_add_entity_status_field.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/306266361f4f_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/307edd8c639d_change_comment_updated_by_in_comment_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/328fd44c6347_add_entity_created_by.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/32f134ff1201_add_is_shared_flag_to_filters.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/346250b5304c_add_position_to_preview_files.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/3476e147e632_add_acks_to_comments.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/389cfb9de776_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/38baa9a23b3d_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/398150912a3f_validation_status_preview.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/3b0d1321079e_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/3d5c93bafb9d_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/3e0538ddf80f_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/3fee3bd10f9d_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/4095103c7d01_add_is_clients_isolated_flag_to_projects.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/40dea9555940_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/42ec83db6a01_change_person_preferred_two_factor_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/43d0cf0ed5e7_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/443d1e78a932_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/45c2de366e66_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/45dafbb3f4e1_for_person_contract_type_disallow_null.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/45f739ef962a_add_people_salary_scale_table.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/4715c2586036_add_last_preview_file_fields.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/4aab1f84ad72_introduce_plugin_table.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/4e3738cdc34c_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/4f2398ebcd49_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/523ee9647bee_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/539a3a00c417_for_departmentlink_index_person_id_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/54ee0d1d60ba_add_build_job_model.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/556526e47daa_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/57222395f2be_add_statusautomation_import_last_revision.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/5798d2c9020b_change_person_role_to_choicetype.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/590aa1ffe731_add_notifications_enabled_flag.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/59a7445a966c_add_entity_is_shared.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/5a291251823c_add_max_retake_parameter.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/5ab9d7a75887_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/5b0fcbb94f24_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/5b7fa3e51701_add_is_client_allowed_flag_to_task_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/5b980f0dc365_add_comment_links.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/5b9fd9ddfe43_add_homepage_and_contract_fields.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/5c0498e264bc_add_slack_fields.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/5e2ce62632a6_add_workflow_to_project.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/680c64565f9d_for_searchfiltergroup_is_shared.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/693cc511d28d_add_taskstatus_priority.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/6aa446ee4072_add_is_for_all_flage_to_playlists.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/6bd3b102d61b_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/6c597e842afa_add_task_type_field_to_playlists.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/6d1b2c60f58b_add_milestone_model.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/6d7fa5a8e9a5_add_timesheets_locked_field_to_org.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/6eeaff945706_add_data_field_on_entity_links.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/6f6049877105_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/7417c8eb70d8_add_for_entity_field_to_playlists.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/772a5e43f05b_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/7748d3d22925_add_columns_to_searchfilter_table_to_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/77d6820f494f_add_reply_to_notif.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/7a16258f2fab_add_currency_field_to_budgets.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/7b1f765677d8_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/7bc746997e8d_add_slack_token_field_to_organisation.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/7dc79d4ed7cd_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/818f7bda2528_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/82e7f7a95e84_add_project_id_to_events.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/82ee682204ab_add_is_generated_from_ldap_column_to_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/83e2f33a9b14_add_project_bugdet_table.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/8588f254d6b8_add_archived_fields.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/8739ae9fa28b_add_for_client_field.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/87efceb6745b_add_ready_for_to_entity.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/892b264937ec_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/8a1b4a1b7f4a_add_totp_columns_for_person.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/8ab98c178903_add_budget_entry_table.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/8e4f39e321f4_add_day_off_table.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/8e67c183bed7_add_preference_fields.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/8fbd40afbe5f_allow_to_set_float_values_for_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/9010a64e5a2d_add_indices.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/9060dd4f6116_notification_uc.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/925771029620_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/92b40d79ad3f_allow_message_attachments.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/92bdfe07e5f5_discord_integration.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/956659992419_add_columns_for_person_to_store_fido_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/96c79d31e648_add_mail_otp_columns_for_person.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/96f58a4a2a58_person_partial_index_for_email_only_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/971dbf5a0faf_add_short_name_for_asset_type_entity_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/98c90621cf58_add_for_client_flag_to_playlist.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/99825b9cc778_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/9a09467f9b2c_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/9b85c14fa8a7_add_day_off_new_columns.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/9bd17364fc18_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/9d3bb33c6fc6_add_department_keys_to_filter_models.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/9e5b3a9b0cee_add_new_column_metadatadescriptor_data_type_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/9f8445f9b42c_add_man_days_fields.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/a23682ccc1f1_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/a252a094e977_add_descriptions_for_entities_tasks_and_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/a519c710877c_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/a65bdadbae2f_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/a66508788c53_add_nb_assets_ready.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/a6c25eed3ea1_add_login_failed_attemps_and_last_login_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/a7c43f3fbc76_add_duration_column_to_the_preview_file.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/aa0a60033106_feedback_request.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/addbad59c706_allow_to_manage_drawings_instead_of_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/addbbefa7028_add_departments_link_to_metadata_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/ae0127f2fc56_add_previewfile_width_and_previewfile_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/af1790868e2c_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/b45cb782bb9c_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/b4dd0add5f79_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/b8c0a0f9d054_drop_task_status_is_reviewable.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/b8ed0fb263f8_add_person_jti_and_jti_expiration_date.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/b97a71306fc8_add_is_casting_standby_column_to_entity.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/be56dc0fb760_for_is_shared_disallow_nullable.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/bf1347acdee2_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/c49e41f1298b_add_previewbackground.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/c68c2a62cfac_add_mimetype_column_to_attachment.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/c726b98be194_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/c81f3e83bdb5_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/ca28796a2a62_add_is_done_field_to_the_task_model.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/cf3d365de164_add_entity_version_model.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/cf6cec6d6bf5_add_status_field_to_preview_file.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/d25118cddcaa_modify_salary_scale_model.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/d80267806131_task_status_new_column_is_default.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/d8dcd5196d57_add_casting_label.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/de8a3de227ef_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/deeacd38d373_for_projecttaskstatuslink_set_default_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/df1834485f57_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/df9f8a147e80_change_file_size_to_big_integer.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/e1ef93f40d3d_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/e29638428dfd_add_schedule_item_table.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/e3f6db74cc1e_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/e839d6603c09_add_person_id_to_shot_history.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/ee2373fbe3a4_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/f0567e8d0c62_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/f0c6cbb61869_add_production_style_field.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/f344b867a911_for_description_of_entity_task_working_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/f4ff5a73d283_add_person_ldap_uid.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/f5b113876a49_add_preferred_two_factor_authentication_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/f5bdca075cdc_add_preview_download_flag_to_projects.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/f874ad5e898a_add_link_entity_type_task_type.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/f995b28fb749_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/fb6b6f188497_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/fb87feaaa094_add_missing_unique_constraints.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/fba149993140_add_missing_index.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/fc322f908695_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/fee7c696166e_.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/feffd3c5b806_introduce_concepts.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/migrations/versions/ffeed4956ab1_add_more_details_to_projects.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/plugin_template/__init__.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/plugin_template/routes.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/remote/__init__.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/remote/config_payload.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/remote/normalize_movie.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/remote/playlist.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/utils/__init__.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou/utils/movie.py +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou.egg-info/dependency_links.txt +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou.egg-info/entry_points.txt +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou.egg-info/not-zip-safe +0 -0
- {zou-0.20.42 → zou-0.20.44}/zou.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: zou
|
|
3
|
-
Version: 0.20.
|
|
3
|
+
Version: 0.20.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
|
|
@@ -39,7 +39,7 @@ Requires-Dist: flask-fs2[s3,swift]==0.7.29
|
|
|
39
39
|
Requires-Dist: flask-jwt-extended==4.7.1
|
|
40
40
|
Requires-Dist: flask-migrate==4.1.0
|
|
41
41
|
Requires-Dist: flask-socketio==5.5.1
|
|
42
|
-
Requires-Dist: flask==3.1.
|
|
42
|
+
Requires-Dist: flask==3.1.1
|
|
43
43
|
Requires-Dist: gazu==0.10.31
|
|
44
44
|
Requires-Dist: gevent-websocket==0.10.1
|
|
45
45
|
Requires-Dist: gevent==25.5.1
|
|
@@ -51,14 +51,14 @@ Requires-Dist: ldap3==2.9.1
|
|
|
51
51
|
Requires-Dist: matterhook==0.2
|
|
52
52
|
Requires-Dist: meilisearch==0.34.1
|
|
53
53
|
Requires-Dist: numpy==2.0.1; python_version == "3.9"
|
|
54
|
-
Requires-Dist: numpy==2.2.
|
|
54
|
+
Requires-Dist: numpy==2.2.6; python_version >= "3.10"
|
|
55
55
|
Requires-Dist: opencv-python==4.11.0.86
|
|
56
56
|
Requires-Dist: OpenTimelineIO==0.17.0
|
|
57
57
|
Requires-Dist: OpenTimelineIO-Plugins==0.17.0
|
|
58
58
|
Requires-Dist: orjson==3.10.18
|
|
59
59
|
Requires-Dist: pillow==11.2.1
|
|
60
60
|
Requires-Dist: psutil==7.0.0
|
|
61
|
-
Requires-Dist: psycopg[binary]==3.2.
|
|
61
|
+
Requires-Dist: psycopg[binary]==3.2.9
|
|
62
62
|
Requires-Dist: pyotp==2.9.0
|
|
63
63
|
Requires-Dist: pysaml2==7.5.2
|
|
64
64
|
Requires-Dist: python-nomad==2.1.0
|
|
@@ -72,7 +72,7 @@ Requires-Dist: semver==3.0.4
|
|
|
72
72
|
Requires-Dist: slackclient==2.9.4
|
|
73
73
|
Requires-Dist: spdx-license-list==3.26.0
|
|
74
74
|
Requires-Dist: sqlalchemy_utils==0.41.2
|
|
75
|
-
Requires-Dist: sqlalchemy==2.0.
|
|
75
|
+
Requires-Dist: sqlalchemy==2.0.41
|
|
76
76
|
Requires-Dist: tabulate==0.9.0
|
|
77
77
|
Requires-Dist: tomlkit==0.13.2
|
|
78
78
|
Requires-Dist: ua-parser==1.0.1
|
|
@@ -90,7 +90,7 @@ Requires-Dist: pytest==8.3.5; extra == "test"
|
|
|
90
90
|
Provides-Extra: monitoring
|
|
91
91
|
Requires-Dist: prometheus-flask-exporter==0.23.2; extra == "monitoring"
|
|
92
92
|
Requires-Dist: pygelf==0.4.2; extra == "monitoring"
|
|
93
|
-
Requires-Dist: sentry-sdk==2.
|
|
93
|
+
Requires-Dist: sentry-sdk==2.29.1; extra == "monitoring"
|
|
94
94
|
Provides-Extra: lint
|
|
95
95
|
Requires-Dist: autoflake==2.3.1; extra == "lint"
|
|
96
96
|
Requires-Dist: black==25.1.0; extra == "lint"
|
|
@@ -45,7 +45,7 @@ install_requires =
|
|
|
45
45
|
flask-jwt-extended==4.7.1
|
|
46
46
|
flask-migrate==4.1.0
|
|
47
47
|
flask-socketio==5.5.1
|
|
48
|
-
flask==3.1.
|
|
48
|
+
flask==3.1.1
|
|
49
49
|
gazu==0.10.31
|
|
50
50
|
gevent-websocket==0.10.1
|
|
51
51
|
gevent==25.5.1
|
|
@@ -57,14 +57,14 @@ install_requires =
|
|
|
57
57
|
matterhook==0.2
|
|
58
58
|
meilisearch==0.34.1
|
|
59
59
|
numpy==2.0.1; python_version == '3.9'
|
|
60
|
-
numpy==2.2.
|
|
60
|
+
numpy==2.2.6; python_version >= '3.10'
|
|
61
61
|
opencv-python==4.11.0.86
|
|
62
62
|
OpenTimelineIO==0.17.0
|
|
63
63
|
OpenTimelineIO-Plugins==0.17.0
|
|
64
64
|
orjson==3.10.18
|
|
65
65
|
pillow==11.2.1
|
|
66
66
|
psutil==7.0.0
|
|
67
|
-
psycopg[binary]==3.2.
|
|
67
|
+
psycopg[binary]==3.2.9
|
|
68
68
|
pyotp==2.9.0
|
|
69
69
|
pysaml2==7.5.2
|
|
70
70
|
python-nomad==2.1.0
|
|
@@ -78,7 +78,7 @@ install_requires =
|
|
|
78
78
|
slackclient==2.9.4
|
|
79
79
|
spdx-license-list==3.26.0
|
|
80
80
|
sqlalchemy_utils==0.41.2
|
|
81
|
-
sqlalchemy==2.0.
|
|
81
|
+
sqlalchemy==2.0.41
|
|
82
82
|
tabulate==0.9.0
|
|
83
83
|
tomlkit==0.13.2
|
|
84
84
|
ua-parser==1.0.1
|
|
@@ -104,7 +104,7 @@ test =
|
|
|
104
104
|
monitoring =
|
|
105
105
|
prometheus-flask-exporter==0.23.2
|
|
106
106
|
pygelf==0.4.2
|
|
107
|
-
sentry-sdk==2.
|
|
107
|
+
sentry-sdk==2.29.1
|
|
108
108
|
lint =
|
|
109
109
|
autoflake==2.3.1
|
|
110
110
|
black==25.1.0
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.20.44"
|
|
@@ -29,9 +29,6 @@ def check_criterion_access(criterions):
|
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
class AssetResource(Resource, ArgsMixin):
|
|
32
|
-
"""
|
|
33
|
-
Retrieve or delete given asset.
|
|
34
|
-
"""
|
|
35
32
|
|
|
36
33
|
@jwt_required()
|
|
37
34
|
def get(self, asset_id):
|
|
@@ -72,7 +69,7 @@ class AssetResource(Resource, ArgsMixin):
|
|
|
72
69
|
required: True
|
|
73
70
|
responses:
|
|
74
71
|
204:
|
|
75
|
-
description:
|
|
72
|
+
description: Empty response
|
|
76
73
|
"""
|
|
77
74
|
force = self.get_force()
|
|
78
75
|
|
|
@@ -87,15 +84,11 @@ class AssetResource(Resource, ArgsMixin):
|
|
|
87
84
|
|
|
88
85
|
|
|
89
86
|
class AllAssetsResource(Resource):
|
|
90
|
-
"""
|
|
91
|
-
Retrieve all entities that are not shot or sequence.
|
|
92
|
-
Adds project name and asset type name.
|
|
93
|
-
"""
|
|
94
87
|
|
|
95
88
|
@jwt_required()
|
|
96
89
|
def get(self):
|
|
97
90
|
"""
|
|
98
|
-
Retrieve all entities that are not shot or
|
|
91
|
+
Retrieve all entities that are not shot, sequence, episode, or edit.
|
|
99
92
|
Adds project name and asset type name.
|
|
100
93
|
---
|
|
101
94
|
tags:
|
|
@@ -121,18 +114,15 @@ class AllAssetsAliasResource(AllAssetsResource):
|
|
|
121
114
|
|
|
122
115
|
|
|
123
116
|
class AssetsAndTasksResource(Resource, ArgsMixin):
|
|
124
|
-
"""
|
|
125
|
-
Retrieve all entities that are not shot or sequence.
|
|
126
|
-
"""
|
|
127
117
|
|
|
128
118
|
@jwt_required()
|
|
129
119
|
def get(self):
|
|
130
120
|
"""
|
|
131
|
-
Retrieve all entities that are not shot or
|
|
121
|
+
Retrieve all entities that are not shot, sequence, episode, or edit.
|
|
122
|
+
Adds project name and asset type name and all related tasks.
|
|
123
|
+
If episode_id is given as parameter, it returns assets not linked
|
|
124
|
+
to an episode and assets linked to given episode.
|
|
132
125
|
---
|
|
133
|
-
description: Adds project name and asset type name and all related tasks.
|
|
134
|
-
If episode_id is given as parameter, it returns assets not linked
|
|
135
|
-
to an episode and assets linked to given episode.
|
|
136
126
|
tags:
|
|
137
127
|
- Assets
|
|
138
128
|
responses:
|
|
@@ -153,9 +143,6 @@ class AssetsAndTasksResource(Resource, ArgsMixin):
|
|
|
153
143
|
|
|
154
144
|
|
|
155
145
|
class AssetTypeResource(Resource):
|
|
156
|
-
"""
|
|
157
|
-
Retrieve given asset type.
|
|
158
|
-
"""
|
|
159
146
|
|
|
160
147
|
@jwt_required()
|
|
161
148
|
def get(self, asset_type_id):
|
|
@@ -179,9 +166,6 @@ class AssetTypeResource(Resource):
|
|
|
179
166
|
|
|
180
167
|
|
|
181
168
|
class AssetTypesResource(Resource):
|
|
182
|
-
"""
|
|
183
|
-
Retrieve all asset types (entity types that are not shot, sequence or episode).
|
|
184
|
-
"""
|
|
185
169
|
|
|
186
170
|
@jwt_required()
|
|
187
171
|
def get(self):
|
|
@@ -199,9 +183,6 @@ class AssetTypesResource(Resource):
|
|
|
199
183
|
|
|
200
184
|
|
|
201
185
|
class ProjectAssetTypesResource(Resource):
|
|
202
|
-
"""
|
|
203
|
-
Retrieve all asset types for given project.
|
|
204
|
-
"""
|
|
205
186
|
|
|
206
187
|
@jwt_required()
|
|
207
188
|
def get(self, project_id):
|
|
@@ -226,14 +207,11 @@ class ProjectAssetTypesResource(Resource):
|
|
|
226
207
|
|
|
227
208
|
|
|
228
209
|
class ShotAssetTypesResource(Resource):
|
|
229
|
-
"""
|
|
230
|
-
Retrieve all asset shots for given shot.
|
|
231
|
-
"""
|
|
232
210
|
|
|
233
211
|
@jwt_required()
|
|
234
212
|
def get(self, shot_id):
|
|
235
213
|
"""
|
|
236
|
-
Retrieve all asset
|
|
214
|
+
Retrieve all asset types of assets casted in given shot.
|
|
237
215
|
---
|
|
238
216
|
tags:
|
|
239
217
|
- Assets
|
|
@@ -246,7 +224,7 @@ class ShotAssetTypesResource(Resource):
|
|
|
246
224
|
required: True
|
|
247
225
|
responses:
|
|
248
226
|
200:
|
|
249
|
-
description: All asset
|
|
227
|
+
description: All asset types of assets casted in given shot
|
|
250
228
|
"""
|
|
251
229
|
shot = shots_service.get_shot(shot_id)
|
|
252
230
|
user_service.check_project_access(shot["project_id"])
|
|
@@ -254,9 +232,6 @@ class ShotAssetTypesResource(Resource):
|
|
|
254
232
|
|
|
255
233
|
|
|
256
234
|
class ProjectAssetsResource(Resource):
|
|
257
|
-
"""
|
|
258
|
-
Retrieve all assets for given project.
|
|
259
|
-
"""
|
|
260
235
|
|
|
261
236
|
@jwt_required()
|
|
262
237
|
def get(self, project_id):
|
|
@@ -287,14 +262,11 @@ class ProjectAssetsResource(Resource):
|
|
|
287
262
|
|
|
288
263
|
|
|
289
264
|
class ProjectAssetTypeAssetsResource(Resource):
|
|
290
|
-
"""
|
|
291
|
-
Retrieve all assets for given project and entity type.
|
|
292
|
-
"""
|
|
293
265
|
|
|
294
266
|
@jwt_required()
|
|
295
267
|
def get(self, project_id, asset_type_id):
|
|
296
268
|
"""
|
|
297
|
-
Retrieve all assets for given project and
|
|
269
|
+
Retrieve all assets for given project and asset type.
|
|
298
270
|
---
|
|
299
271
|
tags:
|
|
300
272
|
- Assets
|
|
@@ -313,7 +285,7 @@ class ProjectAssetTypeAssetsResource(Resource):
|
|
|
313
285
|
x-example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
314
286
|
responses:
|
|
315
287
|
200:
|
|
316
|
-
description: All assets for given project and
|
|
288
|
+
description: All assets for given project and asset type
|
|
317
289
|
"""
|
|
318
290
|
user_service.check_project_access(project_id)
|
|
319
291
|
criterions = query.get_query_criterions_from_request(request)
|
|
@@ -327,14 +299,11 @@ class ProjectAssetTypeAssetsResource(Resource):
|
|
|
327
299
|
|
|
328
300
|
|
|
329
301
|
class AssetAssetsResource(Resource):
|
|
330
|
-
"""
|
|
331
|
-
Retrieve all assets for a given asset.
|
|
332
|
-
"""
|
|
333
302
|
|
|
334
303
|
@jwt_required()
|
|
335
304
|
def get(self, asset_id):
|
|
336
305
|
"""
|
|
337
|
-
Retrieve all assets
|
|
306
|
+
Retrieve all assets linked to given asset.
|
|
338
307
|
---
|
|
339
308
|
tags:
|
|
340
309
|
- Assets
|
|
@@ -347,7 +316,7 @@ class AssetAssetsResource(Resource):
|
|
|
347
316
|
x-example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
348
317
|
responses:
|
|
349
318
|
200:
|
|
350
|
-
description: All assets
|
|
319
|
+
description: All assets linked to given asset
|
|
351
320
|
"""
|
|
352
321
|
asset = assets_service.get_asset(asset_id)
|
|
353
322
|
user_service.check_project_access(asset["project_id"])
|
|
@@ -356,10 +325,11 @@ class AssetAssetsResource(Resource):
|
|
|
356
325
|
|
|
357
326
|
|
|
358
327
|
class AssetTasksResource(Resource, ArgsMixin):
|
|
328
|
+
|
|
359
329
|
@jwt_required()
|
|
360
330
|
def get(self, asset_id):
|
|
361
331
|
"""
|
|
362
|
-
Retrieve all tasks related to
|
|
332
|
+
Retrieve all tasks related to given asset.
|
|
363
333
|
---
|
|
364
334
|
tags:
|
|
365
335
|
- Assets
|
|
@@ -372,7 +342,7 @@ class AssetTasksResource(Resource, ArgsMixin):
|
|
|
372
342
|
x-example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
373
343
|
responses:
|
|
374
344
|
200:
|
|
375
|
-
description: All tasks related to given
|
|
345
|
+
description: All tasks related to given asset
|
|
376
346
|
"""
|
|
377
347
|
asset = assets_service.get_asset(asset_id)
|
|
378
348
|
user_service.check_project_access(asset["project_id"])
|
|
@@ -382,10 +352,11 @@ class AssetTasksResource(Resource, ArgsMixin):
|
|
|
382
352
|
|
|
383
353
|
|
|
384
354
|
class AssetTaskTypesResource(Resource):
|
|
355
|
+
|
|
385
356
|
@jwt_required()
|
|
386
357
|
def get(self, asset_id):
|
|
387
358
|
"""
|
|
388
|
-
Retrieve all task types related to
|
|
359
|
+
Retrieve all task types of tasks related to given asset.
|
|
389
360
|
---
|
|
390
361
|
tags:
|
|
391
362
|
- Assets
|
|
@@ -398,7 +369,7 @@ class AssetTaskTypesResource(Resource):
|
|
|
398
369
|
x-example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
399
370
|
responses:
|
|
400
371
|
200:
|
|
401
|
-
description: All task types related to given asset
|
|
372
|
+
description: All task types of tasks related to given asset
|
|
402
373
|
"""
|
|
403
374
|
asset = assets_service.get_asset(asset_id)
|
|
404
375
|
user_service.check_project_access(asset["project_id"])
|
|
@@ -406,14 +377,11 @@ class AssetTaskTypesResource(Resource):
|
|
|
406
377
|
|
|
407
378
|
|
|
408
379
|
class NewAssetResource(Resource, ArgsMixin):
|
|
409
|
-
"""
|
|
410
|
-
Create new asset resource.
|
|
411
|
-
"""
|
|
412
380
|
|
|
413
381
|
@jwt_required()
|
|
414
382
|
def post(self, project_id, asset_type_id):
|
|
415
383
|
"""
|
|
416
|
-
Create new asset
|
|
384
|
+
Create new asset with given parameters.
|
|
417
385
|
---
|
|
418
386
|
tags:
|
|
419
387
|
- Assets
|
|
@@ -503,10 +471,11 @@ class NewAssetResource(Resource, ArgsMixin):
|
|
|
503
471
|
|
|
504
472
|
|
|
505
473
|
class AssetCastingResource(Resource):
|
|
474
|
+
|
|
506
475
|
@jwt_required()
|
|
507
476
|
def get(self, asset_id):
|
|
508
477
|
"""
|
|
509
|
-
|
|
478
|
+
Retrieve the casting of a given asset.
|
|
510
479
|
---
|
|
511
480
|
tags:
|
|
512
481
|
- Assets
|
|
@@ -529,7 +498,7 @@ class AssetCastingResource(Resource):
|
|
|
529
498
|
@jwt_required()
|
|
530
499
|
def put(self, asset_id):
|
|
531
500
|
"""
|
|
532
|
-
|
|
501
|
+
Modify the casting of given asset.
|
|
533
502
|
---
|
|
534
503
|
tags:
|
|
535
504
|
- Assets
|
|
@@ -551,10 +520,11 @@ class AssetCastingResource(Resource):
|
|
|
551
520
|
|
|
552
521
|
|
|
553
522
|
class AssetCastInResource(Resource):
|
|
523
|
+
|
|
554
524
|
@jwt_required()
|
|
555
525
|
def get(self, asset_id):
|
|
556
526
|
"""
|
|
557
|
-
|
|
527
|
+
Retrieve the list of shots that cast given asset.
|
|
558
528
|
---
|
|
559
529
|
tags:
|
|
560
530
|
- Assets
|
|
@@ -567,7 +537,7 @@ class AssetCastInResource(Resource):
|
|
|
567
537
|
x-example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
568
538
|
responses:
|
|
569
539
|
200:
|
|
570
|
-
description:
|
|
540
|
+
description: List of shots that cast given asset
|
|
571
541
|
"""
|
|
572
542
|
asset = assets_service.get_asset(asset_id)
|
|
573
543
|
user_service.check_project_access(asset["project_id"])
|
|
@@ -576,10 +546,11 @@ class AssetCastInResource(Resource):
|
|
|
576
546
|
|
|
577
547
|
|
|
578
548
|
class AssetShotAssetInstancesResource(Resource):
|
|
549
|
+
|
|
579
550
|
@jwt_required()
|
|
580
551
|
def get(self, asset_id):
|
|
581
552
|
"""
|
|
582
|
-
Retrieve all shot asset instances linked to asset.
|
|
553
|
+
Retrieve all shot asset instances linked to given asset.
|
|
583
554
|
---
|
|
584
555
|
tags:
|
|
585
556
|
- Assets
|
|
@@ -592,7 +563,7 @@ class AssetShotAssetInstancesResource(Resource):
|
|
|
592
563
|
x-example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
593
564
|
responses:
|
|
594
565
|
200:
|
|
595
|
-
description: All shot asset instances linked to asset
|
|
566
|
+
description: All shot asset instances linked to given asset
|
|
596
567
|
"""
|
|
597
568
|
asset = assets_service.get_asset(asset_id)
|
|
598
569
|
user_service.check_project_access(asset["project_id"])
|
|
@@ -603,7 +574,7 @@ class AssetSceneAssetInstancesResource(Resource):
|
|
|
603
574
|
@jwt_required()
|
|
604
575
|
def get(self, asset_id):
|
|
605
576
|
"""
|
|
606
|
-
Retrieve all scene asset instances linked to asset.
|
|
577
|
+
Retrieve all scene asset instances linked to given asset.
|
|
607
578
|
---
|
|
608
579
|
tags:
|
|
609
580
|
- Assets
|
|
@@ -616,7 +587,7 @@ class AssetSceneAssetInstancesResource(Resource):
|
|
|
616
587
|
x-example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
617
588
|
responses:
|
|
618
589
|
200:
|
|
619
|
-
description: All scene asset instances linked to asset
|
|
590
|
+
description: All scene asset instances linked to given asset
|
|
620
591
|
"""
|
|
621
592
|
asset = assets_service.get_asset(asset_id)
|
|
622
593
|
user_service.check_project_access(asset["project_id"])
|
|
@@ -627,7 +598,7 @@ class AssetAssetInstancesResource(Resource, ArgsMixin):
|
|
|
627
598
|
@jwt_required()
|
|
628
599
|
def get(self, asset_id):
|
|
629
600
|
"""
|
|
630
|
-
Retrieve all asset instances instantiated inside
|
|
601
|
+
Retrieve all asset instances instantiated inside given asset.
|
|
631
602
|
---
|
|
632
603
|
tags:
|
|
633
604
|
- Assets
|
|
@@ -702,9 +673,6 @@ class BaseSetSharedAssetsResource(Resource, ArgsMixin):
|
|
|
702
673
|
|
|
703
674
|
|
|
704
675
|
class SetSharedProjectAssetsResource(BaseSetSharedAssetsResource):
|
|
705
|
-
"""
|
|
706
|
-
Share or unshare all assets (or a list of assets) for given project.
|
|
707
|
-
"""
|
|
708
676
|
|
|
709
677
|
@jwt_required()
|
|
710
678
|
def post(self, project_id):
|
|
@@ -754,9 +722,6 @@ class SetSharedProjectAssetsResource(BaseSetSharedAssetsResource):
|
|
|
754
722
|
|
|
755
723
|
|
|
756
724
|
class SetSharedProjectAssetTypeAssetsResource(BaseSetSharedAssetsResource):
|
|
757
|
-
"""
|
|
758
|
-
Share or unshare all assets for given project and asset type.
|
|
759
|
-
"""
|
|
760
725
|
|
|
761
726
|
@jwt_required()
|
|
762
727
|
def post(self, project_id, asset_type_id):
|
|
@@ -794,9 +759,6 @@ class SetSharedProjectAssetTypeAssetsResource(BaseSetSharedAssetsResource):
|
|
|
794
759
|
|
|
795
760
|
|
|
796
761
|
class SetSharedAssetsResource(BaseSetSharedAssetsResource):
|
|
797
|
-
"""
|
|
798
|
-
Share or unshare all assets (or a list of assets) for given project.
|
|
799
|
-
"""
|
|
800
762
|
|
|
801
763
|
@jwt_required()
|
|
802
764
|
def post(self):
|
|
@@ -868,6 +830,7 @@ class ProjectAssetsSharedUsedResource(Resource):
|
|
|
868
830
|
|
|
869
831
|
|
|
870
832
|
class ProjectEpisodeAssetsSharedUsedResource(Resource):
|
|
833
|
+
|
|
871
834
|
@jwt_required()
|
|
872
835
|
def get(self, project_id, episode_id):
|
|
873
836
|
"""
|
|
@@ -1447,6 +1447,13 @@ class ProductionBudgetEntryResource(Resource, ArgsMixin):
|
|
|
1447
1447
|
("daily_salary", None, False),
|
|
1448
1448
|
("position", None, False),
|
|
1449
1449
|
("seniority", None, False),
|
|
1450
|
+
{
|
|
1451
|
+
"name": "exceptions",
|
|
1452
|
+
"required": False,
|
|
1453
|
+
"default": {},
|
|
1454
|
+
"type": dict,
|
|
1455
|
+
"help": "Map of amount exceptions. Key is the date and value is the amount. Example: {'2025-01-01': 1000, '2025-02-01': 2000}",
|
|
1456
|
+
},
|
|
1450
1457
|
]
|
|
1451
1458
|
)
|
|
1452
1459
|
return budget_service.update_budget_entry(entry_id, data)
|
|
@@ -109,6 +109,9 @@ class TaskTypeEstimationsCsvImportResource(BaseCsvProjectImportResource):
|
|
|
109
109
|
* 60
|
|
110
110
|
)
|
|
111
111
|
|
|
112
|
+
if row.get("Drawings") not in [None, ""]:
|
|
113
|
+
new_data["nb_drawings"] = int(row["Drawings"])
|
|
114
|
+
|
|
112
115
|
if row.get("Start date") not in [None, ""]:
|
|
113
116
|
new_data["start_date"] = date_helpers.get_date_from_string(
|
|
114
117
|
row["Start date"]
|
|
@@ -2,6 +2,7 @@ from sqlalchemy_utils import (
|
|
|
2
2
|
UUIDType,
|
|
3
3
|
ChoiceType,
|
|
4
4
|
)
|
|
5
|
+
from sqlalchemy.dialects.postgresql import JSONB
|
|
5
6
|
|
|
6
7
|
from zou.app import db
|
|
7
8
|
from zou.app.models.serializer import SerializerMixin
|
|
@@ -40,6 +41,7 @@ class BudgetEntry(db.Model, BaseMixin, SerializerMixin):
|
|
|
40
41
|
daily_salary = db.Column(db.Float, nullable=False)
|
|
41
42
|
position = db.Column(ChoiceType(POSITION_TYPES), default="artist")
|
|
42
43
|
seniority = db.Column(ChoiceType(SENIORITY_TYPES), default="mid")
|
|
44
|
+
exceptions = db.Column(JSONB)
|
|
43
45
|
|
|
44
46
|
def __repr__(self):
|
|
45
47
|
return "<BudgetEntry of %s - %d %s %s>" % (
|
|
@@ -61,5 +63,6 @@ class BudgetEntry(db.Model, BaseMixin, SerializerMixin):
|
|
|
61
63
|
"daily_salary": self.daily_salary,
|
|
62
64
|
"position": self.position,
|
|
63
65
|
"seniority": self.seniority,
|
|
66
|
+
"exceptions": self.exceptions,
|
|
64
67
|
}
|
|
65
68
|
)
|
|
@@ -534,10 +534,7 @@ def get_or_create_asset_type(name):
|
|
|
534
534
|
if asset_type is None:
|
|
535
535
|
asset_type = EntityType.create(name=name)
|
|
536
536
|
clear_asset_type_cache()
|
|
537
|
-
|
|
538
|
-
events.emit(
|
|
539
|
-
"asset-type:new", {"name": asset_type.name, "id": asset_type.id}
|
|
540
|
-
)
|
|
537
|
+
events.emit("asset-type:new", {"asset_type_id": asset_type.id})
|
|
541
538
|
|
|
542
539
|
return asset_type.serialize(obj_type="AssetType")
|
|
543
540
|
|
|
@@ -156,6 +156,7 @@ def create_budget_entry(
|
|
|
156
156
|
daily_salary=daily_salary,
|
|
157
157
|
position=position,
|
|
158
158
|
seniority=seniority,
|
|
159
|
+
exceptions={},
|
|
159
160
|
)
|
|
160
161
|
events.emit(
|
|
161
162
|
"budget-entry:create",
|
|
@@ -171,6 +172,7 @@ def update_budget_entry(budget_entry_id, data):
|
|
|
171
172
|
"""
|
|
172
173
|
budget_entry = get_budget_entry_raw(budget_entry_id)
|
|
173
174
|
budget = get_budget_raw(str(budget_entry.budget_id))
|
|
175
|
+
data = _clean_exceptions(data)
|
|
174
176
|
budget_entry.update(data)
|
|
175
177
|
events.emit(
|
|
176
178
|
"budget-entry:update",
|
|
@@ -180,6 +182,19 @@ def update_budget_entry(budget_entry_id, data):
|
|
|
180
182
|
return budget_entry.serialize()
|
|
181
183
|
|
|
182
184
|
|
|
185
|
+
def _clean_exceptions(data):
|
|
186
|
+
if "exceptions" in data:
|
|
187
|
+
if data["exceptions"] is None:
|
|
188
|
+
data["exceptions"] = {}
|
|
189
|
+
else:
|
|
190
|
+
data["exceptions"] = {
|
|
191
|
+
k: int(v)
|
|
192
|
+
for k, v in data["exceptions"].items()
|
|
193
|
+
if v is not None and int(v) > 0
|
|
194
|
+
}
|
|
195
|
+
return data
|
|
196
|
+
|
|
197
|
+
|
|
183
198
|
def delete_budget_entry(budget_entry_id):
|
|
184
199
|
"""
|
|
185
200
|
Delete budget entry corresponding to given budget entry ID.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"""add exceptions to budget entries
|
|
2
|
+
|
|
3
|
+
Revision ID: e7e633bd6fa2
|
|
4
|
+
Revises: 4aab1f84ad72
|
|
5
|
+
Create Date: 2025-05-12 18:47:21.506153
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from alembic import op
|
|
10
|
+
import sqlalchemy as sa
|
|
11
|
+
from sqlalchemy.dialects import postgresql
|
|
12
|
+
|
|
13
|
+
# revision identifiers, used by Alembic.
|
|
14
|
+
revision = "e7e633bd6fa2"
|
|
15
|
+
down_revision = "4aab1f84ad72"
|
|
16
|
+
branch_labels = None
|
|
17
|
+
depends_on = None
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def upgrade():
|
|
21
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
22
|
+
with op.batch_alter_table("budget_entry", schema=None) as batch_op:
|
|
23
|
+
batch_op.add_column(
|
|
24
|
+
sa.Column(
|
|
25
|
+
"exceptions",
|
|
26
|
+
postgresql.JSONB(astext_type=sa.Text()),
|
|
27
|
+
nullable=True,
|
|
28
|
+
)
|
|
29
|
+
)
|
|
30
|
+
# ### end Alembic commands ###
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def downgrade():
|
|
34
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
35
|
+
with op.batch_alter_table("task", schema=None) as batch_op:
|
|
36
|
+
batch_op.alter_column(
|
|
37
|
+
"difficulty", existing_type=sa.INTEGER(), nullable=True
|
|
38
|
+
)
|
|
39
|
+
# ### end Alembic commands ###
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: zou
|
|
3
|
-
Version: 0.20.
|
|
3
|
+
Version: 0.20.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
|
|
@@ -39,7 +39,7 @@ Requires-Dist: flask-fs2[s3,swift]==0.7.29
|
|
|
39
39
|
Requires-Dist: flask-jwt-extended==4.7.1
|
|
40
40
|
Requires-Dist: flask-migrate==4.1.0
|
|
41
41
|
Requires-Dist: flask-socketio==5.5.1
|
|
42
|
-
Requires-Dist: flask==3.1.
|
|
42
|
+
Requires-Dist: flask==3.1.1
|
|
43
43
|
Requires-Dist: gazu==0.10.31
|
|
44
44
|
Requires-Dist: gevent-websocket==0.10.1
|
|
45
45
|
Requires-Dist: gevent==25.5.1
|
|
@@ -51,14 +51,14 @@ Requires-Dist: ldap3==2.9.1
|
|
|
51
51
|
Requires-Dist: matterhook==0.2
|
|
52
52
|
Requires-Dist: meilisearch==0.34.1
|
|
53
53
|
Requires-Dist: numpy==2.0.1; python_version == "3.9"
|
|
54
|
-
Requires-Dist: numpy==2.2.
|
|
54
|
+
Requires-Dist: numpy==2.2.6; python_version >= "3.10"
|
|
55
55
|
Requires-Dist: opencv-python==4.11.0.86
|
|
56
56
|
Requires-Dist: OpenTimelineIO==0.17.0
|
|
57
57
|
Requires-Dist: OpenTimelineIO-Plugins==0.17.0
|
|
58
58
|
Requires-Dist: orjson==3.10.18
|
|
59
59
|
Requires-Dist: pillow==11.2.1
|
|
60
60
|
Requires-Dist: psutil==7.0.0
|
|
61
|
-
Requires-Dist: psycopg[binary]==3.2.
|
|
61
|
+
Requires-Dist: psycopg[binary]==3.2.9
|
|
62
62
|
Requires-Dist: pyotp==2.9.0
|
|
63
63
|
Requires-Dist: pysaml2==7.5.2
|
|
64
64
|
Requires-Dist: python-nomad==2.1.0
|
|
@@ -72,7 +72,7 @@ Requires-Dist: semver==3.0.4
|
|
|
72
72
|
Requires-Dist: slackclient==2.9.4
|
|
73
73
|
Requires-Dist: spdx-license-list==3.26.0
|
|
74
74
|
Requires-Dist: sqlalchemy_utils==0.41.2
|
|
75
|
-
Requires-Dist: sqlalchemy==2.0.
|
|
75
|
+
Requires-Dist: sqlalchemy==2.0.41
|
|
76
76
|
Requires-Dist: tabulate==0.9.0
|
|
77
77
|
Requires-Dist: tomlkit==0.13.2
|
|
78
78
|
Requires-Dist: ua-parser==1.0.1
|
|
@@ -90,7 +90,7 @@ Requires-Dist: pytest==8.3.5; extra == "test"
|
|
|
90
90
|
Provides-Extra: monitoring
|
|
91
91
|
Requires-Dist: prometheus-flask-exporter==0.23.2; extra == "monitoring"
|
|
92
92
|
Requires-Dist: pygelf==0.4.2; extra == "monitoring"
|
|
93
|
-
Requires-Dist: sentry-sdk==2.
|
|
93
|
+
Requires-Dist: sentry-sdk==2.29.1; extra == "monitoring"
|
|
94
94
|
Provides-Extra: lint
|
|
95
95
|
Requires-Dist: autoflake==2.3.1; extra == "lint"
|
|
96
96
|
Requires-Dist: black==25.1.0; extra == "lint"
|
|
@@ -427,6 +427,7 @@ zou/migrations/versions/df9f8a147e80_change_file_size_to_big_integer.py
|
|
|
427
427
|
zou/migrations/versions/e1ef93f40d3d_.py
|
|
428
428
|
zou/migrations/versions/e29638428dfd_add_schedule_item_table.py
|
|
429
429
|
zou/migrations/versions/e3f6db74cc1e_.py
|
|
430
|
+
zou/migrations/versions/e7e633bd6fa2_add_exceptions_to_budget_entries.py
|
|
430
431
|
zou/migrations/versions/e839d6603c09_add_person_id_to_shot_history.py
|
|
431
432
|
zou/migrations/versions/ee2373fbe3a4_.py
|
|
432
433
|
zou/migrations/versions/f0567e8d0c62_.py
|