wbcore 2.2.1__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 (1175) hide show
  1. wbcore-2.2.1/.gitignore +181 -0
  2. wbcore-2.2.1/PKG-INFO +62 -0
  3. wbcore-2.2.1/pyproject.toml +112 -0
  4. wbcore-2.2.1/wbcore/__init__.py +1 -0
  5. wbcore-2.2.1/wbcore/admin.py +197 -0
  6. wbcore-2.2.1/wbcore/apps.py +17 -0
  7. wbcore-2.2.1/wbcore/cache/__init__.py +0 -0
  8. wbcore-2.2.1/wbcore/cache/buttons.py +22 -0
  9. wbcore-2.2.1/wbcore/cache/decorators.py +29 -0
  10. wbcore-2.2.1/wbcore/cache/mixins.py +48 -0
  11. wbcore-2.2.1/wbcore/cache/registry.py +90 -0
  12. wbcore-2.2.1/wbcore/cache/views.py +18 -0
  13. wbcore-2.2.1/wbcore/configs/__init__.py +11 -0
  14. wbcore-2.2.1/wbcore/configs/configs.py +51 -0
  15. wbcore-2.2.1/wbcore/configs/decorators.py +11 -0
  16. wbcore-2.2.1/wbcore/configs/registry.py +35 -0
  17. wbcore-2.2.1/wbcore/configs/views.py +11 -0
  18. wbcore-2.2.1/wbcore/configurations/__init__.py +1 -0
  19. wbcore-2.2.1/wbcore/configurations/base.py +45 -0
  20. wbcore-2.2.1/wbcore/configurations/configurations/__init__.py +16 -0
  21. wbcore-2.2.1/wbcore/configurations/configurations/apps.py +54 -0
  22. wbcore-2.2.1/wbcore/configurations/configurations/authentication.py +43 -0
  23. wbcore-2.2.1/wbcore/configurations/configurations/base.py +15 -0
  24. wbcore-2.2.1/wbcore/configurations/configurations/cache.py +20 -0
  25. wbcore-2.2.1/wbcore/configurations/configurations/celery.py +26 -0
  26. wbcore-2.2.1/wbcore/configurations/configurations/i18nl10n.py +10 -0
  27. wbcore-2.2.1/wbcore/configurations/configurations/mail.py +2 -0
  28. wbcore-2.2.1/wbcore/configurations/configurations/maintenance.py +53 -0
  29. wbcore-2.2.1/wbcore/configurations/configurations/media.py +22 -0
  30. wbcore-2.2.1/wbcore/configurations/configurations/middleware.py +27 -0
  31. wbcore-2.2.1/wbcore/configurations/configurations/network.py +19 -0
  32. wbcore-2.2.1/wbcore/configurations/configurations/rest_framework.py +42 -0
  33. wbcore-2.2.1/wbcore/configurations/configurations/static.py +28 -0
  34. wbcore-2.2.1/wbcore/configurations/configurations/templates.py +17 -0
  35. wbcore-2.2.1/wbcore/configurations/configurations/uvicorn.py +9 -0
  36. wbcore-2.2.1/wbcore/configurations/configurations/wbcore.py +68 -0
  37. wbcore-2.2.1/wbcore/content_type/__init__.py +0 -0
  38. wbcore-2.2.1/wbcore/content_type/admin.py +8 -0
  39. wbcore-2.2.1/wbcore/content_type/filters.py +19 -0
  40. wbcore-2.2.1/wbcore/content_type/serializers.py +89 -0
  41. wbcore-2.2.1/wbcore/content_type/utils.py +30 -0
  42. wbcore-2.2.1/wbcore/content_type/viewsets.py +80 -0
  43. wbcore-2.2.1/wbcore/contrib/__init__.py +0 -0
  44. wbcore-2.2.1/wbcore/contrib/agenda/__init__.py +0 -0
  45. wbcore-2.2.1/wbcore/contrib/agenda/admin/__init__.py +2 -0
  46. wbcore-2.2.1/wbcore/contrib/agenda/admin/calendar_item.py +13 -0
  47. wbcore-2.2.1/wbcore/contrib/agenda/admin/conference_room.py +18 -0
  48. wbcore-2.2.1/wbcore/contrib/agenda/apps.py +6 -0
  49. wbcore-2.2.1/wbcore/contrib/agenda/configurations.py +11 -0
  50. wbcore-2.2.1/wbcore/contrib/agenda/factories/__init__.py +2 -0
  51. wbcore-2.2.1/wbcore/contrib/agenda/factories/calendar_item.py +47 -0
  52. wbcore-2.2.1/wbcore/contrib/agenda/factories/conference_room.py +19 -0
  53. wbcore-2.2.1/wbcore/contrib/agenda/filters/__init__.py +2 -0
  54. wbcore-2.2.1/wbcore/contrib/agenda/filters/calendar_item.py +64 -0
  55. wbcore-2.2.1/wbcore/contrib/agenda/filters/conference_room.py +41 -0
  56. wbcore-2.2.1/wbcore/contrib/agenda/locale/de/LC_MESSAGES/django.po +113 -0
  57. wbcore-2.2.1/wbcore/contrib/agenda/migrations/0001_initial.py +84 -0
  58. wbcore-2.2.1/wbcore/contrib/agenda/migrations/0002_initial.py +26 -0
  59. wbcore-2.2.1/wbcore/contrib/agenda/migrations/0003_calendaritem_endpoint_basename.py +42 -0
  60. wbcore-2.2.1/wbcore/contrib/agenda/migrations/0004_alter_calendaritem_item_type.py +17 -0
  61. wbcore-2.2.1/wbcore/contrib/agenda/migrations/0005_building_and_more.py +94 -0
  62. wbcore-2.2.1/wbcore/contrib/agenda/migrations/0006_calendaritem_is_deletable.py +17 -0
  63. wbcore-2.2.1/wbcore/contrib/agenda/migrations/0007_alter_calendaritem_options.py +21 -0
  64. wbcore-2.2.1/wbcore/contrib/agenda/migrations/0008_alter_calendaritem_item_type.py +17 -0
  65. wbcore-2.2.1/wbcore/contrib/agenda/migrations/0009_alter_calendaritem_icon.py +18 -0
  66. wbcore-2.2.1/wbcore/contrib/agenda/migrations/__init__.py +0 -0
  67. wbcore-2.2.1/wbcore/contrib/agenda/models/__init__.py +2 -0
  68. wbcore-2.2.1/wbcore/contrib/agenda/models/calendar_item.py +238 -0
  69. wbcore-2.2.1/wbcore/contrib/agenda/models/conference_room.py +95 -0
  70. wbcore-2.2.1/wbcore/contrib/agenda/release_notes/1_0_0.md +13 -0
  71. wbcore-2.2.1/wbcore/contrib/agenda/release_notes/__init__.py +0 -0
  72. wbcore-2.2.1/wbcore/contrib/agenda/serializers/__init__.py +10 -0
  73. wbcore-2.2.1/wbcore/contrib/agenda/serializers/calendar_item.py +76 -0
  74. wbcore-2.2.1/wbcore/contrib/agenda/serializers/conference_room.py +98 -0
  75. wbcore-2.2.1/wbcore/contrib/agenda/signals.py +8 -0
  76. wbcore-2.2.1/wbcore/contrib/agenda/static/agenda/markdown/documentation/building.md +11 -0
  77. wbcore-2.2.1/wbcore/contrib/agenda/static/agenda/markdown/documentation/conferenceroom.md +20 -0
  78. wbcore-2.2.1/wbcore/contrib/agenda/tests/__init__.py +0 -0
  79. wbcore-2.2.1/wbcore/contrib/agenda/tests/conftest.py +14 -0
  80. wbcore-2.2.1/wbcore/contrib/agenda/tests/signals.py +16 -0
  81. wbcore-2.2.1/wbcore/contrib/agenda/tests/test_models.py +34 -0
  82. wbcore-2.2.1/wbcore/contrib/agenda/tests/test_viewsets.py +171 -0
  83. wbcore-2.2.1/wbcore/contrib/agenda/tests/tests.py +25 -0
  84. wbcore-2.2.1/wbcore/contrib/agenda/typings.py +19 -0
  85. wbcore-2.2.1/wbcore/contrib/agenda/urls.py +25 -0
  86. wbcore-2.2.1/wbcore/contrib/agenda/viewsets/__init__.py +13 -0
  87. wbcore-2.2.1/wbcore/contrib/agenda/viewsets/buttons/__init__.py +1 -0
  88. wbcore-2.2.1/wbcore/contrib/agenda/viewsets/buttons/conference_room.py +20 -0
  89. wbcore-2.2.1/wbcore/contrib/agenda/viewsets/calendar_items.py +168 -0
  90. wbcore-2.2.1/wbcore/contrib/agenda/viewsets/conference_room.py +48 -0
  91. wbcore-2.2.1/wbcore/contrib/agenda/viewsets/display/__init__.py +2 -0
  92. wbcore-2.2.1/wbcore/contrib/agenda/viewsets/display/calendar_items.py +17 -0
  93. wbcore-2.2.1/wbcore/contrib/agenda/viewsets/display/conference_room.py +41 -0
  94. wbcore-2.2.1/wbcore/contrib/agenda/viewsets/endpoints/__init__.py +1 -0
  95. wbcore-2.2.1/wbcore/contrib/agenda/viewsets/endpoints/calendar_items.py +18 -0
  96. wbcore-2.2.1/wbcore/contrib/agenda/viewsets/menu/__init__.py +2 -0
  97. wbcore-2.2.1/wbcore/contrib/agenda/viewsets/menu/calendar_items.py +17 -0
  98. wbcore-2.2.1/wbcore/contrib/agenda/viewsets/menu/conference_room.py +37 -0
  99. wbcore-2.2.1/wbcore/contrib/agenda/viewsets/titles/__init__.py +2 -0
  100. wbcore-2.2.1/wbcore/contrib/agenda/viewsets/titles/calendar_items.py +7 -0
  101. wbcore-2.2.1/wbcore/contrib/agenda/viewsets/titles/conference_room.py +24 -0
  102. wbcore-2.2.1/wbcore/contrib/ai/__init__.py +0 -0
  103. wbcore-2.2.1/wbcore/contrib/ai/apps.py +5 -0
  104. wbcore-2.2.1/wbcore/contrib/ai/exceptions.py +42 -0
  105. wbcore-2.2.1/wbcore/contrib/ai/llm/__init__.py +0 -0
  106. wbcore-2.2.1/wbcore/contrib/ai/llm/config.py +107 -0
  107. wbcore-2.2.1/wbcore/contrib/ai/llm/decorators.py +10 -0
  108. wbcore-2.2.1/wbcore/contrib/ai/llm/mixins.py +35 -0
  109. wbcore-2.2.1/wbcore/contrib/ai/llm/utils.py +45 -0
  110. wbcore-2.2.1/wbcore/contrib/authentication/__init__.py +9 -0
  111. wbcore-2.2.1/wbcore/contrib/authentication/admin.py +247 -0
  112. wbcore-2.2.1/wbcore/contrib/authentication/apps.py +14 -0
  113. wbcore-2.2.1/wbcore/contrib/authentication/authentication.py +162 -0
  114. wbcore-2.2.1/wbcore/contrib/authentication/configs.py +9 -0
  115. wbcore-2.2.1/wbcore/contrib/authentication/configurations.py +53 -0
  116. wbcore-2.2.1/wbcore/contrib/authentication/dynamic_preferences_registry.py +26 -0
  117. wbcore-2.2.1/wbcore/contrib/authentication/factories/__init__.py +3 -0
  118. wbcore-2.2.1/wbcore/contrib/authentication/factories/tokens.py +15 -0
  119. wbcore-2.2.1/wbcore/contrib/authentication/factories/users.py +82 -0
  120. wbcore-2.2.1/wbcore/contrib/authentication/factories/users_activities.py +19 -0
  121. wbcore-2.2.1/wbcore/contrib/authentication/filters.py +18 -0
  122. wbcore-2.2.1/wbcore/contrib/authentication/fixtures/authentication.json +62 -0
  123. wbcore-2.2.1/wbcore/contrib/authentication/locale/de/LC_MESSAGES/django.po +610 -0
  124. wbcore-2.2.1/wbcore/contrib/authentication/management/__init__.py +14 -0
  125. wbcore-2.2.1/wbcore/contrib/authentication/migrations/0001_initial_squashed.py +174 -0
  126. wbcore-2.2.1/wbcore/contrib/authentication/migrations/0002_profile.py +26 -0
  127. wbcore-2.2.1/wbcore/contrib/authentication/migrations/0003_alter_user_profile.py +34 -0
  128. wbcore-2.2.1/wbcore/contrib/authentication/migrations/0004_token.py +51 -0
  129. wbcore-2.2.1/wbcore/contrib/authentication/migrations/0005_user_external_calendar_settings.py +17 -0
  130. wbcore-2.2.1/wbcore/contrib/authentication/migrations/0006_auto_20231206_1422.py +13 -0
  131. wbcore-2.2.1/wbcore/contrib/authentication/migrations/__init__.py +0 -0
  132. wbcore-2.2.1/wbcore/contrib/authentication/models/__init__.py +3 -0
  133. wbcore-2.2.1/wbcore/contrib/authentication/models/tokens.py +140 -0
  134. wbcore-2.2.1/wbcore/contrib/authentication/models/users.py +225 -0
  135. wbcore-2.2.1/wbcore/contrib/authentication/models/users_activities.py +112 -0
  136. wbcore-2.2.1/wbcore/contrib/authentication/release_notes/1_0_0.md +13 -0
  137. wbcore-2.2.1/wbcore/contrib/authentication/release_notes/__init__.py +0 -0
  138. wbcore-2.2.1/wbcore/contrib/authentication/serializers/__init__.py +14 -0
  139. wbcore-2.2.1/wbcore/contrib/authentication/serializers/users.py +350 -0
  140. wbcore-2.2.1/wbcore/contrib/authentication/serializers/users_activites.py +37 -0
  141. wbcore-2.2.1/wbcore/contrib/authentication/tasks.py +29 -0
  142. wbcore-2.2.1/wbcore/contrib/authentication/templates/activate_confirm.html +12 -0
  143. wbcore-2.2.1/wbcore/contrib/authentication/templates/base.html +135 -0
  144. wbcore-2.2.1/wbcore/contrib/authentication/templates/email_base_template.html +335 -0
  145. wbcore-2.2.1/wbcore/contrib/authentication/templates/password_reset_done.html +13 -0
  146. wbcore-2.2.1/wbcore/contrib/authentication/templates/password_reset_email.html +11 -0
  147. wbcore-2.2.1/wbcore/contrib/authentication/templates/password_reset_email_html.html +43 -0
  148. wbcore-2.2.1/wbcore/contrib/authentication/templates/password_reset_form.html +23 -0
  149. wbcore-2.2.1/wbcore/contrib/authentication/templates/password_reset_sent.html +11 -0
  150. wbcore-2.2.1/wbcore/contrib/authentication/templates/reset_password.html +15 -0
  151. wbcore-2.2.1/wbcore/contrib/authentication/templates/user_registration_email.html +37 -0
  152. wbcore-2.2.1/wbcore/contrib/authentication/tests/__init__.py +0 -0
  153. wbcore-2.2.1/wbcore/contrib/authentication/tests/conftest.py +18 -0
  154. wbcore-2.2.1/wbcore/contrib/authentication/tests/e2e/__init__.py +1 -0
  155. wbcore-2.2.1/wbcore/contrib/authentication/tests/e2e/e2e_auth_utility.py +20 -0
  156. wbcore-2.2.1/wbcore/contrib/authentication/tests/signals.py +17 -0
  157. wbcore-2.2.1/wbcore/contrib/authentication/tests/test_configs.py +6 -0
  158. wbcore-2.2.1/wbcore/contrib/authentication/tests/test_serializers.py +6 -0
  159. wbcore-2.2.1/wbcore/contrib/authentication/tests/test_tasks.py +33 -0
  160. wbcore-2.2.1/wbcore/contrib/authentication/tests/test_tokens.py +126 -0
  161. wbcore-2.2.1/wbcore/contrib/authentication/tests/test_users.py +338 -0
  162. wbcore-2.2.1/wbcore/contrib/authentication/tests/test_viewsets.py +6 -0
  163. wbcore-2.2.1/wbcore/contrib/authentication/tests/tests.py +15 -0
  164. wbcore-2.2.1/wbcore/contrib/authentication/urls.py +97 -0
  165. wbcore-2.2.1/wbcore/contrib/authentication/utils.py +10 -0
  166. wbcore-2.2.1/wbcore/contrib/authentication/viewsets/__init__.py +19 -0
  167. wbcore-2.2.1/wbcore/contrib/authentication/viewsets/buttons/__init__.py +1 -0
  168. wbcore-2.2.1/wbcore/contrib/authentication/viewsets/buttons/users.py +55 -0
  169. wbcore-2.2.1/wbcore/contrib/authentication/viewsets/display/__init__.py +6 -0
  170. wbcore-2.2.1/wbcore/contrib/authentication/viewsets/display/user_activities.py +85 -0
  171. wbcore-2.2.1/wbcore/contrib/authentication/viewsets/display/users.py +72 -0
  172. wbcore-2.2.1/wbcore/contrib/authentication/viewsets/endpoints/__init__.py +6 -0
  173. wbcore-2.2.1/wbcore/contrib/authentication/viewsets/endpoints/user_activities.py +22 -0
  174. wbcore-2.2.1/wbcore/contrib/authentication/viewsets/endpoints/users.py +20 -0
  175. wbcore-2.2.1/wbcore/contrib/authentication/viewsets/menu/__init__.py +6 -0
  176. wbcore-2.2.1/wbcore/contrib/authentication/viewsets/menu/user_activities.py +39 -0
  177. wbcore-2.2.1/wbcore/contrib/authentication/viewsets/menu/users.py +16 -0
  178. wbcore-2.2.1/wbcore/contrib/authentication/viewsets/titles/__init__.py +12 -0
  179. wbcore-2.2.1/wbcore/contrib/authentication/viewsets/titles/user_activities.py +31 -0
  180. wbcore-2.2.1/wbcore/contrib/authentication/viewsets/titles/users.py +26 -0
  181. wbcore-2.2.1/wbcore/contrib/authentication/viewsets/user_activities.py +222 -0
  182. wbcore-2.2.1/wbcore/contrib/authentication/viewsets/users.py +328 -0
  183. wbcore-2.2.1/wbcore/contrib/color/admin.py +28 -0
  184. wbcore-2.2.1/wbcore/contrib/color/apps.py +5 -0
  185. wbcore-2.2.1/wbcore/contrib/color/enums.py +17 -0
  186. wbcore-2.2.1/wbcore/contrib/color/factories.py +10 -0
  187. wbcore-2.2.1/wbcore/contrib/color/fields.py +29 -0
  188. wbcore-2.2.1/wbcore/contrib/color/forms.py +13 -0
  189. wbcore-2.2.1/wbcore/contrib/color/migrations/0001_initial.py +33 -0
  190. wbcore-2.2.1/wbcore/contrib/color/migrations/0002_alter_colorgradient_colors.py +25 -0
  191. wbcore-2.2.1/wbcore/contrib/color/migrations/__init__.py +0 -0
  192. wbcore-2.2.1/wbcore/contrib/color/models.py +62 -0
  193. wbcore-2.2.1/wbcore/contrib/color/tests/conftest.py +10 -0
  194. wbcore-2.2.1/wbcore/contrib/color/tests/test_color_models.py +61 -0
  195. wbcore-2.2.1/wbcore/contrib/color/tests/test_fields.py +25 -0
  196. wbcore-2.2.1/wbcore/contrib/currency/__init__.py +0 -0
  197. wbcore-2.2.1/wbcore/contrib/currency/admin.py +32 -0
  198. wbcore-2.2.1/wbcore/contrib/currency/apps.py +5 -0
  199. wbcore-2.2.1/wbcore/contrib/currency/dynamic_preferences_registry.py +39 -0
  200. wbcore-2.2.1/wbcore/contrib/currency/factories.py +39 -0
  201. wbcore-2.2.1/wbcore/contrib/currency/fixtures/currency.yaml +1014 -0
  202. wbcore-2.2.1/wbcore/contrib/currency/fixtures/currency_fx_rate.yaml +73585 -0
  203. wbcore-2.2.1/wbcore/contrib/currency/import_export/__init__.py +0 -0
  204. wbcore-2.2.1/wbcore/contrib/currency/import_export/backends/__init__.py +1 -0
  205. wbcore-2.2.1/wbcore/contrib/currency/import_export/backends/fixerio/__init__.py +1 -0
  206. wbcore-2.2.1/wbcore/contrib/currency/import_export/backends/fixerio/currency_fx_rates.py +66 -0
  207. wbcore-2.2.1/wbcore/contrib/currency/import_export/backends/utils.py +5 -0
  208. wbcore-2.2.1/wbcore/contrib/currency/import_export/handlers/__init__.py +2 -0
  209. wbcore-2.2.1/wbcore/contrib/currency/import_export/handlers/currency.py +24 -0
  210. wbcore-2.2.1/wbcore/contrib/currency/import_export/handlers/currency_fx_rates.py +28 -0
  211. wbcore-2.2.1/wbcore/contrib/currency/import_export/parsers/__init__.py +0 -0
  212. wbcore-2.2.1/wbcore/contrib/currency/import_export/parsers/fixerio/__init__.py +0 -0
  213. wbcore-2.2.1/wbcore/contrib/currency/import_export/parsers/fixerio/currency_fx_rates.py +34 -0
  214. wbcore-2.2.1/wbcore/contrib/currency/migrations/0001_initial.py +89 -0
  215. wbcore-2.2.1/wbcore/contrib/currency/migrations/__init__.py +0 -0
  216. wbcore-2.2.1/wbcore/contrib/currency/models.py +176 -0
  217. wbcore-2.2.1/wbcore/contrib/currency/release_notes/1_0_0.md +13 -0
  218. wbcore-2.2.1/wbcore/contrib/currency/release_notes/__init__.py +0 -0
  219. wbcore-2.2.1/wbcore/contrib/currency/serializers.py +40 -0
  220. wbcore-2.2.1/wbcore/contrib/currency/tests/__init__.py +0 -0
  221. wbcore-2.2.1/wbcore/contrib/currency/tests/conftest.py +7 -0
  222. wbcore-2.2.1/wbcore/contrib/currency/tests/test_models.py +104 -0
  223. wbcore-2.2.1/wbcore/contrib/currency/tests/test_serializers.py +62 -0
  224. wbcore-2.2.1/wbcore/contrib/currency/tests/test_viewsets.py +197 -0
  225. wbcore-2.2.1/wbcore/contrib/currency/urls.py +19 -0
  226. wbcore-2.2.1/wbcore/contrib/currency/viewsets/__init__.py +2 -0
  227. wbcore-2.2.1/wbcore/contrib/currency/viewsets/buttons/__init__.py +0 -0
  228. wbcore-2.2.1/wbcore/contrib/currency/viewsets/currency.py +56 -0
  229. wbcore-2.2.1/wbcore/contrib/currency/viewsets/currency_fx_rates.py +32 -0
  230. wbcore-2.2.1/wbcore/contrib/currency/viewsets/display/__init__.py +2 -0
  231. wbcore-2.2.1/wbcore/contrib/currency/viewsets/display/currency.py +37 -0
  232. wbcore-2.2.1/wbcore/contrib/currency/viewsets/display/currency_fx_rates.py +9 -0
  233. wbcore-2.2.1/wbcore/contrib/currency/viewsets/endpoints/__init__.py +1 -0
  234. wbcore-2.2.1/wbcore/contrib/currency/viewsets/endpoints/currency_fx_rates.py +14 -0
  235. wbcore-2.2.1/wbcore/contrib/currency/viewsets/menu/__init__.py +1 -0
  236. wbcore-2.2.1/wbcore/contrib/currency/viewsets/menu/currency.py +8 -0
  237. wbcore-2.2.1/wbcore/contrib/currency/viewsets/preview/__init__.py +1 -0
  238. wbcore-2.2.1/wbcore/contrib/currency/viewsets/preview/currency.py +10 -0
  239. wbcore-2.2.1/wbcore/contrib/currency/viewsets/titles/__init__.py +2 -0
  240. wbcore-2.2.1/wbcore/contrib/currency/viewsets/titles/currency.py +6 -0
  241. wbcore-2.2.1/wbcore/contrib/currency/viewsets/titles/currency_fx_rates.py +8 -0
  242. wbcore-2.2.1/wbcore/contrib/dataloader/__init__.py +1 -0
  243. wbcore-2.2.1/wbcore/contrib/dataloader/apps.py +5 -0
  244. wbcore-2.2.1/wbcore/contrib/dataloader/dataloaders/__init__.py +2 -0
  245. wbcore-2.2.1/wbcore/contrib/dataloader/dataloaders/dataloaders.py +24 -0
  246. wbcore-2.2.1/wbcore/contrib/dataloader/dataloaders/proxies.py +81 -0
  247. wbcore-2.2.1/wbcore/contrib/dataloader/models/__init__.py +1 -0
  248. wbcore-2.2.1/wbcore/contrib/dataloader/models/entities.py +29 -0
  249. wbcore-2.2.1/wbcore/contrib/dataloader/models/querysets/__init__.py +1 -0
  250. wbcore-2.2.1/wbcore/contrib/dataloader/models/querysets/entities.py +27 -0
  251. wbcore-2.2.1/wbcore/contrib/dataloader/tests/__init__.py +0 -0
  252. wbcore-2.2.1/wbcore/contrib/dataloader/tests/conftest.py +26 -0
  253. wbcore-2.2.1/wbcore/contrib/dataloader/tests/test/__init__.py +0 -0
  254. wbcore-2.2.1/wbcore/contrib/dataloader/tests/test/dataloaders/__init__.py +0 -0
  255. wbcore-2.2.1/wbcore/contrib/dataloader/tests/test/dataloaders/dataloaders.py +18 -0
  256. wbcore-2.2.1/wbcore/contrib/dataloader/tests/test/dataloaders/protocols.py +6 -0
  257. wbcore-2.2.1/wbcore/contrib/dataloader/tests/test/dataloaders/proxies.py +11 -0
  258. wbcore-2.2.1/wbcore/contrib/dataloader/tests/test/factories.py +13 -0
  259. wbcore-2.2.1/wbcore/contrib/dataloader/tests/test/models.py +10 -0
  260. wbcore-2.2.1/wbcore/contrib/dataloader/tests/test_dataloaders.py +37 -0
  261. wbcore-2.2.1/wbcore/contrib/dataloader/tests/test_entities.py +12 -0
  262. wbcore-2.2.1/wbcore/contrib/dataloader/utils.py +17 -0
  263. wbcore-2.2.1/wbcore/contrib/directory/__init__.py +0 -0
  264. wbcore-2.2.1/wbcore/contrib/directory/admin/__init__.py +14 -0
  265. wbcore-2.2.1/wbcore/contrib/directory/admin/contacts.py +54 -0
  266. wbcore-2.2.1/wbcore/contrib/directory/admin/entries.py +230 -0
  267. wbcore-2.2.1/wbcore/contrib/directory/admin/relationships.py +73 -0
  268. wbcore-2.2.1/wbcore/contrib/directory/apps.py +6 -0
  269. wbcore-2.2.1/wbcore/contrib/directory/configs.py +8 -0
  270. wbcore-2.2.1/wbcore/contrib/directory/configurations.py +69 -0
  271. wbcore-2.2.1/wbcore/contrib/directory/dynamic_preferences_registry.py +61 -0
  272. wbcore-2.2.1/wbcore/contrib/directory/factories/__init__.py +34 -0
  273. wbcore-2.2.1/wbcore/contrib/directory/factories/contacts.py +71 -0
  274. wbcore-2.2.1/wbcore/contrib/directory/factories/entries.py +169 -0
  275. wbcore-2.2.1/wbcore/contrib/directory/factories/relationships.py +77 -0
  276. wbcore-2.2.1/wbcore/contrib/directory/filters/__init__.py +22 -0
  277. wbcore-2.2.1/wbcore/contrib/directory/filters/contacts.py +233 -0
  278. wbcore-2.2.1/wbcore/contrib/directory/filters/entries.py +247 -0
  279. wbcore-2.2.1/wbcore/contrib/directory/filters/relationships.py +89 -0
  280. wbcore-2.2.1/wbcore/contrib/directory/fixtures/directory.json +3924 -0
  281. wbcore-2.2.1/wbcore/contrib/directory/locale/de/LC_MESSAGES/django.po +1686 -0
  282. wbcore-2.2.1/wbcore/contrib/directory/migrations/0001_initial.py +871 -0
  283. wbcore-2.2.1/wbcore/contrib/directory/migrations/0002_auto_20230414_1553.py +42 -0
  284. wbcore-2.2.1/wbcore/contrib/directory/migrations/0003_remove_entry_last_event.py +16 -0
  285. wbcore-2.2.1/wbcore/contrib/directory/migrations/0004_entry_is_draft_entry.py +21 -0
  286. wbcore-2.2.1/wbcore/contrib/directory/migrations/0005_entry_salutation.py +17 -0
  287. wbcore-2.2.1/wbcore/contrib/directory/migrations/0006_employeremployeerelationship_position_name.py +23 -0
  288. wbcore-2.2.1/wbcore/contrib/directory/migrations/0007_alter_bankingcontact_options.py +20 -0
  289. wbcore-2.2.1/wbcore/contrib/directory/migrations/0008_bankingcontact_access.py +17 -0
  290. wbcore-2.2.1/wbcore/contrib/directory/migrations/0009_remove_entry_external_identfier_and_more.py +22 -0
  291. wbcore-2.2.1/wbcore/contrib/directory/migrations/__init__.py +0 -0
  292. wbcore-2.2.1/wbcore/contrib/directory/models/__init__.py +27 -0
  293. wbcore-2.2.1/wbcore/contrib/directory/models/contacts.py +554 -0
  294. wbcore-2.2.1/wbcore/contrib/directory/models/entries.py +889 -0
  295. wbcore-2.2.1/wbcore/contrib/directory/models/relationships.py +634 -0
  296. wbcore-2.2.1/wbcore/contrib/directory/preferences.py +10 -0
  297. wbcore-2.2.1/wbcore/contrib/directory/release_notes/1_0_0.md +13 -0
  298. wbcore-2.2.1/wbcore/contrib/directory/release_notes/1_0_1.md +13 -0
  299. wbcore-2.2.1/wbcore/contrib/directory/release_notes/__init__.py +0 -0
  300. wbcore-2.2.1/wbcore/contrib/directory/serializers/__init__.py +63 -0
  301. wbcore-2.2.1/wbcore/contrib/directory/serializers/companies.py +158 -0
  302. wbcore-2.2.1/wbcore/contrib/directory/serializers/contacts.py +404 -0
  303. wbcore-2.2.1/wbcore/contrib/directory/serializers/entries.py +344 -0
  304. wbcore-2.2.1/wbcore/contrib/directory/serializers/entry_representations.py +35 -0
  305. wbcore-2.2.1/wbcore/contrib/directory/serializers/persons.py +209 -0
  306. wbcore-2.2.1/wbcore/contrib/directory/serializers/relationships.py +332 -0
  307. wbcore-2.2.1/wbcore/contrib/directory/signals.py +3 -0
  308. wbcore-2.2.1/wbcore/contrib/directory/static/directory/markdown/documentation/address.md +38 -0
  309. wbcore-2.2.1/wbcore/contrib/directory/static/directory/markdown/documentation/banking.md +54 -0
  310. wbcore-2.2.1/wbcore/contrib/directory/static/directory/markdown/documentation/bankingentry.md +38 -0
  311. wbcore-2.2.1/wbcore/contrib/directory/static/directory/markdown/documentation/clientmanagerrelationship.md +42 -0
  312. wbcore-2.2.1/wbcore/contrib/directory/static/directory/markdown/documentation/company.md +52 -0
  313. wbcore-2.2.1/wbcore/contrib/directory/static/directory/markdown/documentation/companytype.md +2 -0
  314. wbcore-2.2.1/wbcore/contrib/directory/static/directory/markdown/documentation/customerstatus.md +2 -0
  315. wbcore-2.2.1/wbcore/contrib/directory/static/directory/markdown/documentation/email.md +20 -0
  316. wbcore-2.2.1/wbcore/contrib/directory/static/directory/markdown/documentation/employeecompany.md +34 -0
  317. wbcore-2.2.1/wbcore/contrib/directory/static/directory/markdown/documentation/employerperson.md +43 -0
  318. wbcore-2.2.1/wbcore/contrib/directory/static/directory/markdown/documentation/person.md +61 -0
  319. wbcore-2.2.1/wbcore/contrib/directory/static/directory/markdown/documentation/position.md +2 -0
  320. wbcore-2.2.1/wbcore/contrib/directory/static/directory/markdown/documentation/relationshiptype.md +2 -0
  321. wbcore-2.2.1/wbcore/contrib/directory/static/directory/markdown/documentation/socialmedia.md +23 -0
  322. wbcore-2.2.1/wbcore/contrib/directory/static/directory/markdown/documentation/specialization.md +2 -0
  323. wbcore-2.2.1/wbcore/contrib/directory/static/directory/markdown/documentation/systememployee.md +31 -0
  324. wbcore-2.2.1/wbcore/contrib/directory/static/directory/markdown/documentation/telephone.md +23 -0
  325. wbcore-2.2.1/wbcore/contrib/directory/static/directory/markdown/documentation/telephonesearch.md +26 -0
  326. wbcore-2.2.1/wbcore/contrib/directory/static/directory/markdown/documentation/userisclient.md +14 -0
  327. wbcore-2.2.1/wbcore/contrib/directory/static/directory/markdown/documentation/userismanager.md +28 -0
  328. wbcore-2.2.1/wbcore/contrib/directory/static/directory/markdown/documentation/website.md +20 -0
  329. wbcore-2.2.1/wbcore/contrib/directory/tests/__init__.py +0 -0
  330. wbcore-2.2.1/wbcore/contrib/directory/tests/conftest.py +60 -0
  331. wbcore-2.2.1/wbcore/contrib/directory/tests/disable_signals.py +52 -0
  332. wbcore-2.2.1/wbcore/contrib/directory/tests/e2e/__init__.py +7 -0
  333. wbcore-2.2.1/wbcore/contrib/directory/tests/e2e/e2e_directory_utility.py +162 -0
  334. wbcore-2.2.1/wbcore/contrib/directory/tests/signals.py +90 -0
  335. wbcore-2.2.1/wbcore/contrib/directory/tests/test_configs.py +6 -0
  336. wbcore-2.2.1/wbcore/contrib/directory/tests/test_filters.py +59 -0
  337. wbcore-2.2.1/wbcore/contrib/directory/tests/test_models.py +285 -0
  338. wbcore-2.2.1/wbcore/contrib/directory/tests/test_permissions.py +122 -0
  339. wbcore-2.2.1/wbcore/contrib/directory/tests/test_serializers.py +201 -0
  340. wbcore-2.2.1/wbcore/contrib/directory/tests/test_viewsets.py +677 -0
  341. wbcore-2.2.1/wbcore/contrib/directory/tests/tests.py +130 -0
  342. wbcore-2.2.1/wbcore/contrib/directory/typings.py +17 -0
  343. wbcore-2.2.1/wbcore/contrib/directory/urls.py +135 -0
  344. wbcore-2.2.1/wbcore/contrib/directory/viewsets/__init__.py +58 -0
  345. wbcore-2.2.1/wbcore/contrib/directory/viewsets/buttons/__init__.py +7 -0
  346. wbcore-2.2.1/wbcore/contrib/directory/viewsets/buttons/contacts.py +16 -0
  347. wbcore-2.2.1/wbcore/contrib/directory/viewsets/buttons/entries.py +133 -0
  348. wbcore-2.2.1/wbcore/contrib/directory/viewsets/buttons/relationships.py +31 -0
  349. wbcore-2.2.1/wbcore/contrib/directory/viewsets/contacts.py +393 -0
  350. wbcore-2.2.1/wbcore/contrib/directory/viewsets/display/__init__.py +36 -0
  351. wbcore-2.2.1/wbcore/contrib/directory/viewsets/display/contacts.py +380 -0
  352. wbcore-2.2.1/wbcore/contrib/directory/viewsets/display/entries.py +501 -0
  353. wbcore-2.2.1/wbcore/contrib/directory/viewsets/display/relationships.py +315 -0
  354. wbcore-2.2.1/wbcore/contrib/directory/viewsets/display/utils.py +33 -0
  355. wbcore-2.2.1/wbcore/contrib/directory/viewsets/endpoints/__init__.py +22 -0
  356. wbcore-2.2.1/wbcore/contrib/directory/viewsets/endpoints/contacts.py +54 -0
  357. wbcore-2.2.1/wbcore/contrib/directory/viewsets/endpoints/entries.py +30 -0
  358. wbcore-2.2.1/wbcore/contrib/directory/viewsets/endpoints/relationships.py +105 -0
  359. wbcore-2.2.1/wbcore/contrib/directory/viewsets/entries.py +212 -0
  360. wbcore-2.2.1/wbcore/contrib/directory/viewsets/menu/__init__.py +16 -0
  361. wbcore-2.2.1/wbcore/contrib/directory/viewsets/menu/contacts.py +25 -0
  362. wbcore-2.2.1/wbcore/contrib/directory/viewsets/menu/entries.py +61 -0
  363. wbcore-2.2.1/wbcore/contrib/directory/viewsets/menu/relationships.py +31 -0
  364. wbcore-2.2.1/wbcore/contrib/directory/viewsets/menu/utils.py +72 -0
  365. wbcore-2.2.1/wbcore/contrib/directory/viewsets/mixins.py +11 -0
  366. wbcore-2.2.1/wbcore/contrib/directory/viewsets/previews/__init__.py +2 -0
  367. wbcore-2.2.1/wbcore/contrib/directory/viewsets/previews/contacts.py +18 -0
  368. wbcore-2.2.1/wbcore/contrib/directory/viewsets/previews/entries.py +31 -0
  369. wbcore-2.2.1/wbcore/contrib/directory/viewsets/relationships.py +241 -0
  370. wbcore-2.2.1/wbcore/contrib/directory/viewsets/titles/__init__.py +30 -0
  371. wbcore-2.2.1/wbcore/contrib/directory/viewsets/titles/contacts.py +122 -0
  372. wbcore-2.2.1/wbcore/contrib/directory/viewsets/titles/entries.py +29 -0
  373. wbcore-2.2.1/wbcore/contrib/directory/viewsets/titles/relationships.py +86 -0
  374. wbcore-2.2.1/wbcore/contrib/directory/viewsets/titles/utils.py +46 -0
  375. wbcore-2.2.1/wbcore/contrib/directory/viewsets/utils.py +101 -0
  376. wbcore-2.2.1/wbcore/contrib/documents/__init__.py +0 -0
  377. wbcore-2.2.1/wbcore/contrib/documents/admin.py +79 -0
  378. wbcore-2.2.1/wbcore/contrib/documents/apps.py +6 -0
  379. wbcore-2.2.1/wbcore/contrib/documents/factories.py +43 -0
  380. wbcore-2.2.1/wbcore/contrib/documents/filters.py +82 -0
  381. wbcore-2.2.1/wbcore/contrib/documents/fixtures/docments.json +135 -0
  382. wbcore-2.2.1/wbcore/contrib/documents/locale/de/LC_MESSAGES/django.po +272 -0
  383. wbcore-2.2.1/wbcore/contrib/documents/migrations/0001_initial.py +189 -0
  384. wbcore-2.2.1/wbcore/contrib/documents/migrations/0002_documentmodelrelationship_primary_and_more.py +22 -0
  385. wbcore-2.2.1/wbcore/contrib/documents/migrations/0003_alter_documentmodelrelationship_unique_together_and_more.py +30 -0
  386. wbcore-2.2.1/wbcore/contrib/documents/migrations/0004_auto_20240103_0958.py +44 -0
  387. wbcore-2.2.1/wbcore/contrib/documents/migrations/0005_document_valid_from_document_valid_until_and_more.py +32 -0
  388. wbcore-2.2.1/wbcore/contrib/documents/migrations/__init__.py +0 -0
  389. wbcore-2.2.1/wbcore/contrib/documents/models/__init__.py +4 -0
  390. wbcore-2.2.1/wbcore/contrib/documents/models/document_model_relationships.py +57 -0
  391. wbcore-2.2.1/wbcore/contrib/documents/models/document_types.py +35 -0
  392. wbcore-2.2.1/wbcore/contrib/documents/models/documents.py +309 -0
  393. wbcore-2.2.1/wbcore/contrib/documents/models/mixins.py +10 -0
  394. wbcore-2.2.1/wbcore/contrib/documents/models/shareable_links.py +90 -0
  395. wbcore-2.2.1/wbcore/contrib/documents/release_notes/1_0_0.md +13 -0
  396. wbcore-2.2.1/wbcore/contrib/documents/release_notes/__init__.py +0 -0
  397. wbcore-2.2.1/wbcore/contrib/documents/serializers/__init__.py +12 -0
  398. wbcore-2.2.1/wbcore/contrib/documents/serializers/document_model_relationships.py +31 -0
  399. wbcore-2.2.1/wbcore/contrib/documents/serializers/document_types.py +40 -0
  400. wbcore-2.2.1/wbcore/contrib/documents/serializers/documents.py +64 -0
  401. wbcore-2.2.1/wbcore/contrib/documents/serializers/shareable_links.py +90 -0
  402. wbcore-2.2.1/wbcore/contrib/documents/static/documents/markdown/documentation/document_types.md +21 -0
  403. wbcore-2.2.1/wbcore/contrib/documents/static/documents/markdown/documentation/documents.md +18 -0
  404. wbcore-2.2.1/wbcore/contrib/documents/static/documents/markdown/documentation/shareablelink.md +28 -0
  405. wbcore-2.2.1/wbcore/contrib/documents/static/documents/markdown/documentation/shareablelinkaccess.md +20 -0
  406. wbcore-2.2.1/wbcore/contrib/documents/tests/conftest.py +30 -0
  407. wbcore-2.2.1/wbcore/contrib/documents/tests/test_models.py +144 -0
  408. wbcore-2.2.1/wbcore/contrib/documents/urls.py +42 -0
  409. wbcore-2.2.1/wbcore/contrib/documents/viewsets/__init__.py +10 -0
  410. wbcore-2.2.1/wbcore/contrib/documents/viewsets/buttons/__init__.py +3 -0
  411. wbcore-2.2.1/wbcore/contrib/documents/viewsets/buttons/documents.py +53 -0
  412. wbcore-2.2.1/wbcore/contrib/documents/viewsets/buttons/shareable_links.py +20 -0
  413. wbcore-2.2.1/wbcore/contrib/documents/viewsets/buttons/signals.py +13 -0
  414. wbcore-2.2.1/wbcore/contrib/documents/viewsets/display/__init__.py +4 -0
  415. wbcore-2.2.1/wbcore/contrib/documents/viewsets/display/document_model_relationships.py +18 -0
  416. wbcore-2.2.1/wbcore/contrib/documents/viewsets/display/document_types.py +23 -0
  417. wbcore-2.2.1/wbcore/contrib/documents/viewsets/display/documents.py +101 -0
  418. wbcore-2.2.1/wbcore/contrib/documents/viewsets/display/shareable_links.py +65 -0
  419. wbcore-2.2.1/wbcore/contrib/documents/viewsets/document_model_relationships.py +25 -0
  420. wbcore-2.2.1/wbcore/contrib/documents/viewsets/document_types.py +37 -0
  421. wbcore-2.2.1/wbcore/contrib/documents/viewsets/documents.py +107 -0
  422. wbcore-2.2.1/wbcore/contrib/documents/viewsets/endpoints/__init__.py +5 -0
  423. wbcore-2.2.1/wbcore/contrib/documents/viewsets/endpoints/documents.py +19 -0
  424. wbcore-2.2.1/wbcore/contrib/documents/viewsets/endpoints/documents_model_relationships.py +13 -0
  425. wbcore-2.2.1/wbcore/contrib/documents/viewsets/endpoints/shareable_links.py +45 -0
  426. wbcore-2.2.1/wbcore/contrib/documents/viewsets/menu/__init__.py +1 -0
  427. wbcore-2.2.1/wbcore/contrib/documents/viewsets/menu/documents.py +24 -0
  428. wbcore-2.2.1/wbcore/contrib/documents/viewsets/previews/__init__.py +1 -0
  429. wbcore-2.2.1/wbcore/contrib/documents/viewsets/previews/documents.py +10 -0
  430. wbcore-2.2.1/wbcore/contrib/documents/viewsets/shareable_links.py +109 -0
  431. wbcore-2.2.1/wbcore/contrib/documents/viewsets/titles/__init__.py +3 -0
  432. wbcore-2.2.1/wbcore/contrib/documents/viewsets/titles/document_types.py +13 -0
  433. wbcore-2.2.1/wbcore/contrib/documents/viewsets/titles/documents.py +26 -0
  434. wbcore-2.2.1/wbcore/contrib/documents/viewsets/titles/shareable_links.py +13 -0
  435. wbcore-2.2.1/wbcore/contrib/dynamic_preferences/__init__.py +0 -0
  436. wbcore-2.2.1/wbcore/contrib/dynamic_preferences/types.py +19 -0
  437. wbcore-2.2.1/wbcore/contrib/example_app/__init__.py +0 -0
  438. wbcore-2.2.1/wbcore/contrib/example_app/admin.py +117 -0
  439. wbcore-2.2.1/wbcore/contrib/example_app/apps.py +6 -0
  440. wbcore-2.2.1/wbcore/contrib/example_app/factories/__init__.py +8 -0
  441. wbcore-2.2.1/wbcore/contrib/example_app/factories/event.py +26 -0
  442. wbcore-2.2.1/wbcore/contrib/example_app/factories/league.py +15 -0
  443. wbcore-2.2.1/wbcore/contrib/example_app/factories/match.py +25 -0
  444. wbcore-2.2.1/wbcore/contrib/example_app/factories/person.py +32 -0
  445. wbcore-2.2.1/wbcore/contrib/example_app/factories/role.py +9 -0
  446. wbcore-2.2.1/wbcore/contrib/example_app/factories/sport.py +12 -0
  447. wbcore-2.2.1/wbcore/contrib/example_app/factories/stadium.py +12 -0
  448. wbcore-2.2.1/wbcore/contrib/example_app/factories/team.py +35 -0
  449. wbcore-2.2.1/wbcore/contrib/example_app/filters/__init__.py +9 -0
  450. wbcore-2.2.1/wbcore/contrib/example_app/filters/event.py +80 -0
  451. wbcore-2.2.1/wbcore/contrib/example_app/filters/league.py +74 -0
  452. wbcore-2.2.1/wbcore/contrib/example_app/filters/match.py +92 -0
  453. wbcore-2.2.1/wbcore/contrib/example_app/filters/person.py +77 -0
  454. wbcore-2.2.1/wbcore/contrib/example_app/filters/role.py +17 -0
  455. wbcore-2.2.1/wbcore/contrib/example_app/filters/sport.py +26 -0
  456. wbcore-2.2.1/wbcore/contrib/example_app/filters/stadium.py +30 -0
  457. wbcore-2.2.1/wbcore/contrib/example_app/filters/team.py +77 -0
  458. wbcore-2.2.1/wbcore/contrib/example_app/filters/teamresult.py +47 -0
  459. wbcore-2.2.1/wbcore/contrib/example_app/fixtures/example_app.json +7425 -0
  460. wbcore-2.2.1/wbcore/contrib/example_app/migrations/0001_initial.py +498 -0
  461. wbcore-2.2.1/wbcore/contrib/example_app/migrations/0002_sportperson_profile.py +49 -0
  462. wbcore-2.2.1/wbcore/contrib/example_app/migrations/0003_change_stadium_capacity.py +31 -0
  463. wbcore-2.2.1/wbcore/contrib/example_app/migrations/0004_alter_player_transfer_value.py +21 -0
  464. wbcore-2.2.1/wbcore/contrib/example_app/migrations/0005_sportperson_profile_image.py +23 -0
  465. wbcore-2.2.1/wbcore/contrib/example_app/migrations/0006_league_season_period_player_is_active_and_more.py +116 -0
  466. wbcore-2.2.1/wbcore/contrib/example_app/migrations/0007_alter_player_options_alter_team_options_and_more.py +40 -0
  467. wbcore-2.2.1/wbcore/contrib/example_app/migrations/__init__.py +0 -0
  468. wbcore-2.2.1/wbcore/contrib/example_app/models.py +906 -0
  469. wbcore-2.2.1/wbcore/contrib/example_app/serializers/__init__.py +31 -0
  470. wbcore-2.2.1/wbcore/contrib/example_app/serializers/league.py +111 -0
  471. wbcore-2.2.1/wbcore/contrib/example_app/serializers/match_event.py +304 -0
  472. wbcore-2.2.1/wbcore/contrib/example_app/serializers/person_team.py +280 -0
  473. wbcore-2.2.1/wbcore/contrib/example_app/serializers/role.py +16 -0
  474. wbcore-2.2.1/wbcore/contrib/example_app/serializers/season.py +53 -0
  475. wbcore-2.2.1/wbcore/contrib/example_app/serializers/sport.py +37 -0
  476. wbcore-2.2.1/wbcore/contrib/example_app/serializers/stadium.py +58 -0
  477. wbcore-2.2.1/wbcore/contrib/example_app/serializers/teamresult.py +43 -0
  478. wbcore-2.2.1/wbcore/contrib/example_app/tests/__init__.py +0 -0
  479. wbcore-2.2.1/wbcore/contrib/example_app/tests/conftest.py +13 -0
  480. wbcore-2.2.1/wbcore/contrib/example_app/tests/e2e/__init__.py +1 -0
  481. wbcore-2.2.1/wbcore/contrib/example_app/tests/e2e/e2e_example_app_utility.py +51 -0
  482. wbcore-2.2.1/wbcore/contrib/example_app/tests/e2e/test_league.py +69 -0
  483. wbcore-2.2.1/wbcore/contrib/example_app/tests/e2e/test_person.py +67 -0
  484. wbcore-2.2.1/wbcore/contrib/example_app/tests/e2e/test_teams.py +56 -0
  485. wbcore-2.2.1/wbcore/contrib/example_app/tests/signals.py +7 -0
  486. wbcore-2.2.1/wbcore/contrib/example_app/tests/test_displays.py +40 -0
  487. wbcore-2.2.1/wbcore/contrib/example_app/tests/test_filters.py +70 -0
  488. wbcore-2.2.1/wbcore/contrib/example_app/tests/test_models/test_event.py +87 -0
  489. wbcore-2.2.1/wbcore/contrib/example_app/tests/test_models/test_match.py +210 -0
  490. wbcore-2.2.1/wbcore/contrib/example_app/tests/test_models/test_others.py +159 -0
  491. wbcore-2.2.1/wbcore/contrib/example_app/tests/test_serializers/test_league_serializer.py +34 -0
  492. wbcore-2.2.1/wbcore/contrib/example_app/tests/test_serializers/test_match_serializer.py +134 -0
  493. wbcore-2.2.1/wbcore/contrib/example_app/tests/test_serializers/test_role_serializer.py +13 -0
  494. wbcore-2.2.1/wbcore/contrib/example_app/tests/test_serializers/test_sport_serializer.py +14 -0
  495. wbcore-2.2.1/wbcore/contrib/example_app/tests/test_serializers/test_stadium_serializer.py +14 -0
  496. wbcore-2.2.1/wbcore/contrib/example_app/tests/test_serializers/test_team_result_serializer.py +30 -0
  497. wbcore-2.2.1/wbcore/contrib/example_app/tests/test_serializers/test_team_serializer.py +70 -0
  498. wbcore-2.2.1/wbcore/contrib/example_app/tests/test_utils.py +25 -0
  499. wbcore-2.2.1/wbcore/contrib/example_app/tests/test_viewsets/test_event_viewset.py +162 -0
  500. wbcore-2.2.1/wbcore/contrib/example_app/tests/test_viewsets/test_league_viewset.py +84 -0
  501. wbcore-2.2.1/wbcore/contrib/example_app/tests/test_viewsets/test_match_viewset.py +65 -0
  502. wbcore-2.2.1/wbcore/contrib/example_app/tests/test_viewsets/test_person_viewset.py +166 -0
  503. wbcore-2.2.1/wbcore/contrib/example_app/tests/test_viewsets/test_role_viewset.py +75 -0
  504. wbcore-2.2.1/wbcore/contrib/example_app/tests/test_viewsets/test_sport_viewset.py +75 -0
  505. wbcore-2.2.1/wbcore/contrib/example_app/tests/test_viewsets/test_stadium_viewset.py +75 -0
  506. wbcore-2.2.1/wbcore/contrib/example_app/tests/test_viewsets/test_team_viewset.py +92 -0
  507. wbcore-2.2.1/wbcore/contrib/example_app/tests/test_viewsets/test_teamresult_viewset.py +58 -0
  508. wbcore-2.2.1/wbcore/contrib/example_app/tests/test_viewsets/test_utils_viewsets.py +124 -0
  509. wbcore-2.2.1/wbcore/contrib/example_app/urls.py +79 -0
  510. wbcore-2.2.1/wbcore/contrib/example_app/utils.py +20 -0
  511. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/__init__.py +29 -0
  512. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/buttons/__init__.py +2 -0
  513. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/buttons/person.py +18 -0
  514. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/buttons/team.py +23 -0
  515. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/displays/__init__.py +23 -0
  516. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/displays/event.py +186 -0
  517. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/displays/league.py +390 -0
  518. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/displays/match.py +264 -0
  519. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/displays/person.py +251 -0
  520. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/displays/role.py +16 -0
  521. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/displays/season.py +65 -0
  522. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/displays/sport.py +115 -0
  523. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/displays/stadium.py +149 -0
  524. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/displays/team.py +230 -0
  525. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/displays/teamresult.py +30 -0
  526. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/endpoints/__init__.py +12 -0
  527. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/endpoints/endpoints.py +79 -0
  528. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/event.py +287 -0
  529. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/league.py +72 -0
  530. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/match.py +119 -0
  531. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/menu/__init__.py +1 -0
  532. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/menu/menus.py +102 -0
  533. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/menus.py +63 -0
  534. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/person.py +133 -0
  535. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/role.py +25 -0
  536. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/season.py +23 -0
  537. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/sport.py +26 -0
  538. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/stadium.py +30 -0
  539. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/team.py +68 -0
  540. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/teamresult.py +106 -0
  541. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/titles/__init__.py +9 -0
  542. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/titles/event.py +41 -0
  543. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/titles/league.py +24 -0
  544. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/titles/match.py +34 -0
  545. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/titles/person.py +35 -0
  546. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/titles/role.py +13 -0
  547. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/titles/sport.py +13 -0
  548. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/titles/stadium.py +13 -0
  549. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/titles/team.py +24 -0
  550. wbcore-2.2.1/wbcore/contrib/example_app/viewsets/titles/teamresult.py +12 -0
  551. wbcore-2.2.1/wbcore/contrib/geography/__init__.py +0 -0
  552. wbcore-2.2.1/wbcore/contrib/geography/admin.py +30 -0
  553. wbcore-2.2.1/wbcore/contrib/geography/apps.py +5 -0
  554. wbcore-2.2.1/wbcore/contrib/geography/factories.py +46 -0
  555. wbcore-2.2.1/wbcore/contrib/geography/fixtures/geography.json +13454 -0
  556. wbcore-2.2.1/wbcore/contrib/geography/import_export/__init__.py +0 -0
  557. wbcore-2.2.1/wbcore/contrib/geography/import_export/resources/__init__.py +0 -0
  558. wbcore-2.2.1/wbcore/contrib/geography/import_export/resources/geography.py +10 -0
  559. wbcore-2.2.1/wbcore/contrib/geography/migrations/0001_initial.py +110 -0
  560. wbcore-2.2.1/wbcore/contrib/geography/migrations/__init__.py +0 -0
  561. wbcore-2.2.1/wbcore/contrib/geography/models.py +147 -0
  562. wbcore-2.2.1/wbcore/contrib/geography/release_notes/1_0_0.md +13 -0
  563. wbcore-2.2.1/wbcore/contrib/geography/release_notes/__init__.py +0 -0
  564. wbcore-2.2.1/wbcore/contrib/geography/serializers.py +32 -0
  565. wbcore-2.2.1/wbcore/contrib/geography/static/geography/markdown/documentation/geography.md +16 -0
  566. wbcore-2.2.1/wbcore/contrib/geography/tests/__init__.py +0 -0
  567. wbcore-2.2.1/wbcore/contrib/geography/tests/conftest.py +12 -0
  568. wbcore-2.2.1/wbcore/contrib/geography/tests/signals.py +7 -0
  569. wbcore-2.2.1/wbcore/contrib/geography/tests/test_models.py +12 -0
  570. wbcore-2.2.1/wbcore/contrib/geography/tests/test_serializers.py +7 -0
  571. wbcore-2.2.1/wbcore/contrib/geography/tests/test_viewsets.py +6 -0
  572. wbcore-2.2.1/wbcore/contrib/geography/tests/tests.py +12 -0
  573. wbcore-2.2.1/wbcore/contrib/geography/urls.py +12 -0
  574. wbcore-2.2.1/wbcore/contrib/geography/viewsets/__init__.py +1 -0
  575. wbcore-2.2.1/wbcore/contrib/geography/viewsets/buttons/__init__.py +0 -0
  576. wbcore-2.2.1/wbcore/contrib/geography/viewsets/display/__init__.py +1 -0
  577. wbcore-2.2.1/wbcore/contrib/geography/viewsets/display/geography.py +32 -0
  578. wbcore-2.2.1/wbcore/contrib/geography/viewsets/endpoints/__init__.py +0 -0
  579. wbcore-2.2.1/wbcore/contrib/geography/viewsets/geography.py +57 -0
  580. wbcore-2.2.1/wbcore/contrib/geography/viewsets/menu/__init__.py +1 -0
  581. wbcore-2.2.1/wbcore/contrib/geography/viewsets/menu/geography.py +8 -0
  582. wbcore-2.2.1/wbcore/contrib/geography/viewsets/preview/__init__.py +1 -0
  583. wbcore-2.2.1/wbcore/contrib/geography/viewsets/preview/geography.py +19 -0
  584. wbcore-2.2.1/wbcore/contrib/geography/viewsets/titles/__init__.py +0 -0
  585. wbcore-2.2.1/wbcore/contrib/geography/viewsets/titles/geography.py +14 -0
  586. wbcore-2.2.1/wbcore/contrib/gleap/__init__.py +0 -0
  587. wbcore-2.2.1/wbcore/contrib/gleap/apps.py +5 -0
  588. wbcore-2.2.1/wbcore/contrib/gleap/configs.py +11 -0
  589. wbcore-2.2.1/wbcore/contrib/gleap/configurations.py +6 -0
  590. wbcore-2.2.1/wbcore/contrib/gleap/hashes.py +13 -0
  591. wbcore-2.2.1/wbcore/contrib/gleap/tests/__init__.py +0 -0
  592. wbcore-2.2.1/wbcore/contrib/gleap/tests/conftest.py +1 -0
  593. wbcore-2.2.1/wbcore/contrib/gleap/tests/tests.py +29 -0
  594. wbcore-2.2.1/wbcore/contrib/gleap/urls.py +7 -0
  595. wbcore-2.2.1/wbcore/contrib/gleap/views.py +31 -0
  596. wbcore-2.2.1/wbcore/contrib/guardian/apps.py +6 -0
  597. wbcore-2.2.1/wbcore/contrib/guardian/configurations.py +3 -0
  598. wbcore-2.2.1/wbcore/contrib/guardian/filters.py +21 -0
  599. wbcore-2.2.1/wbcore/contrib/guardian/migrations/0001_initial.py +103 -0
  600. wbcore-2.2.1/wbcore/contrib/guardian/migrations/__init__.py +0 -0
  601. wbcore-2.2.1/wbcore/contrib/guardian/models/__init__.py +1 -0
  602. wbcore-2.2.1/wbcore/contrib/guardian/models/mixins.py +138 -0
  603. wbcore-2.2.1/wbcore/contrib/guardian/models/models.py +29 -0
  604. wbcore-2.2.1/wbcore/contrib/guardian/tasks.py +10 -0
  605. wbcore-2.2.1/wbcore/contrib/guardian/tests/__init__.py +0 -0
  606. wbcore-2.2.1/wbcore/contrib/guardian/tests/conftest.py +1 -0
  607. wbcore-2.2.1/wbcore/contrib/guardian/tests/test_model_mixins.py +93 -0
  608. wbcore-2.2.1/wbcore/contrib/guardian/tests/test_tasks.py +77 -0
  609. wbcore-2.2.1/wbcore/contrib/guardian/tests/test_utils.py +196 -0
  610. wbcore-2.2.1/wbcore/contrib/guardian/tests/test_viewsets.py +48 -0
  611. wbcore-2.2.1/wbcore/contrib/guardian/urls.py +12 -0
  612. wbcore-2.2.1/wbcore/contrib/guardian/utils.py +124 -0
  613. wbcore-2.2.1/wbcore/contrib/guardian/viewsets/__init__.py +1 -0
  614. wbcore-2.2.1/wbcore/contrib/guardian/viewsets/configs/__init__.py +4 -0
  615. wbcore-2.2.1/wbcore/contrib/guardian/viewsets/configs/buttons.py +27 -0
  616. wbcore-2.2.1/wbcore/contrib/guardian/viewsets/configs/displays.py +43 -0
  617. wbcore-2.2.1/wbcore/contrib/guardian/viewsets/configs/endpoints.py +18 -0
  618. wbcore-2.2.1/wbcore/contrib/guardian/viewsets/configs/titles.py +16 -0
  619. wbcore-2.2.1/wbcore/contrib/guardian/viewsets/mixins.py +6 -0
  620. wbcore-2.2.1/wbcore/contrib/guardian/viewsets/viewsets.py +139 -0
  621. wbcore-2.2.1/wbcore/contrib/icons/__init__.py +1 -0
  622. wbcore-2.2.1/wbcore/contrib/icons/apps.py +5 -0
  623. wbcore-2.2.1/wbcore/contrib/icons/backends/__init__.py +5 -0
  624. wbcore-2.2.1/wbcore/contrib/icons/backends/default.py +374 -0
  625. wbcore-2.2.1/wbcore/contrib/icons/backends/material.py +135 -0
  626. wbcore-2.2.1/wbcore/contrib/icons/icons.py +169 -0
  627. wbcore-2.2.1/wbcore/contrib/icons/models.py +11 -0
  628. wbcore-2.2.1/wbcore/contrib/icons/serializers.py +18 -0
  629. wbcore-2.2.1/wbcore/contrib/io/__init__.py +0 -0
  630. wbcore-2.2.1/wbcore/contrib/io/admin.py +150 -0
  631. wbcore-2.2.1/wbcore/contrib/io/apps.py +27 -0
  632. wbcore-2.2.1/wbcore/contrib/io/backends/__init__.py +5 -0
  633. wbcore-2.2.1/wbcore/contrib/io/backends/abstract.py +60 -0
  634. wbcore-2.2.1/wbcore/contrib/io/backends/mail.py +85 -0
  635. wbcore-2.2.1/wbcore/contrib/io/backends/sftp.py +63 -0
  636. wbcore-2.2.1/wbcore/contrib/io/backends/stream.py +92 -0
  637. wbcore-2.2.1/wbcore/contrib/io/backends/utils.py +42 -0
  638. wbcore-2.2.1/wbcore/contrib/io/configs/__init__.py +0 -0
  639. wbcore-2.2.1/wbcore/contrib/io/configs/endpoints.py +12 -0
  640. wbcore-2.2.1/wbcore/contrib/io/configurations/__init__.py +1 -0
  641. wbcore-2.2.1/wbcore/contrib/io/configurations/base.py +7 -0
  642. wbcore-2.2.1/wbcore/contrib/io/dynamic_preferences_registry.py +15 -0
  643. wbcore-2.2.1/wbcore/contrib/io/enums.py +15 -0
  644. wbcore-2.2.1/wbcore/contrib/io/exceptions.py +16 -0
  645. wbcore-2.2.1/wbcore/contrib/io/factories.py +202 -0
  646. wbcore-2.2.1/wbcore/contrib/io/fixtures/io.json +145 -0
  647. wbcore-2.2.1/wbcore/contrib/io/imports.py +305 -0
  648. wbcore-2.2.1/wbcore/contrib/io/locale/de/LC_MESSAGES/django.po +52 -0
  649. wbcore-2.2.1/wbcore/contrib/io/management/__init__.py +13 -0
  650. wbcore-2.2.1/wbcore/contrib/io/migrations/0001_initial_squashed.py +319 -0
  651. wbcore-2.2.1/wbcore/contrib/io/migrations/0002_importsource_creator.py +26 -0
  652. wbcore-2.2.1/wbcore/contrib/io/migrations/0003_auto_20240103_1000.py +46 -0
  653. wbcore-2.2.1/wbcore/contrib/io/migrations/0004_alter_importsource_status_exportsource.py +134 -0
  654. wbcore-2.2.1/wbcore/contrib/io/migrations/0005_exportsource_data_alter_exportsource_query_str_and_more.py +67 -0
  655. wbcore-2.2.1/wbcore/contrib/io/migrations/0006_alter_exportsource_query_params.py +20 -0
  656. wbcore-2.2.1/wbcore/contrib/io/migrations/0007_alter_exportsource_query_params.py +23 -0
  657. wbcore-2.2.1/wbcore/contrib/io/migrations/__init__.py +0 -0
  658. wbcore-2.2.1/wbcore/contrib/io/mixins.py +37 -0
  659. wbcore-2.2.1/wbcore/contrib/io/models.py +1005 -0
  660. wbcore-2.2.1/wbcore/contrib/io/release_notes/1_0_0.md +13 -0
  661. wbcore-2.2.1/wbcore/contrib/io/release_notes/__init__.py +0 -0
  662. wbcore-2.2.1/wbcore/contrib/io/resources.py +177 -0
  663. wbcore-2.2.1/wbcore/contrib/io/serializers.py +136 -0
  664. wbcore-2.2.1/wbcore/contrib/io/tests/__init__.py +0 -0
  665. wbcore-2.2.1/wbcore/contrib/io/tests/conftest.py +42 -0
  666. wbcore-2.2.1/wbcore/contrib/io/tests/test_backends.py +128 -0
  667. wbcore-2.2.1/wbcore/contrib/io/tests/test_exports.py +130 -0
  668. wbcore-2.2.1/wbcore/contrib/io/tests/test_imports.py +167 -0
  669. wbcore-2.2.1/wbcore/contrib/io/tests/test_models.py +363 -0
  670. wbcore-2.2.1/wbcore/contrib/io/tests/tests.py +18 -0
  671. wbcore-2.2.1/wbcore/contrib/io/urls.py +28 -0
  672. wbcore-2.2.1/wbcore/contrib/io/utils.py +44 -0
  673. wbcore-2.2.1/wbcore/contrib/io/viewset_mixins.py +301 -0
  674. wbcore-2.2.1/wbcore/contrib/io/viewsets.py +138 -0
  675. wbcore-2.2.1/wbcore/contrib/notifications/__init__.py +0 -0
  676. wbcore-2.2.1/wbcore/contrib/notifications/admin.py +61 -0
  677. wbcore-2.2.1/wbcore/contrib/notifications/apps.py +38 -0
  678. wbcore-2.2.1/wbcore/contrib/notifications/backends/__init__.py +0 -0
  679. wbcore-2.2.1/wbcore/contrib/notifications/backends/abstract_backend.py +13 -0
  680. wbcore-2.2.1/wbcore/contrib/notifications/backends/console/__init__.py +1 -0
  681. wbcore-2.2.1/wbcore/contrib/notifications/backends/console/backends.py +25 -0
  682. wbcore-2.2.1/wbcore/contrib/notifications/backends/firebase/__init__.py +1 -0
  683. wbcore-2.2.1/wbcore/contrib/notifications/backends/firebase/backends.py +102 -0
  684. wbcore-2.2.1/wbcore/contrib/notifications/configs.py +12 -0
  685. wbcore-2.2.1/wbcore/contrib/notifications/configurations.py +9 -0
  686. wbcore-2.2.1/wbcore/contrib/notifications/dispatch.py +71 -0
  687. wbcore-2.2.1/wbcore/contrib/notifications/factories/__init__.py +0 -0
  688. wbcore-2.2.1/wbcore/contrib/notifications/factories/notification_types.py +22 -0
  689. wbcore-2.2.1/wbcore/contrib/notifications/factories/notifications.py +16 -0
  690. wbcore-2.2.1/wbcore/contrib/notifications/factories/tokens.py +11 -0
  691. wbcore-2.2.1/wbcore/contrib/notifications/locale/de/LC_MESSAGES/django.po +60 -0
  692. wbcore-2.2.1/wbcore/contrib/notifications/migrations/0001_initial.py +116 -0
  693. wbcore-2.2.1/wbcore/contrib/notifications/migrations/0002_notificationusertoken_unique_user_token_device.py +18 -0
  694. wbcore-2.2.1/wbcore/contrib/notifications/migrations/0003_notificationusertoken_updated.py +17 -0
  695. wbcore-2.2.1/wbcore/contrib/notifications/migrations/0004_alter_notification_body.py +17 -0
  696. wbcore-2.2.1/wbcore/contrib/notifications/migrations/0005_alter_notification_endpoint.py +17 -0
  697. wbcore-2.2.1/wbcore/contrib/notifications/migrations/0006_notification_created.py +25 -0
  698. wbcore-2.2.1/wbcore/contrib/notifications/migrations/__init__.py +0 -0
  699. wbcore-2.2.1/wbcore/contrib/notifications/models/__init__.py +3 -0
  700. wbcore-2.2.1/wbcore/contrib/notifications/models/notification_types.py +112 -0
  701. wbcore-2.2.1/wbcore/contrib/notifications/models/notifications.py +81 -0
  702. wbcore-2.2.1/wbcore/contrib/notifications/models/tokens.py +45 -0
  703. wbcore-2.2.1/wbcore/contrib/notifications/release_notes/1_0_0.md +13 -0
  704. wbcore-2.2.1/wbcore/contrib/notifications/release_notes/__init__.py +0 -0
  705. wbcore-2.2.1/wbcore/contrib/notifications/serializers/__init__.py +5 -0
  706. wbcore-2.2.1/wbcore/contrib/notifications/serializers/notification_types.py +36 -0
  707. wbcore-2.2.1/wbcore/contrib/notifications/serializers/notifications.py +33 -0
  708. wbcore-2.2.1/wbcore/contrib/notifications/static/notifications/service-worker.js +1 -0
  709. wbcore-2.2.1/wbcore/contrib/notifications/tasks.py +55 -0
  710. wbcore-2.2.1/wbcore/contrib/notifications/templates/notifications/notification_template.html +43 -0
  711. wbcore-2.2.1/wbcore/contrib/notifications/tests/__init__.py +0 -0
  712. wbcore-2.2.1/wbcore/contrib/notifications/tests/conftest.py +47 -0
  713. wbcore-2.2.1/wbcore/contrib/notifications/tests/test_backends/__init__.py +0 -0
  714. wbcore-2.2.1/wbcore/contrib/notifications/tests/test_backends/test_firebase.py +78 -0
  715. wbcore-2.2.1/wbcore/contrib/notifications/tests/test_configs.py +7 -0
  716. wbcore-2.2.1/wbcore/contrib/notifications/tests/test_models/__init__.py +0 -0
  717. wbcore-2.2.1/wbcore/contrib/notifications/tests/test_models/test_notification_types.py +84 -0
  718. wbcore-2.2.1/wbcore/contrib/notifications/tests/test_models/test_notifications.py +45 -0
  719. wbcore-2.2.1/wbcore/contrib/notifications/tests/test_models/test_tokens.py +21 -0
  720. wbcore-2.2.1/wbcore/contrib/notifications/tests/test_serializers/__init__.py +0 -0
  721. wbcore-2.2.1/wbcore/contrib/notifications/tests/test_serializers/test_notification_types.py +53 -0
  722. wbcore-2.2.1/wbcore/contrib/notifications/tests/test_serializers/test_notifications.py +23 -0
  723. wbcore-2.2.1/wbcore/contrib/notifications/tests/test_tasks.py +71 -0
  724. wbcore-2.2.1/wbcore/contrib/notifications/tests/test_utils.py +0 -0
  725. wbcore-2.2.1/wbcore/contrib/notifications/tests/test_viewsets/__init__.py +0 -0
  726. wbcore-2.2.1/wbcore/contrib/notifications/tests/test_viewsets/test_notification_types.py +121 -0
  727. wbcore-2.2.1/wbcore/contrib/notifications/tests/test_viewsets/test_notifications.py +120 -0
  728. wbcore-2.2.1/wbcore/contrib/notifications/urls.py +26 -0
  729. wbcore-2.2.1/wbcore/contrib/notifications/utils.py +20 -0
  730. wbcore-2.2.1/wbcore/contrib/notifications/views.py +62 -0
  731. wbcore-2.2.1/wbcore/contrib/notifications/viewsets/__init__.py +5 -0
  732. wbcore-2.2.1/wbcore/contrib/notifications/viewsets/configs/notification_types.py +27 -0
  733. wbcore-2.2.1/wbcore/contrib/notifications/viewsets/configs/notifications.py +85 -0
  734. wbcore-2.2.1/wbcore/contrib/notifications/viewsets/menus.py +14 -0
  735. wbcore-2.2.1/wbcore/contrib/notifications/viewsets/notification_types.py +40 -0
  736. wbcore-2.2.1/wbcore/contrib/notifications/viewsets/notifications.py +57 -0
  737. wbcore-2.2.1/wbcore/contrib/tags/__init__.py +0 -0
  738. wbcore-2.2.1/wbcore/contrib/tags/admin.py +17 -0
  739. wbcore-2.2.1/wbcore/contrib/tags/apps.py +9 -0
  740. wbcore-2.2.1/wbcore/contrib/tags/factories.py +27 -0
  741. wbcore-2.2.1/wbcore/contrib/tags/filters.py +42 -0
  742. wbcore-2.2.1/wbcore/contrib/tags/migrations/0001_initial.py +62 -0
  743. wbcore-2.2.1/wbcore/contrib/tags/migrations/__init__.py +0 -0
  744. wbcore-2.2.1/wbcore/contrib/tags/models/__init__.py +2 -0
  745. wbcore-2.2.1/wbcore/contrib/tags/models/mixins.py +27 -0
  746. wbcore-2.2.1/wbcore/contrib/tags/models/tags.py +103 -0
  747. wbcore-2.2.1/wbcore/contrib/tags/release_notes/1_0_0.md +13 -0
  748. wbcore-2.2.1/wbcore/contrib/tags/release_notes/__init__.py +0 -0
  749. wbcore-2.2.1/wbcore/contrib/tags/serializers.py +87 -0
  750. wbcore-2.2.1/wbcore/contrib/tags/signals.py +17 -0
  751. wbcore-2.2.1/wbcore/contrib/tags/tests/__init__.py +0 -0
  752. wbcore-2.2.1/wbcore/contrib/tags/tests/conftest.py +7 -0
  753. wbcore-2.2.1/wbcore/contrib/tags/tests/tests.py +17 -0
  754. wbcore-2.2.1/wbcore/contrib/tags/urls.py +14 -0
  755. wbcore-2.2.1/wbcore/contrib/tags/viewsets/__init__.py +8 -0
  756. wbcore-2.2.1/wbcore/contrib/tags/viewsets/display.py +50 -0
  757. wbcore-2.2.1/wbcore/contrib/tags/viewsets/menu.py +15 -0
  758. wbcore-2.2.1/wbcore/contrib/tags/viewsets/viewsets.py +58 -0
  759. wbcore-2.2.1/wbcore/contrib/workflow/__init__.py +1 -0
  760. wbcore-2.2.1/wbcore/contrib/workflow/admin/__init__.py +15 -0
  761. wbcore-2.2.1/wbcore/contrib/workflow/admin/condition.py +8 -0
  762. wbcore-2.2.1/wbcore/contrib/workflow/admin/data.py +14 -0
  763. wbcore-2.2.1/wbcore/contrib/workflow/admin/display.py +8 -0
  764. wbcore-2.2.1/wbcore/contrib/workflow/admin/process.py +36 -0
  765. wbcore-2.2.1/wbcore/contrib/workflow/admin/step.py +91 -0
  766. wbcore-2.2.1/wbcore/contrib/workflow/admin/transition.py +8 -0
  767. wbcore-2.2.1/wbcore/contrib/workflow/admin/workflow.py +8 -0
  768. wbcore-2.2.1/wbcore/contrib/workflow/apps.py +26 -0
  769. wbcore-2.2.1/wbcore/contrib/workflow/configs.py +10 -0
  770. wbcore-2.2.1/wbcore/contrib/workflow/decorators.py +25 -0
  771. wbcore-2.2.1/wbcore/contrib/workflow/dispatch.py +23 -0
  772. wbcore-2.2.1/wbcore/contrib/workflow/factories/__init__.py +18 -0
  773. wbcore-2.2.1/wbcore/contrib/workflow/factories/condition.py +15 -0
  774. wbcore-2.2.1/wbcore/contrib/workflow/factories/data.py +22 -0
  775. wbcore-2.2.1/wbcore/contrib/workflow/factories/display.py +27 -0
  776. wbcore-2.2.1/wbcore/contrib/workflow/factories/process.py +69 -0
  777. wbcore-2.2.1/wbcore/contrib/workflow/factories/step.py +155 -0
  778. wbcore-2.2.1/wbcore/contrib/workflow/factories/transition.py +25 -0
  779. wbcore-2.2.1/wbcore/contrib/workflow/factories/workflow.py +19 -0
  780. wbcore-2.2.1/wbcore/contrib/workflow/filters/__init__.py +24 -0
  781. wbcore-2.2.1/wbcore/contrib/workflow/filters/condition.py +23 -0
  782. wbcore-2.2.1/wbcore/contrib/workflow/filters/data.py +24 -0
  783. wbcore-2.2.1/wbcore/contrib/workflow/filters/process.py +164 -0
  784. wbcore-2.2.1/wbcore/contrib/workflow/filters/step.py +226 -0
  785. wbcore-2.2.1/wbcore/contrib/workflow/filters/transition.py +41 -0
  786. wbcore-2.2.1/wbcore/contrib/workflow/filters/workflow.py +43 -0
  787. wbcore-2.2.1/wbcore/contrib/workflow/fixtures/workflow.json +612 -0
  788. wbcore-2.2.1/wbcore/contrib/workflow/locale/de/LC_MESSAGES/django.po +1289 -0
  789. wbcore-2.2.1/wbcore/contrib/workflow/migrations/0001_initial.py +788 -0
  790. wbcore-2.2.1/wbcore/contrib/workflow/migrations/0002_alter_step_step_type.py +31 -0
  791. wbcore-2.2.1/wbcore/contrib/workflow/migrations/0003_alter_condition_attribute_name_and_more.py +75 -0
  792. wbcore-2.2.1/wbcore/contrib/workflow/migrations/0004_alter_userstep_assignee_method.py +27 -0
  793. wbcore-2.2.1/wbcore/contrib/workflow/migrations/0005_alter_userstep_assignee_method.py +17 -0
  794. wbcore-2.2.1/wbcore/contrib/workflow/migrations/__init__.py +0 -0
  795. wbcore-2.2.1/wbcore/contrib/workflow/models/__init__.py +19 -0
  796. wbcore-2.2.1/wbcore/contrib/workflow/models/condition.py +123 -0
  797. wbcore-2.2.1/wbcore/contrib/workflow/models/data.py +238 -0
  798. wbcore-2.2.1/wbcore/contrib/workflow/models/display.py +33 -0
  799. wbcore-2.2.1/wbcore/contrib/workflow/models/process.py +243 -0
  800. wbcore-2.2.1/wbcore/contrib/workflow/models/step.py +735 -0
  801. wbcore-2.2.1/wbcore/contrib/workflow/models/transition.py +70 -0
  802. wbcore-2.2.1/wbcore/contrib/workflow/models/workflow.py +307 -0
  803. wbcore-2.2.1/wbcore/contrib/workflow/serializers/__init__.py +37 -0
  804. wbcore-2.2.1/wbcore/contrib/workflow/serializers/condition.py +64 -0
  805. wbcore-2.2.1/wbcore/contrib/workflow/serializers/data.py +135 -0
  806. wbcore-2.2.1/wbcore/contrib/workflow/serializers/display.py +25 -0
  807. wbcore-2.2.1/wbcore/contrib/workflow/serializers/process.py +182 -0
  808. wbcore-2.2.1/wbcore/contrib/workflow/serializers/signals.py +25 -0
  809. wbcore-2.2.1/wbcore/contrib/workflow/serializers/step.py +364 -0
  810. wbcore-2.2.1/wbcore/contrib/workflow/serializers/transition.py +80 -0
  811. wbcore-2.2.1/wbcore/contrib/workflow/serializers/workflow.py +124 -0
  812. wbcore-2.2.1/wbcore/contrib/workflow/sites.py +43 -0
  813. wbcore-2.2.1/wbcore/contrib/workflow/static/workflow/markdown/documentation/assignedprocessstep.md +33 -0
  814. wbcore-2.2.1/wbcore/contrib/workflow/static/workflow/markdown/documentation/condition.md +24 -0
  815. wbcore-2.2.1/wbcore/contrib/workflow/static/workflow/markdown/documentation/decisionstep.md +30 -0
  816. wbcore-2.2.1/wbcore/contrib/workflow/static/workflow/markdown/documentation/emailstep.md +45 -0
  817. wbcore-2.2.1/wbcore/contrib/workflow/static/workflow/markdown/documentation/finishstep.md +33 -0
  818. wbcore-2.2.1/wbcore/contrib/workflow/static/workflow/markdown/documentation/joinstep.md +33 -0
  819. wbcore-2.2.1/wbcore/contrib/workflow/static/workflow/markdown/documentation/process.md +33 -0
  820. wbcore-2.2.1/wbcore/contrib/workflow/static/workflow/markdown/documentation/processstep.md +51 -0
  821. wbcore-2.2.1/wbcore/contrib/workflow/static/workflow/markdown/documentation/scriptstep.md +33 -0
  822. wbcore-2.2.1/wbcore/contrib/workflow/static/workflow/markdown/documentation/splitstep.md +30 -0
  823. wbcore-2.2.1/wbcore/contrib/workflow/static/workflow/markdown/documentation/startstep.md +27 -0
  824. wbcore-2.2.1/wbcore/contrib/workflow/static/workflow/markdown/documentation/transition.md +27 -0
  825. wbcore-2.2.1/wbcore/contrib/workflow/static/workflow/markdown/documentation/userstep.md +42 -0
  826. wbcore-2.2.1/wbcore/contrib/workflow/static/workflow/markdown/documentation/workflow.md +32 -0
  827. wbcore-2.2.1/wbcore/contrib/workflow/templates/Test_Templates.txt +25 -0
  828. wbcore-2.2.1/wbcore/contrib/workflow/tests/__init__.py +0 -0
  829. wbcore-2.2.1/wbcore/contrib/workflow/tests/conftest.py +57 -0
  830. wbcore-2.2.1/wbcore/contrib/workflow/tests/test_configs.py +6 -0
  831. wbcore-2.2.1/wbcore/contrib/workflow/tests/test_dispatch.py +88 -0
  832. wbcore-2.2.1/wbcore/contrib/workflow/tests/test_displays.py +119 -0
  833. wbcore-2.2.1/wbcore/contrib/workflow/tests/test_filters.py +86 -0
  834. wbcore-2.2.1/wbcore/contrib/workflow/tests/test_models/step/test_decision_step.py +79 -0
  835. wbcore-2.2.1/wbcore/contrib/workflow/tests/test_models/step/test_email_step.py +45 -0
  836. wbcore-2.2.1/wbcore/contrib/workflow/tests/test_models/step/test_finish_step.py +105 -0
  837. wbcore-2.2.1/wbcore/contrib/workflow/tests/test_models/step/test_join_step.py +127 -0
  838. wbcore-2.2.1/wbcore/contrib/workflow/tests/test_models/step/test_script_step.py +24 -0
  839. wbcore-2.2.1/wbcore/contrib/workflow/tests/test_models/step/test_split_step.py +49 -0
  840. wbcore-2.2.1/wbcore/contrib/workflow/tests/test_models/step/test_step.py +621 -0
  841. wbcore-2.2.1/wbcore/contrib/workflow/tests/test_models/step/test_user_step.py +225 -0
  842. wbcore-2.2.1/wbcore/contrib/workflow/tests/test_models/test_condition.py +103 -0
  843. wbcore-2.2.1/wbcore/contrib/workflow/tests/test_models/test_data.py +134 -0
  844. wbcore-2.2.1/wbcore/contrib/workflow/tests/test_models/test_process.py +98 -0
  845. wbcore-2.2.1/wbcore/contrib/workflow/tests/test_models/test_transition.py +128 -0
  846. wbcore-2.2.1/wbcore/contrib/workflow/tests/test_models/test_workflow.py +358 -0
  847. wbcore-2.2.1/wbcore/contrib/workflow/tests/test_serializers.py +177 -0
  848. wbcore-2.2.1/wbcore/contrib/workflow/tests/test_viewsets.py +358 -0
  849. wbcore-2.2.1/wbcore/contrib/workflow/tests/test_workflow_assignees.py +225 -0
  850. wbcore-2.2.1/wbcore/contrib/workflow/tests/tests.py +24 -0
  851. wbcore-2.2.1/wbcore/contrib/workflow/urls.py +66 -0
  852. wbcore-2.2.1/wbcore/contrib/workflow/utils.py +13 -0
  853. wbcore-2.2.1/wbcore/contrib/workflow/viewsets/__init__.py +17 -0
  854. wbcore-2.2.1/wbcore/contrib/workflow/viewsets/buttons/__init__.py +1 -0
  855. wbcore-2.2.1/wbcore/contrib/workflow/viewsets/buttons/step.py +67 -0
  856. wbcore-2.2.1/wbcore/contrib/workflow/viewsets/condition.py +32 -0
  857. wbcore-2.2.1/wbcore/contrib/workflow/viewsets/data.py +33 -0
  858. wbcore-2.2.1/wbcore/contrib/workflow/viewsets/display/__init__.py +15 -0
  859. wbcore-2.2.1/wbcore/contrib/workflow/viewsets/display/condition.py +50 -0
  860. wbcore-2.2.1/wbcore/contrib/workflow/viewsets/display/data.py +50 -0
  861. wbcore-2.2.1/wbcore/contrib/workflow/viewsets/display/process.py +185 -0
  862. wbcore-2.2.1/wbcore/contrib/workflow/viewsets/display/step.py +453 -0
  863. wbcore-2.2.1/wbcore/contrib/workflow/viewsets/display/transition.py +75 -0
  864. wbcore-2.2.1/wbcore/contrib/workflow/viewsets/display/workflow.py +167 -0
  865. wbcore-2.2.1/wbcore/contrib/workflow/viewsets/endpoints/__init__.py +5 -0
  866. wbcore-2.2.1/wbcore/contrib/workflow/viewsets/endpoints/condition.py +9 -0
  867. wbcore-2.2.1/wbcore/contrib/workflow/viewsets/endpoints/data.py +9 -0
  868. wbcore-2.2.1/wbcore/contrib/workflow/viewsets/endpoints/process.py +11 -0
  869. wbcore-2.2.1/wbcore/contrib/workflow/viewsets/endpoints/step.py +24 -0
  870. wbcore-2.2.1/wbcore/contrib/workflow/viewsets/endpoints/transition.py +18 -0
  871. wbcore-2.2.1/wbcore/contrib/workflow/viewsets/menu/__init__.py +15 -0
  872. wbcore-2.2.1/wbcore/contrib/workflow/viewsets/menu/condition.py +18 -0
  873. wbcore-2.2.1/wbcore/contrib/workflow/viewsets/menu/data.py +18 -0
  874. wbcore-2.2.1/wbcore/contrib/workflow/viewsets/menu/process.py +18 -0
  875. wbcore-2.2.1/wbcore/contrib/workflow/viewsets/menu/step.py +123 -0
  876. wbcore-2.2.1/wbcore/contrib/workflow/viewsets/menu/transition.py +18 -0
  877. wbcore-2.2.1/wbcore/contrib/workflow/viewsets/menu/workflow.py +18 -0
  878. wbcore-2.2.1/wbcore/contrib/workflow/viewsets/process.py +171 -0
  879. wbcore-2.2.1/wbcore/contrib/workflow/viewsets/step.py +229 -0
  880. wbcore-2.2.1/wbcore/contrib/workflow/viewsets/titles/__init__.py +16 -0
  881. wbcore-2.2.1/wbcore/contrib/workflow/viewsets/titles/condition.py +13 -0
  882. wbcore-2.2.1/wbcore/contrib/workflow/viewsets/titles/data.py +13 -0
  883. wbcore-2.2.1/wbcore/contrib/workflow/viewsets/titles/process.py +26 -0
  884. wbcore-2.2.1/wbcore/contrib/workflow/viewsets/titles/step.py +101 -0
  885. wbcore-2.2.1/wbcore/contrib/workflow/viewsets/titles/transition.py +13 -0
  886. wbcore-2.2.1/wbcore/contrib/workflow/viewsets/titles/workflow.py +13 -0
  887. wbcore-2.2.1/wbcore/contrib/workflow/viewsets/transition.py +57 -0
  888. wbcore-2.2.1/wbcore/contrib/workflow/viewsets/workflow.py +36 -0
  889. wbcore-2.2.1/wbcore/contrib/workflow/workflows/__init__.py +1 -0
  890. wbcore-2.2.1/wbcore/contrib/workflow/workflows/assignees.py +82 -0
  891. wbcore-2.2.1/wbcore/crontab/__init__.py +0 -0
  892. wbcore-2.2.1/wbcore/crontab/serializers.py +23 -0
  893. wbcore-2.2.1/wbcore/crontab/viewsets.py +9 -0
  894. wbcore-2.2.1/wbcore/dispatch.py +55 -0
  895. wbcore-2.2.1/wbcore/docs/__init__.py +25 -0
  896. wbcore-2.2.1/wbcore/docs/orderable.md +29 -0
  897. wbcore-2.2.1/wbcore/docs/reparent.md +13 -0
  898. wbcore-2.2.1/wbcore/dynamic_preferences_registry.py +29 -0
  899. wbcore-2.2.1/wbcore/enums.py +98 -0
  900. wbcore-2.2.1/wbcore/filters/__init__.py +21 -0
  901. wbcore-2.2.1/wbcore/filters/backends.py +19 -0
  902. wbcore-2.2.1/wbcore/filters/defaults.py +69 -0
  903. wbcore-2.2.1/wbcore/filters/fields/__init__.py +15 -0
  904. wbcore-2.2.1/wbcore/filters/fields/booleans.py +6 -0
  905. wbcore-2.2.1/wbcore/filters/fields/choices.py +61 -0
  906. wbcore-2.2.1/wbcore/filters/fields/content_type.py +33 -0
  907. wbcore-2.2.1/wbcore/filters/fields/datetime.py +91 -0
  908. wbcore-2.2.1/wbcore/filters/fields/models.py +113 -0
  909. wbcore-2.2.1/wbcore/filters/fields/multiple_lookups.py +19 -0
  910. wbcore-2.2.1/wbcore/filters/fields/numbers.py +46 -0
  911. wbcore-2.2.1/wbcore/filters/fields/text.py +6 -0
  912. wbcore-2.2.1/wbcore/filters/filterset.py +217 -0
  913. wbcore-2.2.1/wbcore/filters/lookups.py +41 -0
  914. wbcore-2.2.1/wbcore/filters/mixins.py +112 -0
  915. wbcore-2.2.1/wbcore/filters/utils.py +21 -0
  916. wbcore-2.2.1/wbcore/forms.py +125 -0
  917. wbcore-2.2.1/wbcore/frontend.py +23 -0
  918. wbcore-2.2.1/wbcore/frontend_user_configuration.py +96 -0
  919. wbcore-2.2.1/wbcore/fsm/__init__.py +0 -0
  920. wbcore-2.2.1/wbcore/fsm/markdown_extensions.py +31 -0
  921. wbcore-2.2.1/wbcore/fsm/mixins.py +114 -0
  922. wbcore-2.2.1/wbcore/locale/de/LC_MESSAGES/django.po +667 -0
  923. wbcore-2.2.1/wbcore/management/__init__.py +88 -0
  924. wbcore-2.2.1/wbcore/management/commands/__init__.py +0 -0
  925. wbcore-2.2.1/wbcore/management/commands/bootstrap.py +18 -0
  926. wbcore-2.2.1/wbcore/management/commands/clean_obsolete_object.py +21 -0
  927. wbcore-2.2.1/wbcore/management/commands/handle_release_notes.py +53 -0
  928. wbcore-2.2.1/wbcore/markdown/__init__.py +1 -0
  929. wbcore-2.2.1/wbcore/markdown/admin.py +9 -0
  930. wbcore-2.2.1/wbcore/markdown/dynamic_preferences_registry.py +16 -0
  931. wbcore-2.2.1/wbcore/markdown/models.py +38 -0
  932. wbcore-2.2.1/wbcore/markdown/template.py +38 -0
  933. wbcore-2.2.1/wbcore/markdown/utils.py +36 -0
  934. wbcore-2.2.1/wbcore/markdown/views.py +67 -0
  935. wbcore-2.2.1/wbcore/menus/__init__.py +2 -0
  936. wbcore-2.2.1/wbcore/menus/menus.py +96 -0
  937. wbcore-2.2.1/wbcore/menus/registry.py +28 -0
  938. wbcore-2.2.1/wbcore/menus/views.py +41 -0
  939. wbcore-2.2.1/wbcore/messages.py +51 -0
  940. wbcore-2.2.1/wbcore/metadata/__init__.py +0 -0
  941. wbcore-2.2.1/wbcore/metadata/configs/__init__.py +0 -0
  942. wbcore-2.2.1/wbcore/metadata/configs/base.py +86 -0
  943. wbcore-2.2.1/wbcore/metadata/configs/buttons/__init__.py +4 -0
  944. wbcore-2.2.1/wbcore/metadata/configs/buttons/bases.py +91 -0
  945. wbcore-2.2.1/wbcore/metadata/configs/buttons/buttons.py +142 -0
  946. wbcore-2.2.1/wbcore/metadata/configs/buttons/enums.py +25 -0
  947. wbcore-2.2.1/wbcore/metadata/configs/buttons/metadata.py +8 -0
  948. wbcore-2.2.1/wbcore/metadata/configs/buttons/view_config.py +176 -0
  949. wbcore-2.2.1/wbcore/metadata/configs/display/__init__.py +4 -0
  950. wbcore-2.2.1/wbcore/metadata/configs/display/configs.py +15 -0
  951. wbcore-2.2.1/wbcore/metadata/configs/display/display.py +234 -0
  952. wbcore-2.2.1/wbcore/metadata/configs/display/formatting.py +50 -0
  953. wbcore-2.2.1/wbcore/metadata/configs/display/instance_display/__init__.py +15 -0
  954. wbcore-2.2.1/wbcore/metadata/configs/display/instance_display/display.py +37 -0
  955. wbcore-2.2.1/wbcore/metadata/configs/display/instance_display/enums.py +7 -0
  956. wbcore-2.2.1/wbcore/metadata/configs/display/instance_display/layouts/__init__.py +3 -0
  957. wbcore-2.2.1/wbcore/metadata/configs/display/instance_display/layouts/inlines.py +58 -0
  958. wbcore-2.2.1/wbcore/metadata/configs/display/instance_display/layouts/layouts.py +77 -0
  959. wbcore-2.2.1/wbcore/metadata/configs/display/instance_display/layouts/sections.py +43 -0
  960. wbcore-2.2.1/wbcore/metadata/configs/display/instance_display/operators.py +22 -0
  961. wbcore-2.2.1/wbcore/metadata/configs/display/instance_display/pages.py +40 -0
  962. wbcore-2.2.1/wbcore/metadata/configs/display/instance_display/shortcuts.py +70 -0
  963. wbcore-2.2.1/wbcore/metadata/configs/display/instance_display/signals.py +3 -0
  964. wbcore-2.2.1/wbcore/metadata/configs/display/instance_display/styles.py +42 -0
  965. wbcore-2.2.1/wbcore/metadata/configs/display/instance_display/utils.py +74 -0
  966. wbcore-2.2.1/wbcore/metadata/configs/display/list_display.py +230 -0
  967. wbcore-2.2.1/wbcore/metadata/configs/display/models.py +20 -0
  968. wbcore-2.2.1/wbcore/metadata/configs/display/view_config.py +82 -0
  969. wbcore-2.2.1/wbcore/metadata/configs/display/views.py +48 -0
  970. wbcore-2.2.1/wbcore/metadata/configs/display/windows.py +28 -0
  971. wbcore-2.2.1/wbcore/metadata/configs/documentations.py +11 -0
  972. wbcore-2.2.1/wbcore/metadata/configs/endpoints.py +176 -0
  973. wbcore-2.2.1/wbcore/metadata/configs/fields.py +17 -0
  974. wbcore-2.2.1/wbcore/metadata/configs/filter_fields.py +42 -0
  975. wbcore-2.2.1/wbcore/metadata/configs/identifiers.py +25 -0
  976. wbcore-2.2.1/wbcore/metadata/configs/ordering_fields.py +24 -0
  977. wbcore-2.2.1/wbcore/metadata/configs/paginations.py +11 -0
  978. wbcore-2.2.1/wbcore/metadata/configs/preview.py +41 -0
  979. wbcore-2.2.1/wbcore/metadata/configs/primary_keys.py +9 -0
  980. wbcore-2.2.1/wbcore/metadata/configs/search_fields.py +9 -0
  981. wbcore-2.2.1/wbcore/metadata/configs/titles.py +48 -0
  982. wbcore-2.2.1/wbcore/metadata/configs/window_types.py +13 -0
  983. wbcore-2.2.1/wbcore/metadata/exceptions.py +0 -0
  984. wbcore-2.2.1/wbcore/metadata/metadata.py +33 -0
  985. wbcore-2.2.1/wbcore/metadata/mixins.py +105 -0
  986. wbcore-2.2.1/wbcore/metadata/tests/__init__.py +0 -0
  987. wbcore-2.2.1/wbcore/metadata/tests/test_buttons.py +179 -0
  988. wbcore-2.2.1/wbcore/metadata/utils.py +4 -0
  989. wbcore-2.2.1/wbcore/migrations/0001_initial_squashed_squashed_0010_preset_appliedpreset.py +398 -0
  990. wbcore-2.2.1/wbcore/migrations/0011_genericmodel.py +22 -0
  991. wbcore-2.2.1/wbcore/migrations/0012_delete_notification.py +15 -0
  992. wbcore-2.2.1/wbcore/migrations/0013_delete_colorgradient.py +14 -0
  993. wbcore-2.2.1/wbcore/migrations/0014_biguserobjectpermission_system.py +44 -0
  994. wbcore-2.2.1/wbcore/migrations/__init__.py +0 -0
  995. wbcore-2.2.1/wbcore/models/__init__.py +6 -0
  996. wbcore-2.2.1/wbcore/models/base.py +182 -0
  997. wbcore-2.2.1/wbcore/models/fields.py +29 -0
  998. wbcore-2.2.1/wbcore/models/orderable.py +6 -0
  999. wbcore-2.2.1/wbcore/pagination.py +65 -0
  1000. wbcore-2.2.1/wbcore/pandas/__init__.py +0 -0
  1001. wbcore-2.2.1/wbcore/pandas/fields.py +136 -0
  1002. wbcore-2.2.1/wbcore/pandas/filters.py +113 -0
  1003. wbcore-2.2.1/wbcore/pandas/filterset.py +26 -0
  1004. wbcore-2.2.1/wbcore/pandas/metadata.py +14 -0
  1005. wbcore-2.2.1/wbcore/pandas/utils.py +129 -0
  1006. wbcore-2.2.1/wbcore/pandas/views.py +157 -0
  1007. wbcore-2.2.1/wbcore/permissions/__init__.py +0 -0
  1008. wbcore-2.2.1/wbcore/permissions/backend.py +35 -0
  1009. wbcore-2.2.1/wbcore/permissions/mixins.py +72 -0
  1010. wbcore-2.2.1/wbcore/permissions/permissions.py +50 -0
  1011. wbcore-2.2.1/wbcore/permissions/registry.py +32 -0
  1012. wbcore-2.2.1/wbcore/permissions/shortcuts.py +37 -0
  1013. wbcore-2.2.1/wbcore/permissions/utils.py +26 -0
  1014. wbcore-2.2.1/wbcore/release_notes/__init__.py +0 -0
  1015. wbcore-2.2.1/wbcore/release_notes/admin.py +30 -0
  1016. wbcore-2.2.1/wbcore/release_notes/buttons.py +25 -0
  1017. wbcore-2.2.1/wbcore/release_notes/display.py +57 -0
  1018. wbcore-2.2.1/wbcore/release_notes/filters.py +35 -0
  1019. wbcore-2.2.1/wbcore/release_notes/models.py +65 -0
  1020. wbcore-2.2.1/wbcore/release_notes/serializers.py +19 -0
  1021. wbcore-2.2.1/wbcore/release_notes/utils.py +14 -0
  1022. wbcore-2.2.1/wbcore/release_notes/viewsets.py +45 -0
  1023. wbcore-2.2.1/wbcore/reversion/__init__.py +0 -0
  1024. wbcore-2.2.1/wbcore/reversion/filters.py +38 -0
  1025. wbcore-2.2.1/wbcore/reversion/serializers.py +80 -0
  1026. wbcore-2.2.1/wbcore/reversion/viewsets/__init__.py +6 -0
  1027. wbcore-2.2.1/wbcore/reversion/viewsets/buttons.py +94 -0
  1028. wbcore-2.2.1/wbcore/reversion/viewsets/displays.py +44 -0
  1029. wbcore-2.2.1/wbcore/reversion/viewsets/endpoints.py +29 -0
  1030. wbcore-2.2.1/wbcore/reversion/viewsets/titles.py +17 -0
  1031. wbcore-2.2.1/wbcore/reversion/viewsets/viewsets.py +111 -0
  1032. wbcore-2.2.1/wbcore/routers.py +63 -0
  1033. wbcore-2.2.1/wbcore/search/__init__.py +62 -0
  1034. wbcore-2.2.1/wbcore/serializers/__init__.py +66 -0
  1035. wbcore-2.2.1/wbcore/serializers/fields/__init__.py +58 -0
  1036. wbcore-2.2.1/wbcore/serializers/fields/boolean.py +51 -0
  1037. wbcore-2.2.1/wbcore/serializers/fields/choice.py +36 -0
  1038. wbcore-2.2.1/wbcore/serializers/fields/datetime.py +143 -0
  1039. wbcore-2.2.1/wbcore/serializers/fields/fields.py +190 -0
  1040. wbcore-2.2.1/wbcore/serializers/fields/file.py +20 -0
  1041. wbcore-2.2.1/wbcore/serializers/fields/fsm.py +20 -0
  1042. wbcore-2.2.1/wbcore/serializers/fields/json.py +56 -0
  1043. wbcore-2.2.1/wbcore/serializers/fields/list.py +105 -0
  1044. wbcore-2.2.1/wbcore/serializers/fields/mixins.py +175 -0
  1045. wbcore-2.2.1/wbcore/serializers/fields/number.py +103 -0
  1046. wbcore-2.2.1/wbcore/serializers/fields/other.py +42 -0
  1047. wbcore-2.2.1/wbcore/serializers/fields/primary_key.py +22 -0
  1048. wbcore-2.2.1/wbcore/serializers/fields/related.py +152 -0
  1049. wbcore-2.2.1/wbcore/serializers/fields/text.py +136 -0
  1050. wbcore-2.2.1/wbcore/serializers/fields/types.py +41 -0
  1051. wbcore-2.2.1/wbcore/serializers/mixins.py +24 -0
  1052. wbcore-2.2.1/wbcore/serializers/serializers.py +415 -0
  1053. wbcore-2.2.1/wbcore/serializers/utils.py +142 -0
  1054. wbcore-2.2.1/wbcore/shares/__init__.py +1 -0
  1055. wbcore-2.2.1/wbcore/shares/config.py +63 -0
  1056. wbcore-2.2.1/wbcore/shares/decorator.py +13 -0
  1057. wbcore-2.2.1/wbcore/shares/signals.py +3 -0
  1058. wbcore-2.2.1/wbcore/shares/sites.py +28 -0
  1059. wbcore-2.2.1/wbcore/shares/views.py +24 -0
  1060. wbcore-2.2.1/wbcore/signals/__init__.py +6 -0
  1061. wbcore-2.2.1/wbcore/signals/filters.py +3 -0
  1062. wbcore-2.2.1/wbcore/signals/instance_buttons.py +5 -0
  1063. wbcore-2.2.1/wbcore/signals/merge.py +4 -0
  1064. wbcore-2.2.1/wbcore/signals/models.py +8 -0
  1065. wbcore-2.2.1/wbcore/signals/permissions.py +3 -0
  1066. wbcore-2.2.1/wbcore/signals/serializers.py +5 -0
  1067. wbcore-2.2.1/wbcore/tasks.py +83 -0
  1068. wbcore-2.2.1/wbcore/templates/errors/404.html +134 -0
  1069. wbcore-2.2.1/wbcore/templates/errors/500.html +138 -0
  1070. wbcore-2.2.1/wbcore/templates/errors/503.html +132 -0
  1071. wbcore-2.2.1/wbcore/templates/errors/custom.html +132 -0
  1072. wbcore-2.2.1/wbcore/templates/forms.py +0 -0
  1073. wbcore-2.2.1/wbcore/templates/notifications/email_template.html +43 -0
  1074. wbcore-2.2.1/wbcore/templates/reversion/__init__.py +0 -0
  1075. wbcore-2.2.1/wbcore/templates/reversion/compare_detail.html +19 -0
  1076. wbcore-2.2.1/wbcore/templates/wbcore/admin/change_list.html +8 -0
  1077. wbcore-2.2.1/wbcore/templates/wbcore/admin/csv_form.html +15 -0
  1078. wbcore-2.2.1/wbcore/templates/wbcore/dynamic_color_array.html +29 -0
  1079. wbcore-2.2.1/wbcore/templates/wbcore/email_base_template.html +335 -0
  1080. wbcore-2.2.1/wbcore/templates/wbcore/email_notification_template.html +10 -0
  1081. wbcore-2.2.1/wbcore/templates/wbcore/frontend.html +51 -0
  1082. wbcore-2.2.1/wbcore/test/__init__.py +30 -0
  1083. wbcore-2.2.1/wbcore/test/e2e_helpers_methods/e2e_checks.py +121 -0
  1084. wbcore-2.2.1/wbcore/test/e2e_helpers_methods/e2e_helper_methods.py +395 -0
  1085. wbcore-2.2.1/wbcore/test/mixins.py +709 -0
  1086. wbcore-2.2.1/wbcore/test/signals.py +6 -0
  1087. wbcore-2.2.1/wbcore/test/tests.py +131 -0
  1088. wbcore-2.2.1/wbcore/test/utils.py +227 -0
  1089. wbcore-2.2.1/wbcore/tests/__init__.py +0 -0
  1090. wbcore-2.2.1/wbcore/tests/conftest.py +55 -0
  1091. wbcore-2.2.1/wbcore/tests/e2e/__init__.py +0 -0
  1092. wbcore-2.2.1/wbcore/tests/e2e/test_e2e.py +24 -0
  1093. wbcore-2.2.1/wbcore/tests/models.py +6 -0
  1094. wbcore-2.2.1/wbcore/tests/test_cache/__init__.py +0 -0
  1095. wbcore-2.2.1/wbcore/tests/test_cache/test_decorators.py +30 -0
  1096. wbcore-2.2.1/wbcore/tests/test_cache/test_mixins.py +29 -0
  1097. wbcore-2.2.1/wbcore/tests/test_cache/test_registry.py +57 -0
  1098. wbcore-2.2.1/wbcore/tests/test_configs.py +65 -0
  1099. wbcore-2.2.1/wbcore/tests/test_enums.py +54 -0
  1100. wbcore-2.2.1/wbcore/tests/test_fields/__init__.py +0 -0
  1101. wbcore-2.2.1/wbcore/tests/test_fields/test_boolean_fields.py +48 -0
  1102. wbcore-2.2.1/wbcore/tests/test_fields/test_choice_fields.py +48 -0
  1103. wbcore-2.2.1/wbcore/tests/test_fields/test_datetime_fields.py +151 -0
  1104. wbcore-2.2.1/wbcore/tests/test_fields/test_fields.py +23 -0
  1105. wbcore-2.2.1/wbcore/tests/test_fields/test_file_fields.py +52 -0
  1106. wbcore-2.2.1/wbcore/tests/test_fields/test_json_fields.py +28 -0
  1107. wbcore-2.2.1/wbcore/tests/test_fields/test_list_fields.py +27 -0
  1108. wbcore-2.2.1/wbcore/tests/test_fields/test_mixins.py +111 -0
  1109. wbcore-2.2.1/wbcore/tests/test_fields/test_number_fields.py +190 -0
  1110. wbcore-2.2.1/wbcore/tests/test_fields/test_other_fields.py +61 -0
  1111. wbcore-2.2.1/wbcore/tests/test_fields/test_primary_key_fields.py +52 -0
  1112. wbcore-2.2.1/wbcore/tests/test_fields/test_related.py +80 -0
  1113. wbcore-2.2.1/wbcore/tests/test_fields/test_text_fields.py +117 -0
  1114. wbcore-2.2.1/wbcore/tests/test_filters/__init__.py +0 -0
  1115. wbcore-2.2.1/wbcore/tests/test_filters/test_mixins.py +108 -0
  1116. wbcore-2.2.1/wbcore/tests/test_filters/test_pandas.py +114 -0
  1117. wbcore-2.2.1/wbcore/tests/test_list_display.py +31 -0
  1118. wbcore-2.2.1/wbcore/tests/test_models/__init__.py +0 -0
  1119. wbcore-2.2.1/wbcore/tests/test_models/test_fields.py +25 -0
  1120. wbcore-2.2.1/wbcore/tests/test_models/test_mixins.py +31 -0
  1121. wbcore-2.2.1/wbcore/tests/test_new_display/__init__.py +0 -0
  1122. wbcore-2.2.1/wbcore/tests/test_new_display/test_inlines.py +13 -0
  1123. wbcore-2.2.1/wbcore/tests/test_new_display/test_layouts.py +15 -0
  1124. wbcore-2.2.1/wbcore/tests/test_new_display/test_operators.py +15 -0
  1125. wbcore-2.2.1/wbcore/tests/test_new_display/test_pages.py +8 -0
  1126. wbcore-2.2.1/wbcore/tests/test_new_display/test_sections.py +0 -0
  1127. wbcore-2.2.1/wbcore/tests/test_new_display/test_shortcuts.py +38 -0
  1128. wbcore-2.2.1/wbcore/tests/test_new_display/test_utils.py +48 -0
  1129. wbcore-2.2.1/wbcore/tests/test_pagination.py +31 -0
  1130. wbcore-2.2.1/wbcore/tests/test_permissions/test_backend.py +29 -0
  1131. wbcore-2.2.1/wbcore/tests/test_serializers/__init__.py +0 -0
  1132. wbcore-2.2.1/wbcore/tests/test_serializers/test_fields.py +140 -0
  1133. wbcore-2.2.1/wbcore/tests/test_serializers/test_mixins.py +53 -0
  1134. wbcore-2.2.1/wbcore/tests/test_serializers/test_related.py +77 -0
  1135. wbcore-2.2.1/wbcore/tests/test_something.py +39 -0
  1136. wbcore-2.2.1/wbcore/tests/test_utils/__init__.py +0 -0
  1137. wbcore-2.2.1/wbcore/tests/test_utils/test_date.py +49 -0
  1138. wbcore-2.2.1/wbcore/tests/test_utils/test_date_builder.py +99 -0
  1139. wbcore-2.2.1/wbcore/tests/test_utils/test_primary.py +79 -0
  1140. wbcore-2.2.1/wbcore/tests/test_utils/test_signals.py +38 -0
  1141. wbcore-2.2.1/wbcore/tests/test_viewsets.py +20 -0
  1142. wbcore-2.2.1/wbcore/urls.py +114 -0
  1143. wbcore-2.2.1/wbcore/utils/__init__.py +13 -0
  1144. wbcore-2.2.1/wbcore/utils/cache.py +8 -0
  1145. wbcore-2.2.1/wbcore/utils/date.py +220 -0
  1146. wbcore-2.2.1/wbcore/utils/date_builder/__init__.py +18 -0
  1147. wbcore-2.2.1/wbcore/utils/date_builder/components.py +42 -0
  1148. wbcore-2.2.1/wbcore/utils/date_builder/offsets.py +27 -0
  1149. wbcore-2.2.1/wbcore/utils/deprecations.py +11 -0
  1150. wbcore-2.2.1/wbcore/utils/enum.py +23 -0
  1151. wbcore-2.2.1/wbcore/utils/figures.py +290 -0
  1152. wbcore-2.2.1/wbcore/utils/html.py +8 -0
  1153. wbcore-2.2.1/wbcore/utils/importlib.py +13 -0
  1154. wbcore-2.2.1/wbcore/utils/itertools.py +40 -0
  1155. wbcore-2.2.1/wbcore/utils/models.py +275 -0
  1156. wbcore-2.2.1/wbcore/utils/numbers.py +69 -0
  1157. wbcore-2.2.1/wbcore/utils/prettytable.py +35 -0
  1158. wbcore-2.2.1/wbcore/utils/print.py +29 -0
  1159. wbcore-2.2.1/wbcore/utils/renderers.py +13 -0
  1160. wbcore-2.2.1/wbcore/utils/rrules.py +37 -0
  1161. wbcore-2.2.1/wbcore/utils/serializers.py +8 -0
  1162. wbcore-2.2.1/wbcore/utils/settings.py +5 -0
  1163. wbcore-2.2.1/wbcore/utils/signals.py +36 -0
  1164. wbcore-2.2.1/wbcore/utils/string_loader.py +42 -0
  1165. wbcore-2.2.1/wbcore/utils/strings.py +77 -0
  1166. wbcore-2.2.1/wbcore/utils/task.py +6 -0
  1167. wbcore-2.2.1/wbcore/utils/urls.py +70 -0
  1168. wbcore-2.2.1/wbcore/utils/views.py +201 -0
  1169. wbcore-2.2.1/wbcore/views.py +26 -0
  1170. wbcore-2.2.1/wbcore/viewsets/__init__.py +10 -0
  1171. wbcore-2.2.1/wbcore/viewsets/encoders.py +18 -0
  1172. wbcore-2.2.1/wbcore/viewsets/generics.py +5 -0
  1173. wbcore-2.2.1/wbcore/viewsets/mixins.py +290 -0
  1174. wbcore-2.2.1/wbcore/viewsets/utils.py +26 -0
  1175. wbcore-2.2.1/wbcore/viewsets/viewsets.py +142 -0
@@ -0,0 +1,181 @@
1
+ ~
2
+
3
+ # Docker volumes
4
+ volumes/
5
+
6
+ # Poetry auth file
7
+ auth.toml
8
+
9
+ media/*
10
+ media/
11
+ mediafiles/
12
+ mediafiles/*
13
+ test/*
14
+ staticfiles/*
15
+ staticfiles/
16
+ #
17
+ # Byte-compiled / optimized / DLL files
18
+ __pycache__/
19
+ *.py[cod]
20
+ *$py.class
21
+
22
+ # C extensions
23
+ *.so
24
+
25
+ # Distribution / packaging
26
+ .Python
27
+ build/
28
+ develop-eggs/
29
+ dist/
30
+ info/
31
+ downloads/
32
+ eggs/
33
+ .eggs/
34
+ lib/
35
+ lib64/
36
+ parts/
37
+ sdist/
38
+ var/
39
+ wheels/
40
+ share/python-wheels/
41
+ *.egg-info/
42
+ .installed.cfg
43
+ *.egg
44
+ MANIFEST
45
+
46
+ # PyInstaller
47
+ # Usually these files are written by a python script from a template
48
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
49
+ *.manifest
50
+ *.spec
51
+
52
+ # Installer logs
53
+ pip-log.txt
54
+ pip-delete-this-directory.txt
55
+
56
+ # Unit test / coverage reports
57
+ htmlcov/
58
+ .tox/
59
+ .nox/
60
+ .coverage
61
+ .coverage.*
62
+ .cache
63
+ .dccache
64
+ nosetests.xml
65
+ coverage.xml
66
+ *.cover
67
+ *.py,cover
68
+ .hypothesis/
69
+ .pytest_cache/
70
+ cover/
71
+ report.xml
72
+ */report.xml
73
+
74
+ # Translations
75
+ *.mo
76
+ *.pot
77
+
78
+ # Django stuff:
79
+ *.log
80
+ local_settings.py
81
+ *.sqlite3
82
+ db.sqlite3-journal
83
+
84
+ # Flask stuff:
85
+ instance/
86
+ .webassets-cache
87
+
88
+ # Scrapy stuff:
89
+ .scrapy
90
+
91
+ # Sphinx documentation
92
+ docs/_build/
93
+
94
+ # PyBuilder
95
+ .pybuilder/
96
+ target/
97
+
98
+ # Jupyter Notebook
99
+ .ipynb_checkpoints
100
+ *.ipynb
101
+ # IPython
102
+ profile_default/
103
+ ipython_config.py
104
+
105
+ # pyenv
106
+ # For a library or package, you might want to ignore these files since the code is
107
+ # intended to run in multiple environments; otherwise, check them in:
108
+ # .python-version
109
+
110
+ # pipenv
111
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
112
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
113
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
114
+ # install all needed dependencies.
115
+ #Pipfile.lock
116
+
117
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow
118
+ __pypackages__/
119
+
120
+ # Celery stuff
121
+ celerybeat-schedule
122
+ celerybeat.pid
123
+
124
+ # SageMath parsed files
125
+ *.sage.py
126
+
127
+ # Environments
128
+ .env
129
+ .envrc
130
+ .venv
131
+ env/
132
+ venv/
133
+ ENV/
134
+ env.bak/
135
+ venv.bak/
136
+ .vscode/
137
+ .idea/
138
+
139
+ # Spyder project settings
140
+ .spyderproject
141
+ .spyproject
142
+
143
+ # Rope project settings
144
+ .ropeproject
145
+
146
+ # mkdocs documentation
147
+ /site
148
+
149
+ # mypy
150
+ .mypy_cache/
151
+ .dmypy.json
152
+ dmypy.json
153
+
154
+ # Pyre type checker
155
+ .pyre/
156
+
157
+ # pytype static type analyzer
158
+ .pytype/
159
+ crm/
160
+ # Cython debug symbols
161
+ cython_debug/
162
+
163
+ # Gitlab Runner
164
+ builds
165
+ builds/
166
+
167
+ # Integrator Office 365 : reverse proxy tunnel for outlook365
168
+ ngrok
169
+ */ngrok
170
+ /modules/**/system/
171
+
172
+ /modules/wbmailing/files/*
173
+ /modules/wbmailing/mailing/*
174
+
175
+ /projects/*/requirements.txt
176
+ public
177
+
178
+ # Ignore archive localization generated folder
179
+ backend/modules/**/archive/*
180
+ **/**/requirements.txt
181
+ CHANGELOG-*
wbcore-2.2.1/PKG-INFO ADDED
@@ -0,0 +1,62 @@
1
+ Metadata-Version: 2.3
2
+ Name: wbcore
3
+ Version: 2.2.1
4
+ Author-email: Christopher Wittlinger <c.wittlinger@stainly.com>
5
+ Requires-Dist: boto3==1.*
6
+ Requires-Dist: celery[redis]==5.*
7
+ Requires-Dist: croniter==2.*
8
+ Requires-Dist: cryptography<=42
9
+ Requires-Dist: django-admin-inline-paginator==0.4.0
10
+ Requires-Dist: django-anymail==12.*
11
+ Requires-Dist: django-better-admin-arrayfield==1.4.*
12
+ Requires-Dist: django-celery-beat==2.*
13
+ Requires-Dist: django-colorfield==0.11.*
14
+ Requires-Dist: django-configurations[database]==2.5.*
15
+ Requires-Dist: django-cors-headers==4.6.*
16
+ Requires-Dist: django-dynamic-preferences==1.16.*
17
+ Requires-Dist: django-extensions==3.2.*
18
+ Requires-Dist: django-filter==24.*
19
+ Requires-Dist: django-fsm==3.*
20
+ Requires-Dist: django-guardian==2.4.*
21
+ Requires-Dist: django-import-export==4.*
22
+ Requires-Dist: django-maintenance-mode==0.21.*
23
+ Requires-Dist: django-mptt==0.*
24
+ Requires-Dist: django-ordered-model==3.7.*
25
+ Requires-Dist: django-picklefield==3.*
26
+ Requires-Dist: django-rest-fuzzysearch==0.5.*
27
+ Requires-Dist: django-reversion-compare==0.18.*
28
+ Requires-Dist: django-reversion==5.1.*
29
+ Requires-Dist: django-storages[boto3]==1.14.*
30
+ Requires-Dist: django==5.0.*
31
+ Requires-Dist: djangorestframework-guardian==0.3.*
32
+ Requires-Dist: djangorestframework-simplejwt==5.*
33
+ Requires-Dist: djangorestframework==3.*
34
+ Requires-Dist: faker==25.*
35
+ Requires-Dist: firebase-admin==6.*
36
+ Requires-Dist: graphviz==0.*
37
+ Requires-Dist: ics==0.*
38
+ Requires-Dist: igraph==0.*
39
+ Requires-Dist: inscriptis==1.*
40
+ Requires-Dist: langchain-openai==0.2.*
41
+ Requires-Dist: langchain>=0.3
42
+ Requires-Dist: markdown-blockdiag==0.*
43
+ Requires-Dist: markdown==3.*
44
+ Requires-Dist: numpy==1.*
45
+ Requires-Dist: openpyxl==3.*
46
+ Requires-Dist: pandas==2.2.*
47
+ Requires-Dist: phonenumbers==8.*
48
+ Requires-Dist: plotly==5.*
49
+ Requires-Dist: prettytable==0.*
50
+ Requires-Dist: psycopg[binary]==3.*
51
+ Requires-Dist: pycountry==23.*
52
+ Requires-Dist: pyjwt==2.*
53
+ Requires-Dist: pysftp==0.*
54
+ Requires-Dist: pytest-sftpserver==1.*
55
+ Requires-Dist: python-magic==0.*
56
+ Requires-Dist: python-slugify==8.*
57
+ Requires-Dist: redis==4.*
58
+ Requires-Dist: requests==2.*
59
+ Requires-Dist: rstr==3.2.*
60
+ Requires-Dist: schwifty==2024.*
61
+ Requires-Dist: tatsu==5.*
62
+ Requires-Dist: tqdm==4.*
@@ -0,0 +1,112 @@
1
+ [project]
2
+ name = "wbcore"
3
+ description = ""
4
+ authors = [{ name = "Christopher Wittlinger", email = "c.wittlinger@stainly.com"}]
5
+ dynamic = ["version"]
6
+
7
+ dependencies = [
8
+ # Database Depenendencies
9
+ "redis == 4.*",
10
+ "psycopg[binary] == 3.*",
11
+
12
+ # Generic Python Dependencies
13
+ "python-slugify == 8.*",
14
+ "requests == 2.*",
15
+ "inscriptis == 1.*", # TODO: Discuss if really needed
16
+
17
+ # Django Dependencies
18
+ "django == 5.0.*",
19
+ "django-configurations[database] == 2.5.*",
20
+ "django-dynamic-preferences == 1.16.*",
21
+ "django-filter == 24.*",
22
+ "django-extensions == 3.2.*",
23
+ "django-cors-headers == 4.6.*",
24
+ "django-storages[boto3] == 1.14.*",
25
+ "django-fsm == 3.*", # TODO: Remove after viewflow
26
+ "django-ordered-model == 3.7.*",
27
+
28
+ # Django Rest Framework Dependencies
29
+ "djangorestframework == 3.*",
30
+ "djangorestframework-simplejwt == 5.*",
31
+ "pyjwt == 2.*",
32
+ "django-rest-fuzzysearch == 0.5.*",
33
+
34
+ # Background and Periodic Tasks
35
+ "celery[redis] == 5.*",
36
+ "django-celery-beat == 2.*",
37
+
38
+ # Model Object Permissions
39
+ "django-guardian == 2.4.*",
40
+ "djangorestframework-guardian == 0.3.*",
41
+
42
+ # Revision System
43
+ "django-reversion == 5.1.*",
44
+ "django-reversion-compare == 0.18.*",
45
+
46
+ # Datascience
47
+ "numpy == 1.*",
48
+ "pandas == 2.2.*",
49
+
50
+ # Visualization
51
+ "plotly == 5.*",
52
+
53
+ # Markdown
54
+ "markdown == 3.*",
55
+ "markdown-blockdiag == 0.*",
56
+
57
+ # Terminal Formatting and Utils
58
+ "tqdm == 4.*",
59
+ "prettytable == 0.*",
60
+ "igraph == 0.*",
61
+ "openpyxl == 3.*",
62
+
63
+ "django-colorfield == 0.11.*",
64
+ "django-better-admin-arrayfield == 1.4.*",
65
+ "django-picklefield == 3.*",
66
+
67
+ "firebase-admin == 6.*",
68
+ # Pinned to 42 to silence deprecation warning (TripleDES)
69
+ # We need to substitute pysftp with paramiko/fabric
70
+ # Issue: https://gitlab.com/stainly/workbench/-/issues/5402
71
+ # Ref: https://github.com/paramiko/paramiko/issues/2419#issuecomment-2250013087
72
+ "cryptography <= 42",
73
+ "pysftp == 0.*",
74
+
75
+ "croniter == 2.*",
76
+ "python-magic == 0.*",
77
+ "django-import-export == 4.*",
78
+ "django-admin-inline-paginator == 0.4.0",
79
+ "django-anymail == 12.*",
80
+ "pytest-sftpserver == 1.*",
81
+ "django-mptt == 0.*",
82
+ "pycountry == 23.*",
83
+ "phonenumbers == 8.*",
84
+ "schwifty == 2024.*",
85
+ "ics == 0.*",
86
+ "tatsu == 5.*",
87
+ "boto3 == 1.*",
88
+
89
+ "faker == 25.*", # We add exlicitly faker because it's used in production
90
+ "graphviz == 0.*",
91
+ "django-maintenance-mode == 0.21.*",
92
+ "rstr == 3.2.*", # We add exlicitly faker because it's used in production
93
+ "langchain >= 0.3",
94
+ "langchain-openai == 0.2.*",
95
+ ]
96
+
97
+ [tool.uv]
98
+ package = true
99
+
100
+ [tool.hatch.version]
101
+ path = "../../pyproject.toml"
102
+
103
+ [tool.hatch.build.targets.sdist]
104
+ include = ["wbcore/*"]
105
+
106
+ [tool.hatch.build.targets.wheel]
107
+ packages = ["wbcore"]
108
+ only-packages = true
109
+
110
+ [build-system]
111
+ requires = ["hatchling"]
112
+ build-backend = "hatchling.build"
@@ -0,0 +1 @@
1
+ __version__ = "1.0.0"
@@ -0,0 +1,197 @@
1
+ import csv
2
+ from functools import partial
3
+ from io import StringIO
4
+
5
+ import pandas as pd
6
+ from django import forms
7
+ from django.contrib import admin
8
+ from django.contrib.admin.checks import InlineModelAdminChecks
9
+ from django.contrib.admin.options import flatten_fieldsets
10
+ from django.forms import ALL_FIELDS
11
+ from django.forms.models import modelform_defines_fields
12
+ from django.http import HttpResponse
13
+ from django.shortcuts import redirect, render
14
+ from django.urls import path
15
+ from django.utils.translation import gettext_lazy as _
16
+
17
+ from .content_type.admin import ContentTypeModelAdmin # noqa: F401
18
+ from .forms import NonrelatedInlineFormSet, nonrelated_inlineformset_factory
19
+ from .markdown.admin import AssetModelAdmin # noqa: F401
20
+ from .models import AppliedPreset, FrontendUserConfiguration, Preset
21
+ from .release_notes.admin import ReleaseNoteModelAdmin # noqa: F401
22
+
23
+ admin.site.register(AppliedPreset)
24
+ admin.site.register(Preset)
25
+
26
+
27
+ class FrontendUserConfigurationInline(admin.TabularInline):
28
+ model = FrontendUserConfiguration
29
+ extra = 0
30
+ fields = ["id", "user", "config"]
31
+ readonly_fields = ["id", "user", "config"]
32
+
33
+
34
+ @admin.register(FrontendUserConfiguration)
35
+ class FrontendUserConfigurationModelAdmin(admin.ModelAdmin):
36
+ list_display = ["id", "user"]
37
+ search_fields = ["user__email", "user__username", "id"]
38
+ fieldsets = ((_("Main Information"), {"fields": ("user", "parent_configuration", "config")}),)
39
+ inlines = [FrontendUserConfigurationInline]
40
+ list_filter = ["user"]
41
+
42
+
43
+ class CsvImportForm(forms.Form):
44
+ csv_file = forms.FileField()
45
+
46
+
47
+ class ExportCsvMixin:
48
+ def export_as_csv(self, admin, request, queryset, *args, **kwargs):
49
+ meta = queryset.model._meta
50
+ field_names = [field.name for field in meta.fields]
51
+
52
+ response = HttpResponse(content_type="text/csv")
53
+ response["Content-Disposition"] = "attachment; filename={}.csv".format(meta)
54
+ writer = csv.writer(response)
55
+
56
+ writer.writerow(field_names)
57
+ for obj in queryset:
58
+ writer.writerow([getattr(obj, field) for field in field_names])
59
+
60
+ return response
61
+
62
+ def get_actions(self, request):
63
+ actions = super().get_actions(request)
64
+ actions["export_as_csv"] = (self.export_as_csv, "export_as_csv", "Export Selected")
65
+ return actions
66
+
67
+
68
+ class ImportCsvMixin:
69
+ change_list_template = "wbcore/admin/change_list.html"
70
+
71
+ def get_urls(self):
72
+ urls = super().get_urls()
73
+ my_urls = [path("import-csv/", self._import_csv)]
74
+ return my_urls + urls
75
+
76
+ def manipulate_df(self, df):
77
+ return df
78
+
79
+ def process_model(self, model):
80
+ self.model.create(**model)
81
+
82
+ def get_import_fields(self):
83
+ return [f.name for f in self.model._meta.get_fields()]
84
+
85
+ def _import_csv(self, request):
86
+ if request.method == "POST":
87
+ csv_file = request.FILES["csv_file"]
88
+
89
+ str_text = ""
90
+ for line in csv_file:
91
+ str_text = str_text + line.decode()
92
+ # Import csv as df
93
+ df = pd.read_csv(StringIO(str_text))
94
+ # Sanitize dataframe
95
+ df = df.where(pd.notnull(df), None)
96
+ df = df.drop(df.columns.difference(self.get_import_fields()), axis=1)
97
+
98
+ # Overide this function if there is foreign key ids in the dataframe
99
+ df = self.manipulate_df(df)
100
+ errors = 0
101
+ for model in df.to_dict("records"):
102
+ # by default, process the modela as a create request. Can be override to change the behavior
103
+ try:
104
+ self.process_model(model)
105
+ except Exception:
106
+ errors += 1
107
+ self.message_user(
108
+ request,
109
+ _("Your CSV file has been imported ( {imports} imported, {errors} errors)").format(
110
+ imports=df.shape[0] - errors, errors=errors
111
+ ),
112
+ )
113
+ return redirect("..")
114
+ form = CsvImportForm()
115
+ payload = {"form": form}
116
+ return render(request, "wbcore/admin/csv_form.html", payload)
117
+
118
+
119
+ class NonrelatedInlineModelAdminChecks(InlineModelAdminChecks):
120
+ """
121
+ Check used by the admin system to determine whether or not an inline model
122
+ has a relationship to the parent object.
123
+ In this case we always want this check to pass.
124
+ """
125
+
126
+ def _check_exclude_of_parent_model(self, obj, parent_model):
127
+ return []
128
+
129
+ def _check_relation(self, obj, parent_model):
130
+ return []
131
+
132
+
133
+ class NonrelatedInlineMixin:
134
+ """
135
+ Mixin for models not explicitly related to the inline model.
136
+ """
137
+
138
+ checks_class = NonrelatedInlineModelAdminChecks
139
+ formset = NonrelatedInlineFormSet
140
+
141
+ def get_form_queryset(self, obj):
142
+ raise NotImplementedError()
143
+
144
+ def save_new_instance(self, parent, instance):
145
+ raise NotImplementedError()
146
+
147
+ def save_formset(self, request, form, formset, change):
148
+ instances = formset.save(commit=False)
149
+ for instance in instances:
150
+ self.update_instance(formset.instance, instance)
151
+ instance.save()
152
+ formset.save_m2m()
153
+
154
+ def get_formset(self, request, obj=None, **kwargs):
155
+ if "fields" in kwargs:
156
+ fields = kwargs.pop("fields")
157
+ else:
158
+ fields = flatten_fieldsets(self.get_fieldsets(request, obj))
159
+
160
+ exclude = [*(self.exclude or []), *self.get_readonly_fields(request, obj)]
161
+ if self.exclude is None and hasattr(self.form, "_meta") and self.form._meta.exclude:
162
+ exclude.extend(self.form._meta.exclude)
163
+ exclude = exclude or None
164
+
165
+ can_delete = self.can_delete and self.has_delete_permission(request, obj)
166
+
167
+ queryset = self.model.objects.none()
168
+ if obj:
169
+ queryset = self.get_form_queryset(obj)
170
+
171
+ defaults = {
172
+ "form": self.form,
173
+ "formfield_callback": partial(self.formfield_for_dbfield, request=request),
174
+ "formset": self.formset,
175
+ "extra": self.get_extra(request, obj),
176
+ "can_delete": can_delete,
177
+ "can_order": False,
178
+ "fields": fields,
179
+ "min_num": self.get_min_num(request, obj),
180
+ "max_num": self.get_max_num(request, obj),
181
+ "exclude": exclude,
182
+ "queryset": queryset,
183
+ **kwargs,
184
+ }
185
+
186
+ if defaults["fields"] is None and not modelform_defines_fields(defaults["form"]):
187
+ defaults["fields"] = ALL_FIELDS
188
+
189
+ return nonrelated_inlineformset_factory(self.model, save_new_instance=self.save_new_instance, **defaults)
190
+
191
+
192
+ class NonrelatedStackedInline(NonrelatedInlineMixin, admin.StackedInline):
193
+ pass
194
+
195
+
196
+ class NonrelatedTabularInline(NonrelatedInlineMixin, admin.TabularInline):
197
+ pass
@@ -0,0 +1,17 @@
1
+ from django.apps import AppConfig
2
+ from django.db.models.signals import post_migrate
3
+
4
+ from .management import create_wbcore_permissions
5
+
6
+
7
+ class WBCoreConfig(AppConfig):
8
+ name = "wbcore"
9
+
10
+ def ready(self):
11
+ """
12
+ We load received after all apps are ready in order to be able to discover all subclasses
13
+ """
14
+ post_migrate.connect(
15
+ create_wbcore_permissions,
16
+ dispatch_uid="wbcore.management.create_wbcore_permissions",
17
+ )
File without changes
@@ -0,0 +1,22 @@
1
+ from django.utils.translation import gettext_lazy as _
2
+ from rest_framework.reverse import reverse
3
+ from wbcore.contrib.icons import WBIcon
4
+ from wbcore.enums import RequestType
5
+ from wbcore.metadata.configs import buttons as bt
6
+ from wbcore.metadata.configs.identifiers import IdentifierViewConfig
7
+
8
+
9
+ def add_clear_cache_button(sender, instance, request, view, pk=None, **kwargs):
10
+ if request.user.is_superuser and not instance:
11
+ cache_key = view._get_cache_key()
12
+ identifier = IdentifierViewConfig(view, request, instance=instance).get_metadata()
13
+ return bt.ActionButton(
14
+ method=RequestType.PATCH,
15
+ icon=WBIcon.DOWNLOAD.icon,
16
+ identifiers=(identifier,),
17
+ endpoint=reverse("wbcore:clear_cache", args=[cache_key], request=request),
18
+ action_label=_("Clear Cache"),
19
+ title=_("Clear Cache"),
20
+ label=_("Clear Cache"),
21
+ description_fields=_("Clear Cache"),
22
+ )
@@ -0,0 +1,29 @@
1
+ from typing import Callable
2
+
3
+ from ..signals.instance_buttons import add_extra_button
4
+ from .buttons import add_clear_cache_button
5
+ from .registry import periodic_cache_registry
6
+
7
+
8
+ def cache_table(
9
+ timeout: int | Callable | None = None,
10
+ key_prefix: str | Callable | None = None,
11
+ periodic_caching: bool = False,
12
+ periodic_caching_view_kwargs: list[dict[str, str]] | Callable | None = None,
13
+ periodic_caching_get_parameters: list[dict[str, str]] | Callable | None = None,
14
+ ):
15
+ def _decorator(pandas_view_class):
16
+ setattr(pandas_view_class, "CACHE_ENABLED", True)
17
+ setattr(pandas_view_class, "CACHE_TIMEOUT", timeout)
18
+ setattr(pandas_view_class, "CACHE_KEY_PREFIX", key_prefix)
19
+ add_extra_button.connect(add_clear_cache_button, sender=pandas_view_class, weak=False)
20
+
21
+ if periodic_caching:
22
+ periodic_cache_registry.add(
23
+ pandas_view_class,
24
+ view_kwargs=periodic_caching_view_kwargs,
25
+ get_parameters=periodic_caching_get_parameters,
26
+ )
27
+ return pandas_view_class
28
+
29
+ return _decorator
@@ -0,0 +1,48 @@
1
+ from functools import cached_property
2
+ from typing import Any
3
+
4
+ import pandas as pd
5
+ from django.core.cache import cache
6
+ from wbcore.utils.strings import camel_to_snake_case
7
+
8
+
9
+ class CacheMixin:
10
+ extra_cache_kwargs: dict[str, Any]
11
+ CACHE_EMPTY_VALUE = pd.DataFrame()
12
+ CACHE_MAIN_KEY: str = "df"
13
+ CACHE_METHOD: str = "_get_dataframe"
14
+
15
+ @cached_property
16
+ def cache_enabled(self) -> bool:
17
+ return getattr(self, "CACHE_ENABLED", False)
18
+
19
+ def _get_cache_timeout(self) -> int | None:
20
+ cache_timeout = getattr(self, "CACHE_TIMEOUT", None)
21
+ if callable(cache_timeout):
22
+ return cache_timeout()
23
+ return cache_timeout
24
+
25
+ def _get_cache_key(self) -> str:
26
+ cache_key = camel_to_snake_case(self.__class__.__name__)
27
+ if cache_key_prefix := getattr(self, "CACHE_KEY_PREFIX", None):
28
+ if callable(cache_key_prefix):
29
+ cache_key_prefix = cache_key_prefix()
30
+ cache_key += "-" + cache_key_prefix
31
+ return cache_key
32
+
33
+ def deserialize_cache_results(self, cached_res: dict[str, Any]) -> Any:
34
+ res = cached_res.pop(self.CACHE_MAIN_KEY, self.CACHE_EMPTY_VALUE)
35
+ # we loop over the other cached kwargs and set them as class attributes
36
+ for k, v in cached_res.items():
37
+ setattr(self, k, v)
38
+ return res
39
+
40
+ def serialize_cache_results(self, res: Any) -> dict[str, Any]:
41
+ cached_res = {self.CACHE_MAIN_KEY: res}
42
+ cached_res.update(self.extra_cache_kwargs)
43
+ return cached_res
44
+
45
+ def _get_cached_res(self) -> Any:
46
+ if cached_res := cache.get(self._get_cache_key()):
47
+ return self.deserialize_cache_results(cached_res)
48
+ return self.CACHE_EMPTY_VALUE