zou 0.19.48__tar.gz → 0.19.49__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 (424) hide show
  1. {zou-0.19.48/zou.egg-info → zou-0.19.49}/PKG-INFO +4 -4
  2. {zou-0.19.48 → zou-0.19.49}/setup.cfg +3 -3
  3. zou-0.19.49/zou/__init__.py +1 -0
  4. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/persons/resources.py +54 -13
  5. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/shots/resources.py +34 -4
  6. {zou-0.19.48 → zou-0.19.49}/zou/app/mixin.py +1 -0
  7. {zou-0.19.48 → zou-0.19.49}/zou/app/models/task.py +1 -0
  8. {zou-0.19.48 → zou-0.19.49}/zou/app/services/assets_service.py +3 -0
  9. {zou-0.19.48 → zou-0.19.49}/zou/app/services/entities_service.py +3 -0
  10. {zou-0.19.48 → zou-0.19.49}/zou/app/services/shots_service.py +112 -33
  11. {zou-0.19.48 → zou-0.19.49}/zou/app/services/tasks_service.py +26 -1
  12. zou-0.19.49/zou/migrations/versions/ca28796a2a62_add_is_done_field_to_the_task_model.py +45 -0
  13. {zou-0.19.48 → zou-0.19.49/zou.egg-info}/PKG-INFO +4 -4
  14. {zou-0.19.48 → zou-0.19.49}/zou.egg-info/SOURCES.txt +1 -0
  15. {zou-0.19.48 → zou-0.19.49}/zou.egg-info/requires.txt +3 -3
  16. zou-0.19.48/zou/__init__.py +0 -1
  17. {zou-0.19.48 → zou-0.19.49}/LICENSE +0 -0
  18. {zou-0.19.48 → zou-0.19.49}/README.rst +0 -0
  19. {zou-0.19.48 → zou-0.19.49}/pyproject.toml +0 -0
  20. {zou-0.19.48 → zou-0.19.49}/setup.py +0 -0
  21. {zou-0.19.48 → zou-0.19.49}/zou/app/__init__.py +0 -0
  22. {zou-0.19.48 → zou-0.19.49}/zou/app/api.py +0 -0
  23. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/__init__.py +0 -0
  24. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/assets/__init__.py +0 -0
  25. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/assets/resources.py +0 -0
  26. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/auth/__init__.py +0 -0
  27. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/auth/resources.py +0 -0
  28. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/breakdown/__init__.py +0 -0
  29. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/breakdown/resources.py +0 -0
  30. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/chats/__init__.py +0 -0
  31. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/chats/resources.py +0 -0
  32. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/comments/__init__.py +0 -0
  33. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/comments/resources.py +0 -0
  34. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/concepts/__init__.py +0 -0
  35. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/concepts/resources.py +0 -0
  36. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/__init__.py +0 -0
  37. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/asset_instance.py +0 -0
  38. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/attachment_file.py +0 -0
  39. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/base.py +0 -0
  40. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/chat.py +0 -0
  41. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/chat_message.py +0 -0
  42. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/comments.py +0 -0
  43. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/custom_action.py +0 -0
  44. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/day_off.py +0 -0
  45. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/department.py +0 -0
  46. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/entity.py +0 -0
  47. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/entity_link.py +0 -0
  48. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/entity_type.py +0 -0
  49. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/event.py +0 -0
  50. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/file_status.py +0 -0
  51. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/metadata_descriptor.py +0 -0
  52. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/milestone.py +0 -0
  53. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/news.py +0 -0
  54. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/notification.py +0 -0
  55. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/organisation.py +0 -0
  56. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/output_file.py +0 -0
  57. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/output_type.py +0 -0
  58. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/person.py +0 -0
  59. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/playlist.py +0 -0
  60. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/preview_background_file.py +0 -0
  61. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/preview_file.py +0 -0
  62. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/project.py +0 -0
  63. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/project_status.py +0 -0
  64. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/schedule_item.py +0 -0
  65. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/search_filter.py +0 -0
  66. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/search_filter_group.py +0 -0
  67. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/software.py +0 -0
  68. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/status_automation.py +0 -0
  69. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/studio.py +0 -0
  70. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/subscription.py +0 -0
  71. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/task.py +0 -0
  72. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/task_status.py +0 -0
  73. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/task_type.py +0 -0
  74. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/time_spent.py +0 -0
  75. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/crud/working_file.py +0 -0
  76. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/edits/__init__.py +0 -0
  77. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/edits/resources.py +0 -0
  78. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/entities/__init__.py +0 -0
  79. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/entities/resources.py +0 -0
  80. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/events/__init__.py +0 -0
  81. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/events/resources.py +0 -0
  82. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/export/__init__.py +0 -0
  83. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/export/csv/__init__.py +0 -0
  84. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/export/csv/assets.py +0 -0
  85. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/export/csv/base.py +0 -0
  86. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/export/csv/casting.py +0 -0
  87. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/export/csv/edits.py +0 -0
  88. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/export/csv/persons.py +0 -0
  89. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/export/csv/playlists.py +0 -0
  90. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/export/csv/projects.py +0 -0
  91. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/export/csv/shots.py +0 -0
  92. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/export/csv/task_types.py +0 -0
  93. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/export/csv/tasks.py +0 -0
  94. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/export/csv/time_spents.py +0 -0
  95. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/files/__init__.py +0 -0
  96. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/files/resources.py +0 -0
  97. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/index/__init__.py +0 -0
  98. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/index/resources.py +0 -0
  99. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/news/__init__.py +0 -0
  100. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/news/resources.py +0 -0
  101. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/persons/__init__.py +0 -0
  102. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/playlists/__init__.py +0 -0
  103. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/playlists/resources.py +0 -0
  104. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/previews/__init__.py +0 -0
  105. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/previews/resources.py +0 -0
  106. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/projects/__init__.py +0 -0
  107. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/projects/resources.py +0 -0
  108. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/search/__init__.py +0 -0
  109. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/search/resources.py +0 -0
  110. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/shots/__init__.py +0 -0
  111. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/source/__init__.py +0 -0
  112. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/source/csv/__init__.py +0 -0
  113. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/source/csv/assets.py +0 -0
  114. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/source/csv/base.py +0 -0
  115. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/source/csv/casting.py +0 -0
  116. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/source/csv/edits.py +0 -0
  117. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/source/csv/persons.py +0 -0
  118. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/source/csv/shots.py +0 -0
  119. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/source/csv/task_type_estimations.py +0 -0
  120. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/source/kitsu.py +0 -0
  121. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/source/otio.py +0 -0
  122. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/source/shotgun/__init__.py +0 -0
  123. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/source/shotgun/assets.py +0 -0
  124. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/source/shotgun/base.py +0 -0
  125. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/source/shotgun/episode.py +0 -0
  126. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/source/shotgun/exception.py +0 -0
  127. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/source/shotgun/import_errors.py +0 -0
  128. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/source/shotgun/notes.py +0 -0
  129. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/source/shotgun/person.py +0 -0
  130. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/source/shotgun/project.py +0 -0
  131. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/source/shotgun/scene.py +0 -0
  132. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/source/shotgun/sequence.py +0 -0
  133. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/source/shotgun/shot.py +0 -0
  134. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/source/shotgun/status.py +0 -0
  135. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/source/shotgun/steps.py +0 -0
  136. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/source/shotgun/tasks.py +0 -0
  137. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/source/shotgun/team.py +0 -0
  138. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/source/shotgun/versions.py +0 -0
  139. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/tasks/__init__.py +0 -0
  140. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/tasks/resources.py +0 -0
  141. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/user/__init__.py +0 -0
  142. {zou-0.19.48 → zou-0.19.49}/zou/app/blueprints/user/resources.py +0 -0
  143. {zou-0.19.48 → zou-0.19.49}/zou/app/config.py +0 -0
  144. {zou-0.19.48 → zou-0.19.49}/zou/app/file_trees/default.json +0 -0
  145. {zou-0.19.48 → zou-0.19.49}/zou/app/file_trees/simple.json +0 -0
  146. {zou-0.19.48 → zou-0.19.49}/zou/app/indexer/__init__.py +0 -0
  147. {zou-0.19.48 → zou-0.19.49}/zou/app/indexer/indexing.py +0 -0
  148. {zou-0.19.48 → zou-0.19.49}/zou/app/models/__init__.py +0 -0
  149. {zou-0.19.48 → zou-0.19.49}/zou/app/models/asset_instance.py +0 -0
  150. {zou-0.19.48 → zou-0.19.49}/zou/app/models/attachment_file.py +0 -0
  151. {zou-0.19.48 → zou-0.19.49}/zou/app/models/base.py +0 -0
  152. {zou-0.19.48 → zou-0.19.49}/zou/app/models/build_job.py +0 -0
  153. {zou-0.19.48 → zou-0.19.49}/zou/app/models/chat.py +0 -0
  154. {zou-0.19.48 → zou-0.19.49}/zou/app/models/chat_message.py +0 -0
  155. {zou-0.19.48 → zou-0.19.49}/zou/app/models/comment.py +0 -0
  156. {zou-0.19.48 → zou-0.19.49}/zou/app/models/custom_action.py +0 -0
  157. {zou-0.19.48 → zou-0.19.49}/zou/app/models/data_import_error.py +0 -0
  158. {zou-0.19.48 → zou-0.19.49}/zou/app/models/day_off.py +0 -0
  159. {zou-0.19.48 → zou-0.19.49}/zou/app/models/department.py +0 -0
  160. {zou-0.19.48 → zou-0.19.49}/zou/app/models/desktop_login_log.py +0 -0
  161. {zou-0.19.48 → zou-0.19.49}/zou/app/models/entity.py +0 -0
  162. {zou-0.19.48 → zou-0.19.49}/zou/app/models/entity_type.py +0 -0
  163. {zou-0.19.48 → zou-0.19.49}/zou/app/models/event.py +0 -0
  164. {zou-0.19.48 → zou-0.19.49}/zou/app/models/file_status.py +0 -0
  165. {zou-0.19.48 → zou-0.19.49}/zou/app/models/login_log.py +0 -0
  166. {zou-0.19.48 → zou-0.19.49}/zou/app/models/metadata_descriptor.py +0 -0
  167. {zou-0.19.48 → zou-0.19.49}/zou/app/models/milestone.py +0 -0
  168. {zou-0.19.48 → zou-0.19.49}/zou/app/models/news.py +0 -0
  169. {zou-0.19.48 → zou-0.19.49}/zou/app/models/notification.py +0 -0
  170. {zou-0.19.48 → zou-0.19.49}/zou/app/models/organisation.py +0 -0
  171. {zou-0.19.48 → zou-0.19.49}/zou/app/models/output_file.py +0 -0
  172. {zou-0.19.48 → zou-0.19.49}/zou/app/models/output_type.py +0 -0
  173. {zou-0.19.48 → zou-0.19.49}/zou/app/models/person.py +0 -0
  174. {zou-0.19.48 → zou-0.19.49}/zou/app/models/playlist.py +0 -0
  175. {zou-0.19.48 → zou-0.19.49}/zou/app/models/preview_background_file.py +0 -0
  176. {zou-0.19.48 → zou-0.19.49}/zou/app/models/preview_file.py +0 -0
  177. {zou-0.19.48 → zou-0.19.49}/zou/app/models/project.py +0 -0
  178. {zou-0.19.48 → zou-0.19.49}/zou/app/models/project_status.py +0 -0
  179. {zou-0.19.48 → zou-0.19.49}/zou/app/models/schedule_item.py +0 -0
  180. {zou-0.19.48 → zou-0.19.49}/zou/app/models/search_filter.py +0 -0
  181. {zou-0.19.48 → zou-0.19.49}/zou/app/models/search_filter_group.py +0 -0
  182. {zou-0.19.48 → zou-0.19.49}/zou/app/models/serializer.py +0 -0
  183. {zou-0.19.48 → zou-0.19.49}/zou/app/models/software.py +0 -0
  184. {zou-0.19.48 → zou-0.19.49}/zou/app/models/status_automation.py +0 -0
  185. {zou-0.19.48 → zou-0.19.49}/zou/app/models/studio.py +0 -0
  186. {zou-0.19.48 → zou-0.19.49}/zou/app/models/subscription.py +0 -0
  187. {zou-0.19.48 → zou-0.19.49}/zou/app/models/task_status.py +0 -0
  188. {zou-0.19.48 → zou-0.19.49}/zou/app/models/task_type.py +0 -0
  189. {zou-0.19.48 → zou-0.19.49}/zou/app/models/time_spent.py +0 -0
  190. {zou-0.19.48 → zou-0.19.49}/zou/app/models/working_file.py +0 -0
  191. {zou-0.19.48 → zou-0.19.49}/zou/app/services/__init__.py +0 -0
  192. {zou-0.19.48 → zou-0.19.49}/zou/app/services/auth_service.py +0 -0
  193. {zou-0.19.48 → zou-0.19.49}/zou/app/services/backup_service.py +0 -0
  194. {zou-0.19.48 → zou-0.19.49}/zou/app/services/base_service.py +0 -0
  195. {zou-0.19.48 → zou-0.19.49}/zou/app/services/breakdown_service.py +0 -0
  196. {zou-0.19.48 → zou-0.19.49}/zou/app/services/chats_service.py +0 -0
  197. {zou-0.19.48 → zou-0.19.49}/zou/app/services/comments_service.py +0 -0
  198. {zou-0.19.48 → zou-0.19.49}/zou/app/services/concepts_service.py +0 -0
  199. {zou-0.19.48 → zou-0.19.49}/zou/app/services/custom_actions_service.py +0 -0
  200. {zou-0.19.48 → zou-0.19.49}/zou/app/services/deletion_service.py +0 -0
  201. {zou-0.19.48 → zou-0.19.49}/zou/app/services/edits_service.py +0 -0
  202. {zou-0.19.48 → zou-0.19.49}/zou/app/services/emails_service.py +0 -0
  203. {zou-0.19.48 → zou-0.19.49}/zou/app/services/events_service.py +0 -0
  204. {zou-0.19.48 → zou-0.19.49}/zou/app/services/exception.py +0 -0
  205. {zou-0.19.48 → zou-0.19.49}/zou/app/services/file_tree_service.py +0 -0
  206. {zou-0.19.48 → zou-0.19.49}/zou/app/services/files_service.py +0 -0
  207. {zou-0.19.48 → zou-0.19.49}/zou/app/services/index_service.py +0 -0
  208. {zou-0.19.48 → zou-0.19.49}/zou/app/services/names_service.py +0 -0
  209. {zou-0.19.48 → zou-0.19.49}/zou/app/services/news_service.py +0 -0
  210. {zou-0.19.48 → zou-0.19.49}/zou/app/services/notifications_service.py +0 -0
  211. {zou-0.19.48 → zou-0.19.49}/zou/app/services/persons_service.py +0 -0
  212. {zou-0.19.48 → zou-0.19.49}/zou/app/services/playlists_service.py +0 -0
  213. {zou-0.19.48 → zou-0.19.49}/zou/app/services/preview_files_service.py +0 -0
  214. {zou-0.19.48 → zou-0.19.49}/zou/app/services/projects_service.py +0 -0
  215. {zou-0.19.48 → zou-0.19.49}/zou/app/services/scenes_service.py +0 -0
  216. {zou-0.19.48 → zou-0.19.49}/zou/app/services/schedule_service.py +0 -0
  217. {zou-0.19.48 → zou-0.19.49}/zou/app/services/stats_service.py +0 -0
  218. {zou-0.19.48 → zou-0.19.49}/zou/app/services/status_automations_service.py +0 -0
  219. {zou-0.19.48 → zou-0.19.49}/zou/app/services/sync_service.py +0 -0
  220. {zou-0.19.48 → zou-0.19.49}/zou/app/services/telemetry_services.py +0 -0
  221. {zou-0.19.48 → zou-0.19.49}/zou/app/services/time_spents_service.py +0 -0
  222. {zou-0.19.48 → zou-0.19.49}/zou/app/services/user_service.py +0 -0
  223. {zou-0.19.48 → zou-0.19.49}/zou/app/stores/__init__.py +0 -0
  224. {zou-0.19.48 → zou-0.19.49}/zou/app/stores/auth_tokens_store.py +0 -0
  225. {zou-0.19.48 → zou-0.19.49}/zou/app/stores/file_store.py +0 -0
  226. {zou-0.19.48 → zou-0.19.49}/zou/app/stores/publisher_store.py +0 -0
  227. {zou-0.19.48 → zou-0.19.49}/zou/app/stores/queue_store.py +0 -0
  228. {zou-0.19.48 → zou-0.19.49}/zou/app/swagger.py +0 -0
  229. {zou-0.19.48 → zou-0.19.49}/zou/app/utils/__init__.py +0 -0
  230. {zou-0.19.48 → zou-0.19.49}/zou/app/utils/api.py +0 -0
  231. {zou-0.19.48 → zou-0.19.49}/zou/app/utils/auth.py +0 -0
  232. {zou-0.19.48 → zou-0.19.49}/zou/app/utils/cache.py +0 -0
  233. {zou-0.19.48 → zou-0.19.49}/zou/app/utils/chats.py +0 -0
  234. {zou-0.19.48 → zou-0.19.49}/zou/app/utils/colors.py +0 -0
  235. {zou-0.19.48 → zou-0.19.49}/zou/app/utils/commands.py +0 -0
  236. {zou-0.19.48 → zou-0.19.49}/zou/app/utils/csv_utils.py +0 -0
  237. {zou-0.19.48 → zou-0.19.49}/zou/app/utils/date_helpers.py +0 -0
  238. {zou-0.19.48 → zou-0.19.49}/zou/app/utils/dbhelpers.py +0 -0
  239. {zou-0.19.48 → zou-0.19.49}/zou/app/utils/emails.py +0 -0
  240. {zou-0.19.48 → zou-0.19.49}/zou/app/utils/env.py +0 -0
  241. {zou-0.19.48 → zou-0.19.49}/zou/app/utils/events.py +0 -0
  242. {zou-0.19.48 → zou-0.19.49}/zou/app/utils/fields.py +0 -0
  243. {zou-0.19.48 → zou-0.19.49}/zou/app/utils/flask.py +0 -0
  244. {zou-0.19.48 → zou-0.19.49}/zou/app/utils/fs.py +0 -0
  245. {zou-0.19.48 → zou-0.19.49}/zou/app/utils/git.py +0 -0
  246. {zou-0.19.48 → zou-0.19.49}/zou/app/utils/logs.py +0 -0
  247. {zou-0.19.48 → zou-0.19.49}/zou/app/utils/monitoring.py +0 -0
  248. {zou-0.19.48 → zou-0.19.49}/zou/app/utils/permissions.py +0 -0
  249. {zou-0.19.48 → zou-0.19.49}/zou/app/utils/query.py +0 -0
  250. {zou-0.19.48 → zou-0.19.49}/zou/app/utils/remote_job.py +0 -0
  251. {zou-0.19.48 → zou-0.19.49}/zou/app/utils/shell.py +0 -0
  252. {zou-0.19.48 → zou-0.19.49}/zou/app/utils/string.py +0 -0
  253. {zou-0.19.48 → zou-0.19.49}/zou/app/utils/thumbnail.py +0 -0
  254. {zou-0.19.48 → zou-0.19.49}/zou/cli.py +0 -0
  255. {zou-0.19.48 → zou-0.19.49}/zou/debug.py +0 -0
  256. {zou-0.19.48 → zou-0.19.49}/zou/event_stream.py +0 -0
  257. {zou-0.19.48 → zou-0.19.49}/zou/job_settings.py +0 -0
  258. {zou-0.19.48 → zou-0.19.49}/zou/migrations/README +0 -0
  259. {zou-0.19.48 → zou-0.19.49}/zou/migrations/__init__.py +0 -0
  260. {zou-0.19.48 → zou-0.19.49}/zou/migrations/alembic.ini +0 -0
  261. {zou-0.19.48 → zou-0.19.49}/zou/migrations/env.py +0 -0
  262. {zou-0.19.48 → zou-0.19.49}/zou/migrations/script.py.mako +0 -0
  263. {zou-0.19.48 → zou-0.19.49}/zou/migrations/utils/__init__.py +0 -0
  264. {zou-0.19.48 → zou-0.19.49}/zou/migrations/utils/base.py +0 -0
  265. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/003be8a91001_add_start_and_end_dates_to_projects.py +0 -0
  266. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/0596674df51d_add_department_mentions_to_comments.py +0 -0
  267. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/05ac7e8caa21_remove_unique_constraint_for_taskstatus_.py +0 -0
  268. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/05b7dc79a416_add_archived_fields_to_main_tables.py +0 -0
  269. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/0cf5e0e035fa_drop_column_tasktype_for_shots.py +0 -0
  270. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/0ec3762a745d_add_attachment_table.py +0 -0
  271. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/0ef6416a507b_.py +0 -0
  272. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/10cf267d95c9_fix_schedule_item.py +0 -0
  273. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/16328eae4b5f_add_new_constraint_for_timespent.py +0 -0
  274. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/16df47d76c64_add_some_indexes.py +0 -0
  275. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/17ef8f7be758_disallow_null_choicetype.py +0 -0
  276. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/1bb55759146f_add_table_studio.py +0 -0
  277. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/1cb44194db49_add_file_size_field_to_preview_file.py +0 -0
  278. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/1e150c2cea4d_add_nb_entities_out.py +0 -0
  279. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/1e2d77a2f0c4_add_hd_by_default_column.py +0 -0
  280. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/1fab8c420678_add_attachments_to_message_chats.py +0 -0
  281. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/20dfeb36142b_add_projecttaskstatuslink_roles_for_.py +0 -0
  282. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/23122f290ca2_add_entity_chat_models.py +0 -0
  283. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/269d41bfb73f_add_entity_entity_links.py +0 -0
  284. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/29df910f04a4_create_unique_constraint_project_id_.py +0 -0
  285. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/29fe01a6c9eb_add_status_automation_field.py +0 -0
  286. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/2adc020885fa_.py +0 -0
  287. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/2baede80b111_add_entity_status_field.py +0 -0
  288. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/306266361f4f_.py +0 -0
  289. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/328fd44c6347_add_entity_created_by.py +0 -0
  290. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/32f134ff1201_add_is_shared_flag_to_filters.py +0 -0
  291. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/346250b5304c_add_position_to_preview_files.py +0 -0
  292. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/3476e147e632_add_acks_to_comments.py +0 -0
  293. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/389cfb9de776_.py +0 -0
  294. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/38baa9a23b3d_.py +0 -0
  295. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/398150912a3f_validation_status_preview.py +0 -0
  296. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/3b0d1321079e_.py +0 -0
  297. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/3d5c93bafb9d_.py +0 -0
  298. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/3e0538ddf80f_.py +0 -0
  299. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/3fee3bd10f9d_.py +0 -0
  300. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/4095103c7d01_add_is_clients_isolated_flag_to_projects.py +0 -0
  301. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/40dea9555940_.py +0 -0
  302. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/42ec83db6a01_change_person_preferred_two_factor_.py +0 -0
  303. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/43d0cf0ed5e7_.py +0 -0
  304. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/443d1e78a932_.py +0 -0
  305. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/45c2de366e66_.py +0 -0
  306. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/45dafbb3f4e1_for_person_contract_type_disallow_null.py +0 -0
  307. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/4715c2586036_add_last_preview_file_fields.py +0 -0
  308. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/4e3738cdc34c_.py +0 -0
  309. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/4f2398ebcd49_.py +0 -0
  310. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/523ee9647bee_.py +0 -0
  311. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/54ee0d1d60ba_add_build_job_model.py +0 -0
  312. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/556526e47daa_.py +0 -0
  313. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/57222395f2be_add_statusautomation_import_last_revision.py +0 -0
  314. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/5798d2c9020b_change_person_role_to_choicetype.py +0 -0
  315. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/590aa1ffe731_add_notifications_enabled_flag.py +0 -0
  316. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/5a291251823c_add_max_retake_parameter.py +0 -0
  317. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/5ab9d7a75887_.py +0 -0
  318. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/5b0fcbb94f24_.py +0 -0
  319. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/5b7fa3e51701_add_is_client_allowed_flag_to_task_.py +0 -0
  320. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/5b980f0dc365_add_comment_links.py +0 -0
  321. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/5b9fd9ddfe43_add_homepage_and_contract_fields.py +0 -0
  322. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/5c0498e264bc_add_slack_fields.py +0 -0
  323. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/5e2ce62632a6_add_workflow_to_project.py +0 -0
  324. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/680c64565f9d_for_searchfiltergroup_is_shared.py +0 -0
  325. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/693cc511d28d_add_taskstatus_priority.py +0 -0
  326. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/6aa446ee4072_add_is_for_all_flage_to_playlists.py +0 -0
  327. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/6bd3b102d61b_.py +0 -0
  328. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/6c597e842afa_add_task_type_field_to_playlists.py +0 -0
  329. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/6d1b2c60f58b_add_milestone_model.py +0 -0
  330. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/6d7fa5a8e9a5_add_timesheets_locked_field_to_org.py +0 -0
  331. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/6eeaff945706_add_data_field_on_entity_links.py +0 -0
  332. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/6f6049877105_.py +0 -0
  333. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/7417c8eb70d8_add_for_entity_field_to_playlists.py +0 -0
  334. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/772a5e43f05b_.py +0 -0
  335. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/7748d3d22925_add_columns_to_searchfilter_table_to_.py +0 -0
  336. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/77d6820f494f_add_reply_to_notif.py +0 -0
  337. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/7b1f765677d8_.py +0 -0
  338. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/7bc746997e8d_add_slack_token_field_to_organisation.py +0 -0
  339. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/7dc79d4ed7cd_.py +0 -0
  340. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/818f7bda2528_.py +0 -0
  341. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/82e7f7a95e84_add_project_id_to_events.py +0 -0
  342. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/82ee682204ab_add_is_generated_from_ldap_column_to_.py +0 -0
  343. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/8588f254d6b8_add_archived_fields.py +0 -0
  344. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/8739ae9fa28b_add_for_client_field.py +0 -0
  345. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/87efceb6745b_add_ready_for_to_entity.py +0 -0
  346. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/892b264937ec_.py +0 -0
  347. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/8a1b4a1b7f4a_add_totp_columns_for_person.py +0 -0
  348. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/8e4f39e321f4_add_day_off_table.py +0 -0
  349. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/8fbd40afbe5f_allow_to_set_float_values_for_.py +0 -0
  350. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/9010a64e5a2d_add_indices.py +0 -0
  351. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/9060dd4f6116_notification_uc.py +0 -0
  352. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/925771029620_.py +0 -0
  353. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/92b40d79ad3f_allow_message_attachments.py +0 -0
  354. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/92bdfe07e5f5_discord_integration.py +0 -0
  355. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/956659992419_add_columns_for_person_to_store_fido_.py +0 -0
  356. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/96c79d31e648_add_mail_otp_columns_for_person.py +0 -0
  357. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/96f58a4a2a58_person_partial_index_for_email_only_.py +0 -0
  358. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/971dbf5a0faf_add_short_name_for_asset_type_entity_.py +0 -0
  359. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/98c90621cf58_add_for_client_flag_to_playlist.py +0 -0
  360. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/99825b9cc778_.py +0 -0
  361. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/9a09467f9b2c_.py +0 -0
  362. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/9b85c14fa8a7_add_day_off_new_columns.py +0 -0
  363. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/9bd17364fc18_.py +0 -0
  364. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/9e5b3a9b0cee_add_new_column_metadatadescriptor_data_type_.py +0 -0
  365. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/9f8445f9b42c_add_man_days_fields.py +0 -0
  366. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/a23682ccc1f1_.py +0 -0
  367. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/a252a094e977_add_descriptions_for_entities_tasks_and_.py +0 -0
  368. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/a519c710877c_.py +0 -0
  369. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/a65bdadbae2f_.py +0 -0
  370. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/a66508788c53_add_nb_assets_ready.py +0 -0
  371. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/a6c25eed3ea1_add_login_failed_attemps_and_last_login_.py +0 -0
  372. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/a7c43f3fbc76_add_duration_column_to_the_preview_file.py +0 -0
  373. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/aa0a60033106_feedback_request.py +0 -0
  374. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/addbbefa7028_add_departments_link_to_metadata_.py +0 -0
  375. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/ae0127f2fc56_add_previewfile_width_and_previewfile_.py +0 -0
  376. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/af1790868e2c_.py +0 -0
  377. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/b45cb782bb9c_.py +0 -0
  378. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/b4dd0add5f79_.py +0 -0
  379. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/b8c0a0f9d054_drop_task_status_is_reviewable.py +0 -0
  380. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/b8ed0fb263f8_add_person_jti_and_jti_expiration_date.py +0 -0
  381. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/b97a71306fc8_add_is_casting_standby_column_to_entity.py +0 -0
  382. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/be56dc0fb760_for_is_shared_disallow_nullable.py +0 -0
  383. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/bf1347acdee2_.py +0 -0
  384. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/c49e41f1298b_add_previewbackground.py +0 -0
  385. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/c68c2a62cfac_add_mimetype_column_to_attachment.py +0 -0
  386. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/c726b98be194_.py +0 -0
  387. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/c81f3e83bdb5_.py +0 -0
  388. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/cf3d365de164_add_entity_version_model.py +0 -0
  389. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/cf6cec6d6bf5_add_status_field_to_preview_file.py +0 -0
  390. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/d80267806131_task_status_new_column_is_default.py +0 -0
  391. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/d8dcd5196d57_add_casting_label.py +0 -0
  392. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/de8a3de227ef_.py +0 -0
  393. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/deeacd38d373_for_projecttaskstatuslink_set_default_.py +0 -0
  394. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/df1834485f57_.py +0 -0
  395. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/df9f8a147e80_change_file_size_to_big_integer.py +0 -0
  396. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/e1ef93f40d3d_.py +0 -0
  397. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/e29638428dfd_add_schedule_item_table.py +0 -0
  398. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/e3f6db74cc1e_.py +0 -0
  399. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/e839d6603c09_add_person_id_to_shot_history.py +0 -0
  400. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/ee2373fbe3a4_.py +0 -0
  401. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/f0567e8d0c62_.py +0 -0
  402. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/f0c6cbb61869_add_production_style_field.py +0 -0
  403. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/f344b867a911_for_description_of_entity_task_working_.py +0 -0
  404. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/f4ff5a73d283_add_person_ldap_uid.py +0 -0
  405. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/f5b113876a49_add_preferred_two_factor_authentication_.py +0 -0
  406. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/f5bdca075cdc_add_preview_download_flag_to_projects.py +0 -0
  407. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/f874ad5e898a_add_link_entity_type_task_type.py +0 -0
  408. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/f995b28fb749_.py +0 -0
  409. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/fb6b6f188497_.py +0 -0
  410. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/fb87feaaa094_add_missing_unique_constraints.py +0 -0
  411. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/fc322f908695_.py +0 -0
  412. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/fee7c696166e_.py +0 -0
  413. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/feffd3c5b806_introduce_concepts.py +0 -0
  414. {zou-0.19.48 → zou-0.19.49}/zou/migrations/versions/ffeed4956ab1_add_more_details_to_projects.py +0 -0
  415. {zou-0.19.48 → zou-0.19.49}/zou/remote/__init__.py +0 -0
  416. {zou-0.19.48 → zou-0.19.49}/zou/remote/config_payload.py +0 -0
  417. {zou-0.19.48 → zou-0.19.49}/zou/remote/normalize_movie.py +0 -0
  418. {zou-0.19.48 → zou-0.19.49}/zou/remote/playlist.py +0 -0
  419. {zou-0.19.48 → zou-0.19.49}/zou/utils/__init__.py +0 -0
  420. {zou-0.19.48 → zou-0.19.49}/zou/utils/movie.py +0 -0
  421. {zou-0.19.48 → zou-0.19.49}/zou.egg-info/dependency_links.txt +0 -0
  422. {zou-0.19.48 → zou-0.19.49}/zou.egg-info/entry_points.txt +0 -0
  423. {zou-0.19.48 → zou-0.19.49}/zou.egg-info/not-zip-safe +0 -0
  424. {zou-0.19.48 → zou-0.19.49}/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.48
3
+ Version: 0.19.49
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
@@ -81,15 +81,15 @@ Provides-Extra: test
81
81
  Requires-Dist: fakeredis==2.23.3; extra == "test"
82
82
  Requires-Dist: mixer==7.2.2; extra == "test"
83
83
  Requires-Dist: pytest-cov==5.0.0; extra == "test"
84
- Requires-Dist: pytest==8.3.1; extra == "test"
84
+ Requires-Dist: pytest==8.3.2; extra == "test"
85
85
  Provides-Extra: monitoring
86
86
  Requires-Dist: prometheus-flask-exporter==0.23.1; extra == "monitoring"
87
87
  Requires-Dist: pygelf==0.4.2; extra == "monitoring"
88
- Requires-Dist: sentry-sdk==2.10.0; extra == "monitoring"
88
+ Requires-Dist: sentry-sdk==2.11.0; extra == "monitoring"
89
89
  Provides-Extra: lint
90
90
  Requires-Dist: autoflake==2.3.1; extra == "lint"
91
91
  Requires-Dist: black==24.4.2; extra == "lint"
92
- Requires-Dist: pre-commit==3.7.1; python_version >= "3.9" and extra == "lint"
92
+ Requires-Dist: pre-commit==3.8.0; python_version >= "3.9" and extra == "lint"
93
93
 
94
94
  .. figure:: https://zou.cg-wire.com/kitsu.png
95
95
  :alt: Kitsu Logo
@@ -95,15 +95,15 @@ test =
95
95
  fakeredis==2.23.3
96
96
  mixer==7.2.2
97
97
  pytest-cov==5.0.0
98
- pytest==8.3.1
98
+ pytest==8.3.2
99
99
  monitoring =
100
100
  prometheus-flask-exporter==0.23.1
101
101
  pygelf==0.4.2
102
- sentry-sdk==2.10.0
102
+ sentry-sdk==2.11.0
103
103
  lint =
104
104
  autoflake==2.3.1
105
105
  black==24.4.2
106
- pre-commit==3.7.1; python_version >= '3.9'
106
+ pre-commit==3.8.0; python_version >= '3.9'
107
107
 
108
108
  [options.entry_points]
109
109
  console_scripts =
@@ -0,0 +1 @@
1
+ __version__ = "0.19.49"
@@ -308,7 +308,7 @@ class PersonDurationTimeSpentsResource(Resource, ArgsMixin):
308
308
  raise permissions.PermissionDenied
309
309
  if permissions.has_supervisor_permissions():
310
310
  department_ids = persons_service.get_current_user(
311
- True
311
+ relations=True
312
312
  )["departments"]
313
313
  else:
314
314
  raise permissions.PermissionDenied
@@ -533,7 +533,24 @@ class PersonDayTimeSpentsResource(PersonDurationTimeSpentsResource):
533
533
  abort(404)
534
534
 
535
535
 
536
- class PersonMonthQuotaShotsResource(Resource, ArgsMixin):
536
+ class PersonQuotaMixin:
537
+
538
+ def get_quota_arguments(self):
539
+ project_id = self.get_project_id()
540
+ task_type_id = self.get_task_type_id()
541
+ count_mode = self.get_text_parameter("count_mode", default="weigthed")
542
+ if count_mode not in ["weighted", "weighteddone", "feedback", "done"]:
543
+ raise WrongParameterException(
544
+ "count_mode must be equal to weighted, weigtheddone, feedback"
545
+ ", or done"
546
+ )
547
+ feedback = "done" not in count_mode
548
+ weighted = "weighted" in count_mode
549
+
550
+ return (project_id, task_type_id, count_mode, feedback, weighted)
551
+
552
+
553
+ class PersonMonthQuotaShotsResource(Resource, ArgsMixin, PersonQuotaMixin):
537
554
  """
538
555
  Get ended shots used for quota calculation of this month.
539
556
  """
@@ -564,6 +581,12 @@ class PersonMonthQuotaShotsResource(Resource, ArgsMixin):
564
581
  x-example: 07
565
582
  minimum: 1
566
583
  maximum: 12
584
+ - in: query
585
+ name: count_mode
586
+ required: True
587
+ type: string
588
+ enum: [weighted, weigtheddone, feedback, done]
589
+ x-example: weighted
567
590
  responses:
568
591
  200:
569
592
  description: Ended shots used for quota calculation of this month
@@ -571,10 +594,11 @@ class PersonMonthQuotaShotsResource(Resource, ArgsMixin):
571
594
  description: Wrong date format
572
595
  """
573
596
  user_service.check_person_is_not_bot(person_id)
574
- project_id = self.get_project_id()
575
- task_type_id = self.get_task_type_id()
576
597
  user_service.check_person_access(person_id)
577
- weighted = self.get_bool_parameter("weighted", default="true")
598
+ (project_id, task_type_id, count_mode, feedback, weighted) = (
599
+ self.get_quota_arguments()
600
+ )
601
+
578
602
  try:
579
603
  return shots_service.get_month_quota_shots(
580
604
  person_id,
@@ -583,12 +607,13 @@ class PersonMonthQuotaShotsResource(Resource, ArgsMixin):
583
607
  project_id=project_id,
584
608
  task_type_id=task_type_id,
585
609
  weighted=weighted,
610
+ feedback=feedback,
586
611
  )
587
612
  except WrongDateFormatException:
588
613
  abort(404)
589
614
 
590
615
 
591
- class PersonWeekQuotaShotsResource(Resource, ArgsMixin):
616
+ class PersonWeekQuotaShotsResource(Resource, ArgsMixin, PersonQuotaMixin):
592
617
  """
593
618
  Get ended shots used for quota calculation of this week.
594
619
  """
@@ -619,6 +644,12 @@ class PersonWeekQuotaShotsResource(Resource, ArgsMixin):
619
644
  x-example: 35
620
645
  minimum: 1
621
646
  maximum: 52
647
+ - in: query
648
+ name: count_mode
649
+ required: True
650
+ type: string
651
+ enum: [weighted, weigtheddone, feedback, done]
652
+ x-example: weighted
622
653
  responses:
623
654
  200:
624
655
  description: Ended shots used for quota calculation of this week
@@ -626,10 +657,11 @@ class PersonWeekQuotaShotsResource(Resource, ArgsMixin):
626
657
  description: Wrong date format
627
658
  """
628
659
  user_service.check_person_is_not_bot(person_id)
629
- project_id = self.get_project_id()
630
- task_type_id = self.get_task_type_id()
631
660
  user_service.check_person_access(person_id)
632
- weighted = self.get_bool_parameter("weighted", default="true")
661
+ (project_id, task_type_id, count_mode, feedback, weighted) = (
662
+ self.get_quota_arguments()
663
+ )
664
+
633
665
  try:
634
666
  return shots_service.get_week_quota_shots(
635
667
  person_id,
@@ -638,12 +670,13 @@ class PersonWeekQuotaShotsResource(Resource, ArgsMixin):
638
670
  project_id=project_id,
639
671
  task_type_id=task_type_id,
640
672
  weighted=weighted,
673
+ feedback=feedback,
641
674
  )
642
675
  except WrongDateFormatException:
643
676
  abort(404)
644
677
 
645
678
 
646
- class PersonDayQuotaShotsResource(Resource, ArgsMixin):
679
+ class PersonDayQuotaShotsResource(Resource, ArgsMixin, PersonQuotaMixin):
647
680
  """
648
681
  Get ended shots used for quota calculation of this day.
649
682
  """
@@ -681,6 +714,12 @@ class PersonDayQuotaShotsResource(Resource, ArgsMixin):
681
714
  x-example: 12
682
715
  minimum: 1
683
716
  maximum: 31
717
+ - in: query
718
+ name: count_mode
719
+ required: True
720
+ type: string
721
+ enum: [weighted, weigtheddone, feedback, done]
722
+ x-example: weighted
684
723
  responses:
685
724
  200:
686
725
  description: Ended shots used for quota calculation of this day
@@ -688,10 +727,11 @@ class PersonDayQuotaShotsResource(Resource, ArgsMixin):
688
727
  description: Wrong date format
689
728
  """
690
729
  user_service.check_person_is_not_bot(person_id)
691
- project_id = self.get_project_id()
692
- task_type_id = self.get_task_type_id()
693
730
  user_service.check_person_access(person_id)
694
- weighted = self.get_bool_parameter("weighted", default="true")
731
+ (project_id, task_type_id, count_mode, feedback, weighted) = (
732
+ self.get_quota_arguments()
733
+ )
734
+
695
735
  try:
696
736
  return shots_service.get_day_quota_shots(
697
737
  person_id,
@@ -701,6 +741,7 @@ class PersonDayQuotaShotsResource(Resource, ArgsMixin):
701
741
  project_id=project_id,
702
742
  task_type_id=task_type_id,
703
743
  weighted=weighted,
744
+ feedback=feedback,
704
745
  )
705
746
  except WrongDateFormatException:
706
747
  abort(404)
@@ -1507,6 +1507,18 @@ class ProjectQuotasResource(Resource, ArgsMixin):
1507
1507
  type: string
1508
1508
  format: UUID
1509
1509
  x-example: a24a6ea4-ce75-4665-a070-57453082c25
1510
+ - in: query
1511
+ name: count_mode
1512
+ required: True
1513
+ type: string
1514
+ enum: [weighted, weigtheddone, feedback, done]
1515
+ x-example: weighted
1516
+ - in: query
1517
+ name: studio_id
1518
+ required: False
1519
+ type: string
1520
+ format: UUID
1521
+ x-example: a24a6ea4-ce75-4665-a070-57453082c25
1510
1522
  responses:
1511
1523
  200:
1512
1524
  description: Quotas statistics for shots
@@ -1515,17 +1527,35 @@ class ProjectQuotasResource(Resource, ArgsMixin):
1515
1527
  user_service.check_project_access(project_id)
1516
1528
  args = self.get_args(
1517
1529
  [
1518
- ("weighted", False, False, bool),
1530
+ ("count_mode", "weighted", False, str),
1519
1531
  ("studio_id", None, False, str),
1520
1532
  ]
1521
1533
  )
1522
- if args["weighted"]:
1534
+ count_mode = args["count_mode"]
1535
+ studio_id = args["studio_id"]
1536
+
1537
+ if count_mode not in ["weighted", "weighteddone", "feedback", "done"]:
1538
+ raise WrongParameterException(
1539
+ "count_mode must be equal to weighted, weigtheddone, feedback"
1540
+ ", or done"
1541
+ )
1542
+
1543
+ feedback = "done" not in count_mode
1544
+ weighted = "weighted" in count_mode
1545
+
1546
+ if weighted:
1523
1547
  return shots_service.get_weighted_quotas(
1524
- project_id, task_type_id, args["studio_id"]
1548
+ project_id,
1549
+ task_type_id,
1550
+ feedback=feedback,
1551
+ studio_id=studio_id,
1525
1552
  )
1526
1553
  else:
1527
1554
  return shots_service.get_raw_quotas(
1528
- project_id, task_type_id, args["studio_id"]
1555
+ project_id,
1556
+ task_type_id,
1557
+ feedback=feedback,
1558
+ studio_id=studio_id,
1529
1559
  )
1530
1560
 
1531
1561
 
@@ -14,6 +14,7 @@ class ArgsMixin(object):
14
14
  parser = reqparse.RequestParser()
15
15
  if location is None:
16
16
  location = ["values", "json"] if request.is_json else ["values"]
17
+
17
18
  for descriptor in descriptors:
18
19
  action = None
19
20
  data_type = str
@@ -42,6 +42,7 @@ class Task(db.Model, BaseMixin, SerializerMixin):
42
42
  due_date = db.Column(db.DateTime)
43
43
  real_start_date = db.Column(db.DateTime)
44
44
  end_date = db.Column(db.DateTime)
45
+ done_date = db.Column(db.DateTime)
45
46
  last_comment_date = db.Column(db.DateTime)
46
47
  nb_assets_ready = db.Column(db.Integer, default=0)
47
48
  data = db.Column(JSONB)
@@ -194,6 +194,7 @@ def get_assets_and_tasks(criterions={}, page=1, with_episode_ids=False):
194
194
  Task.end_date,
195
195
  Task.start_date,
196
196
  Task.due_date,
197
+ Task.done_date,
197
198
  Task.last_comment_date,
198
199
  assignees_table.columns.person,
199
200
  ).order_by(EntityType.name, Entity.name)
@@ -272,6 +273,7 @@ def get_assets_and_tasks(criterions={}, page=1, with_episode_ids=False):
272
273
  task_end_date,
273
274
  task_start_date,
274
275
  task_due_date,
276
+ task_done_date,
275
277
  task_last_comment_date,
276
278
  person_id,
277
279
  ) in query_result:
@@ -314,6 +316,7 @@ def get_assets_and_tasks(criterions={}, page=1, with_episode_ids=False):
314
316
  task_dict = {
315
317
  "id": task_id,
316
318
  "due_date": fields.serialize_value(task_due_date),
319
+ "done_date": fields.serialize_value(task_done_date),
317
320
  "duration": task_duration,
318
321
  "entity_id": asset_id,
319
322
  "estimation": task_estimation,
@@ -240,6 +240,7 @@ def get_entities_and_tasks(criterions={}):
240
240
  Task.end_date,
241
241
  Task.start_date,
242
242
  Task.due_date,
243
+ Task.done_date,
243
244
  Task.last_comment_date,
244
245
  assignees_table.columns.person,
245
246
  )
@@ -269,6 +270,7 @@ def get_entities_and_tasks(criterions={}):
269
270
  task_end_date,
270
271
  task_start_date,
271
272
  task_due_date,
273
+ task_done_date,
272
274
  task_last_comment_date,
273
275
  person_id,
274
276
  ) in query.all():
@@ -305,6 +307,7 @@ def get_entities_and_tasks(criterions={}):
305
307
  "entity_id": entity_id,
306
308
  "end_date": task_end_date,
307
309
  "due_date": task_due_date,
310
+ "done_date": task_done_date,
308
311
  "duration": task_duration,
309
312
  "is_subscribed": subscription_map.get(task_id, False),
310
313
  "last_comment_date": task_last_comment_date,