zou 0.20.70__tar.gz → 0.20.72__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.70/zou.egg-info → zou-0.20.72}/PKG-INFO +1 -1
- zou-0.20.72/zou/__init__.py +1 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/comments/resources.py +0 -3
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/assets_service.py +6 -1
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/comments_service.py +76 -7
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/deletion_service.py +4 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/entities_service.py +16 -0
- {zou-0.20.70 → zou-0.20.72/zou.egg-info}/PKG-INFO +1 -1
- zou-0.20.70/zou/__init__.py +0 -1
- {zou-0.20.70 → zou-0.20.72}/LICENSE +0 -0
- {zou-0.20.70 → zou-0.20.72}/README.rst +0 -0
- {zou-0.20.70 → zou-0.20.72}/pyproject.toml +0 -0
- {zou-0.20.70 → zou-0.20.72}/setup.cfg +0 -0
- {zou-0.20.70 → zou-0.20.72}/setup.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/api.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/assets/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/assets/resources.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/auth/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/auth/resources.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/breakdown/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/breakdown/resources.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/chats/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/chats/resources.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/comments/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/concepts/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/concepts/resources.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/asset_instance.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/attachment_file.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/base.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/budget.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/budget_entry.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/chat.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/chat_message.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/comments.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/custom_action.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/day_off.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/department.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/entity.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/entity_link.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/entity_type.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/event.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/file_status.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/hardware_item.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/metadata_descriptor.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/milestone.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/news.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/notification.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/organisation.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/output_file.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/output_type.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/person.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/playlist.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/plugin.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/preview_background_file.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/preview_file.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/production_schedule_version.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/project.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/project_status.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/salary_scale.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/schedule_item.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/search_filter.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/search_filter_group.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/software.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/status_automation.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/studio.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/subscription.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/task.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/task_status.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/task_type.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/time_spent.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/crud/working_file.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/departments/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/departments/resources.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/edits/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/edits/resources.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/entities/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/entities/resources.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/events/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/events/resources.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/export/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/export/csv/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/export/csv/assets.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/export/csv/base.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/export/csv/casting.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/export/csv/edits.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/export/csv/persons.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/export/csv/playlists.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/export/csv/projects.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/export/csv/shots.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/export/csv/task_types.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/export/csv/tasks.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/export/csv/time_spents.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/files/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/files/resources.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/index/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/index/resources.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/news/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/news/resources.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/persons/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/persons/resources.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/playlists/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/playlists/resources.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/previews/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/previews/resources.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/projects/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/projects/resources.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/search/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/search/resources.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/shots/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/shots/resources.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/source/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/source/csv/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/source/csv/assets.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/source/csv/base.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/source/csv/casting.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/source/csv/edits.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/source/csv/persons.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/source/csv/shots.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/source/csv/task_type_estimations.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/source/kitsu.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/source/otio.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/source/shotgun/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/source/shotgun/assets.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/source/shotgun/base.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/source/shotgun/episode.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/source/shotgun/exception.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/source/shotgun/import_errors.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/source/shotgun/notes.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/source/shotgun/person.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/source/shotgun/project.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/source/shotgun/scene.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/source/shotgun/sequence.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/source/shotgun/shot.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/source/shotgun/status.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/source/shotgun/steps.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/source/shotgun/tasks.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/source/shotgun/team.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/source/shotgun/versions.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/tasks/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/tasks/resources.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/user/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/blueprints/user/resources.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/config.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/file_trees/default.json +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/file_trees/simple.json +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/indexer/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/indexer/indexing.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/mixin.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/asset_instance.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/attachment_file.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/base.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/budget.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/budget_entry.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/build_job.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/chat.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/chat_message.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/comment.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/custom_action.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/data_import_error.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/day_off.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/department.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/desktop_login_log.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/entity.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/entity_type.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/event.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/file_status.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/hardware_item.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/login_log.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/metadata_descriptor.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/milestone.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/news.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/notification.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/organisation.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/output_file.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/output_type.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/person.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/playlist.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/plugin.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/preview_background_file.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/preview_file.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/production_schedule_version.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/project.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/project_status.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/salary_scale.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/schedule_item.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/search_filter.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/search_filter_group.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/serializer.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/software.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/status_automation.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/studio.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/subscription.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/task.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/task_status.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/task_type.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/time_spent.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/models/working_file.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/auth_service.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/backup_service.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/base_service.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/breakdown_service.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/budget_service.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/chats_service.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/concepts_service.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/custom_actions_service.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/departments_service.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/edits_service.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/emails_service.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/events_service.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/exception.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/file_tree_service.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/files_service.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/index_service.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/names_service.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/news_service.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/notifications_service.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/persons_service.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/playlists_service.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/plugins_service.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/preview_files_service.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/projects_service.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/scenes_service.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/schedule_service.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/shots_service.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/stats_service.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/status_automations_service.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/sync_service.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/tasks_service.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/telemetry_services.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/time_spents_service.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/services/user_service.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/stores/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/stores/auth_tokens_store.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/stores/file_store.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/stores/publisher_store.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/stores/queue_store.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/swagger.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/utils/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/utils/api.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/utils/auth.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/utils/cache.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/utils/chats.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/utils/colors.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/utils/commands.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/utils/csv_utils.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/utils/date_helpers.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/utils/dbhelpers.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/utils/emails.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/utils/env.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/utils/events.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/utils/fido.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/utils/fields.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/utils/flask.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/utils/fs.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/utils/git.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/utils/logs.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/utils/monitoring.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/utils/permissions.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/utils/plugins.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/utils/query.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/utils/redis.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/utils/remote_job.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/utils/saml.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/utils/shell.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/utils/string.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/app/utils/thumbnail.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/cli.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/debug.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/event_stream.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/job_settings.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/README +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/alembic.ini +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/env.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/script.py.mako +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/utils/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/utils/base.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/003be8a91001_add_start_and_end_dates_to_projects.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/0596674df51d_add_department_mentions_to_comments.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/05ac7e8caa21_remove_unique_constraint_for_taskstatus_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/05b7dc79a416_add_archived_fields_to_main_tables.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/06552e22f9e7_add_comment_updated_by.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/0bd1e89f2a6f_add_productionscheduleversiontasklink_uc.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/0cf5e0e035fa_drop_column_tasktype_for_shots.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/0ec3762a745d_add_attachment_table.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/0ef6416a507b_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/10cf267d95c9_fix_schedule_item.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/16328eae4b5f_add_new_constraint_for_timespent.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/16df47d76c64_add_some_indexes.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/17ef8f7be758_disallow_null_choicetype.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/1b0ab951adca_add_reply_id_to_attachments.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/1bb55759146f_add_table_studio.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/1cb44194db49_add_file_size_field_to_preview_file.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/1e150c2cea4d_add_nb_entities_out.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/1e2d77a2f0c4_add_hd_by_default_column.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/1fab8c420678_add_attachments_to_message_chats.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/20a8ad264659_tasktypeassettypelink_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/20dfeb36142b_add_projecttaskstatuslink_roles_for_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/23122f290ca2_add_entity_chat_models.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/269d41bfb73f_add_entity_entity_links.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/26f96f65cfa3_add_productionversionschedule_uc.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/2762a797f1f9_add_people_salary_information.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/29df910f04a4_create_unique_constraint_project_id_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/29fe01a6c9eb_add_status_automation_field.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/2adc020885fa_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/2baede80b111_add_entity_status_field.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/306266361f4f_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/307edd8c639d_change_comment_updated_by_in_comment_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/328fd44c6347_add_entity_created_by.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/32f134ff1201_add_is_shared_flag_to_filters.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/346250b5304c_add_position_to_preview_files.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/3476e147e632_add_acks_to_comments.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/389cfb9de776_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/38baa9a23b3d_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/398150912a3f_validation_status_preview.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/3b0d1321079e_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/3d5c93bafb9d_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/3d8e68dffeee_fix_task_person_link.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/3e0538ddf80f_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/3fee3bd10f9d_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/4095103c7d01_add_is_clients_isolated_flag_to_projects.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/40dea9555940_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/42ec83db6a01_change_person_preferred_two_factor_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/4368137b44e1_productionscheduleversion_add_on_delete_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/43d0cf0ed5e7_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/443d1e78a932_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/45c2de366e66_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/45dafbb3f4e1_for_person_contract_type_disallow_null.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/45f739ef962a_add_people_salary_scale_table.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/4715c2586036_add_last_preview_file_fields.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/4aab1f84ad72_introduce_plugin_table.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/4bd9bfb73f11_add_fields_to_the_software_table.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/4d585b6956f2_add_taskstatus_is_wip.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/4e3738cdc34c_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/4f2398ebcd49_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/523ee9647bee_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/539a3a00c417_for_departmentlink_index_person_id_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/54ee0d1d60ba_add_build_job_model.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/556526e47daa_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/57222395f2be_add_statusautomation_import_last_revision.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/5798d2c9020b_change_person_role_to_choicetype.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/590aa1ffe731_add_notifications_enabled_flag.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/59a7445a966c_add_entity_is_shared.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/5a291251823c_add_max_retake_parameter.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/5ab9d7a75887_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/5b0fcbb94f24_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/5b7fa3e51701_add_is_client_allowed_flag_to_task_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/5b980f0dc365_add_comment_links.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/5b9fd9ddfe43_add_homepage_and_contract_fields.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/5c0498e264bc_add_slack_fields.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/5e2ce62632a6_add_workflow_to_project.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/5f715f2b6348_add_new_table_productionscheduleversion.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/680c64565f9d_for_searchfiltergroup_is_shared.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/693cc511d28d_add_taskstatus_priority.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/6aa446ee4072_add_is_for_all_flage_to_playlists.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/6bd3b102d61b_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/6c597e842afa_add_task_type_field_to_playlists.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/6d1b2c60f58b_add_milestone_model.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/6d7fa5a8e9a5_add_timesheets_locked_field_to_org.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/6eeaff945706_add_data_field_on_entity_links.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/6f6049877105_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/7417c8eb70d8_add_for_entity_field_to_playlists.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/772a5e43f05b_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/7748d3d22925_add_columns_to_searchfilter_table_to_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/77d6820f494f_add_reply_to_notif.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/7a16258f2fab_add_currency_field_to_budgets.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/7b1f765677d8_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/7bc746997e8d_add_slack_token_field_to_organisation.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/7dc79d4ed7cd_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/818f7bda2528_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/82e7f7a95e84_add_project_id_to_events.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/82ee682204ab_add_is_generated_from_ldap_column_to_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/83e2f33a9b14_add_project_bugdet_table.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/8588f254d6b8_add_archived_fields.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/8739ae9fa28b_add_for_client_field.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/87efceb6745b_add_ready_for_to_entity.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/892b264937ec_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/8a1b4a1b7f4a_add_totp_columns_for_person.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/8ab98c178903_add_budget_entry_table.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/8e4f39e321f4_add_day_off_table.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/8e67c183bed7_add_preference_fields.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/8fbd40afbe5f_allow_to_set_float_values_for_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/9010a64e5a2d_add_indices.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/9060dd4f6116_notification_uc.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/925771029620_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/92b40d79ad3f_allow_message_attachments.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/92bdfe07e5f5_discord_integration.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/956659992419_add_columns_for_person_to_store_fido_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/9683bd840dee_add_archived_field_to_software.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/96c79d31e648_add_mail_otp_columns_for_person.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/96f58a4a2a58_person_partial_index_for_email_only_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/971dbf5a0faf_add_short_name_for_asset_type_entity_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/98c90621cf58_add_for_client_flag_to_playlist.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/99825b9cc778_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/9a09467f9b2c_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/9af2df17a9d5_add_hardware_table.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/9b85c14fa8a7_add_day_off_new_columns.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/9bd17364fc18_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/9d3bb33c6fc6_add_department_keys_to_filter_models.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/9e5b3a9b0cee_add_new_column_metadatadescriptor_data_type_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/9f8445f9b42c_add_man_days_fields.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/a23682ccc1f1_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/a252a094e977_add_descriptions_for_entities_tasks_and_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/a519c710877c_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/a65bdadbae2f_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/a66508788c53_add_nb_assets_ready.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/a6c25eed3ea1_add_login_failed_attemps_and_last_login_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/a7c43f3fbc76_add_duration_column_to_the_preview_file.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/aa0a60033106_feedback_request.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/addbad59c706_allow_to_manage_drawings_instead_of_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/addbbefa7028_add_departments_link_to_metadata_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/ae0127f2fc56_add_previewfile_width_and_previewfile_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/af1790868e2c_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/b45cb782bb9c_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/b4dd0add5f79_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/b8c0a0f9d054_drop_task_status_is_reviewable.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/b8ed0fb263f8_add_person_jti_and_jti_expiration_date.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/b97a71306fc8_add_is_casting_standby_column_to_entity.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/be56dc0fb760_for_is_shared_disallow_nullable.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/bf1347acdee2_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/c49e41f1298b_add_previewbackground.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/c68c2a62cfac_add_mimetype_column_to_attachment.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/c726b98be194_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/c81f3e83bdb5_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/ca28796a2a62_add_is_done_field_to_the_task_model.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/ce7f46f445dc_add_column_estimation_for_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/cf3d365de164_add_entity_version_model.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/cf6cec6d6bf5_add_status_field_to_preview_file.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/d25118cddcaa_modify_salary_scale_model.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/d5665dca188b_add_version_field_to_software.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/d80267806131_task_status_new_column_is_default.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/d80f02824047_add_plugin_revision.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/d8dcd5196d57_add_casting_label.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/d97f2730bf7b_add_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/dde6be40f54f_add_departement_links_tables_for_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/de8a3de227ef_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/deeacd38d373_for_projecttaskstatuslink_set_default_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/df1834485f57_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/df9f8a147e80_change_file_size_to_big_integer.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/e1ef93f40d3d_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/e29638428dfd_add_schedule_item_table.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/e3f6db74cc1e_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/e4b48ca33539_add_project_production_schedule_version_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/e7e633bd6fa2_add_exceptions_to_budget_entries.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/e839d6603c09_add_person_id_to_shot_history.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/e8bc24998b34_remove_on_delete_cascade_for_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/ee2373fbe3a4_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/f0567e8d0c62_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/f0c6cbb61869_add_production_style_field.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/f344b867a911_for_description_of_entity_task_working_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/f4ff5a73d283_add_person_ldap_uid.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/f5b113876a49_add_preferred_two_factor_authentication_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/f5bdca075cdc_add_preview_download_flag_to_projects.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/f874ad5e898a_add_link_entity_type_task_type.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/f995b28fb749_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/fb6b6f188497_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/fb87feaaa094_add_missing_unique_constraints.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/fba149993140_add_missing_index.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/fc322f908695_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/fee7c696166e_.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/feffd3c5b806_introduce_concepts.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/migrations/versions/ffeed4956ab1_add_more_details_to_projects.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/plugin_template/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/plugin_template/migrations/alembic.ini +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/plugin_template/migrations/env.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/plugin_template/migrations/script.py.mako +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/plugin_template/models.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/plugin_template/routes.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/remote/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/remote/config_payload.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/remote/normalize_movie.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/remote/playlist.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/utils/__init__.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou/utils/movie.py +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou.egg-info/SOURCES.txt +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou.egg-info/dependency_links.txt +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou.egg-info/entry_points.txt +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou.egg-info/not-zip-safe +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou.egg-info/requires.txt +0 -0
- {zou-0.20.70 → zou-0.20.72}/zou.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.20.72"
|
|
@@ -326,9 +326,6 @@ class AddAttachmentToCommentResource(Resource):
|
|
|
326
326
|
name: reply_id
|
|
327
327
|
type: uuid
|
|
328
328
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
329
|
-
required: True
|
|
330
|
-
format: uuid
|
|
331
|
-
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
332
329
|
- in: formData
|
|
333
330
|
name: files
|
|
334
331
|
type: file
|
|
@@ -567,7 +567,12 @@ def is_asset_type(entity_type):
|
|
|
567
567
|
"""
|
|
568
568
|
Returns true if given entity type is an asset, not a shot.
|
|
569
569
|
"""
|
|
570
|
-
|
|
570
|
+
entity_type_id = ""
|
|
571
|
+
if isinstance(entity_type, dict):
|
|
572
|
+
entity_type_id = entity_type.get("id", "")
|
|
573
|
+
else:
|
|
574
|
+
entity_type_id = str(entity_type.id)
|
|
575
|
+
return entity_type_id not in get_temporal_type_ids()
|
|
571
576
|
|
|
572
577
|
|
|
573
578
|
def create_asset_types(asset_type_names):
|
|
@@ -79,14 +79,18 @@ def create_comment(
|
|
|
79
79
|
files={},
|
|
80
80
|
created_at="",
|
|
81
81
|
links=[],
|
|
82
|
+
with_hashtags=True
|
|
82
83
|
):
|
|
83
84
|
"""
|
|
84
85
|
Create a new comment and related: news, notifications and events.
|
|
85
86
|
"""
|
|
87
|
+
related_tasks = []
|
|
88
|
+
author = _get_comment_author(person_id)
|
|
86
89
|
task = tasks_service.get_task(task_id, relations=True)
|
|
87
90
|
task_status = tasks_service.get_task_status(task_status_id)
|
|
88
|
-
|
|
91
|
+
task_type = tasks_service.get_task_type(task["task_type_id"])
|
|
89
92
|
_check_retake_capping(task_status, task)
|
|
93
|
+
|
|
90
94
|
comment = new_comment(
|
|
91
95
|
task_id=task_id,
|
|
92
96
|
object_type="Task",
|
|
@@ -98,6 +102,10 @@ def create_comment(
|
|
|
98
102
|
created_at=created_at,
|
|
99
103
|
links=links,
|
|
100
104
|
)
|
|
105
|
+
|
|
106
|
+
if with_hashtags:
|
|
107
|
+
_handle_hashtags(author, task_type, task, text)
|
|
108
|
+
|
|
101
109
|
task, status_changed = _manage_status_change(task_status, task, comment)
|
|
102
110
|
_manage_subscriptions(task, comment, status_changed)
|
|
103
111
|
comment["task_status"] = task_status
|
|
@@ -108,9 +116,32 @@ def create_comment(
|
|
|
108
116
|
)
|
|
109
117
|
for automation in status_automations:
|
|
110
118
|
_run_status_automation(automation, task, person_id)
|
|
119
|
+
|
|
111
120
|
return comment
|
|
112
121
|
|
|
113
122
|
|
|
123
|
+
def _handle_hashtags(person, task_type, task, text):
|
|
124
|
+
hashtags = get_comment_hashtags(text)
|
|
125
|
+
if len(hashtags) > 0:
|
|
126
|
+
entity = entities_service.get_entity(entity_id=task["entity_id"])
|
|
127
|
+
tasks = entities_service.get_entity_tasks(entity)
|
|
128
|
+
tasks = filter_tasks_by_hashtags(tasks, hashtags, task_type)
|
|
129
|
+
if len(tasks) > 0:
|
|
130
|
+
for _task in tasks:
|
|
131
|
+
task_status = tasks_service.get_task_status(
|
|
132
|
+
_task["task_status_id"]
|
|
133
|
+
)
|
|
134
|
+
create_comment(
|
|
135
|
+
person_id=person["id"],
|
|
136
|
+
task_id=_task["id"],
|
|
137
|
+
text=text + f"\n\n____\nFrom {task_type['name']} task",
|
|
138
|
+
task_status_id=task_status["id"],
|
|
139
|
+
with_hashtags=False
|
|
140
|
+
)
|
|
141
|
+
return hashtags
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
|
|
114
145
|
def _check_retake_capping(task_status, task):
|
|
115
146
|
if task_status["is_retake"]:
|
|
116
147
|
project = projects_service.get_project(task["project_id"])
|
|
@@ -493,27 +524,26 @@ def reply_comment(comment_id, text, person_id=None, files={}):
|
|
|
493
524
|
replies = list(comment.replies)
|
|
494
525
|
replies.append(reply)
|
|
495
526
|
comment.update({"replies": replies})
|
|
527
|
+
comment_dict = comment.serialize(relations=True)
|
|
496
528
|
if len(files.keys()) > 0:
|
|
497
|
-
comment = comment.serialize(relations=True)
|
|
498
529
|
new_attachment_files = add_attachments_to_comment(
|
|
499
|
-
|
|
530
|
+
comment_dict, files, reply_id=reply["id"]
|
|
500
531
|
)
|
|
501
532
|
for new_attachment_file in new_attachment_files:
|
|
502
533
|
new_attachment_file["reply_id"] = reply["id"]
|
|
503
534
|
reply["attachment_files"] = new_attachment_files
|
|
504
535
|
tasks_service.clear_comment_cache(comment_id)
|
|
505
|
-
comment = comment.serialize(relations=True)
|
|
506
536
|
events.emit(
|
|
507
537
|
"comment:reply",
|
|
508
538
|
{
|
|
509
539
|
"task_id": task["id"],
|
|
510
|
-
"comment_id":
|
|
540
|
+
"comment_id": comment_id,
|
|
511
541
|
"reply_id": reply["id"],
|
|
512
542
|
},
|
|
513
543
|
project_id=task["project_id"],
|
|
514
544
|
)
|
|
515
545
|
notifications_service.create_notifications_for_task_and_reply(
|
|
516
|
-
task,
|
|
546
|
+
task, comment_dict, reply
|
|
517
547
|
)
|
|
518
548
|
return reply
|
|
519
549
|
|
|
@@ -594,12 +624,51 @@ def get_comment_department_mention_ids(project_id, text):
|
|
|
594
624
|
]
|
|
595
625
|
|
|
596
626
|
|
|
627
|
+
def get_comment_hashtags(text):
|
|
628
|
+
"""
|
|
629
|
+
Check for task type mentions (#full name) in text and returns matching
|
|
630
|
+
tags. If all is present, return only all because it includes everything
|
|
631
|
+
else.
|
|
632
|
+
"""
|
|
633
|
+
hashtags = [
|
|
634
|
+
hashtag[1:].lower()
|
|
635
|
+
for hashtag in re.findall("#[a-zA-Z]*", text, re.IGNORECASE)
|
|
636
|
+
]
|
|
637
|
+
if "all" in hashtags:
|
|
638
|
+
return ["all"]
|
|
639
|
+
return list(set(hashtags))
|
|
640
|
+
|
|
641
|
+
|
|
642
|
+
def filter_tasks_by_hashtags(tasks, hashtags, original_task_type):
|
|
643
|
+
"""
|
|
644
|
+
Filter tasks based on hashtags, excluding specified task types.
|
|
645
|
+
"""
|
|
646
|
+
if "all" in hashtags:
|
|
647
|
+
return [
|
|
648
|
+
task
|
|
649
|
+
for task in tasks
|
|
650
|
+
if task["task_type_name"].lower() != \
|
|
651
|
+
original_task_type["name"].lower()
|
|
652
|
+
]
|
|
653
|
+
else:
|
|
654
|
+
hashtag_map = {
|
|
655
|
+
hashtag: True
|
|
656
|
+
for hashtag in hashtags
|
|
657
|
+
if hashtag != original_task_type["name"].lower()
|
|
658
|
+
}
|
|
659
|
+
return [
|
|
660
|
+
task
|
|
661
|
+
for task in tasks
|
|
662
|
+
if hashtag_map.get(task["task_type_name"].lower(), False)
|
|
663
|
+
]
|
|
664
|
+
|
|
665
|
+
|
|
597
666
|
def add_attachments_to_comment(comment, files, reply_id=None):
|
|
598
667
|
"""
|
|
599
668
|
Create an attachment entry and for each given uploaded files and tie it
|
|
600
669
|
to given comment.
|
|
601
670
|
"""
|
|
602
|
-
if comment
|
|
671
|
+
if comment.get("attachment_files", None) is None:
|
|
603
672
|
comment["attachment_files"] = []
|
|
604
673
|
new_attachment_files = []
|
|
605
674
|
for uploaded_file in files.values():
|
|
@@ -118,6 +118,10 @@ def remove_task(task_id, force=False):
|
|
|
118
118
|
for subscription in subscriptions:
|
|
119
119
|
subscription.delete()
|
|
120
120
|
|
|
121
|
+
working_files = WorkingFile.query.filter_by(task_id=task_id)
|
|
122
|
+
for working_file in working_files:
|
|
123
|
+
working_file.delete()
|
|
124
|
+
|
|
121
125
|
preview_files = PreviewFile.query.filter_by(task_id=task_id)
|
|
122
126
|
for preview_file in preview_files:
|
|
123
127
|
remove_preview_file(preview_file)
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
from zou.app.services import (
|
|
2
|
+
assets_service,
|
|
2
3
|
base_service,
|
|
3
4
|
projects_service,
|
|
4
5
|
notifications_service,
|
|
5
6
|
assets_service,
|
|
6
7
|
shots_service,
|
|
7
8
|
edits_service,
|
|
9
|
+
tasks_service,
|
|
8
10
|
)
|
|
9
11
|
from zou.app.utils import (
|
|
10
12
|
date_helpers,
|
|
@@ -363,6 +365,20 @@ def get_entities_and_tasks(criterions={}):
|
|
|
363
365
|
return list(entity_map.values())
|
|
364
366
|
|
|
365
367
|
|
|
368
|
+
def get_entity_tasks(entity):
|
|
369
|
+
"""
|
|
370
|
+
Get all tasks for a given entity.
|
|
371
|
+
"""
|
|
372
|
+
entity_type = get_entity_type(entity_type_id=entity["entity_type_id"])
|
|
373
|
+
entity_type_name = entity_type["name"]
|
|
374
|
+
if assets_service.is_asset_type(entity_type):
|
|
375
|
+
entity_type_name = "Asset"
|
|
376
|
+
get_tasks = getattr(
|
|
377
|
+
tasks_service, "get_tasks_for_" + entity_type_name.lower()
|
|
378
|
+
)
|
|
379
|
+
return get_tasks(entity["id"])
|
|
380
|
+
|
|
381
|
+
|
|
366
382
|
def remove_entity_link(link_id):
|
|
367
383
|
try:
|
|
368
384
|
link = EntityLink.get_by(id=link_id)
|
zou-0.20.70/zou/__init__.py
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.20.70"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|