wbcore 1.61.3__py2.py3-none-any.whl → 1.61.5__py2.py3-none-any.whl

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 (77) hide show
  1. wbcore/configurations/base.py +2 -2
  2. wbcore/configurations/configurations/apps.py +1 -1
  3. wbcore/configurations/configurations/rest_framework.py +1 -1
  4. wbcore/contrib/agenda/viewsets/menu/calendar_items.py +1 -2
  5. wbcore/contrib/agenda/viewsets/menu/conference_room.py +4 -5
  6. wbcore/contrib/authentication/admin.py +15 -2
  7. wbcore/contrib/authentication/factories/users.py +4 -2
  8. wbcore/contrib/authentication/migrations/0008_user_is_internal.py +18 -0
  9. wbcore/contrib/authentication/models/users.py +16 -6
  10. wbcore/contrib/authentication/serializers/users.py +1 -1
  11. wbcore/contrib/authentication/viewsets/menu/user_activities.py +6 -3
  12. wbcore/contrib/authentication/viewsets/menu/users.py +1 -2
  13. wbcore/contrib/authentication/viewsets/users.py +2 -2
  14. wbcore/contrib/currency/tests/test_serializers.py +3 -1
  15. wbcore/contrib/directory/admin/entries.py +1 -1
  16. wbcore/contrib/directory/models/entries.py +21 -30
  17. wbcore/contrib/directory/tests/test_permissions.py +2 -4
  18. wbcore/contrib/directory/viewsets/endpoints/relationships.py +1 -2
  19. wbcore/contrib/directory/viewsets/entries.py +1 -1
  20. wbcore/contrib/directory/viewsets/menu/contacts.py +2 -3
  21. wbcore/contrib/directory/viewsets/menu/entries.py +5 -14
  22. wbcore/contrib/directory/viewsets/menu/relationships.py +2 -3
  23. wbcore/contrib/directory/viewsets/menu/utils.py +8 -9
  24. wbcore/contrib/documents/models/documents.py +1 -1
  25. wbcore/contrib/documents/viewsets/documents.py +3 -3
  26. wbcore/contrib/geography/viewsets/geography.py +1 -1
  27. wbcore/contrib/permission/apps.py +15 -0
  28. wbcore/contrib/permission/configurations.py +3 -0
  29. wbcore/contrib/{guardian → permission}/filters.py +2 -2
  30. wbcore/contrib/permission/internal/registry.py +43 -0
  31. wbcore/contrib/permission/management/__init__.py +4 -0
  32. wbcore/contrib/permission/migrations/0001_initial.py +54 -0
  33. wbcore/contrib/{guardian → permission}/models/mixins.py +73 -3
  34. wbcore/{permissions → contrib/permission}/permissions.py +1 -3
  35. wbcore/contrib/permission/tasks.py +18 -0
  36. wbcore/{tests/test_permissions → contrib/permission/tests}/test_backend.py +4 -6
  37. wbcore/contrib/{guardian → permission}/tests/test_model_mixins.py +6 -6
  38. wbcore/contrib/{guardian → permission}/tests/test_tasks.py +7 -7
  39. wbcore/contrib/{guardian → permission}/tests/test_utils.py +12 -12
  40. wbcore/contrib/{guardian → permission}/tests/test_viewsets.py +3 -3
  41. wbcore/contrib/{guardian → permission}/urls.py +1 -1
  42. wbcore/contrib/{guardian → permission}/utils.py +32 -4
  43. wbcore/contrib/{guardian → permission}/viewsets/configs/buttons.py +2 -2
  44. wbcore/contrib/{guardian → permission}/viewsets/configs/displays.py +1 -1
  45. wbcore/contrib/{guardian → permission}/viewsets/configs/endpoints.py +3 -3
  46. wbcore/contrib/{guardian → permission}/viewsets/configs/titles.py +1 -1
  47. wbcore/contrib/{guardian → permission}/viewsets/mixins.py +2 -2
  48. wbcore/contrib/{guardian → permission}/viewsets/viewsets.py +2 -2
  49. wbcore/contrib/workflow/viewsets/menu/condition.py +2 -3
  50. wbcore/contrib/workflow/viewsets/menu/data.py +2 -7
  51. wbcore/contrib/workflow/viewsets/menu/process.py +2 -5
  52. wbcore/contrib/workflow/viewsets/menu/step.py +16 -21
  53. wbcore/contrib/workflow/viewsets/menu/transition.py +2 -3
  54. wbcore/contrib/workflow/viewsets/menu/workflow.py +2 -5
  55. wbcore/tests/models.py +1 -1
  56. wbcore/urls.py +2 -2
  57. {wbcore-1.61.3.dist-info → wbcore-1.61.5.dist-info}/METADATA +1 -1
  58. {wbcore-1.61.3.dist-info → wbcore-1.61.5.dist-info}/RECORD +69 -70
  59. wbcore/contrib/guardian/apps.py +0 -6
  60. wbcore/contrib/guardian/configurations.py +0 -3
  61. wbcore/contrib/guardian/migrations/0001_initial.py +0 -103
  62. wbcore/contrib/guardian/tasks.py +0 -12
  63. wbcore/permissions/mixins.py +0 -72
  64. wbcore/permissions/registry.py +0 -33
  65. wbcore/permissions/shortcuts.py +0 -38
  66. wbcore/permissions/utils.py +0 -26
  67. /wbcore/contrib/{guardian → permission}/__init__.py +0 -0
  68. /wbcore/contrib/{guardian/migrations → permission/internal}/__init__.py +0 -0
  69. /wbcore/{permissions → contrib/permission/internal}/backend.py +0 -0
  70. /wbcore/contrib/{guardian/tests → permission/migrations}/__init__.py +0 -0
  71. /wbcore/contrib/{guardian → permission}/models/__init__.py +0 -0
  72. /wbcore/contrib/{guardian → permission}/models/models.py +0 -0
  73. /wbcore/{permissions → contrib/permission/tests}/__init__.py +0 -0
  74. /wbcore/contrib/{guardian → permission}/tests/conftest.py +0 -0
  75. /wbcore/contrib/{guardian → permission}/viewsets/__init__.py +0 -0
  76. /wbcore/contrib/{guardian → permission}/viewsets/configs/__init__.py +0 -0
  77. {wbcore-1.61.3.dist-info → wbcore-1.61.5.dist-info}/WHEEL +0 -0
@@ -12,7 +12,7 @@ wbcore/pagination.py,sha256=lOW1BzJwlATzfOHo4BJA23avrg_39-LCL6mHctsAoBk,2282
12
12
  wbcore/routers.py,sha256=gLbQc8MRHuJax88FBDejtt3_MavE9KkwZMsQvAqJj0I,2174
13
13
  wbcore/tasks.py,sha256=PXjAuJ3vQ8ESwucaLi0rfSAQneB5d3b5AODD0XC0naE,4102
14
14
  wbcore/template.py,sha256=Vrr6G3dmzxgO15Ogh-UEa5HTouR587Ep6PBxHVGwNoU,1093
15
- wbcore/urls.py,sha256=4tYuPA5bgVFVLasDxWbfbqMubxggH0hQej9S2dsLOm0,4507
15
+ wbcore/urls.py,sha256=dRh-oM6-iFpTTjHepxiSEDTxqVXTULuBE6JEuoaiWRo,4515
16
16
  wbcore/views.py,sha256=6vfq4DfKmCJD27T_XvKdigMBy9NbpzcaBO3gYcq60tI,950
17
17
  wbcore/workers.py,sha256=26PB4nhSay9LJ3DAj_G3gWZKX3ctu9WT4Ll0lC38L3k,351
18
18
  wbcore/cache/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -27,9 +27,9 @@ wbcore/configs/decorators.py,sha256=5kdwENMaiw6rzjqTj-D7ezx-9gj2FVg1P5NsFrO-fnc,
27
27
  wbcore/configs/registry.py,sha256=9WM_CUSgItFAE5sno5ssEH6qrmyyhX2wZz3SNWB__Ds,1295
28
28
  wbcore/configs/views.py,sha256=QVmgyeB4pFZMmtkzv-JlRmyT-b6OwuUVuKOKMXxpOL4,358
29
29
  wbcore/configurations/__init__.py,sha256=H-vQTsjryzvwQ7FN4kGLywoGFV_VrPkbuNV4VRx1WHU,68
30
- wbcore/configurations/base.py,sha256=woxAbHfAU6vMHu6oZp5eDJB97j-PjUVkA6UdItXNc8Q,1550
30
+ wbcore/configurations/base.py,sha256=oQ8JRXV55liaUPIKNd6JvrDWiBOkry33WFG7OjFXbes,1582
31
31
  wbcore/configurations/configurations/__init__.py,sha256=mni_MM6rOHK1YwOC9i4xlrITumInHJuKCngc4k-pdpo,574
32
- wbcore/configurations/configurations/apps.py,sha256=HjsEH8bOrF9r-9w1BNBFdlvQ_NYYZjgApH7PP3IwQnQ,1630
32
+ wbcore/configurations/configurations/apps.py,sha256=zAAARkhkvZnVJ60Q8rGqyXtp-i3WehQJ8gAnkGNsmyQ,1632
33
33
  wbcore/configurations/configurations/authentication.py,sha256=wRNQDvCOf2lPuOsxf7NugisC-fXYWD1lMyKKu2rZrDk,2115
34
34
  wbcore/configurations/configurations/base.py,sha256=ETX3-jiJe1sJev9jcXUgUNkrOPANmWx9-ogob6sNZd0,453
35
35
  wbcore/configurations/configurations/cache.py,sha256=UwqbhVQIouCK9SdXX4-SeaTR4HGQhHna7j38L6uGPXk,709
@@ -40,7 +40,7 @@ wbcore/configurations/configurations/maintenance.py,sha256=vNLy64RoCY-s665pCWQwa
40
40
  wbcore/configurations/configurations/media.py,sha256=hRIDbB0ngL8ihq1myK1C2G5n7DVmrrM-s9XMua4QUng,753
41
41
  wbcore/configurations/configurations/middleware.py,sha256=ITqS3loS2ottWLBLKDnaPuhZmXwyqlwrcpZ8IRD0000,1328
42
42
  wbcore/configurations/configurations/network.py,sha256=seM15W9V1_id6X2Vxff_8mpQODB2v-hs8q5QFo2zeWM,822
43
- wbcore/configurations/configurations/rest_framework.py,sha256=_VVyRQF8E3rh08k5I31LGSrl7_OWNqoEMvf2rWSN5lU,2297
43
+ wbcore/configurations/configurations/rest_framework.py,sha256=1LKKIE29RJzX4TqvWLHsiiv3nB-aqITiiVhpipQ_HFg,2304
44
44
  wbcore/configurations/configurations/static.py,sha256=-OZXJvFpSlPAYspkeq97PL1VdiV1nh5_BYPO0jGmiVk,690
45
45
  wbcore/configurations/configurations/templates.py,sha256=pCghzXBQXn-lN_1nmjnvCnAz1LaF0lLWZ34AhDz2QW0,575
46
46
  wbcore/configurations/configurations/uvicorn.py,sha256=ZkklzlFwvMnOljNvr-Pl9QSGAGlNw-dYQjSiGx2GC-Y,368
@@ -102,8 +102,8 @@ wbcore/contrib/agenda/viewsets/display/conference_room.py,sha256=8z-NZ4tb-o5PPLP
102
102
  wbcore/contrib/agenda/viewsets/endpoints/__init__.py,sha256=jGfh-M2tuizBUZ1-uqHpYFZ8UQvSh84suSfGP9L7N-k,55
103
103
  wbcore/contrib/agenda/viewsets/endpoints/calendar_items.py,sha256=VeSsIf0YsT16mV1I7dEkzjoBkOrLiNiCcRxAHa795jc,754
104
104
  wbcore/contrib/agenda/viewsets/menu/__init__.py,sha256=HxdPpwcboVVcwhHLdmFjHcqVofQnFFbDV2pl_adMHME,119
105
- wbcore/contrib/agenda/viewsets/menu/calendar_items.py,sha256=1wSws5NoTXWeUSky8pycZzeulStV3yKcZOo8L49f3UE,407
106
- wbcore/contrib/agenda/viewsets/menu/conference_room.py,sha256=qqflU705L5TYmdekdx-CRtqzDx5Qo7o4d6YztQlLAX8,1246
105
+ wbcore/contrib/agenda/viewsets/menu/calendar_items.py,sha256=S4NNA06110drELjs78-NXEUY4eW_En0JxFpMTZU01QE,343
106
+ wbcore/contrib/agenda/viewsets/menu/conference_room.py,sha256=PqIBpdsdoorUQWrdqeM73lywS_hST4BOYVA46gWkQEU,1164
107
107
  wbcore/contrib/agenda/viewsets/titles/__init__.py,sha256=0nDvBCHl5ZAOxvDFqjhpycqzOZRKkZ6b4OKD55RjtHM,128
108
108
  wbcore/contrib/agenda/viewsets/titles/calendar_items.py,sha256=5zDx2uH5UKJh-zop3ZAqNR15utAKtEt7xm_wnmM8ws8,219
109
109
  wbcore/contrib/agenda/viewsets/titles/conference_room.py,sha256=NHbfJ3jkvJ5knaLgp8QNtRndbbovJ351ejWs-dLpvro,629
@@ -116,7 +116,7 @@ wbcore/contrib/ai/llm/decorators.py,sha256=u3AWbQjbCCeIp-X1aezhqeZJd8chbI1OhGnm8
116
116
  wbcore/contrib/ai/llm/mixins.py,sha256=qbuRLaRCmLjdMC7r877RKYsMpE6AurYEGEzSPYYE9y4,1037
117
117
  wbcore/contrib/ai/llm/utils.py,sha256=B6iNt54x9ehN084wj-UvLUVEYrTPANSaITtl0AT3WJc,2503
118
118
  wbcore/contrib/authentication/__init__.py,sha256=eQ3KJSYPoO4xc867RdcdayxaxZ8TLGLHMA3kY5H6UMg,313
119
- wbcore/contrib/authentication/admin.py,sha256=vWYNMx9woqROm_dOwraYqLKunUv0d46SOrY5J9pcqsI,9052
119
+ wbcore/contrib/authentication/admin.py,sha256=-lhV1R36bYFYPMMuYncSwVs4Xl-qk8_Jd6WCdrLrhnk,9570
120
120
  wbcore/contrib/authentication/apps.py,sha256=5ak0rx5M2P7r4Mq1XnP4-arEHIUq6CAYoBjzOU7lPs4,411
121
121
  wbcore/contrib/authentication/authentication.py,sha256=EMa-y7803EaH23voSREjMcfFXJr1tkAcbuwR5KCbL00,4295
122
122
  wbcore/contrib/authentication/configs.py,sha256=Z3M2X6xzWhwJEEvHym6d9khriSdgyTmimbkxi7KAGuk,358
@@ -128,7 +128,7 @@ wbcore/contrib/authentication/urls.py,sha256=OUeLXEwuF6yS-oXeBpkC5aCviEC-nPbM3CS
128
128
  wbcore/contrib/authentication/utils.py,sha256=jmOZtY_z6oW_r6npGPH00IbPcUjWZ1NchodMgcHXEbs,341
129
129
  wbcore/contrib/authentication/factories/__init__.py,sha256=hpYaVz57Ko4lh6rZex31HuO-pyJ-LmegzGH26hSrIqo,243
130
130
  wbcore/contrib/authentication/factories/tokens.py,sha256=CX3HI3ynapYdknmiMrF7WikmF-LWMqKmYMMlLJgUDrI,414
131
- wbcore/contrib/authentication/factories/users.py,sha256=GyVe5ud-BFvZonkwQprcllUzAm56GokYp_Bl8R9nwBs,3764
131
+ wbcore/contrib/authentication/factories/users.py,sha256=ENOpmA0sXUPlTQitSWkzl923Bj9QvJi9hRS3qATRYoI,3820
132
132
  wbcore/contrib/authentication/factories/users_activities.py,sha256=tbcpZyXokn6fDZ6fuZkGtYL7Jtm0aWIiZBY63urx_iw,480
133
133
  wbcore/contrib/authentication/fixtures/authentication.json,sha256=9sRKzduD4j9-NYP-Ou9Lw1hIB3DWIPwAfO-T_JFebvI,1848
134
134
  wbcore/contrib/authentication/locale/de/LC_MESSAGES/django.po,sha256=3WsQof5OrgTFpaTd2OjYQt3YrKPvv1xSUScfbi3WDRg,20892
@@ -143,15 +143,16 @@ wbcore/contrib/authentication/migrations/0004_token.py,sha256=rD5Tpby4iUb4Vje-Ie
143
143
  wbcore/contrib/authentication/migrations/0005_user_external_calendar_settings.py,sha256=BegFBiGbtbNWoGGATBbfHn9GcDkmdqKhLdf8VeLvwYc,386
144
144
  wbcore/contrib/authentication/migrations/0006_auto_20231206_1422.py,sha256=jetLcssq55i2KKc8TV1YGHgv3aLB1d63GfC3q7G8cmQ,259
145
145
  wbcore/contrib/authentication/migrations/0007_alter_token_unique_together_token_unique_token.py,sha256=wNrKthi0VzNzfMyjx-umfbAPp5PArKIf6OEl3RgXdDM,538
146
+ wbcore/contrib/authentication/migrations/0008_user_is_internal.py,sha256=KJXNaM2bfBqiAVp0S6qn44RF9rbir96BN5rZkD2tQQM,536
146
147
  wbcore/contrib/authentication/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
147
148
  wbcore/contrib/authentication/models/__init__.py,sha256=GhtPxWgZEUcbFQt2ArdB6OPjyEYav3F_XddlKnht0_w,125
148
149
  wbcore/contrib/authentication/models/tokens.py,sha256=03m0BiU1U3EPohNOagyEKqGSzKEBpPm2GkoazqwmuTA,5465
149
- wbcore/contrib/authentication/models/users.py,sha256=hPED_LpX0FvMeM0u-jTjYC1FWvKUsAT7ZvmBT7ZT48A,8522
150
+ wbcore/contrib/authentication/models/users.py,sha256=1uHVi_k9nvEJAzuRvgjXIcfQ_f7wp_taR_1guWhEhhg,8851
150
151
  wbcore/contrib/authentication/models/users_activities.py,sha256=uyr1FLNNCC9YDBN7hKnVGDjc9DmonY-BjPqtrUUA8o8,4289
151
152
  wbcore/contrib/authentication/release_notes/1_0_0.md,sha256=pZ6rgeR5mTB3vabX3eaEJXMSfs7m4a1SEbYdpAmXwyI,170
152
153
  wbcore/contrib/authentication/release_notes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
153
154
  wbcore/contrib/authentication/serializers/__init__.py,sha256=pY77syWz4VtH1RlGMv5-0nlnneDshvNDmk-N52lBXIc,455
154
- wbcore/contrib/authentication/serializers/users.py,sha256=3IXYsYYyPLz7UoHqfD7GuQMAv6BYr2DRDsPUnukjVDA,14347
155
+ wbcore/contrib/authentication/serializers/users.py,sha256=dgmS3AK2Jqp8Hjy6-melCljynfnpBgz-YVUCBkybH5M,14339
155
156
  wbcore/contrib/authentication/serializers/users_activites.py,sha256=BvhwOZg7izLDnCD5RN1fdaBoEJGQDA8nUacTj192krA,1234
156
157
  wbcore/contrib/authentication/templates/activate_confirm.html,sha256=DP-3FfdLEPYu8svucdSe68DGjJyJNeVENcbZvf6hPtE,283
157
158
  wbcore/contrib/authentication/templates/base.html,sha256=_fe2DDLtBphRbiyUUMhRS3qqQC3fudqN0afT2o06Z_E,3747
@@ -177,7 +178,7 @@ wbcore/contrib/authentication/tests/e2e/__init__.py,sha256=0QhVTsjMlR1BTGlRiaO5i
177
178
  wbcore/contrib/authentication/tests/e2e/e2e_auth_utility.py,sha256=DNCAiaLGVZ964oGmdp1CYc1oU2AEDZdA_W1kLZv5Zn0,564
178
179
  wbcore/contrib/authentication/viewsets/__init__.py,sha256=Kvt5ikqkg0_4P-DXvRBOpfQcUMHwDIE7vyGpGQ5uSbg,479
179
180
  wbcore/contrib/authentication/viewsets/user_activities.py,sha256=aJVtAnVYdbhc8iPOIMHcVripDJ2s0lU1lTQWSX_IyrI,8324
180
- wbcore/contrib/authentication/viewsets/users.py,sha256=PG0tmCQXq6UaTq8OaSl8GAKEaYGPslrddjZllh4a7uU,12465
181
+ wbcore/contrib/authentication/viewsets/users.py,sha256=Yeh-cpTCXTrpBDqbA76Ll22roS3rQlumoITOEKrtLSg,12415
181
182
  wbcore/contrib/authentication/viewsets/buttons/__init__.py,sha256=H2DLTgMil7mRmj-NtnBfJa-DrbMxT4lv8GbZNhe_76w,66
182
183
  wbcore/contrib/authentication/viewsets/buttons/users.py,sha256=OHtuM4M-Um85-bXXnKNA0PZQEZVB51BCiXsoOjfFLIs,2359
183
184
  wbcore/contrib/authentication/viewsets/display/__init__.py,sha256=iOKARtlVqcaMB80CZqFpCPbyjz4bKaOdjYqEmGYlIBs,222
@@ -187,8 +188,8 @@ wbcore/contrib/authentication/viewsets/endpoints/__init__.py,sha256=i0M7ZkmEoTJL
187
188
  wbcore/contrib/authentication/viewsets/endpoints/user_activities.py,sha256=JUd61RhdjDmF-e-zg1TZ9AO9pXdbL1JUYcZ-9FXGKR8,354
188
189
  wbcore/contrib/authentication/viewsets/endpoints/users.py,sha256=BCOTgGWbKN8uHAAk_A0MaQfwume_aejUaI4j3uZmiPI,623
189
190
  wbcore/contrib/authentication/viewsets/menu/__init__.py,sha256=doXz5TNc2pWhG9YuZTZVsvQYzx8g8jOj1U4pbu_qrh0,162
190
- wbcore/contrib/authentication/viewsets/menu/user_activities.py,sha256=NQR4bn86yPrmXFg1QgWLKk_mtU8lcGwyRajfzZAQ-qE,1204
191
- wbcore/contrib/authentication/viewsets/menu/users.py,sha256=kkwG6YAzlqbnaHJGbb-Y2OMumyzbTaAteS1Xc5kYT4Y,589
191
+ wbcore/contrib/authentication/viewsets/menu/user_activities.py,sha256=TjHgxCVMCebaI4ckifqD2MwyeKl4uHvsX7acDBgs_Rs,1378
192
+ wbcore/contrib/authentication/viewsets/menu/users.py,sha256=wSJl2Fa1jAREtCpjpx-nxaaqKva6A60RIFI0sT1rwQU,525
192
193
  wbcore/contrib/authentication/viewsets/titles/__init__.py,sha256=31xz3WVIyV_uCYd1dsqfPPwhnRdEzW86IhFGFrAXLOM,330
193
194
  wbcore/contrib/authentication/viewsets/titles/user_activities.py,sha256=KJFjqxSuOvatIJ0WJMMJTEFFAYltPp_WSkmOjAIsyxQ,979
194
195
  wbcore/contrib/authentication/viewsets/titles/users.py,sha256=s8J5kViaPNnuCbrMdCT2Xs2hRZwb-uTH0sXM0qszp9Q,716
@@ -243,7 +244,7 @@ wbcore/contrib/currency/release_notes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCe
243
244
  wbcore/contrib/currency/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
244
245
  wbcore/contrib/currency/tests/conftest.py,sha256=WVsiPAsvPDwt9SsCSrUjM-jg5uc02Nqor8xQFltoZm8,200
245
246
  wbcore/contrib/currency/tests/test_models.py,sha256=BWvcy8de3hXqo1-SlilVS4L5RHEZ9g3cPCyfZk-WFiI,4720
246
- wbcore/contrib/currency/tests/test_serializers.py,sha256=5AIH6thmG76bjBTuVFnB4_izfDrXZIsDZ7xsOvXi4lw,2928
247
+ wbcore/contrib/currency/tests/test_serializers.py,sha256=iljgjgtBoJ8xNyjIkXEVMkRIUfxi5iocb9UGviyh714,2966
247
248
  wbcore/contrib/currency/tests/test_viewsets.py,sha256=aGuKRY9UE-1JIDBWQMWbhZUAg1Envh7JNa4AgnMhqTw,7198
248
249
  wbcore/contrib/currency/viewsets/__init__.py,sha256=uPP607FDQ8gdiZq898RfRAmhMJ-zQgzBrejbc9kVf_E,141
249
250
  wbcore/contrib/currency/viewsets/currency.py,sha256=LcSZponETU62YkRPLk5Omj5Lu6GHMLnxblPaGKfN6HQ,1929
@@ -294,7 +295,7 @@ wbcore/contrib/directory/typings.py,sha256=NQq6BNOeiGufba_DiQnCyq5UE9rs2TpQHfGxK
294
295
  wbcore/contrib/directory/urls.py,sha256=GCmvAbPiZ9ZL-z2qzJ4QLnyPgypQB3_hw1i9LaE9nxs,6077
295
296
  wbcore/contrib/directory/admin/__init__.py,sha256=lvt9etqGBJQTuVxDWkayijyo7GRqVFVlhv7aFpVbGh8,296
296
297
  wbcore/contrib/directory/admin/contacts.py,sha256=eFKJZCq506ybMMp2as8rZhYd7rvzg8L86IpsLBc7Bz8,1505
297
- wbcore/contrib/directory/admin/entries.py,sha256=A5WfBpRaHtZOHVlU6_ficp3CIOzB_pTwT-qbLii0TFE,7124
298
+ wbcore/contrib/directory/admin/entries.py,sha256=cmBkc-Ur70R8sWwIXXpljcSJDE_iWtv4BBr2vWHges4,7122
298
299
  wbcore/contrib/directory/admin/relationships.py,sha256=-reoYuU4ZnM24wRZ3ny55ZGu3esPn7cl-qYAdnBPD2I,2312
299
300
  wbcore/contrib/directory/factories/__init__.py,sha256=KIjvlqpnFetFpSEjYM1VKHO9FOWDhsIGueM3Framm7I,892
300
301
  wbcore/contrib/directory/factories/contacts.py,sha256=7woaBCD6K5lhAkmI4uj1KXwmCyAbvQy2bBMLx_T5dUI,1993
@@ -327,7 +328,7 @@ wbcore/contrib/directory/migrations/0015_alter_emailcontact_address_and_more.py,
327
328
  wbcore/contrib/directory/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
328
329
  wbcore/contrib/directory/models/__init__.py,sha256=XtnmU5YUr3SGig6PsSfGsWUaiBaX6kaHShBv3sbxZ14,526
329
330
  wbcore/contrib/directory/models/contacts.py,sha256=fA0q30jvVp6Bz-GyvCw6k3qay-HILqBH1hX7rYu7yqE,18129
330
- wbcore/contrib/directory/models/entries.py,sha256=6Vs2Q_eF9dh0h1iZRd2plUgTMWW13q9VgH93tr8MnUw,35859
331
+ wbcore/contrib/directory/models/entries.py,sha256=OafHokjBd9vllv6Lh7bE15lMJwOqRjWoM_TJSE2pkKg,35486
331
332
  wbcore/contrib/directory/models/relationships.py,sha256=wd2Wr5x808yeQ1m02EbxlZrYenM0sqzOO4QBdw_ZE_o,22047
332
333
  wbcore/contrib/directory/release_notes/1_0_0.md,sha256=Twbl9RMLO6dbbm5dVoKorw8BecRqAYsKeobcNmDWHu8,165
333
334
  wbcore/contrib/directory/release_notes/1_0_1.md,sha256=yHolV-HwBmIavaPn9pg0ABRgxQ-eKIuiAs-phKb_ix0,285
@@ -367,14 +368,14 @@ wbcore/contrib/directory/tests/signals.py,sha256=DqQkJWnq2Y0wTTLh3ICY3qZJLUpGJqi
367
368
  wbcore/contrib/directory/tests/test_configs.py,sha256=dXICPQOfKqloya9X8OxhVmdbeCOMCgHKDbgLzgpNTu8,213
368
369
  wbcore/contrib/directory/tests/test_filters.py,sha256=tc4G0XoUoDoiisECXtaftYCG69fdE42-EmkmLcjbN78,2492
369
370
  wbcore/contrib/directory/tests/test_models.py,sha256=b2rz214wgDFoLKJkqfKLdv9vHgyX4EVREpkb-wX6Qjk,19392
370
- wbcore/contrib/directory/tests/test_permissions.py,sha256=lmGAiE0wtIDJkHEfNk_8NDwqN71FdPuu2qXvSMm0FbM,4231
371
+ wbcore/contrib/directory/tests/test_permissions.py,sha256=seoYeZ0LYLpryuD2KVvOaArFQnVf6wvelBLiKCwfxRE,4088
371
372
  wbcore/contrib/directory/tests/test_serializers.py,sha256=AIa-Rktw4EG2eywMSCz-X1rYcBSmw7Zzx38CghBVGzo,9202
372
373
  wbcore/contrib/directory/tests/test_viewsets.py,sha256=pZJ-D-pxRP1IWNZDrKML_6j4iBcFzv8qpo59qX9MpOU,32624
373
374
  wbcore/contrib/directory/tests/e2e/__init__.py,sha256=9KFYfXVP_0BwaYFvKQS4P_UMIAO1CFiwnK9sA3bPGdw,175
374
375
  wbcore/contrib/directory/tests/e2e/e2e_directory_utility.py,sha256=zX71WsMmxQNW9ZLI-TMuxHmiY8PEZoBLt1ztqFSUDSE,7252
375
376
  wbcore/contrib/directory/viewsets/__init__.py,sha256=U6f6zuZCtv0ohtLkVYqNNqKl2vk7cugXXoxlPKULA9k,1878
376
377
  wbcore/contrib/directory/viewsets/contacts.py,sha256=LmQ_jK-SYG7u0A7DqBrNBTvRasvKtksE9JUVWLPW2OY,14428
377
- wbcore/contrib/directory/viewsets/entries.py,sha256=_pYKniolc-F2B2Mr6CLXVZ1_QdqNYOAGkiNXgmfqyy0,7114
378
+ wbcore/contrib/directory/viewsets/entries.py,sha256=bl3n_RKlo-QnDQ4r9e8Xy6424xZvvTCmB5G2MEb9kvo,7076
378
379
  wbcore/contrib/directory/viewsets/mixins.py,sha256=8QI6mBpPxykVCvqABDZeQ0n7diHYoMafNH4ZMdCtC4c,353
379
380
  wbcore/contrib/directory/viewsets/relationships.py,sha256=jy73aCven25PbLoy3-KTjnAxdItyYZdfkVoClz5ogc4,10045
380
381
  wbcore/contrib/directory/viewsets/utils.py,sha256=2i7rIT8qMCD-ajT-uNN7Re4uMRwijrzvblokedJnwOw,3400
@@ -390,12 +391,12 @@ wbcore/contrib/directory/viewsets/display/utils.py,sha256=5sMFdEXUfanKp60IvTyO4Y
390
391
  wbcore/contrib/directory/viewsets/endpoints/__init__.py,sha256=6r_2OSunOS5qhsB0ashSWcO8Nm0zy8rQRSxu926-RCs,727
391
392
  wbcore/contrib/directory/viewsets/endpoints/contacts.py,sha256=Hnm4Iii5FMo8rDiv5tyqUvrKcSsG1w-b4GbjbIXk8TM,2036
392
393
  wbcore/contrib/directory/viewsets/endpoints/entries.py,sha256=27kSs0FDZni3DDudWX5swjfyCHEiv37_s0hf8MtQHFk,1640
393
- wbcore/contrib/directory/viewsets/endpoints/relationships.py,sha256=JDC7YqxnbuQDWM4RdI7zL_zs0oBQ-oSsdnvdDJxdpKw,2909
394
+ wbcore/contrib/directory/viewsets/endpoints/relationships.py,sha256=FZBdLTeQM9_qskaE7YOo3WJHQ9mlgFuWELy2fWL3c78,2821
394
395
  wbcore/contrib/directory/viewsets/menu/__init__.py,sha256=PbGcs_uz2LCwBqEChMlZSEw_EMRV-UoS7PoQ5nre27E,465
395
- wbcore/contrib/directory/viewsets/menu/contacts.py,sha256=u6LkJkK48L9_EUjx_S-1qFSz1tl_MZz4RJQyLoHWBM8,964
396
- wbcore/contrib/directory/viewsets/menu/entries.py,sha256=RxyVby1TolT7IKJuKtiVRK_xUvKl4I9_6SuztMJzMgs,2169
397
- wbcore/contrib/directory/viewsets/menu/relationships.py,sha256=hMb9Vl9GgXGjXnNn97X-CfZ-PBZXf26svNLQ5mdaGxE,1228
398
- wbcore/contrib/directory/viewsets/menu/utils.py,sha256=GXxYHnmXszrtvVucWXRFBkqpOjzaGXqirQ13nzPewkg,2410
396
+ wbcore/contrib/directory/viewsets/menu/contacts.py,sha256=2oQdlGzlGKJ7eZlTzSvll1eGwKqhiipNp5pBc8fSaZ0,894
397
+ wbcore/contrib/directory/viewsets/menu/entries.py,sha256=5lCv7qS0GvXnarJLWTbMu2T9Njg5dUzNPCciGNCw4BY,2015
398
+ wbcore/contrib/directory/viewsets/menu/relationships.py,sha256=ZOHuRLYv3-CbqfhTgk8mlaF7tuBlVxBYaYO-TlxV_Ks,1158
399
+ wbcore/contrib/directory/viewsets/menu/utils.py,sha256=mKDwqLOx6y4VFpeFtTkaWT7wwFcY2WGb2eAvvGKClyE,2304
399
400
  wbcore/contrib/directory/viewsets/previews/__init__.py,sha256=6rzSOQGwIwSq9X_Percy8iRkj8D83lxnW-oc1seawTo,83
400
401
  wbcore/contrib/directory/viewsets/previews/contacts.py,sha256=b5fsLe5259lDWI6KHSDscCZ2MM7fbTNM7hgRJWil3s0,640
401
402
  wbcore/contrib/directory/viewsets/previews/entries.py,sha256=1IrseYPMkzGj9tDhN7aW_KpJWJoWQI6al-sbzwAwcSs,967
@@ -424,7 +425,7 @@ wbcore/contrib/documents/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQ
424
425
  wbcore/contrib/documents/models/__init__.py,sha256=25wDRkkATAkLYxfbwuVbua1sN3YrBW76cPqSXNGFzi0,205
425
426
  wbcore/contrib/documents/models/document_model_relationships.py,sha256=20p_Dqxs1xSoyzF-3DqlzoO70nMcufYGHJNySc_tCrc,2195
426
427
  wbcore/contrib/documents/models/document_types.py,sha256=bgIUVepm9CPAvCmOggh63ZfyyGdNp3FKZPEqEAuxuuA,1213
427
- wbcore/contrib/documents/models/documents.py,sha256=-Qr9Lj95ZD27dJThiIkl1Yu_bvuPTTdNFIah6Amc4bE,11323
428
+ wbcore/contrib/documents/models/documents.py,sha256=Mf_lXJKQSBAmLVKEz1SAdc-KCevE9rcBAgatRVWzPCo,11325
428
429
  wbcore/contrib/documents/models/mixins.py,sha256=6b_FO8ZTQ779f28O33auYdrIXDmnnMOIKvfQOkivjl8,230
429
430
  wbcore/contrib/documents/models/shareable_links.py,sha256=YFvKbAQ8VNu92c74edfw5zwnofjTDcPum_E43XpWVSE,2841
430
431
  wbcore/contrib/documents/release_notes/1_0_0.md,sha256=MIX-LM8Rr4odLJACp0SBNVn1OwQzdkTmPyDgMV1ImH4,164
@@ -443,7 +444,7 @@ wbcore/contrib/documents/tests/test_models.py,sha256=OwJ5-tmvixA-7O28q6hmHhy46Y4
443
444
  wbcore/contrib/documents/viewsets/__init__.py,sha256=xo7GDVcZyBEQNrcOHydO-dFj68i8rBJ36Noxvgv_isY,461
444
445
  wbcore/contrib/documents/viewsets/document_model_relationships.py,sha256=g7AeGHbA2wGyJfI8k4uXPIoICUMp34n9GnJ_QcNwjAs,975
445
446
  wbcore/contrib/documents/viewsets/document_types.py,sha256=Vh17ppy3uWLV4dycjS0_WvjyNZkx3_3HqUExEKMPvdg,1416
446
- wbcore/contrib/documents/viewsets/documents.py,sha256=VAKRGCzQW2021wPSya46wAFsbxfHp0YrktD0XIKcdfs,5134
447
+ wbcore/contrib/documents/viewsets/documents.py,sha256=E6uuePPxhZPjhKpqPomJlOqzeGvFRm_6zg1SsGrECJc,5160
447
448
  wbcore/contrib/documents/viewsets/shareable_links.py,sha256=6IEZ5GVBQpuXbQpXMiRWBTJ6rztUbz-emNW46JS6GQ8,4221
448
449
  wbcore/contrib/documents/viewsets/buttons/__init__.py,sha256=nEK-1VEPwqPRe-V-15SwLjIUZbQ8fWZPoCmtXtbG9Jo,161
449
450
  wbcore/contrib/documents/viewsets/buttons/documents.py,sha256=QQTvtOuS6nO7GvKJIjXO-dLwJksqDT0MQiiKcTuGgwI,2037
@@ -608,7 +609,7 @@ wbcore/contrib/geography/tests/signals.py,sha256=KfPXtAHWC4lF3gDO8-PNFL_PkYZUnmO
608
609
  wbcore/contrib/geography/tests/test_models.py,sha256=bbu16tfQFfWPkSzR2pVzBLLwnzw57ttfVQdC-FCprMM,836
609
610
  wbcore/contrib/geography/tests/test_viewsets.py,sha256=xCk6i8LU6tOt1FLw-1BsSiUNVTapJmRXn4IjWNy2PgE,3791
610
611
  wbcore/contrib/geography/viewsets/__init__.py,sha256=vc5uxdC_r5H2weA2Nce65kkst_Hf8soBBN3St32NX5o,77
611
- wbcore/contrib/geography/viewsets/geography.py,sha256=__hfMW2BoTIP8jDRAh8uQRpr3c10GHAlygkSSsvavH0,2071
612
+ wbcore/contrib/geography/viewsets/geography.py,sha256=D0pIteYaMzoJ2w64yelQSn5Yn1Xtv9hfzr9jlw05jII,2073
612
613
  wbcore/contrib/geography/viewsets/buttons/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
613
614
  wbcore/contrib/geography/viewsets/display/__init__.py,sha256=K_bRlRA3SNgHjwgSi6uJyuVwVNNtBAEKFaXsduMNiG0,46
614
615
  wbcore/contrib/geography/viewsets/display/geography.py,sha256=7wKHyOmGYhAn4inuwYqAbu3PLWvEO_IKyAymKXIeFhE,981
@@ -629,32 +630,6 @@ wbcore/contrib/gleap/views.py,sha256=8UthTu7LRRW_pi8muUDWzXVtBaQhwCRNox9JSriF5lQ
629
630
  wbcore/contrib/gleap/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
630
631
  wbcore/contrib/gleap/tests/conftest.py,sha256=q9RKC6JpBsW4ZlgtnuB_V1uHtKUys4Zn0BGu3m4NbRI,36
631
632
  wbcore/contrib/gleap/tests/tests.py,sha256=7m2BdJ1r34lUn8waMN_TqiS2u40f9sA2byUz0H8NZPU,738
632
- wbcore/contrib/guardian/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
633
- wbcore/contrib/guardian/apps.py,sha256=dHE4YM4uk92w5Xsmk_P1agutR_1jQytTq9dRDaj-BAU,139
634
- wbcore/contrib/guardian/configurations.py,sha256=rzSTs_4zbADDSnmqgqRHYd83gKdPAGyrHdegQtnH-qQ,168
635
- wbcore/contrib/guardian/filters.py,sha256=fCHc0MVFIelRAHBhJ-CRg8VJ6dxw199IRYL1k_-JCXM,1065
636
- wbcore/contrib/guardian/tasks.py,sha256=3uzHUAEyITOXbLCAOJqwGzzs8BnOA5O3fD56LZf5LoQ,589
637
- wbcore/contrib/guardian/urls.py,sha256=9zyKcQ3PrSjGtXHF3ixITmgNudRVz6GajBQ5YlV44vM,413
638
- wbcore/contrib/guardian/utils.py,sha256=KgaEKZWnFZernMnv4T5R7tECJ88oEfH34qDZdGsfa-4,5199
639
- wbcore/contrib/guardian/migrations/0001_initial.py,sha256=IB4_ls922OVdC3r_9FhIFR_xom0wic2NOwYG9gRo8S8,4609
640
- wbcore/contrib/guardian/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
641
- wbcore/contrib/guardian/models/__init__.py,sha256=63_HSsJbwNgPPt67vyZKHm5dqB8X-YIAF6tRlK9YgQk,64
642
- wbcore/contrib/guardian/models/mixins.py,sha256=dZU4nOE80ipDvXtJZDvkkCx6DaQh_Rt_C7hwgkrvy_w,5706
643
- wbcore/contrib/guardian/models/models.py,sha256=KlvruzHS6ogviEm_fklGKO6dzqZCpnE7cKNJxDmfy4Y,1121
644
- wbcore/contrib/guardian/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
645
- wbcore/contrib/guardian/tests/conftest.py,sha256=5HFVx8rTnexM2qlPyzDTmhngVZrKVO7ibSqm5i2KoFg,67
646
- wbcore/contrib/guardian/tests/test_model_mixins.py,sha256=ZzY1aUHU8AGBOpl6azUGtJMpGRhU-NfxPbp_69hz87A,4063
647
- wbcore/contrib/guardian/tests/test_tasks.py,sha256=qz7AWT6Vm7LDTQvOMCqKs0WrCx7dTJaa5aupX__92yw,3306
648
- wbcore/contrib/guardian/tests/test_utils.py,sha256=7q160qrGPG27RHiMzlqcV2XRFccqi8wBP1OFiwSKhvM,8179
649
- wbcore/contrib/guardian/tests/test_viewsets.py,sha256=pZDVEtlGw6e0oos1OT9rPxnG4oKwYz15Gtv35JYljAk,2309
650
- wbcore/contrib/guardian/viewsets/__init__.py,sha256=Fc9L_HXR1AnSAKn8OdwBSrLu9Zg2F1Fh4l0C1Pt0e6Y,60
651
- wbcore/contrib/guardian/viewsets/mixins.py,sha256=Nu0_7zFuudd-sUJy6eEIUTIWUE4JMCHUY-xJLo5onvQ,235
652
- wbcore/contrib/guardian/viewsets/viewsets.py,sha256=wjXYveAoll7v9LAkLbHZ7RZ-k6n0NLd5snjp8wdm-Vk,5765
653
- wbcore/contrib/guardian/viewsets/configs/__init__.py,sha256=XP5aJk3srxn7neISjnTvTHTHwHc53WAg77RyAUaFga4,286
654
- wbcore/contrib/guardian/viewsets/configs/buttons.py,sha256=bDpX5jKGo9_Ia5xWAO0OvZsGp-5CDjLsSFe4PafEPDE,1398
655
- wbcore/contrib/guardian/viewsets/configs/displays.py,sha256=CtVHdBexRTm8qdMETNAvxSKwhEHofoKgqe_Hu9IP2MM,1558
656
- wbcore/contrib/guardian/viewsets/configs/endpoints.py,sha256=GTZ-LFtB3SD01LqncsmwyN_cfE8LeWDXcAfR7vLGj_E,1038
657
- wbcore/contrib/guardian/viewsets/configs/titles.py,sha256=ASsOasxjqfMLGqguu8QDyYUwc4yvvKYZYQNU5gbH9kM,518
658
633
  wbcore/contrib/i18n/__init__.py,sha256=StXJ-OqqI2M8rCbisUDrvRcYHHEG2J91Mja1Io8HgFo,96
659
634
  wbcore/contrib/i18n/buttons.py,sha256=2sEPAUvjJTr5z7ts71Ai8d_9Oxyt8wjY-Z1XgCsoOsk,1490
660
635
  wbcore/contrib/i18n/translation.py,sha256=_LzWKzu-OxtGrzIXIqLIVIGwkXG0TAe4Mgjrcr-MXP8,4971
@@ -812,6 +787,38 @@ wbcore/contrib/pandas/tests/test_fields/__init__.py,sha256=47DEQpj8HBSa-_TImW-5J
812
787
  wbcore/contrib/pandas/tests/test_fields/test_number_fields.py,sha256=YIWFX67qqBFC_qrbMb826wV05yilpsbizh0ZvzVOnME,473
813
788
  wbcore/contrib/pandas/tests/test_filters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
814
789
  wbcore/contrib/pandas/tests/test_filters/test_pandas.py,sha256=YMdh3kAjuAZyL4iGe8jjpcDitXmunSkSzB-w3-1rKbI,3757
790
+ wbcore/contrib/permission/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
791
+ wbcore/contrib/permission/apps.py,sha256=ukDa4Mox01a0gtS5t-FmdPOeXTj_dF-lsXe0GbjSLeg,436
792
+ wbcore/contrib/permission/configurations.py,sha256=bqg-soAJKU70vVuAuwhnV5Dzfa1XkJ1TyuZaXhMfAr4,187
793
+ wbcore/contrib/permission/filters.py,sha256=Jt9HuDpCPITGJQ0aWyG3HxmNM8MVsqV-FfRy_-g5ebs,1069
794
+ wbcore/contrib/permission/permissions.py,sha256=1fHUA9o0u02Zhzk2zmFvtBqJgtlVe-R7AkIA0hUgbfk,1777
795
+ wbcore/contrib/permission/tasks.py,sha256=WUiy4Fn1kwWeNoM7c6Bfz7_TOPmmx7xU8Zuz8kdeHRM,736
796
+ wbcore/contrib/permission/urls.py,sha256=rzkEtFSJNluVgM-r3KCxnqtSYzCAy0OGKMXFpcLg74I,415
797
+ wbcore/contrib/permission/utils.py,sha256=d64UjkcMfqT5YLiTjhTUFRWpDTu6sVat-1nx6XcNaRg,6110
798
+ wbcore/contrib/permission/internal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
799
+ wbcore/contrib/permission/internal/backend.py,sha256=pLK_Hpk_2O4pMXEnUkw_dDYG2Jagm4vK0ER9eZt80MY,1368
800
+ wbcore/contrib/permission/internal/registry.py,sha256=e6CrXNP5Wx-sDUerotM1sMAH2_lzhDqsfrW72w0XQZM,1571
801
+ wbcore/contrib/permission/management/__init__.py,sha256=AdparB3Q-UQ_wYKXXXuKK6PozIg9x3CowQIkmY0qSHE,164
802
+ wbcore/contrib/permission/migrations/0001_initial.py,sha256=8i15T3jYDsSFqISwCQF0IaUsoFRghfvRkhmVolcp2Nk,2875
803
+ wbcore/contrib/permission/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
804
+ wbcore/contrib/permission/models/__init__.py,sha256=63_HSsJbwNgPPt67vyZKHm5dqB8X-YIAF6tRlK9YgQk,64
805
+ wbcore/contrib/permission/models/mixins.py,sha256=0VTVYQT3mOeGt0HYDtyTVEH5TBCoB-lNwcHKewjboos,7422
806
+ wbcore/contrib/permission/models/models.py,sha256=KlvruzHS6ogviEm_fklGKO6dzqZCpnE7cKNJxDmfy4Y,1121
807
+ wbcore/contrib/permission/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
808
+ wbcore/contrib/permission/tests/conftest.py,sha256=5HFVx8rTnexM2qlPyzDTmhngVZrKVO7ibSqm5i2KoFg,67
809
+ wbcore/contrib/permission/tests/test_backend.py,sha256=Wg9Ql6fvDqUFS_QHuXwTKvWpKKNdS4Fz8nndDpQtK_A,844
810
+ wbcore/contrib/permission/tests/test_model_mixins.py,sha256=Bj9EeO1e2uwm_lIK-NNrGI34z3bBLkf4ndYmHqC2jDU,4075
811
+ wbcore/contrib/permission/tests/test_tasks.py,sha256=tkWCieWQfPOEcI6QWFtGadb4qDeqmv_gLJRQK6ZBeqs,3320
812
+ wbcore/contrib/permission/tests/test_utils.py,sha256=QYPhYCxCmJAcrcNITVMuk8QKNHwVfS1F5QA6aV0P2kE,8203
813
+ wbcore/contrib/permission/tests/test_viewsets.py,sha256=CeeziwwhsZtofPakIFaPRu7J_Y1N_jYctW_5qZRgCC4,2315
814
+ wbcore/contrib/permission/viewsets/__init__.py,sha256=Fc9L_HXR1AnSAKn8OdwBSrLu9Zg2F1Fh4l0C1Pt0e6Y,60
815
+ wbcore/contrib/permission/viewsets/mixins.py,sha256=wDrUeJnQJXJjM6Ftuj_aCJRG8RmNmGghUF1KSF9OJ6Y,245
816
+ wbcore/contrib/permission/viewsets/viewsets.py,sha256=gHVVHtcC_s-N4Tz4Gc1rPXAwZ2xe_AL_c0bNvJmKvfk,5769
817
+ wbcore/contrib/permission/viewsets/configs/__init__.py,sha256=XP5aJk3srxn7neISjnTvTHTHwHc53WAg77RyAUaFga4,286
818
+ wbcore/contrib/permission/viewsets/configs/buttons.py,sha256=f3yQTdPNkBUVGVrTQQATsrkPDOJuHHdaCA5OICzkHhg,1402
819
+ wbcore/contrib/permission/viewsets/configs/displays.py,sha256=sVIkkSoCUw2gm5tfzzj1Qez-Op5zrjnlt7-potMflBM,1560
820
+ wbcore/contrib/permission/viewsets/configs/endpoints.py,sha256=frdYqtggx1LKchl0Ftlur9nXyQxSS124C_Cvz3H55oI,1044
821
+ wbcore/contrib/permission/viewsets/configs/titles.py,sha256=ioH9Rdf7HdHHyGPx8sdMqSzeeQTjp3DSmyfdvSm--rs,520
815
822
  wbcore/contrib/tags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
816
823
  wbcore/contrib/tags/admin.py,sha256=gIgCl7P4_d2x5FK1Gs5dYwWISY7beWclwQXHRkoZhrI,433
817
824
  wbcore/contrib/tags/apps.py,sha256=DSaqTCfj8DjVBHQdQtrRQvrw-wF_igOE9DUvMv47EK4,234
@@ -954,12 +961,12 @@ wbcore/contrib/workflow/viewsets/endpoints/process.py,sha256=a9ifyHJAJluOzwR-f9H
954
961
  wbcore/contrib/workflow/viewsets/endpoints/step.py,sha256=_h0lIaACyqwtBdbGaWZhkHCiOH3zQXtvtL_iNUsYrGE,750
955
962
  wbcore/contrib/workflow/viewsets/endpoints/transition.py,sha256=dPjR2w8zQZe4ZvReUuT5g3iWzwu0DjWh1Lrd0F4aLoo,1043
956
963
  wbcore/contrib/workflow/viewsets/menu/__init__.py,sha256=d2BGaVT0ImRyMPYRiFMWRgOFM3cvyL9j0h6TXSvDtYw,435
957
- wbcore/contrib/workflow/viewsets/menu/condition.py,sha256=a8T9nDiQ5IXNXg5vxKb_WQs1ccNiSN4MiTqA9N7Ko28,672
958
- wbcore/contrib/workflow/viewsets/menu/data.py,sha256=GhJ0eQEcIqnU6hLprqjP0ozWsvaifOD_BSX9XZedI2s,637
959
- wbcore/contrib/workflow/viewsets/menu/process.py,sha256=1b39urJGxDR-EHOmHdJCJg5KPDB2TwICCiF3cAdf0dE,655
960
- wbcore/contrib/workflow/viewsets/menu/step.py,sha256=rmz3xjhAW195eUWwX3UEKBwbTpJzAayAhtDugUUCPVA,4300
961
- wbcore/contrib/workflow/viewsets/menu/transition.py,sha256=cnDdLrOWC30RhoykDTOHSlQFLiPnmho6jT_o8bCtTEY,679
962
- wbcore/contrib/workflow/viewsets/menu/workflow.py,sha256=wY6P0q9gSErWk4r6ONEqh3hrwrVjBnTbxR_nRC9Rylo,665
964
+ wbcore/contrib/workflow/viewsets/menu/condition.py,sha256=BxoKli5cqn_lJVON5GDqROZ0bm3dlTsJYWKJton5MxE,602
965
+ wbcore/contrib/workflow/viewsets/menu/data.py,sha256=YWL2F-BYDID2D18VB6t2X9Y32wrumfRH9D0hUeMgcQA,531
966
+ wbcore/contrib/workflow/viewsets/menu/process.py,sha256=uGrG8mg0r4U9r5RtCjwYHCwRzuE8r-9-E_GbJ1p6IT0,571
967
+ wbcore/contrib/workflow/viewsets/menu/step.py,sha256=0W0CyuNKVBwcjBgpiuUb-qDvUvH5tzSySu0KQ_I20_k,4118
968
+ wbcore/contrib/workflow/viewsets/menu/transition.py,sha256=bX5yo5El92DXUXWheLhRpyP1jI1KFehesda5O32DaXI,609
969
+ wbcore/contrib/workflow/viewsets/menu/workflow.py,sha256=ucGgy9d9XV23D0zp9aTgPg8RZG_0xbsbbQ7_TXwUuZA,581
963
970
  wbcore/contrib/workflow/viewsets/titles/__init__.py,sha256=cXCyCoOQDz91Ztg_PFn-gswwNhS93z2SdntpDPUxUh8,516
964
971
  wbcore/contrib/workflow/viewsets/titles/condition.py,sha256=ZsBZmN0gl60b3bkZbxuqJZ_szCV4JTNNNxkS0tvq5k0,353
965
972
  wbcore/contrib/workflow/viewsets/titles/data.py,sha256=ZadgweqTTMBO0wkXEwQNLgkPyP5NurdG5_-flNFPwL4,332
@@ -1073,13 +1080,6 @@ wbcore/models/__init__.py,sha256=Ukm6r1FTiPMwcXOmiTmW73aktzFmQicN7Cm7XISD8fg,309
1073
1080
  wbcore/models/base.py,sha256=Ii1U9BQRbW3TRzEkTRtsDJR19bxELMdddqGOjCyfEMA,6642
1074
1081
  wbcore/models/fields.py,sha256=IsHaIzQ2GU_rC7AORdSF9IIc_XkXPkEK5rV0wnijRmU,984
1075
1082
  wbcore/models/orderable.py,sha256=3uxEHuixP-qeCp_s86JzYC-ENAqh1NIlNOilht1h9bM,171
1076
- wbcore/permissions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1077
- wbcore/permissions/backend.py,sha256=pLK_Hpk_2O4pMXEnUkw_dDYG2Jagm4vK0ER9eZt80MY,1368
1078
- wbcore/permissions/mixins.py,sha256=LfuFM-RcB83_-ChFPvwsoL5SbY4in7gEgaqDQ2LRyTQ,1795
1079
- wbcore/permissions/permissions.py,sha256=cIj7NWhG5ws_4JHYOLYmlxQt72ygq_eAPBNWMG-wkgU,1801
1080
- wbcore/permissions/registry.py,sha256=fS4tbLF_5IIrHXqeZRlsqZ7XRUaqln4Oz86enjX83tg,1085
1081
- wbcore/permissions/shortcuts.py,sha256=xCtU-CCfW3bCHQG5H94SxrHDLm6TStsDpqKu7nDv188,1137
1082
- wbcore/permissions/utils.py,sha256=Bn7Gj4kabzEwCdz-lnqtJlH-1Zy1MRJdDdBPXKszmdQ,935
1083
1083
  wbcore/release_notes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1084
1084
  wbcore/release_notes/admin.py,sha256=R9oLaJpFcyHqZk3R5sdajrcYSbbtFjXuvIqsZUaCVo8,728
1085
1085
  wbcore/release_notes/buttons.py,sha256=QIQVvFp_Q-PkeWOEZvV5HqzEZBe7RDIUQc6j-B9MNi8,1132
@@ -1156,7 +1156,7 @@ wbcore/test/e2e_helpers_methods/e2e_checks.py,sha256=teyYS5OQGSy2r7VvhfxkaskPOrQ
1156
1156
  wbcore/test/e2e_helpers_methods/e2e_helper_methods.py,sha256=Uo61TfEwYOP_u9N84gz-asZ4VwK80cWhdlnhJpnw8U8,17654
1157
1157
  wbcore/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1158
1158
  wbcore/tests/conftest.py,sha256=mIDICLGEZNz-fluDsu_qRdqv-KIVMvC_3uHduww5FNI,1452
1159
- wbcore/tests/models.py,sha256=QYJRhVMJZ6nENYuO-ktieiKvw3clxy57n3Is5h0tcmg,207
1159
+ wbcore/tests/models.py,sha256=AYmwSK5uEcRNVHx2R1Irm5-vZvdj4L5ayXa0Puqd-zc,209
1160
1160
  wbcore/tests/test_configs.py,sha256=PQ-VKV-fHN4bcS0naflpO6VMKMW0fw1_K9i0n05DYZo,1910
1161
1161
  wbcore/tests/test_enums.py,sha256=KwnEznR6PdWN9AHFMY1qx0krOqAoT7QZF8x-BPsOanM,1741
1162
1162
  wbcore/tests/test_list_display.py,sha256=9zX8grPa0lie65vxDAzJUBTjwVIep2mItbu0voSwhHs,721
@@ -1196,7 +1196,6 @@ wbcore/tests/test_new_display/test_pages.py,sha256=j3eycrVezN9qd8f5A2yxDi80skyPN
1196
1196
  wbcore/tests/test_new_display/test_sections.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1197
1197
  wbcore/tests/test_new_display/test_shortcuts.py,sha256=je0ERwpK6K_ud5gVK8iDTt4gqfMDbJmR7OU-QWVqlRs,1413
1198
1198
  wbcore/tests/test_new_display/test_utils.py,sha256=0MQ8bIQSGK2nS2n1-mYVVfeH1ryZORfytaJF0TwYi9g,1545
1199
- wbcore/tests/test_permissions/test_backend.py,sha256=vIfyOUBH8Cd4CzHfUoyZqff_vvrQQf7AkggBV4CJjXM,878
1200
1199
  wbcore/tests/test_serializers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1201
1200
  wbcore/tests/test_serializers/test_fields.py,sha256=YATLhLZTWP6TpY57N-Gu0_EAzFV7BAnReJhMv9ShDgk,6428
1202
1201
  wbcore/tests/test_serializers/test_mixins.py,sha256=ItuhLcuEi6qgbeg55Yn0u8hRibUs_uXEOXZty7f1Jpg,1553
@@ -1238,6 +1237,6 @@ wbcore/viewsets/generics.py,sha256=lKDq9UY_Tyc56u1bqaIEvHGgoaXwXxpZ1c3fLVteptI,1
1238
1237
  wbcore/viewsets/mixins.py,sha256=KJxbd2arSplZg2dMD37VgDhCDQa69PyxtOxiCir0eXg,12059
1239
1238
  wbcore/viewsets/utils.py,sha256=4520Ij3ASM8lOa8QZkCqbBfOexVRiZu688eW-PGqMOA,882
1240
1239
  wbcore/viewsets/viewsets.py,sha256=G6BVJ3NzieT0TaeC1T3v8oKIT-nm61INLXnTus_6LUQ,6588
1241
- wbcore-1.61.3.dist-info/METADATA,sha256=EXFt6arLasfzgb36Mrvr-geX6pQTvuH6f0cuYYzJRPA,2316
1242
- wbcore-1.61.3.dist-info/WHEEL,sha256=aha0VrrYvgDJ3Xxl3db_g_MDIW-ZexDdrc_m-Hk8YY4,105
1243
- wbcore-1.61.3.dist-info/RECORD,,
1240
+ wbcore-1.61.5.dist-info/METADATA,sha256=yBwr3aJOjETnSWX9A7V1rSs-5QysKQJuj710aA1Ula8,2316
1241
+ wbcore-1.61.5.dist-info/WHEEL,sha256=aha0VrrYvgDJ3Xxl3db_g_MDIW-ZexDdrc_m-Hk8YY4,105
1242
+ wbcore-1.61.5.dist-info/RECORD,,
@@ -1,6 +0,0 @@
1
- from django.apps import AppConfig
2
-
3
-
4
- class GuardianAppConfig(AppConfig):
5
- name = "wbcore.contrib.guardian"
6
- label = "wbcore_guardian"
@@ -1,3 +0,0 @@
1
- class Guardian:
2
- GUARDIAN_USER_OBJ_PERMS_MODEL = "wbcore_guardian.UserObjectPermission"
3
- GUARDIAN_GROUP_OBJ_PERMS_MODEL = "wbcore_guardian.GroupObjectPermission"
@@ -1,103 +0,0 @@
1
- # Generated by Django 5.0.8 on 2024-09-10 10:44
2
-
3
- import django.db.models.deletion
4
- from django.conf import settings
5
- from django.db import migrations, models
6
-
7
-
8
- class Migration(migrations.Migration):
9
- initial = True
10
-
11
- dependencies = [
12
- ("auth", "0012_alter_user_first_name_max_length"),
13
- ("contenttypes", "0002_remove_content_type_name"),
14
- migrations.swappable_dependency(settings.AUTH_USER_MODEL),
15
- ]
16
-
17
- operations = [
18
- migrations.SeparateDatabaseAndState(
19
- database_operations=[],
20
- state_operations=[
21
- migrations.CreateModel(
22
- name="GroupObjectPermission",
23
- fields=[
24
- ("object_pk", models.CharField(max_length=255, verbose_name="object ID")),
25
- ("id", models.BigAutoField(editable=False, primary_key=True, serialize=False, unique=True)),
26
- ("editable", models.BooleanField(default=True)),
27
- (
28
- "content_type",
29
- models.ForeignKey(
30
- on_delete=django.db.models.deletion.CASCADE, to="contenttypes.contenttype"
31
- ),
32
- ),
33
- ("group", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="auth.group")),
34
- (
35
- "permission",
36
- models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="auth.permission"),
37
- ),
38
- ],
39
- options={
40
- "db_table": "bridger_biggroupobjectpermission",
41
- "abstract": False,
42
- "default_related_name": "groupobjectpermissions",
43
- "unique_together": {("group", "permission", "object_pk")},
44
- },
45
- ),
46
- migrations.CreateModel(
47
- name="UserObjectPermission",
48
- fields=[
49
- ("object_pk", models.CharField(max_length=255, verbose_name="object ID")),
50
- ("id", models.BigAutoField(editable=False, primary_key=True, serialize=False, unique=True)),
51
- ("editable", models.BooleanField(default=True)),
52
- ("system", models.BooleanField(default=False)),
53
- (
54
- "content_type",
55
- models.ForeignKey(
56
- on_delete=django.db.models.deletion.CASCADE, to="contenttypes.contenttype"
57
- ),
58
- ),
59
- (
60
- "permission",
61
- models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="auth.permission"),
62
- ),
63
- (
64
- "user",
65
- models.ForeignKey(
66
- on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
67
- ),
68
- ),
69
- ],
70
- options={
71
- "db_table": "bridger_biguserobjectpermission",
72
- "abstract": False,
73
- "default_related_name": "userobjectpermissions",
74
- "unique_together": {("user", "permission", "object_pk")},
75
- },
76
- ),
77
- ],
78
- ),
79
- migrations.AlterModelTable(
80
- name="groupobjectpermission",
81
- table=None,
82
- ),
83
- migrations.AlterModelTable(
84
- name="userobjectpermission",
85
- table=None,
86
- ),
87
- migrations.AddIndex(
88
- model_name="groupobjectpermission",
89
- index=models.Index(fields=["content_type", "object_pk"], name="wbcore_guar_content_4afd41_idx"),
90
- ),
91
- migrations.AddIndex(
92
- model_name="groupobjectpermission",
93
- index=models.Index(fields=["content_type", "object_pk", "group"], name="wbcore_guar_content_83dcd4_idx"),
94
- ),
95
- migrations.AddIndex(
96
- model_name="userobjectpermission",
97
- index=models.Index(fields=["content_type", "object_pk"], name="wbcore_guar_content_138d49_idx"),
98
- ),
99
- migrations.AddIndex(
100
- model_name="userobjectpermission",
101
- index=models.Index(fields=["content_type", "object_pk", "user"], name="wbcore_guar_content_98fc0f_idx"),
102
- ),
103
- ]
@@ -1,12 +0,0 @@
1
- from celery import shared_task
2
-
3
- from wbcore.contrib.guardian.models.mixins import PermissionObjectModelMixin
4
- from wbcore.utils.itertools import get_inheriting_subclasses
5
- from wbcore.workers import Queue
6
-
7
-
8
- @shared_task(queue=Queue.EXTENDED_BACKGROUND.value)
9
- def reload_permissions_as_task(prune_existing: bool | None = True, force_pruning: bool | None = False):
10
- for subclass in get_inheriting_subclasses(PermissionObjectModelMixin):
11
- for instance in subclass.objects.iterator():
12
- instance.reload_permissions(prune_existing=prune_existing, force_pruning=force_pruning)
@@ -1,72 +0,0 @@
1
- from django.db import models
2
-
3
-
4
- class PermissionMixin(models.Model):
5
- class Meta:
6
- abstract = True
7
-
8
- @classmethod
9
- @property
10
- def view_perm_str(cls) -> str:
11
- """
12
- Get the view string permission identifer
13
-
14
- Returns:
15
- The view string permission identifier
16
- """
17
- return f"{cls._meta.app_label}.view_{cls._meta.model_name}"
18
-
19
- @classmethod
20
- @property
21
- def change_perm_str(cls) -> str:
22
- """
23
- Get the change string permission identifer
24
-
25
- Returns:
26
- The change string permission identifier
27
- """
28
- return f"{cls._meta.app_label}.change_{cls._meta.model_name}"
29
-
30
- @classmethod
31
- @property
32
- def delete_perm_str(cls) -> str:
33
- """
34
- Get the delete string permission identifer
35
-
36
- Returns:
37
- The delete string permission identifier
38
- """
39
- return f"{cls._meta.app_label}.delete_{cls._meta.model_name}"
40
-
41
- @classmethod
42
- @property
43
- def select_perm_str(cls) -> str:
44
- """
45
- Get the select string permission identifer
46
-
47
- Returns:
48
- The select string permission identifier
49
- """
50
- return f"{cls._meta.app_label}.select_{cls._meta.model_name}"
51
-
52
- @classmethod
53
- @property
54
- def admin_perm_str(cls) -> str:
55
- """
56
- Get the admin string permission identifer
57
-
58
- Returns:
59
- The admin string permission identifier
60
- """
61
- return f"{cls._meta.app_label}.administrate_{cls._meta.model_name}"
62
-
63
- @classmethod
64
- @property
65
- def add_perm_str(cls) -> str:
66
- """
67
- Get the add string permission identifer
68
-
69
- Returns:
70
- The add string permission identifier
71
- """
72
- return f"{cls._meta.app_label}.add_{cls._meta.model_name}"
@@ -1,33 +0,0 @@
1
- from contextlib import suppress
2
-
3
- from django.conf import settings
4
- from django.contrib.auth.models import Group
5
- from django.db.models import QuerySet
6
- from django.utils.functional import cached_property
7
- from django.utils.module_loading import import_string
8
-
9
- from wbcore.contrib.authentication.models import User
10
-
11
-
12
- class UserBackendRegistry:
13
- def __init__(self):
14
- internal_users_backend_path = getattr(settings, "USER_BACKEND", "wbcore.permissions.backend.UserBackend")
15
- internal_users_backend_class = import_string(internal_users_backend_path)
16
- self.backend = internal_users_backend_class()
17
-
18
- @cached_property
19
- def internal_groups(self) -> QuerySet[Group]:
20
- return self.backend.get_internal_groups().all()
21
-
22
- @cached_property
23
- def internal_users(self) -> QuerySet[User]:
24
- return self.backend.get_internal_users().all()
25
-
26
- def reset_cache(self):
27
- with suppress(AttributeError):
28
- del self.internal_users
29
- with suppress(AttributeError):
30
- del self.internal_groups
31
-
32
-
33
- user_registry = UserBackendRegistry()
@@ -1,38 +0,0 @@
1
- from django.contrib.auth.models import Group
2
- from django.db.models.query import QuerySet
3
-
4
- from wbcore.contrib.authentication.models.users import User
5
-
6
-
7
- def get_internal_groups() -> QuerySet[Group]:
8
- from wbcore.permissions.registry import user_registry
9
-
10
- """
11
- Return the cached groups of internals users
12
-
13
- Returns:
14
- A queryset of group corresponding to the internal notion defined by the set UserBackend
15
-
16
- Raises:
17
- ValueError: If user backend path does not correspond to a valid module
18
- """
19
- return user_registry.internal_groups
20
-
21
-
22
- def get_internal_users() -> QuerySet[User]:
23
- from wbcore.permissions.registry import user_registry
24
-
25
- """
26
- Return the cached queryset of internals users
27
-
28
- Returns:
29
- A queryset of user corresponding to the internal notion defined by the set UserBackend
30
-
31
- Raises:
32
- ValueError: If user backend path does not correspond to a valid module
33
- """
34
- return user_registry.internal_users
35
-
36
-
37
- def is_internal_user(user: User, include_superuser: bool = False) -> bool:
38
- return user and (user.is_internal or (include_superuser and user.is_superuser))
@@ -1,26 +0,0 @@
1
- from django.contrib.auth.models import Permission
2
-
3
-
4
- def perm_to_permission(perm: str) -> Permission:
5
- """
6
- Convert a identifier string permission format in 'app_label.codename'
7
- (teremd as *perm*) to a django permission instance.
8
-
9
- Args:
10
- perm: The string permission identifier in the form 'app_label.codename'
11
-
12
- Returns:
13
- The Permission object corresponding to the given string identifier
14
-
15
- Raises:
16
- AttributeError: When the given string identifier does not match the expected format 'app_label.codename'
17
- """
18
- try:
19
- app_label, codename = perm.split(".", 1)
20
- except IndexError as e:
21
- raise AttributeError(
22
- "The format of identifier string permission (perm) is wrong. " "It should be in 'app_label.codename'."
23
- ) from e
24
- else:
25
- permission = Permission.objects.get(content_type__app_label=app_label, codename=codename)
26
- return permission
File without changes