zou 0.19.42__tar.gz → 0.19.44__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (423) hide show
  1. {zou-0.19.42/zou.egg-info → zou-0.19.44}/PKG-INFO +5 -5
  2. {zou-0.19.42 → zou-0.19.44}/setup.cfg +4 -4
  3. zou-0.19.44/zou/__init__.py +1 -0
  4. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/organisation.py +0 -4
  5. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/previews/resources.py +0 -2
  6. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/shots/__init__.py +5 -0
  7. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/shots/resources.py +49 -0
  8. {zou-0.19.42 → zou-0.19.44}/zou/app/models/attachment_file.py +1 -0
  9. {zou-0.19.42 → zou-0.19.44}/zou/app/models/entity_type.py +2 -0
  10. {zou-0.19.42 → zou-0.19.44}/zou/app/models/task_status.py +1 -0
  11. {zou-0.19.42 → zou-0.19.44}/zou/app/models/task_type.py +1 -0
  12. {zou-0.19.42 → zou-0.19.44}/zou/app/services/preview_files_service.py +8 -4
  13. {zou-0.19.42 → zou-0.19.44}/zou/app/services/shots_service.py +73 -0
  14. {zou-0.19.42 → zou-0.19.44}/zou/app/services/sync_service.py +30 -30
  15. {zou-0.19.42 → zou-0.19.44}/zou/app/utils/commands.py +90 -1
  16. {zou-0.19.42 → zou-0.19.44}/zou/cli.py +39 -5
  17. zou-0.19.44/zou/migrations/versions/971dbf5a0faf_add_short_name_for_asset_type_entity_.py +33 -0
  18. zou-0.19.44/zou/migrations/versions/a252a094e977_add_descriptions_for_entities_tasks_and_.py +40 -0
  19. {zou-0.19.42 → zou-0.19.44/zou.egg-info}/PKG-INFO +5 -5
  20. {zou-0.19.42 → zou-0.19.44}/zou.egg-info/SOURCES.txt +2 -0
  21. {zou-0.19.42 → zou-0.19.44}/zou.egg-info/requires.txt +4 -4
  22. zou-0.19.42/zou/__init__.py +0 -1
  23. {zou-0.19.42 → zou-0.19.44}/LICENSE +0 -0
  24. {zou-0.19.42 → zou-0.19.44}/README.rst +0 -0
  25. {zou-0.19.42 → zou-0.19.44}/pyproject.toml +0 -0
  26. {zou-0.19.42 → zou-0.19.44}/setup.py +0 -0
  27. {zou-0.19.42 → zou-0.19.44}/zou/app/__init__.py +0 -0
  28. {zou-0.19.42 → zou-0.19.44}/zou/app/api.py +0 -0
  29. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/__init__.py +0 -0
  30. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/assets/__init__.py +0 -0
  31. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/assets/resources.py +0 -0
  32. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/auth/__init__.py +0 -0
  33. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/auth/resources.py +0 -0
  34. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/breakdown/__init__.py +0 -0
  35. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/breakdown/resources.py +0 -0
  36. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/chats/__init__.py +0 -0
  37. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/chats/resources.py +0 -0
  38. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/comments/__init__.py +0 -0
  39. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/comments/resources.py +0 -0
  40. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/concepts/__init__.py +0 -0
  41. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/concepts/resources.py +0 -0
  42. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/__init__.py +0 -0
  43. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/asset_instance.py +0 -0
  44. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/attachment_file.py +0 -0
  45. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/base.py +0 -0
  46. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/chat.py +0 -0
  47. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/chat_message.py +0 -0
  48. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/comments.py +0 -0
  49. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/custom_action.py +0 -0
  50. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/day_off.py +0 -0
  51. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/department.py +0 -0
  52. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/entity.py +0 -0
  53. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/entity_link.py +0 -0
  54. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/entity_type.py +0 -0
  55. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/event.py +0 -0
  56. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/file_status.py +0 -0
  57. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/metadata_descriptor.py +0 -0
  58. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/milestone.py +0 -0
  59. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/news.py +0 -0
  60. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/notification.py +0 -0
  61. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/output_file.py +0 -0
  62. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/output_type.py +0 -0
  63. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/person.py +0 -0
  64. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/playlist.py +0 -0
  65. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/preview_background_file.py +0 -0
  66. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/preview_file.py +0 -0
  67. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/project.py +0 -0
  68. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/project_status.py +0 -0
  69. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/schedule_item.py +0 -0
  70. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/search_filter.py +0 -0
  71. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/search_filter_group.py +0 -0
  72. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/software.py +0 -0
  73. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/status_automation.py +0 -0
  74. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/studio.py +0 -0
  75. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/subscription.py +0 -0
  76. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/task.py +0 -0
  77. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/task_status.py +0 -0
  78. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/task_type.py +0 -0
  79. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/time_spent.py +0 -0
  80. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/crud/working_file.py +0 -0
  81. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/edits/__init__.py +0 -0
  82. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/edits/resources.py +0 -0
  83. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/entities/__init__.py +0 -0
  84. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/entities/resources.py +0 -0
  85. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/events/__init__.py +0 -0
  86. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/events/resources.py +0 -0
  87. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/export/__init__.py +0 -0
  88. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/export/csv/__init__.py +0 -0
  89. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/export/csv/assets.py +0 -0
  90. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/export/csv/base.py +0 -0
  91. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/export/csv/casting.py +0 -0
  92. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/export/csv/edits.py +0 -0
  93. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/export/csv/persons.py +0 -0
  94. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/export/csv/playlists.py +0 -0
  95. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/export/csv/projects.py +0 -0
  96. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/export/csv/shots.py +0 -0
  97. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/export/csv/task_types.py +0 -0
  98. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/export/csv/tasks.py +0 -0
  99. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/export/csv/time_spents.py +0 -0
  100. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/files/__init__.py +0 -0
  101. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/files/resources.py +0 -0
  102. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/index/__init__.py +0 -0
  103. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/index/resources.py +0 -0
  104. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/news/__init__.py +0 -0
  105. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/news/resources.py +0 -0
  106. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/persons/__init__.py +0 -0
  107. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/persons/resources.py +0 -0
  108. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/playlists/__init__.py +0 -0
  109. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/playlists/resources.py +0 -0
  110. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/previews/__init__.py +0 -0
  111. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/projects/__init__.py +0 -0
  112. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/projects/resources.py +0 -0
  113. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/search/__init__.py +0 -0
  114. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/search/resources.py +0 -0
  115. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/__init__.py +0 -0
  116. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/csv/__init__.py +0 -0
  117. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/csv/assets.py +0 -0
  118. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/csv/base.py +0 -0
  119. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/csv/casting.py +0 -0
  120. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/csv/edits.py +0 -0
  121. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/csv/persons.py +0 -0
  122. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/csv/shots.py +0 -0
  123. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/csv/task_type_estimations.py +0 -0
  124. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/kitsu.py +0 -0
  125. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/otio.py +0 -0
  126. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/shotgun/__init__.py +0 -0
  127. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/shotgun/assets.py +0 -0
  128. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/shotgun/base.py +0 -0
  129. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/shotgun/episode.py +0 -0
  130. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/shotgun/exception.py +0 -0
  131. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/shotgun/import_errors.py +0 -0
  132. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/shotgun/notes.py +0 -0
  133. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/shotgun/person.py +0 -0
  134. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/shotgun/project.py +0 -0
  135. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/shotgun/scene.py +0 -0
  136. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/shotgun/sequence.py +0 -0
  137. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/shotgun/shot.py +0 -0
  138. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/shotgun/status.py +0 -0
  139. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/shotgun/steps.py +0 -0
  140. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/shotgun/tasks.py +0 -0
  141. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/shotgun/team.py +0 -0
  142. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/source/shotgun/versions.py +0 -0
  143. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/tasks/__init__.py +0 -0
  144. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/tasks/resources.py +0 -0
  145. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/user/__init__.py +0 -0
  146. {zou-0.19.42 → zou-0.19.44}/zou/app/blueprints/user/resources.py +0 -0
  147. {zou-0.19.42 → zou-0.19.44}/zou/app/config.py +0 -0
  148. {zou-0.19.42 → zou-0.19.44}/zou/app/file_trees/default.json +0 -0
  149. {zou-0.19.42 → zou-0.19.44}/zou/app/file_trees/simple.json +0 -0
  150. {zou-0.19.42 → zou-0.19.44}/zou/app/indexer/__init__.py +0 -0
  151. {zou-0.19.42 → zou-0.19.44}/zou/app/indexer/indexing.py +0 -0
  152. {zou-0.19.42 → zou-0.19.44}/zou/app/mixin.py +0 -0
  153. {zou-0.19.42 → zou-0.19.44}/zou/app/models/__init__.py +0 -0
  154. {zou-0.19.42 → zou-0.19.44}/zou/app/models/asset_instance.py +0 -0
  155. {zou-0.19.42 → zou-0.19.44}/zou/app/models/base.py +0 -0
  156. {zou-0.19.42 → zou-0.19.44}/zou/app/models/build_job.py +0 -0
  157. {zou-0.19.42 → zou-0.19.44}/zou/app/models/chat.py +0 -0
  158. {zou-0.19.42 → zou-0.19.44}/zou/app/models/chat_message.py +0 -0
  159. {zou-0.19.42 → zou-0.19.44}/zou/app/models/comment.py +0 -0
  160. {zou-0.19.42 → zou-0.19.44}/zou/app/models/custom_action.py +0 -0
  161. {zou-0.19.42 → zou-0.19.44}/zou/app/models/data_import_error.py +0 -0
  162. {zou-0.19.42 → zou-0.19.44}/zou/app/models/day_off.py +0 -0
  163. {zou-0.19.42 → zou-0.19.44}/zou/app/models/department.py +0 -0
  164. {zou-0.19.42 → zou-0.19.44}/zou/app/models/desktop_login_log.py +0 -0
  165. {zou-0.19.42 → zou-0.19.44}/zou/app/models/entity.py +0 -0
  166. {zou-0.19.42 → zou-0.19.44}/zou/app/models/event.py +0 -0
  167. {zou-0.19.42 → zou-0.19.44}/zou/app/models/file_status.py +0 -0
  168. {zou-0.19.42 → zou-0.19.44}/zou/app/models/login_log.py +0 -0
  169. {zou-0.19.42 → zou-0.19.44}/zou/app/models/metadata_descriptor.py +0 -0
  170. {zou-0.19.42 → zou-0.19.44}/zou/app/models/milestone.py +0 -0
  171. {zou-0.19.42 → zou-0.19.44}/zou/app/models/news.py +0 -0
  172. {zou-0.19.42 → zou-0.19.44}/zou/app/models/notification.py +0 -0
  173. {zou-0.19.42 → zou-0.19.44}/zou/app/models/organisation.py +0 -0
  174. {zou-0.19.42 → zou-0.19.44}/zou/app/models/output_file.py +0 -0
  175. {zou-0.19.42 → zou-0.19.44}/zou/app/models/output_type.py +0 -0
  176. {zou-0.19.42 → zou-0.19.44}/zou/app/models/person.py +0 -0
  177. {zou-0.19.42 → zou-0.19.44}/zou/app/models/playlist.py +0 -0
  178. {zou-0.19.42 → zou-0.19.44}/zou/app/models/preview_background_file.py +0 -0
  179. {zou-0.19.42 → zou-0.19.44}/zou/app/models/preview_file.py +0 -0
  180. {zou-0.19.42 → zou-0.19.44}/zou/app/models/project.py +0 -0
  181. {zou-0.19.42 → zou-0.19.44}/zou/app/models/project_status.py +0 -0
  182. {zou-0.19.42 → zou-0.19.44}/zou/app/models/schedule_item.py +0 -0
  183. {zou-0.19.42 → zou-0.19.44}/zou/app/models/search_filter.py +0 -0
  184. {zou-0.19.42 → zou-0.19.44}/zou/app/models/search_filter_group.py +0 -0
  185. {zou-0.19.42 → zou-0.19.44}/zou/app/models/serializer.py +0 -0
  186. {zou-0.19.42 → zou-0.19.44}/zou/app/models/software.py +0 -0
  187. {zou-0.19.42 → zou-0.19.44}/zou/app/models/status_automation.py +0 -0
  188. {zou-0.19.42 → zou-0.19.44}/zou/app/models/studio.py +0 -0
  189. {zou-0.19.42 → zou-0.19.44}/zou/app/models/subscription.py +0 -0
  190. {zou-0.19.42 → zou-0.19.44}/zou/app/models/task.py +0 -0
  191. {zou-0.19.42 → zou-0.19.44}/zou/app/models/time_spent.py +0 -0
  192. {zou-0.19.42 → zou-0.19.44}/zou/app/models/working_file.py +0 -0
  193. {zou-0.19.42 → zou-0.19.44}/zou/app/services/__init__.py +0 -0
  194. {zou-0.19.42 → zou-0.19.44}/zou/app/services/assets_service.py +0 -0
  195. {zou-0.19.42 → zou-0.19.44}/zou/app/services/auth_service.py +0 -0
  196. {zou-0.19.42 → zou-0.19.44}/zou/app/services/backup_service.py +0 -0
  197. {zou-0.19.42 → zou-0.19.44}/zou/app/services/base_service.py +0 -0
  198. {zou-0.19.42 → zou-0.19.44}/zou/app/services/breakdown_service.py +0 -0
  199. {zou-0.19.42 → zou-0.19.44}/zou/app/services/chats_service.py +0 -0
  200. {zou-0.19.42 → zou-0.19.44}/zou/app/services/comments_service.py +0 -0
  201. {zou-0.19.42 → zou-0.19.44}/zou/app/services/concepts_service.py +0 -0
  202. {zou-0.19.42 → zou-0.19.44}/zou/app/services/custom_actions_service.py +0 -0
  203. {zou-0.19.42 → zou-0.19.44}/zou/app/services/deletion_service.py +0 -0
  204. {zou-0.19.42 → zou-0.19.44}/zou/app/services/edits_service.py +0 -0
  205. {zou-0.19.42 → zou-0.19.44}/zou/app/services/emails_service.py +0 -0
  206. {zou-0.19.42 → zou-0.19.44}/zou/app/services/entities_service.py +0 -0
  207. {zou-0.19.42 → zou-0.19.44}/zou/app/services/events_service.py +0 -0
  208. {zou-0.19.42 → zou-0.19.44}/zou/app/services/exception.py +0 -0
  209. {zou-0.19.42 → zou-0.19.44}/zou/app/services/file_tree_service.py +0 -0
  210. {zou-0.19.42 → zou-0.19.44}/zou/app/services/files_service.py +0 -0
  211. {zou-0.19.42 → zou-0.19.44}/zou/app/services/index_service.py +0 -0
  212. {zou-0.19.42 → zou-0.19.44}/zou/app/services/names_service.py +0 -0
  213. {zou-0.19.42 → zou-0.19.44}/zou/app/services/news_service.py +0 -0
  214. {zou-0.19.42 → zou-0.19.44}/zou/app/services/notifications_service.py +0 -0
  215. {zou-0.19.42 → zou-0.19.44}/zou/app/services/persons_service.py +0 -0
  216. {zou-0.19.42 → zou-0.19.44}/zou/app/services/playlists_service.py +0 -0
  217. {zou-0.19.42 → zou-0.19.44}/zou/app/services/projects_service.py +0 -0
  218. {zou-0.19.42 → zou-0.19.44}/zou/app/services/scenes_service.py +0 -0
  219. {zou-0.19.42 → zou-0.19.44}/zou/app/services/schedule_service.py +0 -0
  220. {zou-0.19.42 → zou-0.19.44}/zou/app/services/stats_service.py +0 -0
  221. {zou-0.19.42 → zou-0.19.44}/zou/app/services/status_automations_service.py +0 -0
  222. {zou-0.19.42 → zou-0.19.44}/zou/app/services/tasks_service.py +0 -0
  223. {zou-0.19.42 → zou-0.19.44}/zou/app/services/telemetry_services.py +0 -0
  224. {zou-0.19.42 → zou-0.19.44}/zou/app/services/time_spents_service.py +0 -0
  225. {zou-0.19.42 → zou-0.19.44}/zou/app/services/user_service.py +0 -0
  226. {zou-0.19.42 → zou-0.19.44}/zou/app/stores/__init__.py +0 -0
  227. {zou-0.19.42 → zou-0.19.44}/zou/app/stores/auth_tokens_store.py +0 -0
  228. {zou-0.19.42 → zou-0.19.44}/zou/app/stores/file_store.py +0 -0
  229. {zou-0.19.42 → zou-0.19.44}/zou/app/stores/publisher_store.py +0 -0
  230. {zou-0.19.42 → zou-0.19.44}/zou/app/stores/queue_store.py +0 -0
  231. {zou-0.19.42 → zou-0.19.44}/zou/app/swagger.py +0 -0
  232. {zou-0.19.42 → zou-0.19.44}/zou/app/utils/__init__.py +0 -0
  233. {zou-0.19.42 → zou-0.19.44}/zou/app/utils/api.py +0 -0
  234. {zou-0.19.42 → zou-0.19.44}/zou/app/utils/auth.py +0 -0
  235. {zou-0.19.42 → zou-0.19.44}/zou/app/utils/cache.py +0 -0
  236. {zou-0.19.42 → zou-0.19.44}/zou/app/utils/chats.py +0 -0
  237. {zou-0.19.42 → zou-0.19.44}/zou/app/utils/colors.py +0 -0
  238. {zou-0.19.42 → zou-0.19.44}/zou/app/utils/csv_utils.py +0 -0
  239. {zou-0.19.42 → zou-0.19.44}/zou/app/utils/date_helpers.py +0 -0
  240. {zou-0.19.42 → zou-0.19.44}/zou/app/utils/dbhelpers.py +0 -0
  241. {zou-0.19.42 → zou-0.19.44}/zou/app/utils/emails.py +0 -0
  242. {zou-0.19.42 → zou-0.19.44}/zou/app/utils/env.py +0 -0
  243. {zou-0.19.42 → zou-0.19.44}/zou/app/utils/events.py +0 -0
  244. {zou-0.19.42 → zou-0.19.44}/zou/app/utils/fields.py +0 -0
  245. {zou-0.19.42 → zou-0.19.44}/zou/app/utils/flask.py +0 -0
  246. {zou-0.19.42 → zou-0.19.44}/zou/app/utils/fs.py +0 -0
  247. {zou-0.19.42 → zou-0.19.44}/zou/app/utils/git.py +0 -0
  248. {zou-0.19.42 → zou-0.19.44}/zou/app/utils/logs.py +0 -0
  249. {zou-0.19.42 → zou-0.19.44}/zou/app/utils/monitoring.py +0 -0
  250. {zou-0.19.42 → zou-0.19.44}/zou/app/utils/permissions.py +0 -0
  251. {zou-0.19.42 → zou-0.19.44}/zou/app/utils/query.py +0 -0
  252. {zou-0.19.42 → zou-0.19.44}/zou/app/utils/remote_job.py +0 -0
  253. {zou-0.19.42 → zou-0.19.44}/zou/app/utils/shell.py +0 -0
  254. {zou-0.19.42 → zou-0.19.44}/zou/app/utils/string.py +0 -0
  255. {zou-0.19.42 → zou-0.19.44}/zou/app/utils/thumbnail.py +0 -0
  256. {zou-0.19.42 → zou-0.19.44}/zou/debug.py +0 -0
  257. {zou-0.19.42 → zou-0.19.44}/zou/event_stream.py +0 -0
  258. {zou-0.19.42 → zou-0.19.44}/zou/job_settings.py +0 -0
  259. {zou-0.19.42 → zou-0.19.44}/zou/migrations/README +0 -0
  260. {zou-0.19.42 → zou-0.19.44}/zou/migrations/__init__.py +0 -0
  261. {zou-0.19.42 → zou-0.19.44}/zou/migrations/alembic.ini +0 -0
  262. {zou-0.19.42 → zou-0.19.44}/zou/migrations/env.py +0 -0
  263. {zou-0.19.42 → zou-0.19.44}/zou/migrations/script.py.mako +0 -0
  264. {zou-0.19.42 → zou-0.19.44}/zou/migrations/utils/__init__.py +0 -0
  265. {zou-0.19.42 → zou-0.19.44}/zou/migrations/utils/base.py +0 -0
  266. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/003be8a91001_add_start_and_end_dates_to_projects.py +0 -0
  267. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/0596674df51d_add_department_mentions_to_comments.py +0 -0
  268. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/05ac7e8caa21_remove_unique_constraint_for_taskstatus_.py +0 -0
  269. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/05b7dc79a416_add_archived_fields_to_main_tables.py +0 -0
  270. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/0cf5e0e035fa_drop_column_tasktype_for_shots.py +0 -0
  271. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/0ec3762a745d_add_attachment_table.py +0 -0
  272. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/0ef6416a507b_.py +0 -0
  273. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/10cf267d95c9_fix_schedule_item.py +0 -0
  274. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/16328eae4b5f_add_new_constraint_for_timespent.py +0 -0
  275. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/16df47d76c64_add_some_indexes.py +0 -0
  276. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/17ef8f7be758_disallow_null_choicetype.py +0 -0
  277. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/1bb55759146f_add_table_studio.py +0 -0
  278. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/1cb44194db49_add_file_size_field_to_preview_file.py +0 -0
  279. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/1e150c2cea4d_add_nb_entities_out.py +0 -0
  280. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/1e2d77a2f0c4_add_hd_by_default_column.py +0 -0
  281. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/1fab8c420678_add_attachments_to_message_chats.py +0 -0
  282. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/20dfeb36142b_add_projecttaskstatuslink_roles_for_.py +0 -0
  283. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/23122f290ca2_add_entity_chat_models.py +0 -0
  284. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/269d41bfb73f_add_entity_entity_links.py +0 -0
  285. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/29df910f04a4_create_unique_constraint_project_id_.py +0 -0
  286. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/29fe01a6c9eb_add_status_automation_field.py +0 -0
  287. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/2adc020885fa_.py +0 -0
  288. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/2baede80b111_add_entity_status_field.py +0 -0
  289. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/306266361f4f_.py +0 -0
  290. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/328fd44c6347_add_entity_created_by.py +0 -0
  291. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/32f134ff1201_add_is_shared_flag_to_filters.py +0 -0
  292. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/346250b5304c_add_position_to_preview_files.py +0 -0
  293. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/3476e147e632_add_acks_to_comments.py +0 -0
  294. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/389cfb9de776_.py +0 -0
  295. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/38baa9a23b3d_.py +0 -0
  296. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/398150912a3f_validation_status_preview.py +0 -0
  297. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/3b0d1321079e_.py +0 -0
  298. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/3d5c93bafb9d_.py +0 -0
  299. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/3e0538ddf80f_.py +0 -0
  300. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/3fee3bd10f9d_.py +0 -0
  301. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/4095103c7d01_add_is_clients_isolated_flag_to_projects.py +0 -0
  302. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/40dea9555940_.py +0 -0
  303. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/42ec83db6a01_change_person_preferred_two_factor_.py +0 -0
  304. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/43d0cf0ed5e7_.py +0 -0
  305. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/443d1e78a932_.py +0 -0
  306. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/45c2de366e66_.py +0 -0
  307. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/45dafbb3f4e1_for_person_contract_type_disallow_null.py +0 -0
  308. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/4715c2586036_add_last_preview_file_fields.py +0 -0
  309. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/4e3738cdc34c_.py +0 -0
  310. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/4f2398ebcd49_.py +0 -0
  311. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/523ee9647bee_.py +0 -0
  312. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/54ee0d1d60ba_add_build_job_model.py +0 -0
  313. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/556526e47daa_.py +0 -0
  314. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/57222395f2be_add_statusautomation_import_last_revision.py +0 -0
  315. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/5798d2c9020b_change_person_role_to_choicetype.py +0 -0
  316. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/590aa1ffe731_add_notifications_enabled_flag.py +0 -0
  317. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/5a291251823c_add_max_retake_parameter.py +0 -0
  318. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/5ab9d7a75887_.py +0 -0
  319. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/5b0fcbb94f24_.py +0 -0
  320. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/5b7fa3e51701_add_is_client_allowed_flag_to_task_.py +0 -0
  321. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/5b980f0dc365_add_comment_links.py +0 -0
  322. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/5b9fd9ddfe43_add_homepage_and_contract_fields.py +0 -0
  323. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/5c0498e264bc_add_slack_fields.py +0 -0
  324. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/5e2ce62632a6_add_workflow_to_project.py +0 -0
  325. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/680c64565f9d_for_searchfiltergroup_is_shared.py +0 -0
  326. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/693cc511d28d_add_taskstatus_priority.py +0 -0
  327. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/6aa446ee4072_add_is_for_all_flage_to_playlists.py +0 -0
  328. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/6bd3b102d61b_.py +0 -0
  329. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/6c597e842afa_add_task_type_field_to_playlists.py +0 -0
  330. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/6d1b2c60f58b_add_milestone_model.py +0 -0
  331. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/6d7fa5a8e9a5_add_timesheets_locked_field_to_org.py +0 -0
  332. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/6eeaff945706_add_data_field_on_entity_links.py +0 -0
  333. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/6f6049877105_.py +0 -0
  334. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/7417c8eb70d8_add_for_entity_field_to_playlists.py +0 -0
  335. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/772a5e43f05b_.py +0 -0
  336. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/7748d3d22925_add_columns_to_searchfilter_table_to_.py +0 -0
  337. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/77d6820f494f_add_reply_to_notif.py +0 -0
  338. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/7b1f765677d8_.py +0 -0
  339. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/7bc746997e8d_add_slack_token_field_to_organisation.py +0 -0
  340. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/7dc79d4ed7cd_.py +0 -0
  341. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/818f7bda2528_.py +0 -0
  342. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/82e7f7a95e84_add_project_id_to_events.py +0 -0
  343. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/82ee682204ab_add_is_generated_from_ldap_column_to_.py +0 -0
  344. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/8588f254d6b8_add_archived_fields.py +0 -0
  345. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/8739ae9fa28b_add_for_client_field.py +0 -0
  346. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/87efceb6745b_add_ready_for_to_entity.py +0 -0
  347. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/892b264937ec_.py +0 -0
  348. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/8a1b4a1b7f4a_add_totp_columns_for_person.py +0 -0
  349. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/8e4f39e321f4_add_day_off_table.py +0 -0
  350. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/8fbd40afbe5f_allow_to_set_float_values_for_.py +0 -0
  351. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/9010a64e5a2d_add_indices.py +0 -0
  352. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/9060dd4f6116_notification_uc.py +0 -0
  353. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/925771029620_.py +0 -0
  354. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/92b40d79ad3f_allow_message_attachments.py +0 -0
  355. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/92bdfe07e5f5_discord_integration.py +0 -0
  356. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/956659992419_add_columns_for_person_to_store_fido_.py +0 -0
  357. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/96c79d31e648_add_mail_otp_columns_for_person.py +0 -0
  358. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/96f58a4a2a58_person_partial_index_for_email_only_.py +0 -0
  359. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/98c90621cf58_add_for_client_flag_to_playlist.py +0 -0
  360. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/99825b9cc778_.py +0 -0
  361. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/9a09467f9b2c_.py +0 -0
  362. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/9b85c14fa8a7_add_day_off_new_columns.py +0 -0
  363. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/9bd17364fc18_.py +0 -0
  364. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/9e5b3a9b0cee_add_new_column_metadatadescriptor_data_type_.py +0 -0
  365. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/9f8445f9b42c_add_man_days_fields.py +0 -0
  366. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/a23682ccc1f1_.py +0 -0
  367. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/a519c710877c_.py +0 -0
  368. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/a65bdadbae2f_.py +0 -0
  369. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/a66508788c53_add_nb_assets_ready.py +0 -0
  370. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/a6c25eed3ea1_add_login_failed_attemps_and_last_login_.py +0 -0
  371. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/a7c43f3fbc76_add_duration_column_to_the_preview_file.py +0 -0
  372. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/aa0a60033106_feedback_request.py +0 -0
  373. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/addbbefa7028_add_departments_link_to_metadata_.py +0 -0
  374. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/ae0127f2fc56_add_previewfile_width_and_previewfile_.py +0 -0
  375. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/af1790868e2c_.py +0 -0
  376. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/b45cb782bb9c_.py +0 -0
  377. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/b4dd0add5f79_.py +0 -0
  378. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/b8c0a0f9d054_drop_task_status_is_reviewable.py +0 -0
  379. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/b8ed0fb263f8_add_person_jti_and_jti_expiration_date.py +0 -0
  380. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/b97a71306fc8_add_is_casting_standby_column_to_entity.py +0 -0
  381. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/be56dc0fb760_for_is_shared_disallow_nullable.py +0 -0
  382. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/bf1347acdee2_.py +0 -0
  383. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/c49e41f1298b_add_previewbackground.py +0 -0
  384. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/c68c2a62cfac_add_mimetype_column_to_attachment.py +0 -0
  385. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/c726b98be194_.py +0 -0
  386. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/c81f3e83bdb5_.py +0 -0
  387. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/cf3d365de164_add_entity_version_model.py +0 -0
  388. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/cf6cec6d6bf5_add_status_field_to_preview_file.py +0 -0
  389. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/d80267806131_task_status_new_column_is_default.py +0 -0
  390. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/d8dcd5196d57_add_casting_label.py +0 -0
  391. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/de8a3de227ef_.py +0 -0
  392. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/deeacd38d373_for_projecttaskstatuslink_set_default_.py +0 -0
  393. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/df1834485f57_.py +0 -0
  394. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/df9f8a147e80_change_file_size_to_big_integer.py +0 -0
  395. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/e1ef93f40d3d_.py +0 -0
  396. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/e29638428dfd_add_schedule_item_table.py +0 -0
  397. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/e3f6db74cc1e_.py +0 -0
  398. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/e839d6603c09_add_person_id_to_shot_history.py +0 -0
  399. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/ee2373fbe3a4_.py +0 -0
  400. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/f0567e8d0c62_.py +0 -0
  401. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/f0c6cbb61869_add_production_style_field.py +0 -0
  402. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/f344b867a911_for_description_of_entity_task_working_.py +0 -0
  403. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/f4ff5a73d283_add_person_ldap_uid.py +0 -0
  404. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/f5b113876a49_add_preferred_two_factor_authentication_.py +0 -0
  405. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/f5bdca075cdc_add_preview_download_flag_to_projects.py +0 -0
  406. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/f874ad5e898a_add_link_entity_type_task_type.py +0 -0
  407. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/f995b28fb749_.py +0 -0
  408. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/fb6b6f188497_.py +0 -0
  409. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/fb87feaaa094_add_missing_unique_constraints.py +0 -0
  410. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/fc322f908695_.py +0 -0
  411. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/fee7c696166e_.py +0 -0
  412. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/feffd3c5b806_introduce_concepts.py +0 -0
  413. {zou-0.19.42 → zou-0.19.44}/zou/migrations/versions/ffeed4956ab1_add_more_details_to_projects.py +0 -0
  414. {zou-0.19.42 → zou-0.19.44}/zou/remote/__init__.py +0 -0
  415. {zou-0.19.42 → zou-0.19.44}/zou/remote/config_payload.py +0 -0
  416. {zou-0.19.42 → zou-0.19.44}/zou/remote/normalize_movie.py +0 -0
  417. {zou-0.19.42 → zou-0.19.44}/zou/remote/playlist.py +0 -0
  418. {zou-0.19.42 → zou-0.19.44}/zou/utils/__init__.py +0 -0
  419. {zou-0.19.42 → zou-0.19.44}/zou/utils/movie.py +0 -0
  420. {zou-0.19.42 → zou-0.19.44}/zou.egg-info/dependency_links.txt +0 -0
  421. {zou-0.19.42 → zou-0.19.44}/zou.egg-info/entry_points.txt +0 -0
  422. {zou-0.19.42 → zou-0.19.44}/zou.egg-info/not-zip-safe +0 -0
  423. {zou-0.19.42 → zou-0.19.44}/zou.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: zou
3
- Version: 0.19.42
3
+ Version: 0.19.44
4
4
  Summary: API to store and manage the data of your animation production
5
5
  Home-page: https://zou.cg-wire.com
6
6
  Author: CG Wire
@@ -23,7 +23,7 @@ Requires-Python: >=3.8.1, <3.13
23
23
  License-File: LICENSE
24
24
  Requires-Dist: babel==2.15.0
25
25
  Requires-Dist: click==8.1.7
26
- Requires-Dist: discord.py==2.3.2
26
+ Requires-Dist: discord.py==2.4.0
27
27
  Requires-Dist: email-validator==2.2.0
28
28
  Requires-Dist: ffmpeg-python==0.2.0
29
29
  Requires-Dist: fido2==1.1.3
@@ -53,7 +53,7 @@ Requires-Dist: meilisearch==0.31.3
53
53
  Requires-Dist: numpy==1.24.4; python_version == "3.8"
54
54
  Requires-Dist: numpy==2.0.0; python_version >= "3.9"
55
55
  Requires-Dist: opencv-python==4.10.0.84
56
- Requires-Dist: OpenTimelineIO==0.16.0
56
+ Requires-Dist: OpenTimelineIO==0.17.0
57
57
  Requires-Dist: orjson==3.10.5
58
58
  Requires-Dist: pillow==10.3.0
59
59
  Requires-Dist: psutil==6.0.0
@@ -63,7 +63,7 @@ Requires-Dist: python-nomad==2.0.1
63
63
  Requires-Dist: python-slugify==8.0.4
64
64
  Requires-Dist: python-socketio==5.11.3
65
65
  Requires-Dist: pytz==2024.1
66
- Requires-Dist: redis==5.0.6
66
+ Requires-Dist: redis==5.0.7
67
67
  Requires-Dist: requests==2.32.3
68
68
  Requires-Dist: rq==1.16.2
69
69
  Requires-Dist: slackclient==2.9.4
@@ -84,7 +84,7 @@ Requires-Dist: pytest==8.2.2; extra == "test"
84
84
  Provides-Extra: monitoring
85
85
  Requires-Dist: prometheus-flask-exporter==0.23.0; extra == "monitoring"
86
86
  Requires-Dist: pygelf==0.4.2; extra == "monitoring"
87
- Requires-Dist: sentry-sdk==2.6.0; extra == "monitoring"
87
+ Requires-Dist: sentry-sdk==2.7.1; extra == "monitoring"
88
88
  Provides-Extra: lint
89
89
  Requires-Dist: autoflake==2.3.1; extra == "lint"
90
90
  Requires-Dist: black==24.4.2; extra == "lint"
@@ -29,7 +29,7 @@ packages = find:
29
29
  install_requires =
30
30
  babel==2.15.0
31
31
  click==8.1.7
32
- discord.py==2.3.2
32
+ discord.py==2.4.0
33
33
  email-validator==2.2.0
34
34
  ffmpeg-python==0.2.0
35
35
  fido2==1.1.3
@@ -59,7 +59,7 @@ install_requires =
59
59
  numpy==1.24.4; python_version == '3.8'
60
60
  numpy==2.0.0; python_version >= '3.9'
61
61
  opencv-python==4.10.0.84
62
- OpenTimelineIO==0.16.0
62
+ OpenTimelineIO==0.17.0
63
63
  orjson==3.10.5
64
64
  pillow==10.3.0
65
65
  psutil==6.0.0
@@ -69,7 +69,7 @@ install_requires =
69
69
  python-slugify==8.0.4
70
70
  python-socketio==5.11.3
71
71
  pytz==2024.1
72
- redis==5.0.6
72
+ redis==5.0.7
73
73
  requests==2.32.3
74
74
  rq==1.16.2
75
75
  slackclient==2.9.4
@@ -98,7 +98,7 @@ test =
98
98
  monitoring =
99
99
  prometheus-flask-exporter==0.23.0
100
100
  pygelf==0.4.2
101
- sentry-sdk==2.6.0
101
+ sentry-sdk==2.7.1
102
102
  lint =
103
103
  autoflake==2.3.1
104
104
  black==24.4.2
@@ -0,0 +1 @@
1
+ __version__ = "0.19.44"
@@ -1,5 +1,4 @@
1
1
  from zou.app.models.organisation import Organisation
2
- from zou.app.utils import fields
3
2
  from zou.app.blueprints.crud.base import BaseModelResource, BaseModelsResource
4
3
 
5
4
 
@@ -7,9 +6,6 @@ class OrganisationsResource(BaseModelsResource):
7
6
  def __init__(self):
8
7
  BaseModelsResource.__init__(self, Organisation)
9
8
 
10
- def get(self):
11
- return fields.serialize_list(Organisation.query.all())
12
-
13
9
  def check_read_permissions(self):
14
10
  return True
15
11
 
@@ -338,8 +338,6 @@ class CreatePreviewFilePictureResource(Resource, ArgsMixin):
338
338
  preview_files_service.prepare_and_store_movie(
339
339
  preview_file_id, uploaded_movie_path, normalize=normalize
340
340
  )
341
- preview_file = files_service.get_preview_file(preview_file_id)
342
- tasks_service.update_preview_file_info(preview_file)
343
341
  return preview_file_id
344
342
 
345
343
  def save_file_preview(self, instance_id, uploaded_file, extension):
@@ -42,6 +42,7 @@ from zou.app.blueprints.shots.resources import (
42
42
  EpisodeAssetTasksResource,
43
43
  SequenceShotTasksResource,
44
44
  ProjectQuotasResource,
45
+ SetShotsFramesResource,
45
46
  )
46
47
 
47
48
  routes = [
@@ -94,6 +95,10 @@ routes = [
94
95
  "/data/projects/<project_id>/quotas/<task_type_id>",
95
96
  ProjectQuotasResource,
96
97
  ),
98
+ (
99
+ "/actions/projects/<project_id>/task-types/<task_type_id>/set-shot-nb-frames",
100
+ SetShotsFramesResource,
101
+ )
97
102
  ]
98
103
 
99
104
 
@@ -18,6 +18,7 @@ from zou.app.services import (
18
18
 
19
19
  from zou.app.mixin import ArgsMixin
20
20
  from zou.app.utils import fields, query, permissions
21
+ from zou.app.services.exception import WrongParameterException
21
22
 
22
23
 
23
24
  class ShotResource(Resource, ArgsMixin):
@@ -1526,3 +1527,51 @@ class ProjectQuotasResource(Resource, ArgsMixin):
1526
1527
  return shots_service.get_raw_quotas(
1527
1528
  project_id, task_type_id, args["studio_id"]
1528
1529
  )
1530
+
1531
+
1532
+
1533
+ class SetShotsFramesResource(Resource, ArgsMixin):
1534
+ @jwt_required()
1535
+ def post(self, project_id, task_type_id):
1536
+ """
1537
+ Set frames for given shots.
1538
+ ---
1539
+ tags:
1540
+ - Shots
1541
+ parameters:
1542
+ - in: formData
1543
+ name: shots
1544
+ required: True
1545
+ type: array
1546
+ items:
1547
+ type: object
1548
+ properties:
1549
+ shot_id:
1550
+ type: string
1551
+ format: UUID
1552
+ x-example: a24a6ea4-ce75-4665-a070-57453082c25
1553
+ nb_frames:
1554
+ type: integer
1555
+ x-example: 24
1556
+ responses:
1557
+ 200:
1558
+ description: Frames set for given shots
1559
+ """
1560
+ user_service.check_manager_project_access(project_id)
1561
+ if not fields.is_valid_id(task_type_id) or \
1562
+ not fields.is_valid_id(project_id):
1563
+ raise WrongParameterException("Invalid project or task type id")
1564
+
1565
+ episode_id = self.get_episode_id()
1566
+ if not episode_id in ["", None] and \
1567
+ not fields.is_valid_id(episode_id):
1568
+ raise WrongParameterException("Invalid episode id")
1569
+
1570
+ if episode_id == "":
1571
+ episode_id = None
1572
+
1573
+ return shots_service.set_frames_from_task_type_preview_files(
1574
+ project_id,
1575
+ task_type_id,
1576
+ episode_id=episode_id,
1577
+ )
@@ -42,6 +42,7 @@ class AttachmentFile(db.Model, BaseMixin, SerializerMixin):
42
42
  def create_from_import(cls, data):
43
43
  data.pop("type", None)
44
44
  data.pop("comment", None)
45
+ data.pop("chat_message", None)
45
46
  previous_data = cls.get(data["id"])
46
47
  if previous_data is None:
47
48
  return cls.create(**data)
@@ -27,6 +27,8 @@ class EntityType(db.Model, BaseMixin, SerializerMixin):
27
27
  """
28
28
 
29
29
  name = db.Column(db.String(30), unique=True, nullable=False, index=True)
30
+ short_name = db.Column(db.String(20))
31
+ description = db.Column(db.Text())
30
32
  task_types = db.relationship(
31
33
  "TaskType", secondary=task_type_link, lazy="joined"
32
34
  )
@@ -15,6 +15,7 @@ class TaskStatus(db.Model, BaseMixin, SerializerMixin):
15
15
  short_name = db.Column(
16
16
  db.String(10), unique=True, nullable=False, index=True
17
17
  )
18
+ description = db.Column(db.Text())
18
19
  color = db.Column(db.String(7), nullable=False)
19
20
  priority = db.Column(db.Integer, default=1)
20
21
 
@@ -12,6 +12,7 @@ class TaskType(db.Model, BaseMixin, SerializerMixin):
12
12
 
13
13
  name = db.Column(db.String(40), nullable=False)
14
14
  short_name = db.Column(db.String(20))
15
+ description = db.Column(db.Text())
15
16
  color = db.Column(db.String(7), default="#FFFFFF")
16
17
  priority = db.Column(db.Integer, default=1)
17
18
  for_entity = db.Column(db.String(30), default="Asset")
@@ -163,7 +163,10 @@ def set_preview_file_as_ready(preview_file_id):
163
163
 
164
164
 
165
165
  def prepare_and_store_movie(
166
- preview_file_id, uploaded_movie_path, normalize=True
166
+ preview_file_id,
167
+ uploaded_movie_path,
168
+ normalize=True,
169
+ add_source_to_file_store=True,
167
170
  ):
168
171
  """
169
172
  Prepare movie preview, normalize the movie as a .mp4, build the thumbnails
@@ -196,13 +199,14 @@ def prepare_and_store_movie(
196
199
  if normalize:
197
200
  current_app.logger.info("start normalization")
198
201
  try:
202
+ if add_source_to_file_store:
203
+ file_store.add_movie(
204
+ "source", preview_file_id, uploaded_movie_path
205
+ )
199
206
  if (
200
207
  config.ENABLE_JOB_QUEUE_REMOTE
201
208
  and len(config.JOB_QUEUE_NOMAD_NORMALIZE_JOB) > 0
202
209
  ):
203
- file_store.add_movie(
204
- "source", preview_file_id, uploaded_movie_path
205
- )
206
210
  result = _run_remote_normalize_movie(
207
211
  current_app, preview_file_id, fps, width, height
208
212
  )
@@ -20,6 +20,7 @@ from zou.app.models.entity import (
20
20
  )
21
21
  from zou.app.models.person import Person
22
22
  from zou.app.models.project import Project
23
+ from zou.app.models.preview_file import PreviewFile
23
24
  from zou.app.models.schedule_item import ScheduleItem
24
25
  from zou.app.models.subscription import Subscription
25
26
  from zou.app.models.task import Task
@@ -1525,3 +1526,75 @@ def get_all_raw_shots():
1525
1526
  """
1526
1527
  query = Entity.query.filter(Entity.entity_type_id == get_shot_type()["id"])
1527
1528
  return query.all()
1529
+
1530
+
1531
+ def set_frames_from_task_type_preview_files(
1532
+ project_id,
1533
+ task_type_id,
1534
+ episode_id=None,
1535
+ ):
1536
+ from zou.app import db
1537
+
1538
+ shot_type = get_shot_type()
1539
+ Shot = aliased(Entity)
1540
+ Sequence = aliased(Entity)
1541
+
1542
+ if episode_id is not None:
1543
+ subquery = (
1544
+ db.session.query(
1545
+ Shot.id.label("entity_id"),
1546
+ func.max(PreviewFile.created_at).label("max_created_at")
1547
+ )
1548
+ .join(Task, PreviewFile.task_id == Task.id)
1549
+ .join(Shot, Task.entity_id == Shot.id)
1550
+ .join(Sequence, Sequence.id == Shot.parent_id)
1551
+ .filter(Shot.project_id == project_id)
1552
+ .filter(Shot.entity_type_id == shot_type["id"])
1553
+ .filter(Task.task_type_id == task_type_id)
1554
+ .filter(Sequence.parent_id == episode_id)
1555
+ .group_by(Shot.id)
1556
+ .subquery()
1557
+ )
1558
+ else:
1559
+ subquery = (
1560
+ db.session.query(
1561
+ Shot.id.label("entity_id"),
1562
+ func.max(PreviewFile.created_at).label("max_created_at")
1563
+ )
1564
+ .join(Task, PreviewFile.task_id == Task.id)
1565
+ .join(Shot, Task.entity_id == Shot.id)
1566
+ .filter(Shot.project_id == project_id)
1567
+ .filter(Shot.entity_type_id == shot_type["id"])
1568
+ .filter(Task.task_type_id == task_type_id)
1569
+ .group_by(Shot.id)
1570
+ .subquery()
1571
+ )
1572
+
1573
+ query = (
1574
+ db.session.query(
1575
+ Shot,
1576
+ PreviewFile.duration
1577
+ )
1578
+ .join(Task, Task.entity_id == Shot.id)
1579
+ .join(subquery, (Shot.id == subquery.c.entity_id))
1580
+ .join(PreviewFile,
1581
+ (PreviewFile.task_id == Task.id) &
1582
+ (PreviewFile.created_at == subquery.c.max_created_at))
1583
+ .filter(Task.task_type_id == task_type_id)
1584
+ .filter(Shot.project_id == project_id)
1585
+ )
1586
+
1587
+ results = query.all()
1588
+ project = projects_service.get_project(project_id)
1589
+ updates = []
1590
+ for (shot, preview_duration) in results:
1591
+ nb_frames = round(preview_duration * int(project["fps"]))
1592
+ updates.append({
1593
+ "id": shot.id,
1594
+ "nb_frames": nb_frames,
1595
+ })
1596
+ clear_shot_cache(str(shot.id))
1597
+
1598
+ db.session.bulk_update_mappings(Shot, updates)
1599
+ db.session.commit()
1600
+ return updates
@@ -172,15 +172,15 @@ project_events = [
172
172
  ]
173
173
 
174
174
  main_events = [
175
- "person",
176
- "organisation",
177
- "project-status",
178
- "department",
179
175
  "studio",
176
+ "department",
180
177
  "task-type",
181
178
  "task-status",
182
179
  "custom-action",
180
+ "organisation",
181
+ "project-status",
183
182
  "asset-type",
183
+ "person",
184
184
  "project",
185
185
  ]
186
186
 
@@ -408,35 +408,35 @@ def sync_entries(model_name, model, project=None):
408
408
  """
409
409
  instances = []
410
410
 
411
- if model_name in ["organisations", "persons"]:
412
- path = model_name + "?relations=true"
413
- if model_name == "persons":
414
- path += "&with_pass_hash=true"
415
- instances = gazu.client.fetch_all(path)
416
- model.create_from_import_list(instances)
417
- elif project:
411
+ page = 1
412
+ init = True
413
+ results = {"nb_pages": 2}
414
+ params = {
415
+ "relations": "true",
416
+ }
417
+ if model_name == "persons":
418
+ params["with_pass_hash"] = "true"
419
+ if project is not None and model_name in [
420
+ "projects",
421
+ "search-filters",
422
+ "search-filter-groups",
423
+ ]:
418
424
  project = gazu.project.get_project_by_name(project)
419
425
  if model_name == "projects":
420
- instances = [gazu.client.fetch_one(model_name, project.get("id"))]
426
+ params = {"id": project["id"]}
421
427
  elif model_name in ["search-filters", "search-filter-groups"]:
422
- instances = gazu.client.fetch_all(
423
- model_name, params=dict(project_id=project.get("id"))
424
- )
425
- else:
426
- instances = gazu.client.fetch_all(model_name)
427
- model.create_from_import_list(instances)
428
- else:
429
- page = 1
430
- init = True
431
- results = {"nb_pages": 2}
432
- while init or results["nb_pages"] >= page:
433
- results = gazu.client.fetch_all(
434
- "%s?relations=true&page=%d" % (model_name, page)
435
- )
436
- instances += results["data"]
437
- page += 1
438
- init = False
439
- model.create_from_import_list(results["data"])
428
+ params = {"project_id": project["id"]}
429
+ while init or results["nb_pages"] >= page:
430
+ params["page"] = page
431
+ results = gazu.client.fetch_all(model_name, params=params)
432
+ if model_name == "task-status" and results["data"]:
433
+ results["data"] = [
434
+ r for r in results["data"] if not r["for_concept"]
435
+ ]
436
+ instances += results["data"]
437
+ page += 1
438
+ init = False
439
+ model.create_from_import_list(results["data"])
440
440
 
441
441
  logger.info("%s %s synced." % (len(instances), model_name))
442
442
 
@@ -3,11 +3,13 @@
3
3
  import os
4
4
  import datetime
5
5
  import tempfile
6
+ import sys
7
+ import shutil
6
8
 
7
9
 
8
10
  from ldap3 import Server, Connection, ALL, NTLM, SIMPLE
9
11
  from zou.app.utils import thumbnail as thumbnail_utils, auth
10
- from zou.app.stores import auth_tokens_store, file_store
12
+ from zou.app.stores import auth_tokens_store, file_store, queue_store
11
13
  from zou.app.services import (
12
14
  assets_service,
13
15
  backup_service,
@@ -23,6 +25,8 @@ from zou.app.services import (
23
25
  tasks_service,
24
26
  )
25
27
  from zou.app.models.person import Person
28
+ from zou.app.models.preview_file import PreviewFile
29
+ from zou.app.models.task import Task
26
30
  from sqlalchemy.sql.expression import not_
27
31
 
28
32
  from zou.app.services.exception import (
@@ -717,3 +721,88 @@ def create_bot(
717
721
  is_bot=True,
718
722
  )
719
723
  print(bot["access_token"])
724
+
725
+
726
+ def renormalize_movie_preview_files(
727
+ preview_file_id=None, project_id=None, all_broken=None, all_processing=None
728
+ ):
729
+ with app.app_context():
730
+ if preview_file_id is None and not all_broken and not all_processing:
731
+ print("You must specify at least one option.")
732
+ sys.exit(1)
733
+ else:
734
+ query = PreviewFile.query.filter(
735
+ PreviewFile.extension == "mp4"
736
+ ).order_by(PreviewFile.created_at.asc())
737
+
738
+ if preview_file_id is not None:
739
+ query = query.filter(PreviewFile.id == preview_file_id)
740
+
741
+ if project_id is not None:
742
+ query = query.join(Task).filter(
743
+ PreviewFile.project_id == project_id
744
+ )
745
+
746
+ if all_broken and all_processing:
747
+ query = query.filter(
748
+ PreviewFile.status.in_(("broken", "processing"))
749
+ )
750
+ elif all_broken:
751
+ query = query.filter(PreviewFile.status == "broken")
752
+ elif all_processing:
753
+ query = query.filter(PreviewFile.status == "processing")
754
+
755
+ preview_files = query.all()
756
+ len_preview_files = len(preview_files)
757
+ if len_preview_files == 0:
758
+ print("No preview files found.")
759
+ sys.exit(1)
760
+ else:
761
+ for i, preview_file in enumerate(preview_files):
762
+ try:
763
+ preview_file_id = str(preview_file.id)
764
+ print(
765
+ f"Renormalizing preview file {preview_file_id} ({i+1}/{len_preview_files})."
766
+ )
767
+ extension = preview_file.extension
768
+ uploaded_movie_path = os.path.join(
769
+ config.TMP_DIR,
770
+ f"{preview_file_id}.{extension}.tmp",
771
+ )
772
+ if config.FS_BACKEND == "local":
773
+ shutil.copyfile(
774
+ file_store.get_local_movie_path(
775
+ "source", preview_file_id
776
+ ),
777
+ uploaded_movie_path,
778
+ )
779
+ else:
780
+ sync_service.download_file(
781
+ uploaded_movie_path,
782
+ "source",
783
+ file_store.open_movie,
784
+ str(preview_file_id),
785
+ )
786
+ if config.ENABLE_JOB_QUEUE:
787
+ queue_store.job_queue.enqueue(
788
+ preview_files_service.prepare_and_store_movie,
789
+ args=(
790
+ preview_file_id,
791
+ uploaded_movie_path,
792
+ True,
793
+ False,
794
+ ),
795
+ job_timeout=int(config.JOB_QUEUE_TIMEOUT),
796
+ )
797
+ else:
798
+ preview_files_service.prepare_and_store_movie(
799
+ preview_file_id,
800
+ uploaded_movie_path,
801
+ normalize=True,
802
+ add_source_to_file_store=False,
803
+ )
804
+ except Exception as e:
805
+ print(
806
+ f"Renormalization of preview file {preview_file_id} failed: {e}"
807
+ )
808
+ continue
@@ -456,13 +456,13 @@ def upload_files_to_cloud_storage(days):
456
456
 
457
457
 
458
458
  @cli.command()
459
- @click.option("--projectid")
460
- def clean_tasks_data(projectid):
459
+ @click.option("--project-id")
460
+ def clean_tasks_data(project_id):
461
461
  """
462
462
  Reset task models data (retake count, wip start date and end date)
463
463
  """
464
- if projectid is not None:
465
- commands.reset_tasks_data(projectid)
464
+ if project_id is not None:
465
+ commands.reset_tasks_data(project_id)
466
466
 
467
467
 
468
468
  @cli.command()
@@ -569,7 +569,7 @@ def reset_breakdown_data():
569
569
  @click.option("--email", required=True)
570
570
  @click.option("--name", required=True)
571
571
  @click.option(
572
- "--expiration_date",
572
+ "--expiration-date",
573
573
  required=False,
574
574
  default=None,
575
575
  show_default=True,
@@ -593,5 +593,39 @@ def create_bot(
593
593
  )
594
594
 
595
595
 
596
+ @cli.command()
597
+ @click.option(
598
+ "--preview-file-id",
599
+ required=False,
600
+ default=None,
601
+ show_default=True,
602
+ )
603
+ @click.option(
604
+ "--project-id",
605
+ required=False,
606
+ default=None,
607
+ show_default=True,
608
+ )
609
+ @click.option("--all-broken", is_flag=True, default=False, show_default=True)
610
+ @click.option(
611
+ "--all-processing", is_flag=True, default=False, show_default=True
612
+ )
613
+ def renormalize_movie_preview_files(
614
+ preview_file_id,
615
+ project_id,
616
+ all_broken,
617
+ all_processing,
618
+ ):
619
+ """
620
+ Renormalize all preview files.
621
+ """
622
+ commands.renormalize_movie_preview_files(
623
+ preview_file_id,
624
+ project_id,
625
+ all_broken,
626
+ all_processing,
627
+ )
628
+
629
+
596
630
  if __name__ == "__main__":
597
631
  cli()
@@ -0,0 +1,33 @@
1
+ """Add short_name for Asset Type entity_type
2
+
3
+ Revision ID: 971dbf5a0faf
4
+ Revises: a252a094e977
5
+ Create Date: 2024-06-20 19:51:15.758780
6
+
7
+ """
8
+
9
+ from alembic import op
10
+ import sqlalchemy as sa
11
+
12
+
13
+ # revision identifiers, used by Alembic.
14
+ revision = "971dbf5a0faf"
15
+ down_revision = "a252a094e977"
16
+ branch_labels = None
17
+ depends_on = None
18
+
19
+
20
+ def upgrade():
21
+ # ### commands auto generated by Alembic - please adjust! ###
22
+ op.add_column(
23
+ "entity_type",
24
+ sa.Column("short_name", sa.String(length=20), nullable=True),
25
+ )
26
+
27
+ # ### end Alembic commands ###
28
+
29
+
30
+ def downgrade():
31
+ # ### commands auto generated by Alembic - please adjust! ###
32
+ op.drop_column("entity_type", "short_name")
33
+ # ### end Alembic commands ###
@@ -0,0 +1,40 @@
1
+ """Add descriptions for entities tasks and statuses
2
+
3
+ Revision ID: a252a094e977
4
+ Revises: 1bb55759146f
5
+ Create Date: 2024-06-20 20:37:21.885953
6
+
7
+ """
8
+
9
+ from alembic import op
10
+ import sqlalchemy as sa
11
+
12
+
13
+ # revision identifiers, used by Alembic.
14
+ revision = "a252a094e977"
15
+ down_revision = "1bb55759146f"
16
+ branch_labels = None
17
+ depends_on = None
18
+
19
+
20
+ def upgrade():
21
+ # ### commands auto generated by Alembic - please adjust! ###
22
+ op.add_column(
23
+ "task_type", sa.Column("description", sa.Text(), nullable=True)
24
+ )
25
+ op.add_column(
26
+ "task_status", sa.Column("description", sa.Text(), nullable=True)
27
+ )
28
+ op.add_column(
29
+ "entity_type", sa.Column("description", sa.Text(), nullable=True)
30
+ )
31
+ # ### end Alembic commands ###
32
+
33
+
34
+ def downgrade():
35
+ # ### commands auto generated by Alembic - please adjust! ###
36
+ op.drop_column("task_type", "description")
37
+ op.drop_column("task_status", "description")
38
+ op.drop_column("entity_type", "description")
39
+
40
+ # ### end Alembic commands ###