zou 0.20.19__tar.gz → 0.20.21__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.19/zou.egg-info → zou-0.20.21}/PKG-INFO +1 -1
- zou-0.20.21/zou/__init__.py +1 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/assets/resources.py +4 -2
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/comments/resources.py +2 -3
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/comments.py +5 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/working_file.py +1 -1
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/files/resources.py +2 -2
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/previews/resources.py +4 -4
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/tasks/resources.py +2 -2
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/comment.py +6 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/services/sync_service.py +6 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/services/tasks_service.py +29 -10
- {zou-0.20.19 → zou-0.20.21}/zou/app/services/user_service.py +33 -8
- {zou-0.20.19 → zou-0.20.21}/zou/app/utils/commands.py +23 -14
- zou-0.20.21/zou/migrations/versions/06552e22f9e7_add_comment_updated_by.py +50 -0
- {zou-0.20.19 → zou-0.20.21/zou.egg-info}/PKG-INFO +1 -1
- {zou-0.20.19 → zou-0.20.21}/zou.egg-info/SOURCES.txt +1 -0
- zou-0.20.19/zou/__init__.py +0 -1
- {zou-0.20.19 → zou-0.20.21}/LICENSE +0 -0
- {zou-0.20.19 → zou-0.20.21}/README.rst +0 -0
- {zou-0.20.19 → zou-0.20.21}/pyproject.toml +0 -0
- {zou-0.20.19 → zou-0.20.21}/setup.cfg +0 -0
- {zou-0.20.19 → zou-0.20.21}/setup.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/__init__.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/api.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/__init__.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/assets/__init__.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/auth/__init__.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/auth/resources.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/breakdown/__init__.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/breakdown/resources.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/chats/__init__.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/chats/resources.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/comments/__init__.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/concepts/__init__.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/concepts/resources.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/__init__.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/asset_instance.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/attachment_file.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/base.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/chat.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/chat_message.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/custom_action.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/day_off.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/department.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/entity.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/entity_link.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/entity_type.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/event.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/file_status.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/metadata_descriptor.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/milestone.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/news.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/notification.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/organisation.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/output_file.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/output_type.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/person.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/playlist.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/preview_background_file.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/preview_file.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/project.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/project_status.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/schedule_item.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/search_filter.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/search_filter_group.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/software.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/status_automation.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/studio.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/subscription.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/task.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/task_status.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/task_type.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/crud/time_spent.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/edits/__init__.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/edits/resources.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/entities/__init__.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/entities/resources.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/events/__init__.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/events/resources.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/export/__init__.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/export/csv/__init__.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/export/csv/assets.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/export/csv/base.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/export/csv/casting.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/export/csv/edits.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/export/csv/persons.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/export/csv/playlists.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/export/csv/projects.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/export/csv/shots.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/export/csv/task_types.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/export/csv/tasks.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/export/csv/time_spents.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/files/__init__.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/index/__init__.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/index/resources.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/news/__init__.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/news/resources.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/persons/__init__.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/persons/resources.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/playlists/__init__.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/playlists/resources.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/previews/__init__.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/projects/__init__.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/projects/resources.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/search/__init__.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/search/resources.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/shots/__init__.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/shots/resources.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/source/__init__.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/source/csv/__init__.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/source/csv/assets.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/source/csv/base.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/source/csv/casting.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/source/csv/edits.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/source/csv/persons.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/source/csv/shots.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/source/csv/task_type_estimations.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/source/kitsu.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/source/otio.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/source/shotgun/__init__.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/source/shotgun/assets.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/source/shotgun/base.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/source/shotgun/episode.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/source/shotgun/exception.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/source/shotgun/import_errors.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/source/shotgun/notes.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/source/shotgun/person.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/source/shotgun/project.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/source/shotgun/scene.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/source/shotgun/sequence.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/source/shotgun/shot.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/source/shotgun/status.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/source/shotgun/steps.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/source/shotgun/tasks.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/source/shotgun/team.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/source/shotgun/versions.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/tasks/__init__.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/user/__init__.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/blueprints/user/resources.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/config.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/file_trees/default.json +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/file_trees/simple.json +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/indexer/__init__.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/indexer/indexing.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/mixin.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/__init__.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/asset_instance.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/attachment_file.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/base.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/build_job.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/chat.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/chat_message.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/custom_action.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/data_import_error.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/day_off.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/department.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/desktop_login_log.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/entity.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/entity_type.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/event.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/file_status.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/login_log.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/metadata_descriptor.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/milestone.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/news.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/notification.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/organisation.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/output_file.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/output_type.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/person.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/playlist.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/preview_background_file.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/preview_file.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/project.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/project_status.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/schedule_item.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/search_filter.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/search_filter_group.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/serializer.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/software.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/status_automation.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/studio.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/subscription.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/task.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/task_status.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/task_type.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/time_spent.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/models/working_file.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/services/__init__.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/services/assets_service.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/services/auth_service.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/services/backup_service.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/services/base_service.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/services/breakdown_service.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/services/chats_service.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/services/comments_service.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/services/concepts_service.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/services/custom_actions_service.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/services/deletion_service.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/services/edits_service.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/services/emails_service.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/services/entities_service.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/services/events_service.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/services/exception.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/services/file_tree_service.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/services/files_service.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/services/index_service.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/services/names_service.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/services/news_service.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/services/notifications_service.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/services/persons_service.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/services/playlists_service.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/services/preview_files_service.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/services/projects_service.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/services/scenes_service.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/services/schedule_service.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/services/shots_service.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/services/stats_service.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/services/status_automations_service.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/services/telemetry_services.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/services/time_spents_service.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/stores/__init__.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/stores/auth_tokens_store.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/stores/file_store.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/stores/publisher_store.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/stores/queue_store.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/swagger.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/utils/__init__.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/utils/api.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/utils/auth.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/utils/cache.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/utils/chats.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/utils/colors.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/utils/csv_utils.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/utils/date_helpers.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/utils/dbhelpers.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/utils/emails.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/utils/env.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/utils/events.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/utils/fido.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/utils/fields.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/utils/flask.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/utils/fs.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/utils/git.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/utils/logs.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/utils/monitoring.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/utils/permissions.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/utils/query.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/utils/redis.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/utils/remote_job.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/utils/saml.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/utils/shell.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/utils/string.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/app/utils/thumbnail.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/cli.py +1 -1
- {zou-0.20.19 → zou-0.20.21}/zou/debug.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/event_stream.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/job_settings.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/README +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/__init__.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/alembic.ini +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/env.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/script.py.mako +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/utils/__init__.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/utils/base.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/003be8a91001_add_start_and_end_dates_to_projects.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/0596674df51d_add_department_mentions_to_comments.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/05ac7e8caa21_remove_unique_constraint_for_taskstatus_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/05b7dc79a416_add_archived_fields_to_main_tables.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/0cf5e0e035fa_drop_column_tasktype_for_shots.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/0ec3762a745d_add_attachment_table.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/0ef6416a507b_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/10cf267d95c9_fix_schedule_item.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/16328eae4b5f_add_new_constraint_for_timespent.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/16df47d76c64_add_some_indexes.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/17ef8f7be758_disallow_null_choicetype.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/1bb55759146f_add_table_studio.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/1cb44194db49_add_file_size_field_to_preview_file.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/1e150c2cea4d_add_nb_entities_out.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/1e2d77a2f0c4_add_hd_by_default_column.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/1fab8c420678_add_attachments_to_message_chats.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/20a8ad264659_tasktypeassettypelink_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/20dfeb36142b_add_projecttaskstatuslink_roles_for_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/23122f290ca2_add_entity_chat_models.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/269d41bfb73f_add_entity_entity_links.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/29df910f04a4_create_unique_constraint_project_id_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/29fe01a6c9eb_add_status_automation_field.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/2adc020885fa_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/2baede80b111_add_entity_status_field.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/306266361f4f_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/328fd44c6347_add_entity_created_by.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/32f134ff1201_add_is_shared_flag_to_filters.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/346250b5304c_add_position_to_preview_files.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/3476e147e632_add_acks_to_comments.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/389cfb9de776_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/38baa9a23b3d_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/398150912a3f_validation_status_preview.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/3b0d1321079e_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/3d5c93bafb9d_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/3e0538ddf80f_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/3fee3bd10f9d_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/4095103c7d01_add_is_clients_isolated_flag_to_projects.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/40dea9555940_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/42ec83db6a01_change_person_preferred_two_factor_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/43d0cf0ed5e7_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/443d1e78a932_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/45c2de366e66_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/45dafbb3f4e1_for_person_contract_type_disallow_null.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/4715c2586036_add_last_preview_file_fields.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/4e3738cdc34c_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/4f2398ebcd49_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/523ee9647bee_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/539a3a00c417_for_departmentlink_index_person_id_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/54ee0d1d60ba_add_build_job_model.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/556526e47daa_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/57222395f2be_add_statusautomation_import_last_revision.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/5798d2c9020b_change_person_role_to_choicetype.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/590aa1ffe731_add_notifications_enabled_flag.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/59a7445a966c_add_entity_is_shared.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/5a291251823c_add_max_retake_parameter.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/5ab9d7a75887_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/5b0fcbb94f24_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/5b7fa3e51701_add_is_client_allowed_flag_to_task_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/5b980f0dc365_add_comment_links.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/5b9fd9ddfe43_add_homepage_and_contract_fields.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/5c0498e264bc_add_slack_fields.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/5e2ce62632a6_add_workflow_to_project.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/680c64565f9d_for_searchfiltergroup_is_shared.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/693cc511d28d_add_taskstatus_priority.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/6aa446ee4072_add_is_for_all_flage_to_playlists.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/6bd3b102d61b_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/6c597e842afa_add_task_type_field_to_playlists.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/6d1b2c60f58b_add_milestone_model.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/6d7fa5a8e9a5_add_timesheets_locked_field_to_org.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/6eeaff945706_add_data_field_on_entity_links.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/6f6049877105_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/7417c8eb70d8_add_for_entity_field_to_playlists.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/772a5e43f05b_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/7748d3d22925_add_columns_to_searchfilter_table_to_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/77d6820f494f_add_reply_to_notif.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/7b1f765677d8_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/7bc746997e8d_add_slack_token_field_to_organisation.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/7dc79d4ed7cd_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/818f7bda2528_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/82e7f7a95e84_add_project_id_to_events.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/82ee682204ab_add_is_generated_from_ldap_column_to_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/8588f254d6b8_add_archived_fields.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/8739ae9fa28b_add_for_client_field.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/87efceb6745b_add_ready_for_to_entity.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/892b264937ec_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/8a1b4a1b7f4a_add_totp_columns_for_person.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/8e4f39e321f4_add_day_off_table.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/8e67c183bed7_add_preference_fields.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/8fbd40afbe5f_allow_to_set_float_values_for_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/9010a64e5a2d_add_indices.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/9060dd4f6116_notification_uc.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/925771029620_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/92b40d79ad3f_allow_message_attachments.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/92bdfe07e5f5_discord_integration.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/956659992419_add_columns_for_person_to_store_fido_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/96c79d31e648_add_mail_otp_columns_for_person.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/96f58a4a2a58_person_partial_index_for_email_only_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/971dbf5a0faf_add_short_name_for_asset_type_entity_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/98c90621cf58_add_for_client_flag_to_playlist.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/99825b9cc778_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/9a09467f9b2c_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/9b85c14fa8a7_add_day_off_new_columns.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/9bd17364fc18_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/9d3bb33c6fc6_add_department_keys_to_filter_models.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/9e5b3a9b0cee_add_new_column_metadatadescriptor_data_type_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/9f8445f9b42c_add_man_days_fields.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/a23682ccc1f1_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/a252a094e977_add_descriptions_for_entities_tasks_and_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/a519c710877c_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/a65bdadbae2f_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/a66508788c53_add_nb_assets_ready.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/a6c25eed3ea1_add_login_failed_attemps_and_last_login_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/a7c43f3fbc76_add_duration_column_to_the_preview_file.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/aa0a60033106_feedback_request.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/addbbefa7028_add_departments_link_to_metadata_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/ae0127f2fc56_add_previewfile_width_and_previewfile_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/af1790868e2c_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/b45cb782bb9c_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/b4dd0add5f79_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/b8c0a0f9d054_drop_task_status_is_reviewable.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/b8ed0fb263f8_add_person_jti_and_jti_expiration_date.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/b97a71306fc8_add_is_casting_standby_column_to_entity.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/be56dc0fb760_for_is_shared_disallow_nullable.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/bf1347acdee2_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/c49e41f1298b_add_previewbackground.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/c68c2a62cfac_add_mimetype_column_to_attachment.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/c726b98be194_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/c81f3e83bdb5_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/ca28796a2a62_add_is_done_field_to_the_task_model.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/cf3d365de164_add_entity_version_model.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/cf6cec6d6bf5_add_status_field_to_preview_file.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/d80267806131_task_status_new_column_is_default.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/d8dcd5196d57_add_casting_label.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/de8a3de227ef_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/deeacd38d373_for_projecttaskstatuslink_set_default_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/df1834485f57_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/df9f8a147e80_change_file_size_to_big_integer.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/e1ef93f40d3d_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/e29638428dfd_add_schedule_item_table.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/e3f6db74cc1e_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/e839d6603c09_add_person_id_to_shot_history.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/ee2373fbe3a4_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/f0567e8d0c62_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/f0c6cbb61869_add_production_style_field.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/f344b867a911_for_description_of_entity_task_working_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/f4ff5a73d283_add_person_ldap_uid.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/f5b113876a49_add_preferred_two_factor_authentication_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/f5bdca075cdc_add_preview_download_flag_to_projects.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/f874ad5e898a_add_link_entity_type_task_type.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/f995b28fb749_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/fb6b6f188497_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/fb87feaaa094_add_missing_unique_constraints.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/fba149993140_add_missing_index.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/fc322f908695_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/fee7c696166e_.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/feffd3c5b806_introduce_concepts.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/migrations/versions/ffeed4956ab1_add_more_details_to_projects.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/remote/__init__.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/remote/config_payload.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/remote/normalize_movie.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/remote/playlist.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/utils/__init__.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou/utils/movie.py +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou.egg-info/dependency_links.txt +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou.egg-info/entry_points.txt +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou.egg-info/not-zip-safe +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou.egg-info/requires.txt +0 -0
- {zou-0.20.19 → zou-0.20.21}/zou.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.20.21"
|
|
@@ -355,7 +355,7 @@ class AssetAssetsResource(Resource):
|
|
|
355
355
|
return breakdown_service.get_entity_casting(asset_id)
|
|
356
356
|
|
|
357
357
|
|
|
358
|
-
class AssetTasksResource(Resource):
|
|
358
|
+
class AssetTasksResource(Resource, ArgsMixin):
|
|
359
359
|
@jwt_required()
|
|
360
360
|
def get(self, asset_id):
|
|
361
361
|
"""
|
|
@@ -376,7 +376,9 @@ class AssetTasksResource(Resource):
|
|
|
376
376
|
"""
|
|
377
377
|
asset = assets_service.get_asset(asset_id)
|
|
378
378
|
user_service.check_project_access(asset["project_id"])
|
|
379
|
-
return tasks_service.get_tasks_for_asset(
|
|
379
|
+
return tasks_service.get_tasks_for_asset(
|
|
380
|
+
asset_id, relations=self.get_relations()
|
|
381
|
+
)
|
|
380
382
|
|
|
381
383
|
|
|
382
384
|
class AssetTaskTypesResource(Resource):
|
|
@@ -190,7 +190,7 @@ class CommentTaskResource(Resource):
|
|
|
190
190
|
links,
|
|
191
191
|
) = self.get_arguments()
|
|
192
192
|
|
|
193
|
-
user_service.
|
|
193
|
+
user_service.check_task_action_access(task_id)
|
|
194
194
|
user_service.check_task_status_access(task_status_id)
|
|
195
195
|
files = request.files
|
|
196
196
|
|
|
@@ -491,7 +491,7 @@ class ReplyCommentResource(Resource, ArgsMixin):
|
|
|
491
491
|
]
|
|
492
492
|
)
|
|
493
493
|
|
|
494
|
-
user_service.
|
|
494
|
+
user_service.check_task_action_access(task_id)
|
|
495
495
|
return comments_service.reply_comment(comment_id, args["text"])
|
|
496
496
|
|
|
497
497
|
|
|
@@ -530,7 +530,6 @@ class DeleteReplyCommentResource(Resource):
|
|
|
530
530
|
200:
|
|
531
531
|
description: Given comment reply deleted
|
|
532
532
|
"""
|
|
533
|
-
user_service.check_task_access(task_id)
|
|
534
533
|
reply = comments_service.get_reply(comment_id, reply_id)
|
|
535
534
|
current_user = persons_service.get_current_user()
|
|
536
535
|
if reply["person_id"] != current_user["id"]:
|
|
@@ -189,6 +189,11 @@ class CommentResource(BaseModelResource):
|
|
|
189
189
|
)
|
|
190
190
|
return comment
|
|
191
191
|
|
|
192
|
+
def update_data(self, data, instance_id):
|
|
193
|
+
data = super().update_data(data, instance_id)
|
|
194
|
+
data["updated_by"] = persons_service.get_current_user_raw().id
|
|
195
|
+
return data
|
|
196
|
+
|
|
192
197
|
@jwt_required()
|
|
193
198
|
def delete(self, instance_id):
|
|
194
199
|
"""
|
|
@@ -51,7 +51,7 @@ class WorkingFileResource(BaseModelResource):
|
|
|
51
51
|
|
|
52
52
|
def check_update_permissions(self, instance, data):
|
|
53
53
|
working_file = files_service.get_working_file(instance["id"])
|
|
54
|
-
user_service.
|
|
54
|
+
user_service.check_task_action_access(working_file["task_id"])
|
|
55
55
|
return True
|
|
56
56
|
|
|
57
57
|
@jwt_required()
|
|
@@ -768,7 +768,7 @@ class ModifiedFileResource(Resource):
|
|
|
768
768
|
description: Working file modification date updated
|
|
769
769
|
"""
|
|
770
770
|
working_file = files_service.get_working_file(working_file_id)
|
|
771
|
-
user_service.
|
|
771
|
+
user_service.check_task_action_access(working_file["task_id"])
|
|
772
772
|
working_file = files_service.update_working_file(
|
|
773
773
|
working_file_id,
|
|
774
774
|
{"updated_at": date_helpers.get_utc_now_datetime()},
|
|
@@ -819,7 +819,7 @@ class CommentWorkingFileResource(Resource, ArgsMixin):
|
|
|
819
819
|
)
|
|
820
820
|
|
|
821
821
|
working_file = files_service.get_working_file(working_file_id)
|
|
822
|
-
user_service.
|
|
822
|
+
user_service.check_task_action_access(working_file["task_id"])
|
|
823
823
|
working_file = self.update_comment(working_file_id, args["comment"])
|
|
824
824
|
return working_file
|
|
825
825
|
|
|
@@ -419,7 +419,7 @@ class CreatePreviewFilePictureResource(
|
|
|
419
419
|
raise PreviewFileReuploadNotAllowedException
|
|
420
420
|
|
|
421
421
|
try:
|
|
422
|
-
user_service.
|
|
422
|
+
user_service.check_task_action_access(preview_file["task_id"])
|
|
423
423
|
return True
|
|
424
424
|
except permissions.PermissionDenied:
|
|
425
425
|
return False
|
|
@@ -474,14 +474,14 @@ class BaseBatchComment(BaseNewPreviewFilePicture, ArgsMixin):
|
|
|
474
474
|
args = self.get_comments_args()
|
|
475
475
|
|
|
476
476
|
if task_id is not None:
|
|
477
|
-
user_service.
|
|
477
|
+
user_service.check_task_action_access(task_id)
|
|
478
478
|
|
|
479
479
|
new_comments = []
|
|
480
480
|
for i, comment in enumerate(args["comments"]):
|
|
481
481
|
user_service.check_task_status_access(comment["task_status_id"])
|
|
482
482
|
|
|
483
483
|
if task_id is None:
|
|
484
|
-
user_service.
|
|
484
|
+
user_service.check_task_action_access(comment["task_id"])
|
|
485
485
|
|
|
486
486
|
if not permissions.has_manager_permissions():
|
|
487
487
|
comment["person_id"] = None
|
|
@@ -1322,7 +1322,7 @@ class UpdatePreviewPositionResource(Resource, ArgsMixin):
|
|
|
1322
1322
|
"""
|
|
1323
1323
|
args = self.get_args([{"name": "position", "default": 0, "type": int}])
|
|
1324
1324
|
preview_file = files_service.get_preview_file(preview_file_id)
|
|
1325
|
-
user_service.
|
|
1325
|
+
user_service.check_task_action_access(preview_file["task_id"])
|
|
1326
1326
|
return preview_files_service.update_preview_file_position(
|
|
1327
1327
|
preview_file_id, args["position"]
|
|
1328
1328
|
)
|
|
@@ -69,7 +69,7 @@ class AddPreviewResource(Resource, ArgsMixin):
|
|
|
69
69
|
"""
|
|
70
70
|
args = self.get_args([("revision", 0, False, int)])
|
|
71
71
|
|
|
72
|
-
user_service.
|
|
72
|
+
user_service.check_task_action_access(task_id)
|
|
73
73
|
|
|
74
74
|
person = persons_service.get_current_user()
|
|
75
75
|
preview_file = tasks_service.add_preview_file_to_comment(
|
|
@@ -117,7 +117,7 @@ class AddExtraPreviewResource(Resource, ArgsMixin):
|
|
|
117
117
|
201:
|
|
118
118
|
description: Preview added to given comment
|
|
119
119
|
"""
|
|
120
|
-
user_service.
|
|
120
|
+
user_service.check_task_action_access(task_id)
|
|
121
121
|
tasks_service.get_comment(comment_id)
|
|
122
122
|
|
|
123
123
|
person = persons_service.get_current_user()
|
|
@@ -101,6 +101,12 @@ class Comment(db.Model, BaseMixin, SerializerMixin):
|
|
|
101
101
|
nullable=False,
|
|
102
102
|
index=True,
|
|
103
103
|
)
|
|
104
|
+
updated_by = db.Column(
|
|
105
|
+
UUIDType(binary=False),
|
|
106
|
+
db.ForeignKey("person.id"),
|
|
107
|
+
default=None,
|
|
108
|
+
index=True,
|
|
109
|
+
)
|
|
104
110
|
preview_file_id = db.Column(
|
|
105
111
|
UUIDType(binary=False), db.ForeignKey("preview_file.id")
|
|
106
112
|
)
|
|
@@ -43,6 +43,7 @@ from zou.app.models.task_status import TaskStatus
|
|
|
43
43
|
from zou.app.models.task_type import TaskType
|
|
44
44
|
from zou.app.models.time_spent import TimeSpent
|
|
45
45
|
from zou.app.models.studio import Studio
|
|
46
|
+
from zou.app.models.status_automation import StatusAutomation
|
|
46
47
|
|
|
47
48
|
from zou.app.services import deletion_service, tasks_service, projects_service
|
|
48
49
|
from zou.app.stores import file_store
|
|
@@ -103,6 +104,7 @@ event_name_model_map = {
|
|
|
103
104
|
"subscription": Subscription,
|
|
104
105
|
"search-filter": SearchFilter,
|
|
105
106
|
"search-filter-group": SearchFilterGroup,
|
|
107
|
+
"status-automation": StatusAutomation,
|
|
106
108
|
"studio": Studio,
|
|
107
109
|
"task": Task,
|
|
108
110
|
"task-status": TaskStatus,
|
|
@@ -142,6 +144,7 @@ event_name_model_path_map = {
|
|
|
142
144
|
"search-filter": "search-filters",
|
|
143
145
|
"search-filter-group": "search-filter-groups",
|
|
144
146
|
"subscription": "subscriptions",
|
|
147
|
+
"status-automation": "status-automations",
|
|
145
148
|
"studio": "studios",
|
|
146
149
|
"task": "tasks",
|
|
147
150
|
"task-status": "task-status",
|
|
@@ -176,6 +179,7 @@ main_events = [
|
|
|
176
179
|
"department",
|
|
177
180
|
"task-type",
|
|
178
181
|
"task-status",
|
|
182
|
+
"status-automation",
|
|
179
183
|
"custom-action",
|
|
180
184
|
"organisation",
|
|
181
185
|
"project-status",
|
|
@@ -286,6 +290,8 @@ def run_main_data_sync(project=None):
|
|
|
286
290
|
Retrieve and import all cross-projects data from source instance.
|
|
287
291
|
"""
|
|
288
292
|
for event in main_events:
|
|
293
|
+
if project is None and event == "project":
|
|
294
|
+
continue
|
|
289
295
|
path = event_name_model_path_map[event]
|
|
290
296
|
model = event_name_model_map[event]
|
|
291
297
|
sync_entries(path, model, project=project)
|
|
@@ -587,11 +587,13 @@ def get_comments(task_id, is_client=False, is_manager=False):
|
|
|
587
587
|
|
|
588
588
|
|
|
589
589
|
def _prepare_query(task_id, is_client, is_manager):
|
|
590
|
+
UpdatedBy = aliased(Person, name="updated_by")
|
|
590
591
|
query = (
|
|
591
592
|
Comment.query.order_by(Comment.created_at.desc())
|
|
592
593
|
.filter_by(object_id=task_id)
|
|
593
594
|
.join(Person, Comment.person_id == Person.id)
|
|
594
595
|
.join(TaskStatus, Comment.task_status_id == TaskStatus.id)
|
|
596
|
+
.join(UpdatedBy, Comment.updated_by == UpdatedBy.id, isouter=True)
|
|
595
597
|
.add_columns(
|
|
596
598
|
TaskStatus.name,
|
|
597
599
|
TaskStatus.short_name,
|
|
@@ -599,6 +601,9 @@ def _prepare_query(task_id, is_client, is_manager):
|
|
|
599
601
|
Person.first_name,
|
|
600
602
|
Person.last_name,
|
|
601
603
|
Person.has_avatar,
|
|
604
|
+
UpdatedBy.first_name,
|
|
605
|
+
UpdatedBy.last_name,
|
|
606
|
+
UpdatedBy.has_avatar,
|
|
602
607
|
)
|
|
603
608
|
)
|
|
604
609
|
if not is_manager and not is_client:
|
|
@@ -618,6 +623,9 @@ def _run_task_comments_query(query):
|
|
|
618
623
|
person_first_name,
|
|
619
624
|
person_last_name,
|
|
620
625
|
person_has_avatar,
|
|
626
|
+
updated_by_first_name,
|
|
627
|
+
updated_by_last_name,
|
|
628
|
+
updated_by_has_avatar,
|
|
621
629
|
) = result
|
|
622
630
|
|
|
623
631
|
comment_dict = comment.serialize()
|
|
@@ -627,6 +635,13 @@ def _run_task_comments_query(query):
|
|
|
627
635
|
"has_avatar": person_has_avatar,
|
|
628
636
|
"id": str(comment.person_id),
|
|
629
637
|
}
|
|
638
|
+
if comment.updated_by is not None:
|
|
639
|
+
comment_dict["updated_by"] = {
|
|
640
|
+
"first_name": updated_by_first_name,
|
|
641
|
+
"last_name": updated_by_last_name,
|
|
642
|
+
"has_avatar": updated_by_has_avatar,
|
|
643
|
+
"id": str(comment.updated_by),
|
|
644
|
+
}
|
|
630
645
|
comment_dict["task_status"] = {
|
|
631
646
|
"name": task_status_name,
|
|
632
647
|
"short_name": task_status_short_name,
|
|
@@ -1140,7 +1155,7 @@ def get_last_comment_map(task_ids):
|
|
|
1140
1155
|
task_comment_map = {}
|
|
1141
1156
|
comments = (
|
|
1142
1157
|
Comment.query.filter(Comment.object_id.in_(task_ids))
|
|
1143
|
-
.join(Person)
|
|
1158
|
+
.join(Person, Comment.person_id == Person.id)
|
|
1144
1159
|
.filter(Person.role != "client")
|
|
1145
1160
|
.order_by(Comment.object_id, Comment.created_at)
|
|
1146
1161
|
.all()
|
|
@@ -1960,22 +1975,26 @@ def get_open_tasks(
|
|
|
1960
1975
|
query = query.filter(Task.assignees == None)
|
|
1961
1976
|
query_stats = query_stats.filter(Task.assignees == None)
|
|
1962
1977
|
else:
|
|
1963
|
-
query = query.filter(
|
|
1964
|
-
Person.id.in_(person_id.split(","))
|
|
1965
|
-
)
|
|
1966
|
-
query_stats = query_stats.filter(
|
|
1967
|
-
Person.id.in_(person_id.split(","))
|
|
1968
|
-
)
|
|
1978
|
+
query = query.filter(
|
|
1979
|
+
Task.assignees.any(Person.id.in_(person_id.split(",")))
|
|
1980
|
+
)
|
|
1981
|
+
query_stats = query_stats.filter(
|
|
1982
|
+
Task.assignees.any(Person.id.in_(person_id.split(",")))
|
|
1983
|
+
)
|
|
1969
1984
|
|
|
1970
1985
|
if studio_id is not None:
|
|
1971
1986
|
query = query.filter(Task.assignees.any(studio_id=studio_id))
|
|
1972
|
-
query_stats = query_stats.filter(
|
|
1987
|
+
query_stats = query_stats.filter(
|
|
1988
|
+
Task.assignees.any(studio_id=studio_id)
|
|
1989
|
+
)
|
|
1973
1990
|
|
|
1974
1991
|
if department_id is not None:
|
|
1975
1992
|
query = query.filter(
|
|
1976
|
-
Task.assignees.any(Person.departments.any(id=department_id))
|
|
1993
|
+
Task.assignees.any(Person.departments.any(id=department_id))
|
|
1994
|
+
)
|
|
1977
1995
|
query_stats = query_stats.filter(
|
|
1978
|
-
Task.assignees.any(Person.departments.any(id=department_id))
|
|
1996
|
+
Task.assignees.any(Person.departments.any(id=department_id))
|
|
1997
|
+
)
|
|
1979
1998
|
|
|
1980
1999
|
if start_date is not None:
|
|
1981
2000
|
start_date = func.cast(start_date, Task.start_date.type)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from sqlalchemy.orm import aliased
|
|
2
|
-
from sqlalchemy import func, or_
|
|
2
|
+
from sqlalchemy import func, or_, and_
|
|
3
3
|
|
|
4
4
|
from zou.app import config
|
|
5
5
|
from zou.app.models.comment import Comment
|
|
@@ -488,6 +488,37 @@ def check_task_access(task_id):
|
|
|
488
488
|
return True
|
|
489
489
|
|
|
490
490
|
|
|
491
|
+
def check_task_action_access(task_id):
|
|
492
|
+
"""
|
|
493
|
+
Return true if current user can have access to a task action.
|
|
494
|
+
"""
|
|
495
|
+
task = tasks_service.get_task(task_id, relations=True)
|
|
496
|
+
is_allowed = False
|
|
497
|
+
if permissions.has_admin_permissions():
|
|
498
|
+
is_allowed = True
|
|
499
|
+
elif check_belong_to_project(task["project_id"]):
|
|
500
|
+
if permissions.has_manager_permissions():
|
|
501
|
+
is_allowed = True
|
|
502
|
+
else:
|
|
503
|
+
user = persons_service.get_current_user(relations=True)
|
|
504
|
+
if permissions.has_supervisor_permissions():
|
|
505
|
+
is_allowed = (
|
|
506
|
+
user["departments"] == []
|
|
507
|
+
or tasks_service.get_task_type(task["task_type_id"])[
|
|
508
|
+
"department_id"
|
|
509
|
+
]
|
|
510
|
+
in user["departments"]
|
|
511
|
+
)
|
|
512
|
+
else:
|
|
513
|
+
is_allowed = user["id"] in task["assignees"]
|
|
514
|
+
else:
|
|
515
|
+
is_allowed = False
|
|
516
|
+
|
|
517
|
+
if not is_allowed:
|
|
518
|
+
raise permissions.PermissionDenied
|
|
519
|
+
return is_allowed
|
|
520
|
+
|
|
521
|
+
|
|
491
522
|
def check_comment_access(comment_id):
|
|
492
523
|
"""
|
|
493
524
|
Return true if current user can have access to a comment.
|
|
@@ -797,10 +828,7 @@ def check_task_department_access_for_unassign(task_id, person_id=None):
|
|
|
797
828
|
or task_type["department_id"] in user["departments"]
|
|
798
829
|
)
|
|
799
830
|
)
|
|
800
|
-
or (
|
|
801
|
-
user["id"] in task.get("assignees", [])
|
|
802
|
-
and person_id == user["id"]
|
|
803
|
-
)
|
|
831
|
+
or (user["id"] in task["assignees"] and person_id == user["id"])
|
|
804
832
|
)
|
|
805
833
|
)
|
|
806
834
|
if not is_allowed:
|
|
@@ -1302,9 +1330,6 @@ def get_unread_notifications_count(notification_id=None):
|
|
|
1302
1330
|
).count()
|
|
1303
1331
|
|
|
1304
1332
|
|
|
1305
|
-
from sqlalchemy import and_, func
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
1333
|
def get_last_notifications(
|
|
1309
1334
|
notification_id=None,
|
|
1310
1335
|
after=None,
|
|
@@ -409,20 +409,29 @@ def sync_with_ldap_server():
|
|
|
409
409
|
and persons_service.is_user_limit_reached()
|
|
410
410
|
):
|
|
411
411
|
raise IsUserLimitReachedException
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
"
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
412
|
+
|
|
413
|
+
if any(
|
|
414
|
+
user[key] != person[key]
|
|
415
|
+
for key in [
|
|
416
|
+
key
|
|
417
|
+
for key in user.keys()
|
|
418
|
+
if key not in ["thumbnail", "emails"]
|
|
419
|
+
]
|
|
420
|
+
):
|
|
421
|
+
persons_service.update_person(
|
|
422
|
+
person["id"],
|
|
423
|
+
{
|
|
424
|
+
"email": user["email"],
|
|
425
|
+
"first_name": user["first_name"],
|
|
426
|
+
"last_name": user["last_name"],
|
|
427
|
+
"active": user["active"],
|
|
428
|
+
"is_generated_from_ldap": True,
|
|
429
|
+
"desktop_login": user["desktop_login"],
|
|
430
|
+
"ldap_uid": user["ldap_uid"],
|
|
431
|
+
},
|
|
432
|
+
bypass_protected_accounts=True,
|
|
433
|
+
)
|
|
434
|
+
print(f"User {user['desktop_login']} updated.")
|
|
426
435
|
except IsUserLimitReachedException:
|
|
427
436
|
print(
|
|
428
437
|
f"User {user['desktop_login']} update failed (limit reached, limit {config.USER_LIMIT})."
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"""Add Comment.updated_by
|
|
2
|
+
|
|
3
|
+
Revision ID: 06552e22f9e7
|
|
4
|
+
Revises: fba149993140
|
|
5
|
+
Create Date: 2025-02-27 13:44:58.067787
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from alembic import op
|
|
10
|
+
import sqlalchemy as sa
|
|
11
|
+
import sqlalchemy_utils
|
|
12
|
+
import sqlalchemy_utils
|
|
13
|
+
import uuid
|
|
14
|
+
|
|
15
|
+
# revision identifiers, used by Alembic.
|
|
16
|
+
revision = "06552e22f9e7"
|
|
17
|
+
down_revision = "fba149993140"
|
|
18
|
+
branch_labels = None
|
|
19
|
+
depends_on = None
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def upgrade():
|
|
23
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
24
|
+
with op.batch_alter_table("comment", schema=None) as batch_op:
|
|
25
|
+
batch_op.add_column(
|
|
26
|
+
sa.Column(
|
|
27
|
+
"updated_by",
|
|
28
|
+
sqlalchemy_utils.types.uuid.UUIDType(binary=False),
|
|
29
|
+
default=uuid.uuid4,
|
|
30
|
+
nullable=True,
|
|
31
|
+
)
|
|
32
|
+
)
|
|
33
|
+
batch_op.create_index(
|
|
34
|
+
batch_op.f("ix_comment_updated_by"), ["updated_by"], unique=False
|
|
35
|
+
)
|
|
36
|
+
batch_op.create_foreign_key(
|
|
37
|
+
"comment_updated_by_fkey", "person", ["updated_by"], ["id"]
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
# ### end Alembic commands ###
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def downgrade():
|
|
44
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
45
|
+
with op.batch_alter_table("comment", schema=None) as batch_op:
|
|
46
|
+
batch_op.drop_constraint("comment_updated_by_fkey", type_="foreignkey")
|
|
47
|
+
batch_op.drop_index(batch_op.f("ix_comment_updated_by"))
|
|
48
|
+
batch_op.drop_column("updated_by")
|
|
49
|
+
|
|
50
|
+
# ### end Alembic commands ###
|
|
@@ -270,6 +270,7 @@ zou/migrations/versions/003be8a91001_add_start_and_end_dates_to_projects.py
|
|
|
270
270
|
zou/migrations/versions/0596674df51d_add_department_mentions_to_comments.py
|
|
271
271
|
zou/migrations/versions/05ac7e8caa21_remove_unique_constraint_for_taskstatus_.py
|
|
272
272
|
zou/migrations/versions/05b7dc79a416_add_archived_fields_to_main_tables.py
|
|
273
|
+
zou/migrations/versions/06552e22f9e7_add_comment_updated_by.py
|
|
273
274
|
zou/migrations/versions/0cf5e0e035fa_drop_column_tasktype_for_shots.py
|
|
274
275
|
zou/migrations/versions/0ec3762a745d_add_attachment_table.py
|
|
275
276
|
zou/migrations/versions/0ef6416a507b_.py
|
zou-0.20.19/zou/__init__.py
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.20.19"
|
|
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
|