zou 0.20.17__tar.gz → 0.20.19__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 (433) hide show
  1. {zou-0.20.17/zou.egg-info → zou-0.20.19}/PKG-INFO +7 -8
  2. {zou-0.20.17 → zou-0.20.19}/setup.cfg +6 -7
  3. zou-0.20.19/zou/__init__.py +1 -0
  4. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/tasks/resources.py +4 -0
  5. {zou-0.20.17 → zou-0.20.19}/zou/app/config.py +1 -1
  6. {zou-0.20.17 → zou-0.20.19}/zou/app/mixin.py +1 -1
  7. {zou-0.20.17 → zou-0.20.19}/zou/app/models/comment.py +10 -10
  8. {zou-0.20.17 → zou-0.20.19}/zou/app/models/project.py +26 -6
  9. {zou-0.20.17 → zou-0.20.19}/zou/app/services/assets_service.py +3 -0
  10. {zou-0.20.17 → zou-0.20.19}/zou/app/services/edits_service.py +3 -0
  11. {zou-0.20.17 → zou-0.20.19}/zou/app/services/entities_service.py +3 -0
  12. {zou-0.20.17 → zou-0.20.19}/zou/app/services/shots_service.py +3 -0
  13. {zou-0.20.17 → zou-0.20.19}/zou/app/services/tasks_service.py +22 -6
  14. zou-0.20.19/zou/migrations/versions/fba149993140_add_missing_index.py +132 -0
  15. {zou-0.20.17 → zou-0.20.19/zou.egg-info}/PKG-INFO +7 -8
  16. {zou-0.20.17 → zou-0.20.19}/zou.egg-info/SOURCES.txt +1 -0
  17. {zou-0.20.17 → zou-0.20.19}/zou.egg-info/requires.txt +6 -9
  18. zou-0.20.17/zou/__init__.py +0 -1
  19. {zou-0.20.17 → zou-0.20.19}/LICENSE +0 -0
  20. {zou-0.20.17 → zou-0.20.19}/README.rst +0 -0
  21. {zou-0.20.17 → zou-0.20.19}/pyproject.toml +0 -0
  22. {zou-0.20.17 → zou-0.20.19}/setup.py +0 -0
  23. {zou-0.20.17 → zou-0.20.19}/zou/app/__init__.py +0 -0
  24. {zou-0.20.17 → zou-0.20.19}/zou/app/api.py +0 -0
  25. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/__init__.py +0 -0
  26. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/assets/__init__.py +0 -0
  27. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/assets/resources.py +0 -0
  28. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/auth/__init__.py +0 -0
  29. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/auth/resources.py +0 -0
  30. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/breakdown/__init__.py +0 -0
  31. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/breakdown/resources.py +0 -0
  32. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/chats/__init__.py +0 -0
  33. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/chats/resources.py +0 -0
  34. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/comments/__init__.py +0 -0
  35. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/comments/resources.py +0 -0
  36. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/concepts/__init__.py +0 -0
  37. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/concepts/resources.py +0 -0
  38. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/__init__.py +0 -0
  39. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/asset_instance.py +0 -0
  40. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/attachment_file.py +0 -0
  41. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/base.py +0 -0
  42. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/chat.py +0 -0
  43. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/chat_message.py +0 -0
  44. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/comments.py +0 -0
  45. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/custom_action.py +0 -0
  46. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/day_off.py +0 -0
  47. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/department.py +0 -0
  48. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/entity.py +0 -0
  49. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/entity_link.py +0 -0
  50. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/entity_type.py +0 -0
  51. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/event.py +0 -0
  52. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/file_status.py +0 -0
  53. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/metadata_descriptor.py +0 -0
  54. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/milestone.py +0 -0
  55. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/news.py +0 -0
  56. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/notification.py +0 -0
  57. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/organisation.py +0 -0
  58. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/output_file.py +0 -0
  59. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/output_type.py +0 -0
  60. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/person.py +0 -0
  61. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/playlist.py +0 -0
  62. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/preview_background_file.py +0 -0
  63. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/preview_file.py +0 -0
  64. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/project.py +0 -0
  65. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/project_status.py +0 -0
  66. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/schedule_item.py +0 -0
  67. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/search_filter.py +0 -0
  68. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/search_filter_group.py +0 -0
  69. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/software.py +0 -0
  70. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/status_automation.py +0 -0
  71. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/studio.py +0 -0
  72. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/subscription.py +0 -0
  73. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/task.py +0 -0
  74. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/task_status.py +0 -0
  75. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/task_type.py +0 -0
  76. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/time_spent.py +0 -0
  77. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/crud/working_file.py +0 -0
  78. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/edits/__init__.py +0 -0
  79. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/edits/resources.py +0 -0
  80. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/entities/__init__.py +0 -0
  81. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/entities/resources.py +0 -0
  82. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/events/__init__.py +0 -0
  83. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/events/resources.py +0 -0
  84. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/export/__init__.py +0 -0
  85. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/export/csv/__init__.py +0 -0
  86. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/export/csv/assets.py +0 -0
  87. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/export/csv/base.py +0 -0
  88. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/export/csv/casting.py +0 -0
  89. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/export/csv/edits.py +0 -0
  90. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/export/csv/persons.py +0 -0
  91. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/export/csv/playlists.py +0 -0
  92. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/export/csv/projects.py +0 -0
  93. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/export/csv/shots.py +0 -0
  94. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/export/csv/task_types.py +0 -0
  95. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/export/csv/tasks.py +0 -0
  96. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/export/csv/time_spents.py +0 -0
  97. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/files/__init__.py +0 -0
  98. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/files/resources.py +0 -0
  99. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/index/__init__.py +0 -0
  100. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/index/resources.py +0 -0
  101. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/news/__init__.py +0 -0
  102. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/news/resources.py +0 -0
  103. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/persons/__init__.py +0 -0
  104. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/persons/resources.py +0 -0
  105. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/playlists/__init__.py +0 -0
  106. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/playlists/resources.py +0 -0
  107. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/previews/__init__.py +0 -0
  108. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/previews/resources.py +0 -0
  109. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/projects/__init__.py +0 -0
  110. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/projects/resources.py +0 -0
  111. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/search/__init__.py +0 -0
  112. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/search/resources.py +0 -0
  113. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/shots/__init__.py +0 -0
  114. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/shots/resources.py +0 -0
  115. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/source/__init__.py +0 -0
  116. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/source/csv/__init__.py +0 -0
  117. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/source/csv/assets.py +0 -0
  118. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/source/csv/base.py +0 -0
  119. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/source/csv/casting.py +0 -0
  120. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/source/csv/edits.py +0 -0
  121. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/source/csv/persons.py +0 -0
  122. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/source/csv/shots.py +0 -0
  123. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/source/csv/task_type_estimations.py +0 -0
  124. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/source/kitsu.py +0 -0
  125. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/source/otio.py +0 -0
  126. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/source/shotgun/__init__.py +0 -0
  127. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/source/shotgun/assets.py +0 -0
  128. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/source/shotgun/base.py +0 -0
  129. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/source/shotgun/episode.py +0 -0
  130. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/source/shotgun/exception.py +0 -0
  131. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/source/shotgun/import_errors.py +0 -0
  132. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/source/shotgun/notes.py +0 -0
  133. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/source/shotgun/person.py +0 -0
  134. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/source/shotgun/project.py +0 -0
  135. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/source/shotgun/scene.py +0 -0
  136. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/source/shotgun/sequence.py +0 -0
  137. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/source/shotgun/shot.py +0 -0
  138. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/source/shotgun/status.py +0 -0
  139. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/source/shotgun/steps.py +0 -0
  140. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/source/shotgun/tasks.py +0 -0
  141. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/source/shotgun/team.py +0 -0
  142. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/source/shotgun/versions.py +0 -0
  143. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/tasks/__init__.py +0 -0
  144. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/user/__init__.py +0 -0
  145. {zou-0.20.17 → zou-0.20.19}/zou/app/blueprints/user/resources.py +0 -0
  146. {zou-0.20.17 → zou-0.20.19}/zou/app/file_trees/default.json +0 -0
  147. {zou-0.20.17 → zou-0.20.19}/zou/app/file_trees/simple.json +0 -0
  148. {zou-0.20.17 → zou-0.20.19}/zou/app/indexer/__init__.py +0 -0
  149. {zou-0.20.17 → zou-0.20.19}/zou/app/indexer/indexing.py +0 -0
  150. {zou-0.20.17 → zou-0.20.19}/zou/app/models/__init__.py +0 -0
  151. {zou-0.20.17 → zou-0.20.19}/zou/app/models/asset_instance.py +0 -0
  152. {zou-0.20.17 → zou-0.20.19}/zou/app/models/attachment_file.py +0 -0
  153. {zou-0.20.17 → zou-0.20.19}/zou/app/models/base.py +0 -0
  154. {zou-0.20.17 → zou-0.20.19}/zou/app/models/build_job.py +0 -0
  155. {zou-0.20.17 → zou-0.20.19}/zou/app/models/chat.py +0 -0
  156. {zou-0.20.17 → zou-0.20.19}/zou/app/models/chat_message.py +0 -0
  157. {zou-0.20.17 → zou-0.20.19}/zou/app/models/custom_action.py +0 -0
  158. {zou-0.20.17 → zou-0.20.19}/zou/app/models/data_import_error.py +0 -0
  159. {zou-0.20.17 → zou-0.20.19}/zou/app/models/day_off.py +0 -0
  160. {zou-0.20.17 → zou-0.20.19}/zou/app/models/department.py +0 -0
  161. {zou-0.20.17 → zou-0.20.19}/zou/app/models/desktop_login_log.py +0 -0
  162. {zou-0.20.17 → zou-0.20.19}/zou/app/models/entity.py +0 -0
  163. {zou-0.20.17 → zou-0.20.19}/zou/app/models/entity_type.py +0 -0
  164. {zou-0.20.17 → zou-0.20.19}/zou/app/models/event.py +0 -0
  165. {zou-0.20.17 → zou-0.20.19}/zou/app/models/file_status.py +0 -0
  166. {zou-0.20.17 → zou-0.20.19}/zou/app/models/login_log.py +0 -0
  167. {zou-0.20.17 → zou-0.20.19}/zou/app/models/metadata_descriptor.py +0 -0
  168. {zou-0.20.17 → zou-0.20.19}/zou/app/models/milestone.py +0 -0
  169. {zou-0.20.17 → zou-0.20.19}/zou/app/models/news.py +0 -0
  170. {zou-0.20.17 → zou-0.20.19}/zou/app/models/notification.py +0 -0
  171. {zou-0.20.17 → zou-0.20.19}/zou/app/models/organisation.py +0 -0
  172. {zou-0.20.17 → zou-0.20.19}/zou/app/models/output_file.py +0 -0
  173. {zou-0.20.17 → zou-0.20.19}/zou/app/models/output_type.py +0 -0
  174. {zou-0.20.17 → zou-0.20.19}/zou/app/models/person.py +0 -0
  175. {zou-0.20.17 → zou-0.20.19}/zou/app/models/playlist.py +0 -0
  176. {zou-0.20.17 → zou-0.20.19}/zou/app/models/preview_background_file.py +0 -0
  177. {zou-0.20.17 → zou-0.20.19}/zou/app/models/preview_file.py +0 -0
  178. {zou-0.20.17 → zou-0.20.19}/zou/app/models/project_status.py +0 -0
  179. {zou-0.20.17 → zou-0.20.19}/zou/app/models/schedule_item.py +0 -0
  180. {zou-0.20.17 → zou-0.20.19}/zou/app/models/search_filter.py +0 -0
  181. {zou-0.20.17 → zou-0.20.19}/zou/app/models/search_filter_group.py +0 -0
  182. {zou-0.20.17 → zou-0.20.19}/zou/app/models/serializer.py +0 -0
  183. {zou-0.20.17 → zou-0.20.19}/zou/app/models/software.py +0 -0
  184. {zou-0.20.17 → zou-0.20.19}/zou/app/models/status_automation.py +0 -0
  185. {zou-0.20.17 → zou-0.20.19}/zou/app/models/studio.py +0 -0
  186. {zou-0.20.17 → zou-0.20.19}/zou/app/models/subscription.py +0 -0
  187. {zou-0.20.17 → zou-0.20.19}/zou/app/models/task.py +0 -0
  188. {zou-0.20.17 → zou-0.20.19}/zou/app/models/task_status.py +0 -0
  189. {zou-0.20.17 → zou-0.20.19}/zou/app/models/task_type.py +0 -0
  190. {zou-0.20.17 → zou-0.20.19}/zou/app/models/time_spent.py +0 -0
  191. {zou-0.20.17 → zou-0.20.19}/zou/app/models/working_file.py +0 -0
  192. {zou-0.20.17 → zou-0.20.19}/zou/app/services/__init__.py +0 -0
  193. {zou-0.20.17 → zou-0.20.19}/zou/app/services/auth_service.py +0 -0
  194. {zou-0.20.17 → zou-0.20.19}/zou/app/services/backup_service.py +0 -0
  195. {zou-0.20.17 → zou-0.20.19}/zou/app/services/base_service.py +0 -0
  196. {zou-0.20.17 → zou-0.20.19}/zou/app/services/breakdown_service.py +0 -0
  197. {zou-0.20.17 → zou-0.20.19}/zou/app/services/chats_service.py +0 -0
  198. {zou-0.20.17 → zou-0.20.19}/zou/app/services/comments_service.py +0 -0
  199. {zou-0.20.17 → zou-0.20.19}/zou/app/services/concepts_service.py +0 -0
  200. {zou-0.20.17 → zou-0.20.19}/zou/app/services/custom_actions_service.py +0 -0
  201. {zou-0.20.17 → zou-0.20.19}/zou/app/services/deletion_service.py +0 -0
  202. {zou-0.20.17 → zou-0.20.19}/zou/app/services/emails_service.py +0 -0
  203. {zou-0.20.17 → zou-0.20.19}/zou/app/services/events_service.py +0 -0
  204. {zou-0.20.17 → zou-0.20.19}/zou/app/services/exception.py +0 -0
  205. {zou-0.20.17 → zou-0.20.19}/zou/app/services/file_tree_service.py +0 -0
  206. {zou-0.20.17 → zou-0.20.19}/zou/app/services/files_service.py +0 -0
  207. {zou-0.20.17 → zou-0.20.19}/zou/app/services/index_service.py +0 -0
  208. {zou-0.20.17 → zou-0.20.19}/zou/app/services/names_service.py +0 -0
  209. {zou-0.20.17 → zou-0.20.19}/zou/app/services/news_service.py +0 -0
  210. {zou-0.20.17 → zou-0.20.19}/zou/app/services/notifications_service.py +0 -0
  211. {zou-0.20.17 → zou-0.20.19}/zou/app/services/persons_service.py +0 -0
  212. {zou-0.20.17 → zou-0.20.19}/zou/app/services/playlists_service.py +0 -0
  213. {zou-0.20.17 → zou-0.20.19}/zou/app/services/preview_files_service.py +0 -0
  214. {zou-0.20.17 → zou-0.20.19}/zou/app/services/projects_service.py +0 -0
  215. {zou-0.20.17 → zou-0.20.19}/zou/app/services/scenes_service.py +0 -0
  216. {zou-0.20.17 → zou-0.20.19}/zou/app/services/schedule_service.py +0 -0
  217. {zou-0.20.17 → zou-0.20.19}/zou/app/services/stats_service.py +0 -0
  218. {zou-0.20.17 → zou-0.20.19}/zou/app/services/status_automations_service.py +0 -0
  219. {zou-0.20.17 → zou-0.20.19}/zou/app/services/sync_service.py +0 -0
  220. {zou-0.20.17 → zou-0.20.19}/zou/app/services/telemetry_services.py +0 -0
  221. {zou-0.20.17 → zou-0.20.19}/zou/app/services/time_spents_service.py +0 -0
  222. {zou-0.20.17 → zou-0.20.19}/zou/app/services/user_service.py +0 -0
  223. {zou-0.20.17 → zou-0.20.19}/zou/app/stores/__init__.py +0 -0
  224. {zou-0.20.17 → zou-0.20.19}/zou/app/stores/auth_tokens_store.py +0 -0
  225. {zou-0.20.17 → zou-0.20.19}/zou/app/stores/file_store.py +0 -0
  226. {zou-0.20.17 → zou-0.20.19}/zou/app/stores/publisher_store.py +0 -0
  227. {zou-0.20.17 → zou-0.20.19}/zou/app/stores/queue_store.py +0 -0
  228. {zou-0.20.17 → zou-0.20.19}/zou/app/swagger.py +0 -0
  229. {zou-0.20.17 → zou-0.20.19}/zou/app/utils/__init__.py +0 -0
  230. {zou-0.20.17 → zou-0.20.19}/zou/app/utils/api.py +0 -0
  231. {zou-0.20.17 → zou-0.20.19}/zou/app/utils/auth.py +0 -0
  232. {zou-0.20.17 → zou-0.20.19}/zou/app/utils/cache.py +0 -0
  233. {zou-0.20.17 → zou-0.20.19}/zou/app/utils/chats.py +0 -0
  234. {zou-0.20.17 → zou-0.20.19}/zou/app/utils/colors.py +0 -0
  235. {zou-0.20.17 → zou-0.20.19}/zou/app/utils/commands.py +0 -0
  236. {zou-0.20.17 → zou-0.20.19}/zou/app/utils/csv_utils.py +0 -0
  237. {zou-0.20.17 → zou-0.20.19}/zou/app/utils/date_helpers.py +0 -0
  238. {zou-0.20.17 → zou-0.20.19}/zou/app/utils/dbhelpers.py +0 -0
  239. {zou-0.20.17 → zou-0.20.19}/zou/app/utils/emails.py +0 -0
  240. {zou-0.20.17 → zou-0.20.19}/zou/app/utils/env.py +0 -0
  241. {zou-0.20.17 → zou-0.20.19}/zou/app/utils/events.py +0 -0
  242. {zou-0.20.17 → zou-0.20.19}/zou/app/utils/fido.py +0 -0
  243. {zou-0.20.17 → zou-0.20.19}/zou/app/utils/fields.py +0 -0
  244. {zou-0.20.17 → zou-0.20.19}/zou/app/utils/flask.py +0 -0
  245. {zou-0.20.17 → zou-0.20.19}/zou/app/utils/fs.py +0 -0
  246. {zou-0.20.17 → zou-0.20.19}/zou/app/utils/git.py +0 -0
  247. {zou-0.20.17 → zou-0.20.19}/zou/app/utils/logs.py +0 -0
  248. {zou-0.20.17 → zou-0.20.19}/zou/app/utils/monitoring.py +0 -0
  249. {zou-0.20.17 → zou-0.20.19}/zou/app/utils/permissions.py +0 -0
  250. {zou-0.20.17 → zou-0.20.19}/zou/app/utils/query.py +0 -0
  251. {zou-0.20.17 → zou-0.20.19}/zou/app/utils/redis.py +0 -0
  252. {zou-0.20.17 → zou-0.20.19}/zou/app/utils/remote_job.py +0 -0
  253. {zou-0.20.17 → zou-0.20.19}/zou/app/utils/saml.py +0 -0
  254. {zou-0.20.17 → zou-0.20.19}/zou/app/utils/shell.py +0 -0
  255. {zou-0.20.17 → zou-0.20.19}/zou/app/utils/string.py +0 -0
  256. {zou-0.20.17 → zou-0.20.19}/zou/app/utils/thumbnail.py +0 -0
  257. {zou-0.20.17 → zou-0.20.19}/zou/cli.py +0 -0
  258. {zou-0.20.17 → zou-0.20.19}/zou/debug.py +0 -0
  259. {zou-0.20.17 → zou-0.20.19}/zou/event_stream.py +0 -0
  260. {zou-0.20.17 → zou-0.20.19}/zou/job_settings.py +0 -0
  261. {zou-0.20.17 → zou-0.20.19}/zou/migrations/README +0 -0
  262. {zou-0.20.17 → zou-0.20.19}/zou/migrations/__init__.py +0 -0
  263. {zou-0.20.17 → zou-0.20.19}/zou/migrations/alembic.ini +0 -0
  264. {zou-0.20.17 → zou-0.20.19}/zou/migrations/env.py +0 -0
  265. {zou-0.20.17 → zou-0.20.19}/zou/migrations/script.py.mako +0 -0
  266. {zou-0.20.17 → zou-0.20.19}/zou/migrations/utils/__init__.py +0 -0
  267. {zou-0.20.17 → zou-0.20.19}/zou/migrations/utils/base.py +0 -0
  268. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/003be8a91001_add_start_and_end_dates_to_projects.py +0 -0
  269. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/0596674df51d_add_department_mentions_to_comments.py +0 -0
  270. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/05ac7e8caa21_remove_unique_constraint_for_taskstatus_.py +0 -0
  271. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/05b7dc79a416_add_archived_fields_to_main_tables.py +0 -0
  272. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/0cf5e0e035fa_drop_column_tasktype_for_shots.py +0 -0
  273. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/0ec3762a745d_add_attachment_table.py +0 -0
  274. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/0ef6416a507b_.py +0 -0
  275. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/10cf267d95c9_fix_schedule_item.py +0 -0
  276. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/16328eae4b5f_add_new_constraint_for_timespent.py +0 -0
  277. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/16df47d76c64_add_some_indexes.py +0 -0
  278. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/17ef8f7be758_disallow_null_choicetype.py +0 -0
  279. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/1bb55759146f_add_table_studio.py +0 -0
  280. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/1cb44194db49_add_file_size_field_to_preview_file.py +0 -0
  281. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/1e150c2cea4d_add_nb_entities_out.py +0 -0
  282. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/1e2d77a2f0c4_add_hd_by_default_column.py +0 -0
  283. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/1fab8c420678_add_attachments_to_message_chats.py +0 -0
  284. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/20a8ad264659_tasktypeassettypelink_.py +0 -0
  285. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/20dfeb36142b_add_projecttaskstatuslink_roles_for_.py +0 -0
  286. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/23122f290ca2_add_entity_chat_models.py +0 -0
  287. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/269d41bfb73f_add_entity_entity_links.py +0 -0
  288. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/29df910f04a4_create_unique_constraint_project_id_.py +0 -0
  289. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/29fe01a6c9eb_add_status_automation_field.py +0 -0
  290. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/2adc020885fa_.py +0 -0
  291. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/2baede80b111_add_entity_status_field.py +0 -0
  292. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/306266361f4f_.py +0 -0
  293. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/328fd44c6347_add_entity_created_by.py +0 -0
  294. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/32f134ff1201_add_is_shared_flag_to_filters.py +0 -0
  295. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/346250b5304c_add_position_to_preview_files.py +0 -0
  296. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/3476e147e632_add_acks_to_comments.py +0 -0
  297. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/389cfb9de776_.py +0 -0
  298. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/38baa9a23b3d_.py +0 -0
  299. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/398150912a3f_validation_status_preview.py +0 -0
  300. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/3b0d1321079e_.py +0 -0
  301. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/3d5c93bafb9d_.py +0 -0
  302. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/3e0538ddf80f_.py +0 -0
  303. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/3fee3bd10f9d_.py +0 -0
  304. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/4095103c7d01_add_is_clients_isolated_flag_to_projects.py +0 -0
  305. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/40dea9555940_.py +0 -0
  306. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/42ec83db6a01_change_person_preferred_two_factor_.py +0 -0
  307. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/43d0cf0ed5e7_.py +0 -0
  308. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/443d1e78a932_.py +0 -0
  309. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/45c2de366e66_.py +0 -0
  310. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/45dafbb3f4e1_for_person_contract_type_disallow_null.py +0 -0
  311. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/4715c2586036_add_last_preview_file_fields.py +0 -0
  312. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/4e3738cdc34c_.py +0 -0
  313. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/4f2398ebcd49_.py +0 -0
  314. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/523ee9647bee_.py +0 -0
  315. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/539a3a00c417_for_departmentlink_index_person_id_.py +0 -0
  316. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/54ee0d1d60ba_add_build_job_model.py +0 -0
  317. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/556526e47daa_.py +0 -0
  318. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/57222395f2be_add_statusautomation_import_last_revision.py +0 -0
  319. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/5798d2c9020b_change_person_role_to_choicetype.py +0 -0
  320. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/590aa1ffe731_add_notifications_enabled_flag.py +0 -0
  321. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/59a7445a966c_add_entity_is_shared.py +0 -0
  322. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/5a291251823c_add_max_retake_parameter.py +0 -0
  323. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/5ab9d7a75887_.py +0 -0
  324. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/5b0fcbb94f24_.py +0 -0
  325. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/5b7fa3e51701_add_is_client_allowed_flag_to_task_.py +0 -0
  326. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/5b980f0dc365_add_comment_links.py +0 -0
  327. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/5b9fd9ddfe43_add_homepage_and_contract_fields.py +0 -0
  328. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/5c0498e264bc_add_slack_fields.py +0 -0
  329. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/5e2ce62632a6_add_workflow_to_project.py +0 -0
  330. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/680c64565f9d_for_searchfiltergroup_is_shared.py +0 -0
  331. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/693cc511d28d_add_taskstatus_priority.py +0 -0
  332. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/6aa446ee4072_add_is_for_all_flage_to_playlists.py +0 -0
  333. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/6bd3b102d61b_.py +0 -0
  334. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/6c597e842afa_add_task_type_field_to_playlists.py +0 -0
  335. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/6d1b2c60f58b_add_milestone_model.py +0 -0
  336. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/6d7fa5a8e9a5_add_timesheets_locked_field_to_org.py +0 -0
  337. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/6eeaff945706_add_data_field_on_entity_links.py +0 -0
  338. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/6f6049877105_.py +0 -0
  339. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/7417c8eb70d8_add_for_entity_field_to_playlists.py +0 -0
  340. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/772a5e43f05b_.py +0 -0
  341. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/7748d3d22925_add_columns_to_searchfilter_table_to_.py +0 -0
  342. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/77d6820f494f_add_reply_to_notif.py +0 -0
  343. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/7b1f765677d8_.py +0 -0
  344. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/7bc746997e8d_add_slack_token_field_to_organisation.py +0 -0
  345. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/7dc79d4ed7cd_.py +0 -0
  346. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/818f7bda2528_.py +0 -0
  347. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/82e7f7a95e84_add_project_id_to_events.py +0 -0
  348. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/82ee682204ab_add_is_generated_from_ldap_column_to_.py +0 -0
  349. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/8588f254d6b8_add_archived_fields.py +0 -0
  350. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/8739ae9fa28b_add_for_client_field.py +0 -0
  351. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/87efceb6745b_add_ready_for_to_entity.py +0 -0
  352. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/892b264937ec_.py +0 -0
  353. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/8a1b4a1b7f4a_add_totp_columns_for_person.py +0 -0
  354. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/8e4f39e321f4_add_day_off_table.py +0 -0
  355. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/8e67c183bed7_add_preference_fields.py +0 -0
  356. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/8fbd40afbe5f_allow_to_set_float_values_for_.py +0 -0
  357. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/9010a64e5a2d_add_indices.py +0 -0
  358. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/9060dd4f6116_notification_uc.py +0 -0
  359. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/925771029620_.py +0 -0
  360. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/92b40d79ad3f_allow_message_attachments.py +0 -0
  361. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/92bdfe07e5f5_discord_integration.py +0 -0
  362. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/956659992419_add_columns_for_person_to_store_fido_.py +0 -0
  363. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/96c79d31e648_add_mail_otp_columns_for_person.py +0 -0
  364. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/96f58a4a2a58_person_partial_index_for_email_only_.py +0 -0
  365. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/971dbf5a0faf_add_short_name_for_asset_type_entity_.py +0 -0
  366. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/98c90621cf58_add_for_client_flag_to_playlist.py +0 -0
  367. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/99825b9cc778_.py +0 -0
  368. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/9a09467f9b2c_.py +0 -0
  369. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/9b85c14fa8a7_add_day_off_new_columns.py +0 -0
  370. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/9bd17364fc18_.py +0 -0
  371. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/9d3bb33c6fc6_add_department_keys_to_filter_models.py +0 -0
  372. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/9e5b3a9b0cee_add_new_column_metadatadescriptor_data_type_.py +0 -0
  373. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/9f8445f9b42c_add_man_days_fields.py +0 -0
  374. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/a23682ccc1f1_.py +0 -0
  375. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/a252a094e977_add_descriptions_for_entities_tasks_and_.py +0 -0
  376. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/a519c710877c_.py +0 -0
  377. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/a65bdadbae2f_.py +0 -0
  378. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/a66508788c53_add_nb_assets_ready.py +0 -0
  379. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/a6c25eed3ea1_add_login_failed_attemps_and_last_login_.py +0 -0
  380. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/a7c43f3fbc76_add_duration_column_to_the_preview_file.py +0 -0
  381. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/aa0a60033106_feedback_request.py +0 -0
  382. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/addbbefa7028_add_departments_link_to_metadata_.py +0 -0
  383. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/ae0127f2fc56_add_previewfile_width_and_previewfile_.py +0 -0
  384. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/af1790868e2c_.py +0 -0
  385. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/b45cb782bb9c_.py +0 -0
  386. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/b4dd0add5f79_.py +0 -0
  387. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/b8c0a0f9d054_drop_task_status_is_reviewable.py +0 -0
  388. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/b8ed0fb263f8_add_person_jti_and_jti_expiration_date.py +0 -0
  389. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/b97a71306fc8_add_is_casting_standby_column_to_entity.py +0 -0
  390. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/be56dc0fb760_for_is_shared_disallow_nullable.py +0 -0
  391. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/bf1347acdee2_.py +0 -0
  392. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/c49e41f1298b_add_previewbackground.py +0 -0
  393. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/c68c2a62cfac_add_mimetype_column_to_attachment.py +0 -0
  394. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/c726b98be194_.py +0 -0
  395. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/c81f3e83bdb5_.py +0 -0
  396. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/ca28796a2a62_add_is_done_field_to_the_task_model.py +0 -0
  397. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/cf3d365de164_add_entity_version_model.py +0 -0
  398. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/cf6cec6d6bf5_add_status_field_to_preview_file.py +0 -0
  399. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/d80267806131_task_status_new_column_is_default.py +0 -0
  400. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/d8dcd5196d57_add_casting_label.py +0 -0
  401. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/de8a3de227ef_.py +0 -0
  402. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/deeacd38d373_for_projecttaskstatuslink_set_default_.py +0 -0
  403. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/df1834485f57_.py +0 -0
  404. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/df9f8a147e80_change_file_size_to_big_integer.py +0 -0
  405. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/e1ef93f40d3d_.py +0 -0
  406. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/e29638428dfd_add_schedule_item_table.py +0 -0
  407. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/e3f6db74cc1e_.py +0 -0
  408. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/e839d6603c09_add_person_id_to_shot_history.py +0 -0
  409. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/ee2373fbe3a4_.py +0 -0
  410. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/f0567e8d0c62_.py +0 -0
  411. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/f0c6cbb61869_add_production_style_field.py +0 -0
  412. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/f344b867a911_for_description_of_entity_task_working_.py +0 -0
  413. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/f4ff5a73d283_add_person_ldap_uid.py +0 -0
  414. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/f5b113876a49_add_preferred_two_factor_authentication_.py +0 -0
  415. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/f5bdca075cdc_add_preview_download_flag_to_projects.py +0 -0
  416. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/f874ad5e898a_add_link_entity_type_task_type.py +0 -0
  417. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/f995b28fb749_.py +0 -0
  418. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/fb6b6f188497_.py +0 -0
  419. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/fb87feaaa094_add_missing_unique_constraints.py +0 -0
  420. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/fc322f908695_.py +0 -0
  421. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/fee7c696166e_.py +0 -0
  422. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/feffd3c5b806_introduce_concepts.py +0 -0
  423. {zou-0.20.17 → zou-0.20.19}/zou/migrations/versions/ffeed4956ab1_add_more_details_to_projects.py +0 -0
  424. {zou-0.20.17 → zou-0.20.19}/zou/remote/__init__.py +0 -0
  425. {zou-0.20.17 → zou-0.20.19}/zou/remote/config_payload.py +0 -0
  426. {zou-0.20.17 → zou-0.20.19}/zou/remote/normalize_movie.py +0 -0
  427. {zou-0.20.17 → zou-0.20.19}/zou/remote/playlist.py +0 -0
  428. {zou-0.20.17 → zou-0.20.19}/zou/utils/__init__.py +0 -0
  429. {zou-0.20.17 → zou-0.20.19}/zou/utils/movie.py +0 -0
  430. {zou-0.20.17 → zou-0.20.19}/zou.egg-info/dependency_links.txt +0 -0
  431. {zou-0.20.17 → zou-0.20.19}/zou.egg-info/entry_points.txt +0 -0
  432. {zou-0.20.17 → zou-0.20.19}/zou.egg-info/not-zip-safe +0 -0
  433. {zou-0.20.17 → zou-0.20.19}/zou.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: zou
3
- Version: 0.20.17
3
+ Version: 0.20.19
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
@@ -21,16 +21,15 @@ Classifier: Programming Language :: Python :: Implementation :: PyPy
21
21
  Classifier: Topic :: Multimedia :: Graphics
22
22
  Requires-Python: >=3.9, <3.14
23
23
  License-File: LICENSE
24
- Requires-Dist: audioop-lts==0.2.1; python_version >= "3.13"
25
24
  Requires-Dist: babel==2.17.0
26
25
  Requires-Dist: click==8.1.8
27
- Requires-Dist: discord.py==2.4.0
26
+ Requires-Dist: discord.py==2.5.0
28
27
  Requires-Dist: email-validator==2.2.0
29
28
  Requires-Dist: ffmpeg-python==0.2.0
30
29
  Requires-Dist: fido2==1.2.0
31
30
  Requires-Dist: flasgger==0.9.7.1
32
31
  Requires-Dist: flask_bcrypt==1.0.1
33
- Requires-Dist: flask_caching==2.3.0
32
+ Requires-Dist: flask_caching==2.3.1
34
33
  Requires-Dist: flask_fixtures==0.3.8
35
34
  Requires-Dist: flask_mail==0.10.0
36
35
  Requires-Dist: flask_principal==0.4.0
@@ -41,7 +40,7 @@ Requires-Dist: flask-jwt-extended==4.7.1
41
40
  Requires-Dist: flask-migrate==4.1.0
42
41
  Requires-Dist: flask-socketio==5.5.1
43
42
  Requires-Dist: flask==3.1.0
44
- Requires-Dist: gazu==0.10.27
43
+ Requires-Dist: gazu==0.10.29
45
44
  Requires-Dist: gevent-websocket==0.10.1
46
45
  Requires-Dist: gevent==24.11.1
47
46
  Requires-Dist: gunicorn==23.0.0
@@ -50,7 +49,7 @@ Requires-Dist: itsdangerous==2.2.0
50
49
  Requires-Dist: Jinja2==3.1.5
51
50
  Requires-Dist: ldap3==2.9.1
52
51
  Requires-Dist: matterhook==0.2
53
- Requires-Dist: meilisearch==0.33.1
52
+ Requires-Dist: meilisearch==0.34.0
54
53
  Requires-Dist: numpy==2.0.1; python_version == "3.9"
55
54
  Requires-Dist: numpy==2.2.3; python_version >= "3.10"
56
55
  Requires-Dist: opencv-python==4.11.0.86
@@ -59,7 +58,7 @@ Requires-Dist: OpenTimelineIO-Plugins==0.17.0
59
58
  Requires-Dist: orjson==3.10.15
60
59
  Requires-Dist: pillow==11.1.0
61
60
  Requires-Dist: psutil==7.0.0
62
- Requires-Dist: psycopg[binary]==3.2.4
61
+ Requires-Dist: psycopg[binary]==3.2.5
63
62
  Requires-Dist: pyotp==2.9.0
64
63
  Requires-Dist: pysaml2==7.5.2
65
64
  Requires-Dist: python-nomad==2.1.0
@@ -87,7 +86,7 @@ Requires-Dist: pytest==8.3.4; extra == "test"
87
86
  Provides-Extra: monitoring
88
87
  Requires-Dist: prometheus-flask-exporter==0.23.1; extra == "monitoring"
89
88
  Requires-Dist: pygelf==0.4.2; extra == "monitoring"
90
- Requires-Dist: sentry-sdk==2.21.0; extra == "monitoring"
89
+ Requires-Dist: sentry-sdk==2.22.0; extra == "monitoring"
91
90
  Provides-Extra: lint
92
91
  Requires-Dist: autoflake==2.3.1; extra == "lint"
93
92
  Requires-Dist: black==25.1.0; extra == "lint"
@@ -27,16 +27,15 @@ classifiers =
27
27
  zip_safe = False
28
28
  packages = find:
29
29
  install_requires =
30
- audioop-lts==0.2.1; python_version>='3.13'
31
30
  babel==2.17.0
32
31
  click==8.1.8
33
- discord.py==2.4.0
32
+ discord.py==2.5.0
34
33
  email-validator==2.2.0
35
34
  ffmpeg-python==0.2.0
36
35
  fido2==1.2.0
37
36
  flasgger==0.9.7.1
38
37
  flask_bcrypt==1.0.1
39
- flask_caching==2.3.0
38
+ flask_caching==2.3.1
40
39
  flask_fixtures==0.3.8
41
40
  flask_mail==0.10.0
42
41
  flask_principal==0.4.0
@@ -47,7 +46,7 @@ install_requires =
47
46
  flask-migrate==4.1.0
48
47
  flask-socketio==5.5.1
49
48
  flask==3.1.0
50
- gazu==0.10.27
49
+ gazu==0.10.29
51
50
  gevent-websocket==0.10.1
52
51
  gevent==24.11.1
53
52
  gunicorn==23.0.0
@@ -56,7 +55,7 @@ install_requires =
56
55
  Jinja2==3.1.5
57
56
  ldap3==2.9.1
58
57
  matterhook==0.2
59
- meilisearch==0.33.1
58
+ meilisearch==0.34.0
60
59
  numpy==2.0.1; python_version == '3.9'
61
60
  numpy==2.2.3; python_version >= '3.10'
62
61
  opencv-python==4.11.0.86
@@ -65,7 +64,7 @@ install_requires =
65
64
  orjson==3.10.15
66
65
  pillow==11.1.0
67
66
  psutil==7.0.0
68
- psycopg[binary]==3.2.4
67
+ psycopg[binary]==3.2.5
69
68
  pyotp==2.9.0
70
69
  pysaml2==7.5.2
71
70
  python-nomad==2.1.0
@@ -101,7 +100,7 @@ test =
101
100
  monitoring =
102
101
  prometheus-flask-exporter==0.23.1
103
102
  pygelf==0.4.2
104
- sentry-sdk==2.21.0
103
+ sentry-sdk==2.22.0
105
104
  lint =
106
105
  autoflake==2.3.1
107
106
  black==25.1.0
@@ -0,0 +1 @@
1
+ __version__ = "0.20.19"
@@ -1734,6 +1734,8 @@ class OpenTasksResource(Resource, ArgsMixin):
1734
1734
  ("project_id", None, False, str),
1735
1735
  ("person_id", None, False, str),
1736
1736
  ("task_status_id", None, False, str),
1737
+ ("studio_id", None, False, str),
1738
+ ("department_id", None, False, str),
1737
1739
  ("start_date", None, False, str),
1738
1740
  ("due_date", None, False, str),
1739
1741
  ("priority", None, False, str),
@@ -1747,6 +1749,8 @@ class OpenTasksResource(Resource, ArgsMixin):
1747
1749
  project_id=args["project_id"],
1748
1750
  person_id=args["person_id"],
1749
1751
  task_status_id=args["task_status_id"],
1752
+ studio_id=args["studio_id"],
1753
+ department_id=args["department_id"],
1750
1754
  start_date=args["start_date"],
1751
1755
  due_date=args["due_date"],
1752
1756
  priority=args["priority"],
@@ -142,7 +142,7 @@ LOGS_MODE = os.getenv("LOGS_MODE", "default")
142
142
  LOGS_HOST = os.getenv("LOGS_HOST", "localhost")
143
143
  LOGS_PORT = os.getenv("LOGS_PORT", 2202)
144
144
  LOGS_TOKEN = os.getenv("LOGS_TOKEN")
145
- LOG_FILE_NOT_FOUND = envtobool("LOG_FILE_NOT_FOUND", True)
145
+ LOG_FILE_NOT_FOUND = envtobool("LOG_FILE_NOT_FOUND", False)
146
146
 
147
147
  SENTRY_ENABLED = envtobool("SENTRY_ENABLED", False)
148
148
  SENTRY_DSN = os.getenv("SENTRY_DSN", "")
@@ -78,7 +78,7 @@ class ArgsMixin(object):
78
78
  Returns limit requested by the user as an integer.
79
79
  """
80
80
  options = request.args
81
- return int(options.get("limit", "-1"))
81
+ return int(options.get("limit", 0))
82
82
 
83
83
  def get_sort_by(self):
84
84
  """
@@ -6,21 +6,19 @@ from zou.app.models.serializer import SerializerMixin
6
6
  from zou.app.models.base import BaseMixin
7
7
 
8
8
 
9
- preview_link_table = db.Table(
10
- "comment_preview_link",
11
- db.Column(
12
- "comment",
9
+ class CommentPreviewLink(db.Model):
10
+ comment = db.Column(
13
11
  UUIDType(binary=False),
14
12
  db.ForeignKey("comment.id"),
15
13
  primary_key=True,
16
- ),
17
- db.Column(
18
- "preview_file",
14
+ index=True,
15
+ )
16
+ preview_file = db.Column(
19
17
  UUIDType(binary=False),
20
18
  db.ForeignKey("preview_file.id"),
21
19
  primary_key=True,
22
- ),
23
- )
20
+ index=True,
21
+ )
24
22
 
25
23
 
26
24
  mentions_table = db.Table(
@@ -107,7 +105,9 @@ class Comment(db.Model, BaseMixin, SerializerMixin):
107
105
  UUIDType(binary=False), db.ForeignKey("preview_file.id")
108
106
  )
109
107
  previews = db.relationship(
110
- "PreviewFile", secondary=preview_link_table, backref="comments"
108
+ "PreviewFile",
109
+ secondary=CommentPreviewLink.__table__,
110
+ backref="comments",
111
111
  )
112
112
  mentions = db.relationship("Person", secondary=mentions_table)
113
113
  department_mentions = db.relationship(
@@ -29,10 +29,16 @@ PROJECT_STYLES = [
29
29
  class ProjectPersonLink(db.Model):
30
30
  __tablename__ = "project_person_link"
31
31
  project_id = db.Column(
32
- UUIDType(binary=False), db.ForeignKey("project.id"), primary_key=True
32
+ UUIDType(binary=False),
33
+ db.ForeignKey("project.id"),
34
+ primary_key=True,
35
+ index=True,
33
36
  )
34
37
  person_id = db.Column(
35
- UUIDType(binary=False), db.ForeignKey("person.id"), primary_key=True
38
+ UUIDType(binary=False),
39
+ db.ForeignKey("person.id"),
40
+ primary_key=True,
41
+ index=True,
36
42
  )
37
43
  shotgun_id = db.Column(db.Integer)
38
44
 
@@ -40,10 +46,16 @@ class ProjectPersonLink(db.Model):
40
46
  class ProjectTaskTypeLink(db.Model, BaseMixin, SerializerMixin):
41
47
  __tablename__ = "project_task_type_link"
42
48
  project_id = db.Column(
43
- UUIDType(binary=False), db.ForeignKey("project.id"), primary_key=True
49
+ UUIDType(binary=False),
50
+ db.ForeignKey("project.id"),
51
+ primary_key=True,
52
+ index=True,
44
53
  )
45
54
  task_type_id = db.Column(
46
- UUIDType(binary=False), db.ForeignKey("task_type.id"), primary_key=True
55
+ UUIDType(binary=False),
56
+ db.ForeignKey("task_type.id"),
57
+ primary_key=True,
58
+ index=True,
47
59
  )
48
60
  priority = db.Column(db.Integer, default=None)
49
61
 
@@ -57,12 +69,16 @@ class ProjectTaskTypeLink(db.Model, BaseMixin, SerializerMixin):
57
69
  class ProjectTaskStatusLink(db.Model, BaseMixin, SerializerMixin):
58
70
  __tablename__ = "project_task_status_link"
59
71
  project_id = db.Column(
60
- UUIDType(binary=False), db.ForeignKey("project.id"), primary_key=True
72
+ UUIDType(binary=False),
73
+ db.ForeignKey("project.id"),
74
+ primary_key=True,
75
+ index=True,
61
76
  )
62
77
  task_status_id = db.Column(
63
78
  UUIDType(binary=False),
64
79
  db.ForeignKey("task_status.id"),
65
80
  primary_key=True,
81
+ index=True,
66
82
  )
67
83
  priority = db.Column(db.Integer, default=None)
68
84
  roles_for_board = db.Column(
@@ -92,12 +108,16 @@ class ProjectAssetTypeLink(db.Model):
92
108
  class ProjectStatusAutomationLink(db.Model):
93
109
  __tablename__ = "project_status_automation_link"
94
110
  project_id = db.Column(
95
- UUIDType(binary=False), db.ForeignKey("project.id"), primary_key=True
111
+ UUIDType(binary=False),
112
+ db.ForeignKey("project.id"),
113
+ primary_key=True,
114
+ index=True,
96
115
  )
97
116
  status_automation_id = db.Column(
98
117
  UUIDType(binary=False),
99
118
  db.ForeignKey("status_automation.id"),
100
119
  primary_key=True,
120
+ index=True,
101
121
  )
102
122
 
103
123
 
@@ -202,6 +202,7 @@ def get_assets_and_tasks(criterions={}, with_episode_ids=False):
202
202
  Task.due_date,
203
203
  Task.done_date,
204
204
  Task.last_comment_date,
205
+ Task.last_preview_file_id,
205
206
  Task.difficulty,
206
207
  assignees_table.columns.person,
207
208
  ).order_by(EntityType.name, Entity.name)
@@ -294,6 +295,7 @@ def get_assets_and_tasks(criterions={}, with_episode_ids=False):
294
295
  task_due_date,
295
296
  task_done_date,
296
297
  task_last_comment_date,
298
+ task_last_preview_file_id,
297
299
  task_difficulty,
298
300
  person_id,
299
301
  ) in query_result:
@@ -346,6 +348,7 @@ def get_assets_and_tasks(criterions={}, with_episode_ids=False):
346
348
  "last_comment_date": fields.serialize_value(
347
349
  task_last_comment_date
348
350
  ),
351
+ "last_preview_file_id": str(task_last_preview_file_id or ""),
349
352
  "priority": task_priority or 0,
350
353
  "real_start_date": fields.serialize_value(
351
354
  task_real_start_date
@@ -106,6 +106,7 @@ def get_edits_and_tasks(criterions={}):
106
106
  Task.start_date,
107
107
  Task.due_date,
108
108
  Task.last_comment_date,
109
+ Task.last_preview_file_id,
109
110
  Task.nb_assets_ready,
110
111
  assignees_table.columns.person,
111
112
  Project.id,
@@ -153,6 +154,7 @@ def get_edits_and_tasks(criterions={}):
153
154
  task_start_date,
154
155
  task_due_date,
155
156
  task_last_comment_date,
157
+ task_last_preview_file_id,
156
158
  task_nb_assets_ready,
157
159
  person_id,
158
160
  project_id,
@@ -203,6 +205,7 @@ def get_edits_and_tasks(criterions={}):
203
205
  "end_date": task_end_date,
204
206
  "estimation": task_estimation,
205
207
  "last_comment_date": task_last_comment_date,
208
+ "last_preview_file_id": task_last_preview_file_id,
206
209
  "is_subscribed": subscription_map.get(task_id, False),
207
210
  "nb_assets_ready": task_nb_assets_ready,
208
211
  "priority": task_priority or 0,
@@ -251,6 +251,7 @@ def get_entities_and_tasks(criterions={}):
251
251
  Task.due_date,
252
252
  Task.done_date,
253
253
  Task.last_comment_date,
254
+ Task.last_preview_file_id,
254
255
  Task.difficulty,
255
256
  assignees_table.columns.person,
256
257
  )
@@ -282,6 +283,7 @@ def get_entities_and_tasks(criterions={}):
282
283
  task_due_date,
283
284
  task_done_date,
284
285
  task_last_comment_date,
286
+ task_last_preview_file_id,
285
287
  task_difficulty,
286
288
  person_id,
287
289
  ) in query.all():
@@ -322,6 +324,7 @@ def get_entities_and_tasks(criterions={}):
322
324
  "duration": task_duration,
323
325
  "is_subscribed": subscription_map.get(task_id, False),
324
326
  "last_comment_date": task_last_comment_date,
327
+ "last_preview_file_id": task_last_preview_file_id,
325
328
  "priority": task_priority or 0,
326
329
  "real_start_date": task_real_start_date,
327
330
  "retake_count": task_retake_count,
@@ -253,6 +253,7 @@ def get_shots_and_tasks(criterions={}):
253
253
  Task.due_date,
254
254
  Task.done_date,
255
255
  Task.last_comment_date,
256
+ Task.last_preview_file_id,
256
257
  Task.nb_assets_ready,
257
258
  Task.difficulty,
258
259
  assignees_table.columns.person,
@@ -304,6 +305,7 @@ def get_shots_and_tasks(criterions={}):
304
305
  task_due_date,
305
306
  task_done_date,
306
307
  task_last_comment_date,
308
+ task_last_preview_file_id,
307
309
  task_nb_assets_ready,
308
310
  task_difficulty,
309
311
  person_id,
@@ -364,6 +366,7 @@ def get_shots_and_tasks(criterions={}):
364
366
  "estimation": task_estimation,
365
367
  "is_subscribed": subscription_map.get(task_id, False),
366
368
  "last_comment_date": task_last_comment_date,
369
+ "last_preview_file_id": task_last_preview_file_id,
367
370
  "nb_assets_ready": task_nb_assets_ready,
368
371
  "priority": task_priority or 0,
369
372
  "real_start_date": task_real_start_date,
@@ -15,7 +15,7 @@ from zou.app.models.comment import (
15
15
  acknowledgements_table,
16
16
  mentions_table,
17
17
  department_mentions_table,
18
- preview_link_table,
18
+ CommentPreviewLink,
19
19
  )
20
20
  from zou.app.models.department import Department
21
21
  from zou.app.models.entity import Entity, EntityLink
@@ -686,9 +686,9 @@ def _build_department_mention_map_for_comments(comment_ids):
686
686
  def _build_preview_map_for_comments(comment_ids, is_client=False):
687
687
  preview_map = {}
688
688
  query = (
689
- PreviewFile.query.join(preview_link_table)
690
- .filter(preview_link_table.c.comment.in_(comment_ids))
691
- .add_columns(preview_link_table.c.comment)
689
+ PreviewFile.query.join(CommentPreviewLink)
690
+ .filter(CommentPreviewLink.comment.in_(comment_ids))
691
+ .add_columns(CommentPreviewLink.comment)
692
692
  )
693
693
  for preview, comment_id in query.all():
694
694
  comment_id = str(comment_id)
@@ -1858,6 +1858,8 @@ def get_open_tasks(
1858
1858
  task_status_id=None,
1859
1859
  project_id=None,
1860
1860
  person_id=None,
1861
+ studio_id=None,
1862
+ department_id=None,
1861
1863
  start_date=None,
1862
1864
  due_date=None,
1863
1865
  priority=None,
@@ -1958,8 +1960,22 @@ def get_open_tasks(
1958
1960
  query = query.filter(Task.assignees == None)
1959
1961
  query_stats = query_stats.filter(Task.assignees == None)
1960
1962
  else:
1961
- query = query.filter(Task.assignees.any(id=person_id))
1962
- query_stats = query_stats.filter(Task.assignees.any(id=person_id))
1963
+ query = query.filter(Task.assignees.any(
1964
+ Person.id.in_(person_id.split(","))
1965
+ ))
1966
+ query_stats = query_stats.filter(Task.assignees.any(
1967
+ Person.id.in_(person_id.split(","))
1968
+ ))
1969
+
1970
+ if studio_id is not None:
1971
+ query = query.filter(Task.assignees.any(studio_id=studio_id))
1972
+ query_stats = query_stats.filter(Task.assignees.any(studio_id=studio_id))
1973
+
1974
+ if department_id is not None:
1975
+ query = query.filter(
1976
+ Task.assignees.any(Person.departments.any(id=department_id)))
1977
+ query_stats = query_stats.filter(
1978
+ Task.assignees.any(Person.departments.any(id=department_id)))
1963
1979
 
1964
1980
  if start_date is not None:
1965
1981
  start_date = func.cast(start_date, Task.start_date.type)
@@ -0,0 +1,132 @@
1
+ """Add missing index
2
+
3
+ Revision ID: fba149993140
4
+ Revises: 20a8ad264659
5
+ Create Date: 2025-02-19 02:19:27.407568
6
+
7
+ """
8
+
9
+ from alembic import op
10
+
11
+
12
+ # revision identifiers, used by Alembic.
13
+ revision = "fba149993140"
14
+ down_revision = "20a8ad264659"
15
+ branch_labels = None
16
+ depends_on = None
17
+
18
+
19
+ def upgrade():
20
+ # ### commands auto generated by Alembic - please adjust! ###
21
+ with op.batch_alter_table("comment_preview_link", schema=None) as batch_op:
22
+ batch_op.create_index(
23
+ batch_op.f("ix_comment_preview_link_comment"),
24
+ ["comment"],
25
+ unique=False,
26
+ )
27
+ batch_op.create_index(
28
+ batch_op.f("ix_comment_preview_link_preview_file"),
29
+ ["preview_file"],
30
+ unique=False,
31
+ )
32
+
33
+ with op.batch_alter_table("project_person_link", schema=None) as batch_op:
34
+ batch_op.create_index(
35
+ batch_op.f("ix_project_person_link_person_id"),
36
+ ["person_id"],
37
+ unique=False,
38
+ )
39
+ batch_op.create_index(
40
+ batch_op.f("ix_project_person_link_project_id"),
41
+ ["project_id"],
42
+ unique=False,
43
+ )
44
+
45
+ with op.batch_alter_table(
46
+ "project_status_automation_link", schema=None
47
+ ) as batch_op:
48
+ batch_op.create_index(
49
+ batch_op.f("ix_project_status_automation_link_project_id"),
50
+ ["project_id"],
51
+ unique=False,
52
+ )
53
+ batch_op.create_index(
54
+ batch_op.f(
55
+ "ix_project_status_automation_link_status_automation_id"
56
+ ),
57
+ ["status_automation_id"],
58
+ unique=False,
59
+ )
60
+
61
+ with op.batch_alter_table(
62
+ "project_task_status_link", schema=None
63
+ ) as batch_op:
64
+ batch_op.create_index(
65
+ batch_op.f("ix_project_task_status_link_project_id"),
66
+ ["project_id"],
67
+ unique=False,
68
+ )
69
+ batch_op.create_index(
70
+ batch_op.f("ix_project_task_status_link_task_status_id"),
71
+ ["task_status_id"],
72
+ unique=False,
73
+ )
74
+
75
+ with op.batch_alter_table(
76
+ "project_task_type_link", schema=None
77
+ ) as batch_op:
78
+ batch_op.create_index(
79
+ batch_op.f("ix_project_task_type_link_project_id"),
80
+ ["project_id"],
81
+ unique=False,
82
+ )
83
+ batch_op.create_index(
84
+ batch_op.f("ix_project_task_type_link_task_type_id"),
85
+ ["task_type_id"],
86
+ unique=False,
87
+ )
88
+
89
+ # ### end Alembic commands ###
90
+
91
+
92
+ def downgrade():
93
+ # ### commands auto generated by Alembic - please adjust! ###
94
+ with op.batch_alter_table(
95
+ "project_task_type_link", schema=None
96
+ ) as batch_op:
97
+ batch_op.drop_index(
98
+ batch_op.f("ix_project_task_type_link_task_type_id")
99
+ )
100
+ batch_op.drop_index(batch_op.f("ix_project_task_type_link_project_id"))
101
+
102
+ with op.batch_alter_table(
103
+ "project_task_status_link", schema=None
104
+ ) as batch_op:
105
+ batch_op.drop_index(
106
+ batch_op.f("ix_project_task_status_link_task_status_id")
107
+ )
108
+ batch_op.drop_index(
109
+ batch_op.f("ix_project_task_status_link_project_id")
110
+ )
111
+
112
+ with op.batch_alter_table(
113
+ "project_status_automation_link", schema=None
114
+ ) as batch_op:
115
+ batch_op.drop_index(
116
+ batch_op.f(
117
+ "ix_project_status_automation_link_status_automation_id"
118
+ )
119
+ )
120
+ batch_op.drop_index(
121
+ batch_op.f("ix_project_status_automation_link_project_id")
122
+ )
123
+
124
+ with op.batch_alter_table("project_person_link", schema=None) as batch_op:
125
+ batch_op.drop_index(batch_op.f("ix_project_person_link_project_id"))
126
+ batch_op.drop_index(batch_op.f("ix_project_person_link_person_id"))
127
+
128
+ with op.batch_alter_table("comment_preview_link", schema=None) as batch_op:
129
+ batch_op.drop_index(batch_op.f("ix_comment_preview_link_preview_file"))
130
+ batch_op.drop_index(batch_op.f("ix_comment_preview_link_comment"))
131
+
132
+ # ### end Alembic commands ###
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: zou
3
- Version: 0.20.17
3
+ Version: 0.20.19
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
@@ -21,16 +21,15 @@ Classifier: Programming Language :: Python :: Implementation :: PyPy
21
21
  Classifier: Topic :: Multimedia :: Graphics
22
22
  Requires-Python: >=3.9, <3.14
23
23
  License-File: LICENSE
24
- Requires-Dist: audioop-lts==0.2.1; python_version >= "3.13"
25
24
  Requires-Dist: babel==2.17.0
26
25
  Requires-Dist: click==8.1.8
27
- Requires-Dist: discord.py==2.4.0
26
+ Requires-Dist: discord.py==2.5.0
28
27
  Requires-Dist: email-validator==2.2.0
29
28
  Requires-Dist: ffmpeg-python==0.2.0
30
29
  Requires-Dist: fido2==1.2.0
31
30
  Requires-Dist: flasgger==0.9.7.1
32
31
  Requires-Dist: flask_bcrypt==1.0.1
33
- Requires-Dist: flask_caching==2.3.0
32
+ Requires-Dist: flask_caching==2.3.1
34
33
  Requires-Dist: flask_fixtures==0.3.8
35
34
  Requires-Dist: flask_mail==0.10.0
36
35
  Requires-Dist: flask_principal==0.4.0
@@ -41,7 +40,7 @@ Requires-Dist: flask-jwt-extended==4.7.1
41
40
  Requires-Dist: flask-migrate==4.1.0
42
41
  Requires-Dist: flask-socketio==5.5.1
43
42
  Requires-Dist: flask==3.1.0
44
- Requires-Dist: gazu==0.10.27
43
+ Requires-Dist: gazu==0.10.29
45
44
  Requires-Dist: gevent-websocket==0.10.1
46
45
  Requires-Dist: gevent==24.11.1
47
46
  Requires-Dist: gunicorn==23.0.0
@@ -50,7 +49,7 @@ Requires-Dist: itsdangerous==2.2.0
50
49
  Requires-Dist: Jinja2==3.1.5
51
50
  Requires-Dist: ldap3==2.9.1
52
51
  Requires-Dist: matterhook==0.2
53
- Requires-Dist: meilisearch==0.33.1
52
+ Requires-Dist: meilisearch==0.34.0
54
53
  Requires-Dist: numpy==2.0.1; python_version == "3.9"
55
54
  Requires-Dist: numpy==2.2.3; python_version >= "3.10"
56
55
  Requires-Dist: opencv-python==4.11.0.86
@@ -59,7 +58,7 @@ Requires-Dist: OpenTimelineIO-Plugins==0.17.0
59
58
  Requires-Dist: orjson==3.10.15
60
59
  Requires-Dist: pillow==11.1.0
61
60
  Requires-Dist: psutil==7.0.0
62
- Requires-Dist: psycopg[binary]==3.2.4
61
+ Requires-Dist: psycopg[binary]==3.2.5
63
62
  Requires-Dist: pyotp==2.9.0
64
63
  Requires-Dist: pysaml2==7.5.2
65
64
  Requires-Dist: python-nomad==2.1.0
@@ -87,7 +86,7 @@ Requires-Dist: pytest==8.3.4; extra == "test"
87
86
  Provides-Extra: monitoring
88
87
  Requires-Dist: prometheus-flask-exporter==0.23.1; extra == "monitoring"
89
88
  Requires-Dist: pygelf==0.4.2; extra == "monitoring"
90
- Requires-Dist: sentry-sdk==2.21.0; extra == "monitoring"
89
+ Requires-Dist: sentry-sdk==2.22.0; extra == "monitoring"
91
90
  Provides-Extra: lint
92
91
  Requires-Dist: autoflake==2.3.1; extra == "lint"
93
92
  Requires-Dist: black==25.1.0; extra == "lint"
@@ -418,6 +418,7 @@ zou/migrations/versions/f874ad5e898a_add_link_entity_type_task_type.py
418
418
  zou/migrations/versions/f995b28fb749_.py
419
419
  zou/migrations/versions/fb6b6f188497_.py
420
420
  zou/migrations/versions/fb87feaaa094_add_missing_unique_constraints.py
421
+ zou/migrations/versions/fba149993140_add_missing_index.py
421
422
  zou/migrations/versions/fc322f908695_.py
422
423
  zou/migrations/versions/fee7c696166e_.py
423
424
  zou/migrations/versions/feffd3c5b806_introduce_concepts.py