clinicedc 2.0.24__py3-none-any.whl → 2.0.26__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.

Potentially problematic release.


This version of clinicedc might be problematic. Click here for more details.

Files changed (58) hide show
  1. {clinicedc-2.0.24.dist-info → clinicedc-2.0.26.dist-info}/METADATA +1 -1
  2. {clinicedc-2.0.24.dist-info → clinicedc-2.0.26.dist-info}/RECORD +58 -57
  3. edc_action_item/site_action_items.py +2 -2
  4. edc_appointment/view_utils/appointment_button.py +1 -1
  5. edc_consent/modeladmin_mixins/consent_model_admin_mixin.py +14 -12
  6. edc_consent/models/__init__.py +2 -2
  7. edc_consent/models/signals.py +26 -28
  8. edc_dashboard/view_mixins/message_view_mixin.py +3 -4
  9. edc_identifier/admin.py +3 -2
  10. edc_identifier/identifier.py +5 -5
  11. edc_identifier/model_mixins.py +1 -1
  12. edc_identifier/models.py +7 -6
  13. edc_identifier/research_identifier.py +1 -1
  14. edc_identifier/short_identifier.py +1 -1
  15. edc_identifier/simple_identifier.py +15 -5
  16. edc_identifier/subject_identifier.py +2 -2
  17. edc_identifier/utils.py +13 -14
  18. edc_listboard/view_mixins/search_listboard_view_mixin.py +6 -7
  19. edc_metadata/view_mixins/metadata_view_mixin.py +7 -4
  20. edc_navbar/navbar.py +2 -2
  21. edc_randomization/admin.py +3 -1
  22. edc_randomization/apps.py +8 -11
  23. edc_randomization/auth_objects.py +9 -0
  24. edc_randomization/blinding.py +6 -12
  25. edc_randomization/decorators.py +2 -3
  26. edc_randomization/exceptions.py +73 -0
  27. edc_randomization/model_mixins.py +2 -3
  28. edc_randomization/randomization_list_importer.py +35 -36
  29. edc_randomization/randomization_list_verifier.py +19 -21
  30. edc_randomization/randomizer.py +12 -28
  31. edc_randomization/site_randomizers.py +2 -16
  32. edc_randomization/system_checks.py +1 -1
  33. edc_randomization/utils.py +3 -10
  34. edc_review_dashboard/middleware.py +4 -4
  35. edc_review_dashboard/views/subject_review_listboard_view.py +3 -3
  36. edc_screening/age_evaluator.py +1 -1
  37. edc_screening/eligibility.py +5 -5
  38. edc_screening/exceptions.py +3 -3
  39. edc_screening/gender_evaluator.py +1 -1
  40. edc_screening/modelform_mixins.py +1 -1
  41. edc_screening/screening_eligibility.py +30 -35
  42. edc_screening/utils.py +10 -12
  43. edc_sites/admin/list_filters.py +2 -2
  44. edc_sites/admin/site_model_admin_mixin.py +8 -8
  45. edc_sites/exceptions.py +1 -1
  46. edc_sites/forms.py +3 -1
  47. edc_sites/management/commands/sync_sites.py +11 -17
  48. edc_sites/models/site_profile.py +6 -4
  49. edc_sites/post_migrate_signals.py +2 -2
  50. edc_sites/site.py +8 -8
  51. edc_sites/utils/add_or_update_django_sites.py +3 -3
  52. edc_sites/utils/valid_site_for_subject_or_raise.py +7 -4
  53. edc_sites/view_mixins.py +2 -2
  54. edc_subject_dashboard/view_utils/subject_screening_button.py +5 -3
  55. edc_view_utils/dashboard_model_button.py +3 -3
  56. edc_visit_schedule/site_visit_schedules.py +2 -1
  57. {clinicedc-2.0.24.dist-info → clinicedc-2.0.26.dist-info}/WHEEL +0 -0
  58. {clinicedc-2.0.24.dist-info → clinicedc-2.0.26.dist-info}/licenses/LICENSE +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: clinicedc
3
- Version: 2.0.24
3
+ Version: 2.0.26
4
4
  Summary: A clinical trials data management framework built on Django
5
5
  Keywords: django,clinicedc,edc,clinical trials,research,data management,esource
6
6
  Author: Erik van Widenfelt, Jonathan Willitts
@@ -83,7 +83,7 @@ edc_action_item/models/signals.py,sha256=UtJEGw1oP479zhZ77q5L2wGBA92TUk4FpC2UDeS
83
83
  edc_action_item/offline_models.py,sha256=qPls5N0KfA9A-xX9ycbw5H9NuLpnRA4TFR6QES_exCw,961
84
84
  edc_action_item/post_migrate_signals.py,sha256=V82WIPGPOS15jvveUnjPYA8JJRyJNGLvgwnkAkgDTVk,387
85
85
  edc_action_item/send_email.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
86
- edc_action_item/site_action_items.py,sha256=TCWHw_ckPA82wRtvyVxJYc6AI18sFZLrUIl_k7Z3KCY,6495
86
+ edc_action_item/site_action_items.py,sha256=AhxUcsZoqxPVNJUCUAO_-4Mbz80KoP06a5A9Oixzvok,6555
87
87
  edc_action_item/stubs.py,sha256=sXdo0mWuPqldxLVHoPA8fRF4tgZzrarjUVfL2ZcKj4k,1859
88
88
  edc_action_item/system_checks.py,sha256=zV8LPgwCpU9i_nQfB7HLsqiEPxy7mNFPPNRfDM-K9Eg,814
89
89
  edc_action_item/templates/edc_action_item/action_item_admin_additional_instructions.html,sha256=uw4LCaxio14fRdPywBqU0p-wQDgsfgBkpSNj6wCWu00,181
@@ -443,7 +443,7 @@ edc_appointment/utils.py,sha256=6K0GkLdUJtVxvmHcRNOnLNeFNgAcCtn6pjeVtFmNBzw,3132
443
443
  edc_appointment/view_mixins/__init__.py,sha256=2EubqlkD0BWqdKyOGRroFqirvBDk7oolMAa7fmmz_S8,57
444
444
  edc_appointment/view_mixins/appointment_view_mixin.py,sha256=0ajpPcVcOHZkXsTUvYS_kI3W0zJItGca5Gab7ORjceg,4469
445
445
  edc_appointment/view_utils/__init__.py,sha256=r44ui0AWLVhW2CzDg_2d-9Hu92xHa7miMWvyt8IG23s,50
446
- edc_appointment/view_utils/appointment_button.py,sha256=QggQF33U011ipBXo4dpzpFZEw6ztTvODL03BTX-QeKA,2152
446
+ edc_appointment/view_utils/appointment_button.py,sha256=T5NrYwnNxG9II9MAaLH1UPfrKsfLoGTzy7anjl__8Dw,2159
447
447
  edc_appointment/views/__init__.py,sha256=qIHZEVVzTMCaW7LgFZ5LJeTK5iJtfHTIcPfYWclnxQM,101
448
448
  edc_appointment/views/home_view.py,sha256=rkstpwqRwQ89pjTSJOsy9vwAJ4xQHHeRWZOOpGs8w50,197
449
449
  edc_appointment/views/unscheduled_appointment_view.py,sha256=BSRR40ocxk7YmoaqicpPv2NMwfFZDGpN6BvG7kWC7XQ,2981
@@ -584,7 +584,7 @@ edc_consent/model_mixins/consent_model_mixin.py,sha256=b_RjN1LY9n-eGfr4cCeZFOXw_
584
584
  edc_consent/model_mixins/consent_version_model_mixin.py,sha256=8kXPjMU8RcgWjAYltuqPVCwRDvgAp1b6Ic1SGWsU8BU,3139
585
585
  edc_consent/model_mixins/requires_consent_fields_model_mixin.py,sha256=NAQtakqj3WpVMbWRBQqCpF7pzrQeUOfFtaGkSDoRVZg,347
586
586
  edc_consent/modeladmin_mixins/__init__.py,sha256=2tPZOwJXTDUoU5UFUcJbptFm9hK_SE7-h_L1CttD5zw,278
587
- edc_consent/modeladmin_mixins/consent_model_admin_mixin.py,sha256=zDUcXZI5-hM91zNi-VIHw_kQzDmErgcviGnI3CaGpg0,7533
587
+ edc_consent/modeladmin_mixins/consent_model_admin_mixin.py,sha256=nf5RP84lq6G9oZpfEwDGKsKQ7B-oqYxaafWyC-S2ww8,7590
588
588
  edc_consent/modeladmin_mixins/requires_consent_model_admin_mixin.py,sha256=qpxsud704sXx6MzeZ-TBNIFzrAWS07DOwdtx8G0c0yk,764
589
589
  edc_consent/modelform_mixins/__init__.py,sha256=Z5bXi8FIka147nV0VLjb2PHCzJDaI4lYloQixkyGJcE,278
590
590
  edc_consent/modelform_mixins/consent_modelform_mixin/__init__.py,sha256=qg__oajqZP9ktA4BvoevB-hoYfAXTKCmhQyO4g-Dk04,196
@@ -593,9 +593,9 @@ edc_consent/modelform_mixins/consent_modelform_mixin/consent_modelform_mixin.py,
593
593
  edc_consent/modelform_mixins/consent_modelform_mixin/consent_modelform_validation_mixin.py,sha256=Wwo3l-pdFlLkK8q50GkaCyPUXtuPJXODqYfb3HF1jDw,9613
594
594
  edc_consent/modelform_mixins/consent_modelform_mixin/review_fields_modelform_mixin.py,sha256=HOiWpf8SnPaGMtRbKM6uAglbV1HmQWdzxSoyQW1ab2U,1922
595
595
  edc_consent/modelform_mixins/requires_consent_modelform_mixin.py,sha256=-rQAmOvl1fx8-lEUB6M4V7tqaTqDRxtid002EWYPIxM,2340
596
- edc_consent/models/__init__.py,sha256=kTUrf6WlsKInX7jVuD3DyIqRW1OUaeSemflLLzWLV_I,278
596
+ edc_consent/models/__init__.py,sha256=hBdNWnac5MtlZATkOKZHUelMRn2M6jPCgGktCio5Wgk,282
597
597
  edc_consent/models/edc_permissions.py,sha256=f9PWQ1ZFz4rKT7wFpfr8anQ7mV6sCdNaWNMimPLGae8,338
598
- edc_consent/models/signals.py,sha256=3e_VTdCMlE0D1TteK-hk1YxNDbBgAr894SK2SD8a-cA,3148
598
+ edc_consent/models/signals.py,sha256=vhLiZPwSinm_CXh-r9Ty_Xaja5okvqrSFCkDp6DHylc,3020
599
599
  edc_consent/navbars.py,sha256=Bqb2UfOCLL6yuT_fSvKYQymbBj7V6q9CwvmI-VdUmls,334
600
600
  edc_consent/site_consents.py,sha256=jQYufDBievxoyOlC0Q1Llxv9xYqCEyk58Q1Fg_cu3mY,16882
601
601
  edc_consent/stubs.py,sha256=ZXjNqT6nBHRFHCB5tCOzBC3ZdiiBR3IitygO3FldTZA,513
@@ -732,7 +732,7 @@ edc_dashboard/utils.py,sha256=iGVPtEUXzG5_MU5SvgjbA5qQ4aZOF226ENpApAB5Xg4,1447
732
732
  edc_dashboard/view_mixins/__init__.py,sha256=B7ZVw0KOZ0cPkJRv40r0jG3Nwyb2uUjDbjz-e4JKT7o,287
733
733
  edc_dashboard/view_mixins/administration_view_mixin.py,sha256=6kubyQ3UuPYCf2A3bt9XH33EUGu8zRoLRZYiHMFOXVA,3671
734
734
  edc_dashboard/view_mixins/edc_view_mixin.py,sha256=8bFVBJAgbydluu8kvpcNGFTOE_xeJs1wROrzmvCuzvU,2957
735
- edc_dashboard/view_mixins/message_view_mixin.py,sha256=Vc-yoyxvM9kT8jlRLhB5aIokEXc7fp-kNuNHXRKMMnw,1474
735
+ edc_dashboard/view_mixins/message_view_mixin.py,sha256=09qg6KcpUvd8jb0z9I7665O82-TvsYsTrG8k0GbQOdM,1420
736
736
  edc_dashboard/view_mixins/template_request_context_mixin.py,sha256=NMvboUNf0L23QRYgaXXH9Na6ZGgsymuEp_LB3rt59AU,1013
737
737
  edc_dashboard/view_mixins/url_request_context_mixin.py,sha256=KynhaGsRzsquvtxXN1oqK3cNWto6oF3nZMM5HJCDGus,2116
738
738
  edc_dashboard/views/__init__.py,sha256=QLp3TlaQutQYjqAjR38EqCAr10evzZcW1ikzZC27enc,201
@@ -1184,12 +1184,12 @@ edc_glucose/model_mixins/ogtt_model_mixin.py,sha256=O4EwgHyVTGnA0POdD95CDWJ6Mi6y
1184
1184
  edc_glucose/models.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1185
1185
  edc_glucose/utils.py,sha256=-v_0y24hSNKhcZ4wOK-2Qei4sgqVzPuJPXIs1Zo50sk,1420
1186
1186
  edc_identifier/__init__.py,sha256=kkhaH8PAtHEohoVF2VENZfZmXeKyAnHWJHS1NEWuLyM,97
1187
- edc_identifier/admin.py,sha256=LaKWYyBGNcRJ7yMNajKvVtj3JbcqqLSrizL3sWDf82g,1765
1187
+ edc_identifier/admin.py,sha256=OTkIrDEQW4nfcDyKkWKm-s6qKWUBiuquELUErbf48gs,1786
1188
1188
  edc_identifier/admin_site.py,sha256=Aev8xku-hX60RlijUe5IJrpxEdiceLbnc4kdLN7uX3g,173
1189
1189
  edc_identifier/apps.py,sha256=kuK5x7h3i3k6aFrSnHIPmgkHrcPaIvXif5dVnbbiq-8,584
1190
1190
  edc_identifier/checkdigit_mixins.py,sha256=GxnOjfkwEzfoV1bQyJGDW5y-O8wmzvSVziQCqMMC4Eg,850
1191
1191
  edc_identifier/exceptions.py,sha256=ByPaQlE9XHGaIhK37yNn2vMRbfbOcI4hqu4AG9cY-Ko,451
1192
- edc_identifier/identifier.py,sha256=3sDqxfGi3xVDMP7rM-NxjJQ3cIwbQC_635A68R6DyYs,4585
1192
+ edc_identifier/identifier.py,sha256=NGL19KsOHSyLpPmiR1ky2lJWn5Bul6Wxt2z-Byp36ek,4579
1193
1193
  edc_identifier/managers.py,sha256=JbjunoJnb8PRTGycJXSrfhqzajitb7m1k0a-EOirADs,362
1194
1194
  edc_identifier/migrations/0001_initial.py,sha256=d1NniUjz-ZyZeXlFrAEBYB5VUBhMCJsn6nblOWWGJ-A,10487
1195
1195
  edc_identifier/migrations/0001_squashed_0018_auto_20180128_1054.py,sha256=RCIPCLsIj4R0y7ozBiz5hHWbM85WBNatIVDseDEMFmA,8216
@@ -1222,16 +1222,16 @@ edc_identifier/migrations/0016_auto_20180116_1411.py,sha256=c16cIRyB_1kI28ZMiera
1222
1222
  edc_identifier/migrations/0017_identifiermodel_subject_identifier.py,sha256=vOmgbP9nCNjVVNQ4WS50pEuCbYMSqQHQI8bqhiPA_Fk,406
1223
1223
  edc_identifier/migrations/0018_auto_20180128_1054.py,sha256=PqOVF8PuAiUIlVIulVt4q2TlAreKiVeyZE2ynsoI8Zs,421
1224
1224
  edc_identifier/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1225
- edc_identifier/model_mixins.py,sha256=_5yFQ8OPwqRhb3XiL2vhMDWtRjP8jBF3rPVfapoqF_I,5163
1226
- edc_identifier/models.py,sha256=bADlUiqTz1cCPrLHPvCu7901PE5XuUyKBP72KusouLY,1700
1225
+ edc_identifier/model_mixins.py,sha256=9N75xdk1TZ-qipyMhKDB6dnIKsF0RnG3ihHbWM9p4jI,5170
1226
+ edc_identifier/models.py,sha256=O8RxeiKYXneQ5Kd22jWlaU7JWCLBc6ou4mInPvbaDDg,1802
1227
1227
  edc_identifier/offline_models.py,sha256=Wp4XmewC6gi1MCBq0q0W0Z6gdgJyXBhOQR_DZkfP9tw,131
1228
- edc_identifier/research_identifier.py,sha256=vweDU7TX6WhJ4IGPyWhar4y10T7I3hagnxAbOHbV4uI,5497
1229
- edc_identifier/short_identifier.py,sha256=4QC256lyC2Wh0IVB4I8kIp5C4hoSdA2HqAHzZBgvWSU,4373
1230
- edc_identifier/simple_identifier.py,sha256=hQ__M07jGSjUiFLAu0IM3eKl4i4EZdNKvwcNbhtGnJY,7816
1231
- edc_identifier/subject_identifier.py,sha256=zipoV8tuFuqI1g0_jneIdb9PWy1pG24TiWdZBiutAOw,946
1228
+ edc_identifier/research_identifier.py,sha256=Qd-bBzOxiXZfyK967XZRhD5PPMnZsvUzZ9j4uBQU1e4,5504
1229
+ edc_identifier/short_identifier.py,sha256=0v1ICpRLzWjPVLrIdu2csaeGr-BrTjz6RFmCG03LvG4,4387
1230
+ edc_identifier/simple_identifier.py,sha256=blnHsN8BPFUKt3A0NlOUMGJCLu5kA7uKsCLcFS6BxX4,8070
1231
+ edc_identifier/subject_identifier.py,sha256=90gR-G_TeOPhUopgsOIZLHjKHjEzTzvZCwpxw_WZUEc,959
1232
1232
  edc_identifier/templates/edc_identifier/home.html,sha256=2yWn5pkbOjJoWlEe4FnydQ8m1ZpV1c1wRYHWqpMaBWI,50
1233
1233
  edc_identifier/urls.py,sha256=2v7PVFXITlK1hgmbVOg081MIcBUNrdHdAQmnStWoU0w,309
1234
- edc_identifier/utils.py,sha256=gF3kmt3eIcjXQ3WdQb3Xy0P0kKiMquVjGJherIhrEt0,1630
1234
+ edc_identifier/utils.py,sha256=kKcafKQsrJWuQJpq1mXpqf9CNDGisItZYW4Rmzmive4,1661
1235
1235
  edc_identifier/views.py,sha256=eLbe2d25DMB4xdHSQDGoI4kJtE8R1PSYyDvw2tduHL8,436
1236
1236
  edc_lab/__init__.py,sha256=q0295ZgI17zE6gG-dGlQq72k1edortYGFM-JEZpU8Q0,548
1237
1237
  edc_lab/admin/__init__.py,sha256=Gyps9t4SaJWHjqjvjxZt-MWe63JleYCWTp6IEltfTIo,764
@@ -1620,7 +1620,7 @@ edc_listboard/view_mixins/__init__.py,sha256=aDbmIyoHkifzkK5DAfMJ-365NCnNGs-Ocwk
1620
1620
  edc_listboard/view_mixins/listboard_filter_view_mixin.py,sha256=pApr0k8a6FKzJXTjpejO1QluV-7_p6CT_QWqEdLnPbE,2811
1621
1621
  edc_listboard/view_mixins/querystring_view_mixin.py,sha256=T4O3i6-A2-jZdK863fjf0NFWv2mCXICb6YMQ2qJTfSk,938
1622
1622
  edc_listboard/view_mixins/search_form_view_mixin.py,sha256=6uitlsgTtUhVCH33a4gxrqBckiCLOt3N8sPY8yGB_jo,1154
1623
- edc_listboard/view_mixins/search_listboard_view_mixin.py,sha256=VNbP-p3L2Bkgzyp5exzvE-p4tBl96YF3b_RVpGC4ejg,2952
1623
+ edc_listboard/view_mixins/search_listboard_view_mixin.py,sha256=JpaokTmoChgr3HE2-UhI8vMd6Vfxl0estr_CMQb-WWI,2953
1624
1624
  edc_listboard/views/__init__.py,sha256=IqobRNiACZF8HApUabAHhCUqoGJhzmHxApaTqFxVkPY,127
1625
1625
  edc_listboard/views/listboard_view.py,sha256=-3g3umgXCTw0u07TWSptQJpIaUfGfqLxB3WLrzErSus,8360
1626
1626
  edc_listboard/views/screen/__init__.py,sha256=oEl02vybLD26Ph-4wJgYhTyuh5C6zowqVLz8680olo4,105
@@ -1832,7 +1832,7 @@ edc_metadata/update_metadata_on_schedule_change.py,sha256=YOvZlF2FZS4AxVulzR_hsi
1832
1832
  edc_metadata/urls.py,sha256=K98KOcuIuLJn6j3-qalILJsZMvpQmc_nWgw0HqLEOQU,296
1833
1833
  edc_metadata/utils.py,sha256=tzx2l65DjRh--IvAFLizTmhCReX_ZA40YFan-GJpU9Y,4340
1834
1834
  edc_metadata/view_mixins/__init__.py,sha256=CCQC81_bpGBpDYl7FInMwbjOcyyu5ng9MFFTzMiwEMQ,51
1835
- edc_metadata/view_mixins/metadata_view_mixin.py,sha256=vPNCj4CI9GmMrga1ymz_p-eVAkX2gZJlOnNMnTL9OyU,1691
1835
+ edc_metadata/view_mixins/metadata_view_mixin.py,sha256=wiYn23cjSKLtrPRJZw-aT1bYsTDTSERI_iO0V3KyvVQ,1736
1836
1836
  edc_metadata/views/__init__.py,sha256=c7YFXwUJ3jN7usyMBG61eS6DI9MziY0lo9mu3eR1908,102
1837
1837
  edc_metadata/views/home_view.py,sha256=JFrMLb3x_O3LA0o1XR1SpE1gyLLm6qCGPSMm6U4kkpQ,434
1838
1838
  edc_metadata/views/refresh_metadata_actions_view.py,sha256=R5bWBTrri3yJetiP90k-d8UYYxRLs40bHcSbmGtRYRY,2672
@@ -1987,7 +1987,7 @@ edc_navbar/migrations/0009_alter_edcpermissions_device_created_and_more.py,sha25
1987
1987
  edc_navbar/migrations/0010_alter_edcpermissions_revision.py,sha256=fbma4ZbSTYMqZug7ZJJ_D2ckFO2A8Koqwp1sn_BxJws,789
1988
1988
  edc_navbar/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1989
1989
  edc_navbar/models.py,sha256=K4enndi4ov-N--3LQWeez3yuCMzmbaVGd7J72q_f73Q,306
1990
- edc_navbar/navbar.py,sha256=zCe1SrgKoVYIQ8JTf6RpX0pRsA_n9dEm_KIKxPkrG_0,1723
1990
+ edc_navbar/navbar.py,sha256=rtB6t9h1etGahyYIFMVLVy_1s9FYL3dfvxUXI73bAJY,1705
1991
1991
  edc_navbar/navbar_item.py,sha256=bCj301HLa1ECzlFm_U1kYw4NPuBlyfWMovQQraI6iB0,1782
1992
1992
  edc_navbar/navbars.py,sha256=gyEgEowvluQheEVfejWzLbog7FwUl-oRu8KvTG3oEO4,1157
1993
1993
  edc_navbar/site_navbars.py,sha256=OcutGzhI2uyEqi8eGhhihId8mmZFRSIFcjpTKPszvyY,4220
@@ -2764,15 +2764,16 @@ edc_qareports/templates/edc_qareports/qa_report_note.html,sha256=FnHwiHvucF90gnQ
2764
2764
  edc_qareports/urls.py,sha256=2QK5ajM8JPflnnp-nPybb9n_SxUZF-tzoW0WpcpFFZs,296
2765
2765
  edc_qareports/utils.py,sha256=yy_gHhLgKabU_lfVTU4QTE1hSBfipy7yny2WD2-dZBE,4058
2766
2766
  edc_randomization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2767
- edc_randomization/admin.py,sha256=zLNApXP04QMFPer3OZhYnDmBrgY8nMM_vKvVkazogZo,5855
2767
+ edc_randomization/admin.py,sha256=g9x71IyTXgcrg8dNL_kJ1lSU2asfC-GqlMv62jofFuM,5939
2768
2768
  edc_randomization/admin_site.py,sha256=FC1NwilwEAiUkD8ZrXARElDHugMrzmfL_CPrKR8_MP8,185
2769
- edc_randomization/apps.py,sha256=UnJPhM6LNP3GGfc4fJxs0LMmwG7LngjF3GzyclTE0qg,755
2770
- edc_randomization/auth_objects.py,sha256=PJQCRGbXXhyDd2MGt4d-VJ65EcO0aE-k9OUzf6PXUYQ,2988
2769
+ edc_randomization/apps.py,sha256=QKnAPbUF_PNkUjadujqWD8FvgQW0HhMV1TCHfHXHCIM,728
2770
+ edc_randomization/auth_objects.py,sha256=wfQZyQNKBcQNs5kVIfmm5enWbn9NPScz4s_IYu63RIM,3200
2771
2771
  edc_randomization/auths.py,sha256=SxhYd1vZkjgblT2_YoabhcLIroi-A0VJ7IExnlFNpr8,860
2772
- edc_randomization/blinding.py,sha256=UB_PGOJ6En49_zwngcRga6SbnCMrNFkoTjlP4FkLQV8,2375
2772
+ edc_randomization/blinding.py,sha256=Lo2XKlBwqobOsw0EoCe3CxU3Byfzy47AdRKiLAeAd-M,2198
2773
2773
  edc_randomization/choices.py,sha256=OZWHp-QqeEoLSr0R4XhJpscPy9k1HCBeyVvWMLB13kk,137
2774
2774
  edc_randomization/constants.py,sha256=WcbX-XPWydixQ6jBwk2rs1xEXAfEvcdBEyU7w5vUtI8,385
2775
- edc_randomization/decorators.py,sha256=ya_wYA8apbsH07xH7MtGNgRCKWzBKAGhI3FJelkD53Y,657
2775
+ edc_randomization/decorators.py,sha256=X9BbD3RZLmbshOLZHRKWg1mM9biNYvC9zoLQLmi7zUE,676
2776
+ edc_randomization/exceptions.py,sha256=l7LWBVWFiMIb1IiWh0PLamazqTVXG4SlvkW28ABVYqA,1141
2776
2777
  edc_randomization/migrations/0001_initial.py,sha256=AIwB1QuiIdnBqLXcJRTTRvR98IRuWuj5LCGhn_xt9kA,6098
2777
2778
  edc_randomization/migrations/0002_historicalrandomizationlist.py,sha256=6ucmdv3E1FoWYvl4XPs5EhQKRIcBkjMiQQS4EXCGMaY,7191
2778
2779
  edc_randomization/migrations/0003_auto_20191024_0426.py,sha256=H0ezbsuy80W5RyilNhWLqGHMjni9mPvHKQrwVdGhzdw,485
@@ -2789,18 +2790,18 @@ edc_randomization/migrations/0013_alter_edcpermissions_revision_and_more.py,sha2
2789
2790
  edc_randomization/migrations/0014_alter_edcpermissions_device_created_and_more.py,sha256=oLNjuC-TkyTZNsos10e1GOisepx4X-r4P4yGnwu-95U,4771
2790
2791
  edc_randomization/migrations/0015_alter_edcpermissions_revision_and_more.py,sha256=cPhN0Lh_MBe7e2CkprclFIyj-110FZ3waZULUeCt-Jg,1806
2791
2792
  edc_randomization/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2792
- edc_randomization/model_mixins.py,sha256=pKLkZJeYgobKPyHVJTby8Q7zBKQoflbLgraTN4pv_Ys,3743
2793
+ edc_randomization/model_mixins.py,sha256=BJe7eLxveTFNPIS7hz7796hSL0DFvTml03HmNih3tQs,3809
2793
2794
  edc_randomization/models/__init__.py,sha256=iaJ6FM7VVqLpp8M-OjVWjohp4ELdxtPXqbEiT3iN5Tw,94
2794
2795
  edc_randomization/models/edc_permissions.py,sha256=f6P4zXxLQdTAbn2KnFlwfE86Lmzj7Ecp4JJ2F8mrwTc,286
2795
2796
  edc_randomization/models/randomization_list.py,sha256=Hd5yUSZ5HBKhNzYdlbJufab8U2x3Dzw8n4WXnYzJxyc,253
2796
- edc_randomization/randomization_list_importer.py,sha256=9jIJTG7rGjze4WmaFsJaw4qhFvy5mugZ4mx1CKKV6_o,12416
2797
- edc_randomization/randomization_list_verifier.py,sha256=b9-ZbaWSSv6fCrrDgHjijUACTMsUuU_htbkHqAcE8l4,6669
2798
- edc_randomization/randomizer.py,sha256=N57PvCGjsjlw4r4V-zE5K7uWnLUw4QwZREu-mQ-O_4U,12939
2797
+ edc_randomization/randomization_list_importer.py,sha256=YZG5Z0faOD85UpIFLkwt9Hq-2IAyI43xGINdhzI5YKQ,12815
2798
+ edc_randomization/randomization_list_verifier.py,sha256=A0LRQkI-pMt9TaJ3kps5LncMJZaz5eMdRFDeI35fIGo,6918
2799
+ edc_randomization/randomizer.py,sha256=_LYZp7gmpOIkovCs7TfAt78wb_Kl4iV6I85YIxgQ5pg,12729
2799
2800
  edc_randomization/randomizers.py,sha256=JvMDAnsgvRZkl50Bawm2iLsyw3bfWfGwBafn54K5g44,297
2800
- edc_randomization/site_randomizers.py,sha256=et5Yf92ld8qgn-AThrBTRALB3WInI03UK4yGw2PlsKo,4499
2801
- edc_randomization/system_checks.py,sha256=S_2Vkq3J3DQVEXOV3JNNlCzuZcl1l34-tTnaBaSZaBk,3025
2801
+ edc_randomization/site_randomizers.py,sha256=CcHRz_J6OlJ64-iNul_LOHM0ai6SbcX5AMDrFFMewDA,4390
2802
+ edc_randomization/system_checks.py,sha256=ryGqND9mS0u05MSU-wBBfX-HaOdoFMdWok25uM2Mcdo,3039
2802
2803
  edc_randomization/urls.py,sha256=yQnOoy5U5uL00f7_JJcZk7toskmZunG_kJdl-epCV9U,223
2803
- edc_randomization/utils.py,sha256=uRTtoyAuWo5D6y65ZHBWMSody8IMJBK6cS3mFmJGIMw,5730
2804
+ edc_randomization/utils.py,sha256=Os5YtrI4RDGnudmE5nuTxXiuBWqekObipWfF79etkmE,5697
2804
2805
  edc_randomization/views.py,sha256=mQnAoYzIbqXFXablJbPY3NdJc4K3fD4le-GOF2kpMmE,340
2805
2806
  edc_refusal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2806
2807
  edc_refusal/admin.py,sha256=upce4HEPyPYKTe_R_krQ9TaLufcJN50c0lw4JrzbTwE,2151
@@ -2953,7 +2954,7 @@ edc_review_dashboard/apps.py,sha256=oE7NrIwzeRqMzLbWe_6Mt-CqzDAw5zASwZDbdaqJP1o,
2953
2954
  edc_review_dashboard/auths.py,sha256=3Xe7yNnuOx4Kc8fwVGte0xmDYsaCZUevJQUSbRL55mU,1148
2954
2955
  edc_review_dashboard/dashboard_templates.py,sha256=hzHXLHoOjZTR0gScZkna8qAHY7yotK4QVByfPtWY_p8,174
2955
2956
  edc_review_dashboard/locale/sw/LC_MESSAGES/django.po,sha256=NQNFg4l5mpOCUwe9dkKYZ6VMS822ZiaSEAD5g4gPgEk,930
2956
- edc_review_dashboard/middleware.py,sha256=mqtK3VPtto8I8zSbmMDL9MWhiVx9VtMRV3vCMfRwPCA,743
2957
+ edc_review_dashboard/middleware.py,sha256=OYzEnaLViv7Ir1tVwscq5-jMc8Rr5MP-1ju84R1tU1A,767
2957
2958
  edc_review_dashboard/migrations/0001_initial.py,sha256=2vQfWw_dXF2tm55w3iUTgyvp_Xl54rmYuimyhr1wJAM,3884
2958
2959
  edc_review_dashboard/migrations/0002_auto_20220825_0451.py,sha256=i9aOYzLQs5ql2L1muL19OEF9-ZRC2kjaWWXuodTzd5Y,579
2959
2960
  edc_review_dashboard/migrations/0003_alter_edcpermissions_device_created_and_more.py,sha256=fwRe2loBVqpl5oAzggeV1sD4hRVr-3eqOOII691lvEg,1554
@@ -2970,19 +2971,19 @@ edc_review_dashboard/templates/edc_review_dashboard/subject_review_button.html,s
2970
2971
  edc_review_dashboard/templates/edc_review_dashboard/subject_review_listboard.html,sha256=UKar7ZSkUYo9kosBpB0YQ5gz1UIawWX-oyhvXjOsaYA,4539
2971
2972
  edc_review_dashboard/urls.py,sha256=W_a0EsvqNTut0Ji7Oi32RPDgxqAtg3CuG8snI9Qy5UY,558
2972
2973
  edc_review_dashboard/views/__init__.py,sha256=SPOYk6ibkFyId4iVtMR62pQpJ0Lpa77AUVg4naRqYRk,70
2973
- edc_review_dashboard/views/subject_review_listboard_view.py,sha256=UCe1JZS-6oeXMmXiqOVg7Nu_JDiOLy8M-ff_44uZ9eQ,2684
2974
+ edc_review_dashboard/views/subject_review_listboard_view.py,sha256=TUL9__RAwckpBMxjd1L3LWqVjzBfRPaKBJKUrpaR2d4,2684
2974
2975
  edc_screening/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2975
- edc_screening/age_evaluator.py,sha256=gWNT5vDx9EHMdRvwFJfhggO-WprPGLcTx4Wsa-CqFUk,1242
2976
+ edc_screening/age_evaluator.py,sha256=PwhHilXyvl222fYgfn-dCfMAI4EeVuQxdCdDNWh_NSo,1265
2976
2977
  edc_screening/apps.py,sha256=O2ZdsusCjy7LOrv2BWm3vX_l32FsL4HHlaz6iUiMQyw,151
2977
2978
  edc_screening/auth_objects.py,sha256=tNks5_2gexmVmUtKh5FQY8jPwNXgfdTD3H_yzmOhCys,128
2978
2979
  edc_screening/auths.py,sha256=NwJREYHgMBkuvCo43PZXtzEcwnFK13EB_peHqdPAh4U,1592
2979
2980
  edc_screening/choices.py,sha256=e8qx6dPCqTcgCTSRmzhciueOWxHPP1dbvvV0kpd2-P4,325
2980
2981
  edc_screening/constants.py,sha256=0oIMMeCJdhsVqlVTUQx4doLZVChyLYWNnCxqC3Cnm8E,52
2981
- edc_screening/eligibility.py,sha256=pdDyFHCM5wMWYGKcHu87YsOblK8ou9e1rqdceE4aFWc,2897
2982
- edc_screening/exceptions.py,sha256=3WXjNQv_No2z1LKGcJ7m3BPEmGvb3_1au1BzeUowV_U,627
2982
+ edc_screening/eligibility.py,sha256=nY3mNUOCr4NEaofAw8PLlSnU9TpaATou5jiEIkNBd1s,2941
2983
+ edc_screening/exceptions.py,sha256=QWkbDF7kh1XVVDWRcIJW0V7hVZTkeXsvQxmsWI98HJA,669
2983
2984
  edc_screening/fc.py,sha256=KSAKKORJhUept2a9Mq9mAdUeQQbpfvHPSiMTOdSgzuc,894
2984
2985
  edc_screening/form_validator_mixins.py,sha256=DBU3ewkzxTtO4lKtRGvhiWbDdtVcUS6vr5SEmMS1D20,1903
2985
- edc_screening/gender_evaluator.py,sha256=JIrgXdSpAA6us0iYPJ2NNtvG03yAivHgfsZy4rt_Tp4,399
2986
+ edc_screening/gender_evaluator.py,sha256=RqHwcXDTZibdM16NwEnNeMmRok3djyOknb8-7rEV3bU,399
2986
2987
  edc_screening/migrations/0001_initial.py,sha256=HNLX2wzHJRZOUeJONktV6LcqMX3ANacbY7QBTSuqcXU,3657
2987
2988
  edc_screening/migrations/0002_alter_edcpermissions_device_created_and_more.py,sha256=0iV-Bl2i4eKCmqgb3VgG8eYUmljDvUmNDFbKgPqyfRo,1536
2988
2989
  edc_screening/migrations/0003_alter_edcpermissions_options_and_more.py,sha256=DahSnLRqkQ7FN4wHFGhgl2ILXjpb8y9FdudAl2GXtJE,1949
@@ -2996,12 +2997,12 @@ edc_screening/model_mixins/screening_fields_model_mixin.py,sha256=KsVwIYuFFNx_2y
2996
2997
  edc_screening/model_mixins/screening_identifier_model_mixin.py,sha256=2lkd0KmBWSFf_68U609voFP_97AKwp6HKQuud5zzBT0,1728
2997
2998
  edc_screening/model_mixins/screening_methods_model_mixin.py,sha256=N6VDi6Sq0TVshvERY61Su3qL2hi7uBScvSYDj9mbBpE,840
2998
2999
  edc_screening/model_mixins/screening_model_mixin.py,sha256=P8ZDj0NIb93ItKJNumU5Xxz_oUhVLVN6jhvjqAyCVfU,1459
2999
- edc_screening/modelform_mixins.py,sha256=yMGpfOdiJQYvJwNP97kqiokvSuainMxEmlOLhBUI8SY,1492
3000
+ edc_screening/modelform_mixins.py,sha256=EAhiEs9N4Wn1w5r_vgEUVtl8A_vBl6py58_MzncyFYg,1508
3000
3001
  edc_screening/models.py,sha256=K4enndi4ov-N--3LQWeez3yuCMzmbaVGd7J72q_f73Q,306
3001
- edc_screening/screening_eligibility.py,sha256=goqceaBEHmXV3RpyezgG5HtM_UrV9kxcSxznaWCdVn4,9553
3002
+ edc_screening/screening_eligibility.py,sha256=o_AVtJL16TiC7UBKBzm7v4_CbzUYmpIEwZvB1d-VkmI,9361
3002
3003
  edc_screening/screening_identifier.py,sha256=EeQGCCj8eSFKR50GKYPG2ZB_utDcKjpUhcafYvcLMDk,318
3003
3004
  edc_screening/stubs.py,sha256=eFNCW8LQrN8LIYtTIvivvt8tGCSd7GZ92MJuXLo363Q,608
3004
- edc_screening/utils.py,sha256=x_FdfrK8H1amhvHOgmjdHCkvgqScQeKjZh3i5VkrYJY,4675
3005
+ edc_screening/utils.py,sha256=E5sMZHHq5HwsP6EMWKlz4_Ic6S17_XC8dzJfA9T422I,4722
3005
3006
  edc_search/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3006
3007
  edc_search/apps.py,sha256=FVRplFa-i0FIYsFB0g4fRruRVlykiwnRRtEkoJmU_yI,113
3007
3008
  edc_search/generate_slug.py,sha256=FXatw6FWfSuwqYtpTffJ_ESeUiI47MV11dnnOc-HWG8,817
@@ -3009,19 +3010,19 @@ edc_search/model_mixins.py,sha256=LHPFV-rlVTtnqqSN8ZF3V1Umbv31oUBSPYf-KqgMnwc,95
3009
3010
  edc_search/urls.py,sha256=_sVCnQeiAFRYKhxga3_DjoKj_4bgs1s2gjcynDiapvA,111
3010
3011
  edc_sites/__init__.py,sha256=IwBGYTNMywiVvkVOJLfxAvUeIpBiAR0DBjSgvy15Gf8,64
3011
3012
  edc_sites/admin/__init__.py,sha256=WSOdF91qWcdhb4EUqmbKw7yaFMtljf5YWu-K8fdvBAs,214
3012
- edc_sites/admin/list_filters.py,sha256=9A0GHNryr68gzAhSknNyCv9QNZfD1VLLtSmHRnN9WU4,890
3013
+ edc_sites/admin/list_filters.py,sha256=P5HE6WYLXOQkgBwGMmsln6eCGu4pBDKCJ9jdcikmKKk,923
3013
3014
  edc_sites/admin/site_admin.py,sha256=haNSrz3WiP_cMLv2SHRrKphVo316Z-RKJUORCPtBC5k,351
3014
3015
  edc_sites/admin/site_fieldset_tuple.py,sha256=s_TbpCBrM2DBATFmKf6OwnDiDWvcTWc2gfl8EEUNpG8,224
3015
- edc_sites/admin/site_model_admin_mixin.py,sha256=BDA6x_r2h1zIX2jHqsIonfUz4e7ut4Spn4XJ0OqtAsg,8917
3016
+ edc_sites/admin/site_model_admin_mixin.py,sha256=WhcJsQMOcosYfXP05xDm18vBZ9eD0iILj_O-4AWJhB0,8927
3016
3017
  edc_sites/admin_site.py,sha256=AINI5Kxx8_KimVIhpPWz_9PAvMcXGzkLWnEHKAFL-6E,163
3017
3018
  edc_sites/apps.py,sha256=MbE5MfmP676ZfwUI9Jsuf6M-KiZSmYvMqJ3zhI8BN-o,2115
3018
3019
  edc_sites/auths.py,sha256=oda_eUVL9cyfsVqUK7vpz3X5N4aGqAupVtV_nBY44-E,299
3019
- edc_sites/exceptions.py,sha256=wi-0z6Dv7fSQmuOQxDLhqhOinp1JSLxHKA5Wt6yVcLU,148
3020
+ edc_sites/exceptions.py,sha256=tONByk2eadKijHSzVLTYjgieTmUGypv8KgUP3UI3SsE,162
3020
3021
  edc_sites/form_validator_mixin.py,sha256=eN8LMpGkNaDwLYnoeJMeZGYovqnuA2hFeEwbym_CW8w,539
3021
- edc_sites/forms.py,sha256=SLxwiab7srNihuAjoNz8QA1LOy-9WZBSFfvG_bMZHTQ,57
3022
+ edc_sites/forms.py,sha256=kc4S7DI-WJsHkkoyVOc0h_pFVAtVFVQK4bMIljeLCgU,83
3022
3023
  edc_sites/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3023
3024
  edc_sites/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3024
- edc_sites/management/commands/sync_sites.py,sha256=yxqNZDzFqZuyF_DEBu-4a1r6kqA769xZ_kG4X7-WhjU,3042
3025
+ edc_sites/management/commands/sync_sites.py,sha256=5-VBpwu5Sz_hWV9Mz3-VNNH4Y8RSfDIaj5nlANYZn44,2856
3025
3026
  edc_sites/managers.py,sha256=Cx_8UsoGb0P0YoXXQS0g0omckL3foPLN1HPJO8Lodbc,286
3026
3027
  edc_sites/migrations/0001_initial.py,sha256=Wlu9KZ-EUqNYTF2dHrvUxemSpOYQRyHl8WkHa-gQ8ws,1335
3027
3028
  edc_sites/migrations/0002_auto_20190922_0452.py,sha256=a0JphBNC9dA0o0EMpil2rottvbek-kSEz0IxrqYQfTU,376
@@ -3040,19 +3041,19 @@ edc_sites/model_mixins/site_model_mixin.py,sha256=unTrWnybow0_-br604jv1kuH85xQDq
3040
3041
  edc_sites/modelform_mixins.py,sha256=hSNRoJ5Uy-oOjlqaHzvMZx0M7cE6o5iu2ueqMkWGsdQ,1727
3041
3042
  edc_sites/models/__init__.py,sha256=FOmMgO0Re1RVjvqEsEHXOF5BvDe2BqVCpQvySAvuh54,124
3042
3043
  edc_sites/models/edc_permissions.py,sha256=K4enndi4ov-N--3LQWeez3yuCMzmbaVGd7J72q_f73Q,306
3043
- edc_sites/models/site_profile.py,sha256=iLVFlWWZ051EclOsQP1hHiZ3bU2nellcicMTVYWe7vw,641
3044
- edc_sites/post_migrate_signals.py,sha256=MQwoYyPtlUUlfMAKGySAWb2AtEmkgz9sPxluvivFA4Q,531
3044
+ edc_sites/models/site_profile.py,sha256=TXYBSA4F0-lRk0W_sfO7ljJg0pVoeqcvLR0n2nYvL5w,726
3045
+ edc_sites/post_migrate_signals.py,sha256=E4Nz7Q2qEGLZA6c0t2Oh4gQMI81mnCz1boHTRrAjqb0,565
3045
3046
  edc_sites/single_site/__init__.py,sha256=4ZQgZWC4L2LyX46b7UMZgFzcS8GBWpszXvUWl8OWraw,197
3046
3047
  edc_sites/single_site/get_languages.py,sha256=wvFxnz0TRMwvPBGpHupQaZLleX7nyGLCN4zE53FwBxU,848
3047
3048
  edc_sites/single_site/get_languages_from_settings.py,sha256=97Q8iYoGqRsvbdcUk8kA0nKT1zLzWPOsxhzL1LXCPUY,395
3048
3049
  edc_sites/single_site/single_site.py,sha256=Mdm3Rga_jlgih1bN5b_M_oouEpjplkbPn4VDcCdD4xU,894
3049
- edc_sites/site.py,sha256=RR2lCTqTy06_RWCO7UHZcJ86htgekC6Q45wKW3nTXXA,12065
3050
+ edc_sites/site.py,sha256=kLVk4xKbg1ZSl7V5x-A21xodsdtx3aNABWiPLVxJ5HQ,12166
3050
3051
  edc_sites/system_checks.py,sha256=LjQ2SiKuu73HLHktR663u36MQB5jwN-5Gj6-_qgnw6Q,3639
3051
3052
  edc_sites/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3052
3053
  edc_sites/templatetags/edc_sites_extras.py,sha256=psMeeqrKOkdmeJlqVHGNY_lPlUFpvflPDhXqb6UeLOY,188
3053
3054
  edc_sites/urls.py,sha256=XUYhimFMY3YTt8A44-wYAaUd0aBPUDl0MNmIxXxBmU4,281
3054
3055
  edc_sites/utils/__init__.py,sha256=R1iguQwSmEhpwYcs0xNUCul2tqTkA6wS2x1MjqLd7uc,482
3055
- edc_sites/utils/add_or_update_django_sites.py,sha256=zLRpyxBKls48qC6JsSuLMcZM_KiCTa8BygS_RNEKp5A,2080
3056
+ edc_sites/utils/add_or_update_django_sites.py,sha256=Sg0CbKecK85EYETSmz11dzExkdSSXca9g2_SoMKRJCU,2082
3056
3057
  edc_sites/utils/get_message_text.py,sha256=0oWQvOD8Y3eVa80WVbvgHyj529MS1yzJwz7JLUgv8Ms,675
3057
3058
  edc_sites/utils/get_or_create_site_obj.py,sha256=PbLj-im-5E2vtGhRYEKLAUAYOR2JWg4WMeHNaMKGpXg,989
3058
3059
  edc_sites/utils/get_or_create_site_profile_obj.py,sha256=zY2YJXEIZPvSK_UeYyF0IuvjZPSp4ti3BlKvGY1isFw,920
@@ -3060,8 +3061,8 @@ edc_sites/utils/get_site_model_cls.py,sha256=xRLvecBArO_-CMNGyOEEQIILqbU83fPUYUv
3060
3061
  edc_sites/utils/has_profile_or_raise.py,sha256=GJ64qe92mxxZqNGyRO1a_ke174S4BdNXtH01bgn6a9M,828
3061
3062
  edc_sites/utils/insert_into_domain.py,sha256=Qqmwu7ZL2ibjJihyXCm-h5lb81XLzDruuUVMtYHAjy4,207
3062
3063
  edc_sites/utils/is_current_site_or_raise.py,sha256=eBV9n5uzQhYWWeu_dj2-QQW3pSxoVJ6x4tpWeQphErM,463
3063
- edc_sites/utils/valid_site_for_subject_or_raise.py,sha256=2TPfGDGEPYZMYZvIsR7u_JIUUkTyS_gq5Cuu7mkLlsU,1945
3064
- edc_sites/view_mixins.py,sha256=-wb3_nD05zxmWddxtC1wgbXwVOMzCNxJcYLBokwhl0E,940
3064
+ edc_sites/utils/valid_site_for_subject_or_raise.py,sha256=DbHEDuE3I2XD9h1kk2uv5FSe5zm1O9j81R1vDhDTyhw,2013
3065
+ edc_sites/view_mixins.py,sha256=cP7Retlz3dkd-AJ0Hky2nOcoBv5gjyCFIpxNfA6-kHE,952
3065
3066
  edc_subject_dashboard/__init__.py,sha256=ecLybhWo_8tq7c9HlBHnalvJTfxFkW7lg8o79xjoh5I,260
3066
3067
  edc_subject_dashboard/apps.py,sha256=wbvA8hlNAD77U8k9vWYLpBRBNWCGLDzcb7rKpVFeRJU,275
3067
3068
  edc_subject_dashboard/auths.py,sha256=wYxSu_3BLCW94weUN4FoYYQ6dJv9ojZeLECDBLs5PNc,1253
@@ -3122,7 +3123,7 @@ edc_subject_dashboard/view_utils/go_to_forms_button.py,sha256=8tY4LC2CuBxqsmZBC1
3122
3123
  edc_subject_dashboard/view_utils/requisition_button.py,sha256=fS-_AglX3TnU00_MxBBRRzvMVVEpEarVHS8AOtjxuYw,1019
3123
3124
  edc_subject_dashboard/view_utils/subject_consent_dashboard_button.py,sha256=HfXb0Y9wPfZZ7MyjTVqwrXfLfhbr2hBprMx4ofjox00,1187
3124
3125
  edc_subject_dashboard/view_utils/subject_consent_listboard_button.py,sha256=Qq922qZOhJ-7PvIM3m6jOSvXIU-oO9xzhr0EiWaoKO0,3015
3125
- edc_subject_dashboard/view_utils/subject_screening_button.py,sha256=Wn9zJem1u0wCyFOcltz5mcr95i0S1QZdoNM4mnqu_nQ,1568
3126
+ edc_subject_dashboard/view_utils/subject_screening_button.py,sha256=c5NUhsqXGtK7J7Sh-zqXCdCKZDSOvxjJINiDMNiC3-U,1606
3126
3127
  edc_subject_dashboard/view_utils/timepoint_status_button.py,sha256=tXdE8pV38OMnpBNpLHoEhMufMh-41SaE2GCraK5HvzI,3163
3127
3128
  edc_subject_dashboard/views/__init__.py,sha256=-PjvFdwPDVNFjlBtwC2rUpONdlQxjhx_N0na9LKMCG4,266
3128
3129
  edc_subject_dashboard/views/base_requisition_view.py,sha256=OWmoZuRLLwOW8ABvyHYtOHhfQ3l8U9Is7OiS_YEkzpA,1136
@@ -3212,7 +3213,7 @@ edc_utils/sqlite.py,sha256=nFT4x0gxG9K6Eru_8mkwOGZLQV9jKt2tnxbQUHQU7mE,235
3212
3213
  edc_utils/text.py,sha256=18lidD2CE2hSXgtydZFs5H723fW1EZ56JyzG1VEfD3U,3526
3213
3214
  edc_view_utils/__init__.py,sha256=wH6dVBlPnKBYW8AlN0YTsTk4dyGCI3POMMCY-hCmxO4,610
3214
3215
  edc_view_utils/apps.py,sha256=Fw_b7JzNByXHdk0CHPmIqM9jAIhaI9biTYy_npnNy80,231
3215
- edc_view_utils/dashboard_model_button.py,sha256=9K0ooGEB5P-pnm-2vr1KwnU6NXdQ0hhgXQFEd2K0C0U,1889
3216
+ edc_view_utils/dashboard_model_button.py,sha256=7WAR3HOYuzm9NsG5Nu0z7EOxu90DdbAl8SBQLUeAq5g,1897
3216
3217
  edc_view_utils/history_button.py,sha256=nd_P_Df0dSflC14r4XnjhK0eq8v8xJZutFIAt5K28MU,1243
3217
3218
  edc_view_utils/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3218
3219
  edc_view_utils/model_button.py,sha256=C0XUMJZGX6G-8m-jxCs99WW11f9-PZq0Fg_KzCZF8Bw,4487
@@ -3291,7 +3292,7 @@ edc_visit_schedule/schedule/schedule.py,sha256=ROUNin-k1oJVtx_wEXwlj5xrhTw3I_6Ve
3291
3292
  edc_visit_schedule/schedule/visit_collection.py,sha256=9OJKrLtx-H0eL9oo0dsRqYGPICiAMqEF4xIhhlinx0A,2033
3292
3293
  edc_visit_schedule/schedule/window.py,sha256=gsXW7z3P84h6kWX7e7CABmalyLGgbbIwe0Q6atIbyEI,5229
3293
3294
  edc_visit_schedule/simple_model_validator.py,sha256=5lMyVrrlAy4HxLmAqM3he7D2ssCJoyjAWDWnFmJwRT0,789
3294
- edc_visit_schedule/site_visit_schedules.py,sha256=U6h3ZKiEME41oyzjvpqTun6cieVLf9gfS7IXm7LY2pU,13078
3295
+ edc_visit_schedule/site_visit_schedules.py,sha256=MeeJjyYludPlmjrYHmnx5D6t85DZrWvPyFMgidYbewE,13087
3295
3296
  edc_visit_schedule/subject_schedule.py,sha256=gai8sQ9nek3KEu27GL656twm0zKP3I3g510effNdIT8,16552
3296
3297
  edc_visit_schedule/system_checks.py,sha256=Gp5DXTThRCFXyZ3dlN2S8FJPz16weonpjedcy6XIIms,9300
3297
3298
  edc_visit_schedule/templates/edc_visit_schedule/home.html,sha256=RqtGsq6-zXi43jU0iSv24-xsIXXHkuiHjJvF-yqDyjA,1112
@@ -3406,7 +3407,7 @@ edc_vitals/models/fields/waist_circumference.py,sha256=fZcHFDdEwWLjIVLktKrFCD9UU
3406
3407
  edc_vitals/models/fields/weight.py,sha256=zo9_9e3Cpu0UqoRbWS-iDkcDo6fK80b1dDQy4x4MyxE,921
3407
3408
  edc_vitals/utils.py,sha256=vXid44KUXxeaSyund_y5MNXc5DFJs052_PwUAjszE2k,1384
3408
3409
  edc_vitals/validators.py,sha256=vNiElWMs0rRnHRNuVoPLRf0rW_C_0xcfUyep1Y_Si5s,156
3409
- clinicedc-2.0.24.dist-info/licenses/LICENSE,sha256=jOtLnuWt7d5Hsx6XXB2QxzrSe2sWWh3NgMfFRetluQM,35147
3410
- clinicedc-2.0.24.dist-info/WHEEL,sha256=-neZj6nU9KAMg2CnCY6T3w8J53nx1kFGw_9HfoSzM60,79
3411
- clinicedc-2.0.24.dist-info/METADATA,sha256=SanRpzDjK5JhHNRsmoNLCYZtF9Q9k3bXXX2CdYsZ7ME,15787
3412
- clinicedc-2.0.24.dist-info/RECORD,,
3410
+ clinicedc-2.0.26.dist-info/licenses/LICENSE,sha256=jOtLnuWt7d5Hsx6XXB2QxzrSe2sWWh3NgMfFRetluQM,35147
3411
+ clinicedc-2.0.26.dist-info/WHEEL,sha256=-neZj6nU9KAMg2CnCY6T3w8J53nx1kFGw_9HfoSzM60,79
3412
+ clinicedc-2.0.26.dist-info/METADATA,sha256=GB5NgaBjnahJvCN28GDKHj2QxuoAECGn_cC7hmIs9cU,15787
3413
+ clinicedc-2.0.26.dist-info/RECORD,,
@@ -118,12 +118,12 @@ class SiteActionItemCollection:
118
118
  )
119
119
  return self.registry.get(name)
120
120
 
121
- def get_by_model(self, model=None) -> type[Action] | type[ActionWithNotification] | None:
121
+ def get_by_model(self, model=None) -> type[Action] | type[ActionWithNotification]:
122
122
  """Returns the action_cls linked to this reference model."""
123
123
  for action_cls in self.registry.values():
124
124
  if action_cls.get_reference_model() == model:
125
125
  return self.get(action_cls.name)
126
- return None
126
+ raise SiteActionError(f"Action does not exist for this model. Got '{model}'.")
127
127
 
128
128
  def get_add_actions_to_show(self) -> dict[str, type[Action]]:
129
129
  return {
@@ -25,7 +25,7 @@ class AppointmentButton(DashboardModelButton):
25
25
  model_obj: Appointment = None
26
26
  colors: tuple[str, str, str] = field(default=(3 * ("default",)))
27
27
  model_cls: type[Appointment] = field(default=None, init=False)
28
- appointment: Appointment = field(default=None, init=False)
28
+ appointment: Appointment | None = field(default=None, init=False)
29
29
 
30
30
  def __post_init__(self):
31
31
  self.model_cls = django_apps.get_model("edc_appointment.appointment")
@@ -14,7 +14,7 @@ from ..actions import flag_as_verified_against_paper, unflag_as_verified_against
14
14
 
15
15
 
16
16
  class ConsentModelAdminMixin:
17
- name_fields: list[str] = ["first_name", "last_name"]
17
+ name_fields: tuple[str] = ("first_name", "last_name")
18
18
  name_display_field: str = "first_name"
19
19
  actions = (flag_as_verified_against_paper, unflag_as_verified_against_paper)
20
20
 
@@ -63,22 +63,26 @@ class ConsentModelAdminMixin:
63
63
  "study_questions",
64
64
  "assessment_score",
65
65
  "consent_copy",
66
- ) + original_fields
66
+ *original_fields,
67
+ )
67
68
 
68
69
  def get_readonly_fields(self, request, obj=None) -> tuple[str, ...]:
69
70
  readonly_fields = super().get_readonly_fields(request, obj)
70
71
  fields = ("subject_identifier", "subject_identifier_as_pk")
71
72
  if obj:
72
73
  return (
73
- fields + ("consent_datetime", "identity", "confirm_identity") + readonly_fields
74
+ *fields,
75
+ "consent_datetime",
76
+ "identity",
77
+ "confirm_identity",
78
+ *readonly_fields,
74
79
  )
75
80
  return fields + readonly_fields
76
81
 
77
82
  def get_search_fields(self, request) -> tuple[str, ...]:
78
83
  search_fields: tuple[str] = super().get_search_fields(request)
79
- name_fields: tuple[str] = tuple(self.name_fields)
80
84
  return tuple(
81
- set(search_fields + ("id", "subject_identifier", *name_fields, "identity"))
85
+ {*search_fields, "id", "subject_identifier", *self.name_fields, "identity"}
82
86
  )
83
87
 
84
88
  def get_list_display(self, request) -> tuple[str, ...]:
@@ -102,10 +106,8 @@ class ConsentModelAdminMixin:
102
106
  if request.user.has_perm("edc_data_manager.add_dataquery"):
103
107
  custom_fields = list(custom_fields)
104
108
  custom_fields.insert(3, self.queries)
105
- fields = tuple(custom_fields) + tuple(
106
- f for f in list_display if f not in custom_fields
107
- )
108
- return fields
109
+ custom_fields = tuple(custom_fields)
110
+ return *custom_fields, *tuple(f for f in list_display if f not in custom_fields)
109
111
 
110
112
  def get_list_filter(self, request) -> tuple[str, ...]:
111
113
  list_filter = super().get_list_filter(request)
@@ -181,14 +183,14 @@ class ConsentModelAdminMixin:
181
183
  if links:
182
184
  formatted_html = format_html(
183
185
  '<BR>{links}<BR><A title="New query" href="{new_url}">Add query</A>',
184
- links=mark_safe("<BR>".join(links)), # nosec B703 B308
185
- new_url=mark_safe(new_url), # nosec B703 B308
186
+ links=mark_safe("<BR>".join(links)), # nosec B703 B308 # noqa: S308
187
+ new_url=mark_safe(new_url), # nosec B703 B308 # noqa: S308
186
188
  )
187
189
  else:
188
190
  formatted_html = format_html(
189
191
  '<A title="New query" href="{new_url}?"'
190
192
  'subject_identifier={subject_identifier}">Add query</A>',
191
- new_url=mark_safe(new_url), # nosec B703 B308
193
+ new_url=mark_safe(new_url), # nosec B703 B308 # noqa: S308
192
194
  subject_identifier=obj.subject_identifier,
193
195
  )
194
196
  return formatted_html
@@ -1,11 +1,11 @@
1
1
  from .edc_permissions import EdcPermissions
2
2
  from .signals import (
3
3
  requires_consent_on_pre_save,
4
- update_appointment_from_consentext_post_save,
4
+ # update_appointment_from_consentext_post_save,
5
5
  )
6
6
 
7
7
  __all__ = [
8
8
  "EdcPermissions",
9
9
  "requires_consent_on_pre_save",
10
- "update_appointment_from_consentext_post_save",
10
+ # "update_appointment_from_consentext_post_save",
11
11
  ]
@@ -1,11 +1,9 @@
1
- from django.db.models.signals import post_save, pre_save
1
+ from django.db.models.signals import pre_save
2
2
  from django.dispatch import receiver
3
3
 
4
4
  from edc_sites import site_sites
5
- from edc_visit_schedule.site_visit_schedules import site_visit_schedules
6
- from edc_visit_schedule.subject_schedule import SubjectSchedule
7
5
 
8
- from ..model_mixins import ConsentExtensionModelMixin, RequiresConsentFieldsModelMixin
6
+ from ..model_mixins import RequiresConsentFieldsModelMixin
9
7
  from ..site_consents import site_consents
10
8
 
11
9
 
@@ -52,27 +50,27 @@ def requires_consent_on_pre_save(instance, raw, using, update_fields, **kwargs):
52
50
  instance.consent_model = consent_definition.model
53
51
 
54
52
 
55
- @receiver(
56
- post_save,
57
- weak=False,
58
- dispatch_uid="update_appointment_from_consentext_post_save",
59
- )
60
- def update_appointment_from_consentext_post_save(
61
- sender, instance, raw, created, using, **kwargs
62
- ):
63
- if (
64
- not raw
65
- and not kwargs.get("update_fields")
66
- and isinstance(instance, (ConsentExtensionModelMixin,))
67
- ):
68
- cdef = site_consents.get_consent_definition(
69
- model=instance.subject_consent._meta.label_lower,
70
- version=instance.subject_consent.version,
71
- )
72
- visit_schedule, schedule = site_visit_schedules.get_by_consent_definition(cdef)
73
- subject_schedule = SubjectSchedule(
74
- instance.subject_consent.subject_identifier,
75
- visit_schedule=visit_schedule,
76
- schedule=schedule,
77
- )
78
- subject_schedule.refresh_appointments()
53
+ # @receiver(
54
+ # post_save,
55
+ # weak=False,
56
+ # dispatch_uid="update_appointment_from_consentext_post_save",
57
+ # )
58
+ # def update_appointment_from_consentext_post_save(
59
+ # sender, instance, raw, created, using, **kwargs
60
+ # ):
61
+ # if (
62
+ # not raw
63
+ # and not kwargs.get("update_fields")
64
+ # and isinstance(instance, (ConsentExtensionModelMixin,))
65
+ # ):
66
+ # cdef = site_consents.get_consent_definition(
67
+ # model=instance.subject_consent._meta.label_lower,
68
+ # version=instance.subject_consent.version,
69
+ # )
70
+ # visit_schedule, schedule = site_visit_schedules.get_by_consent_definition(cdef)
71
+ # subject_schedule = SubjectSchedule(
72
+ # instance.subject_consent.subject_identifier,
73
+ # visit_schedule=visit_schedule,
74
+ # schedule=schedule,
75
+ # )
76
+ # subject_schedule.refresh_appointments()
@@ -1,5 +1,4 @@
1
1
  from django.contrib import messages
2
- from django.utils.html import format_html
3
2
  from django.utils.safestring import mark_safe
4
3
 
5
4
 
@@ -20,18 +19,18 @@ class MessageViewMixin:
20
19
  # attempt to get the level if passed a string
21
20
  try:
22
21
  level = getattr(messages.constants, level.upper())
23
- except AttributeError:
22
+ except AttributeError as e:
24
23
  levels = ", ".join(
25
24
  [level for level in messages.constants.DEFAULT_TAGS.values()]
26
25
  )
27
26
  raise ValueError(
28
27
  f"Bad message level string: `{level}`. Possible values are: {levels}"
29
- )
28
+ ) from e
30
29
 
31
30
  messages.add_message(
32
31
  self.request,
33
32
  level,
34
- format_html("{}", mark_safe(message)), # nosec B703 B308
33
+ mark_safe(message), # noqa: S308
35
34
  extra_tags=extra_tags,
36
35
  fail_silently=fail_silently,
37
36
  )
edc_identifier/admin.py CHANGED
@@ -51,7 +51,7 @@ class IdentifierModelAdmin(admin.ModelAdmin):
51
51
  )
52
52
  search_fields = ("identifier", "subject_identifier", "linked_identifier")
53
53
 
54
- def get_readonly_fields(self, request, obj=None) -> tuple[str, ...]:
54
+ def get_readonly_fields(self, request, obj=None) -> tuple[str, ...]: # noqa: ARG002
55
55
  return (
56
56
  "identifier",
57
57
  "protocol_number",
@@ -64,4 +64,5 @@ class IdentifierModelAdmin(admin.ModelAdmin):
64
64
  "linked_identifier",
65
65
  "device_id",
66
66
  "identifier_prefix",
67
- ) + tuple(DEFAULT_BASE_FIELDS)
67
+ *DEFAULT_BASE_FIELDS,
68
+ )
@@ -61,12 +61,12 @@ class Identifier:
61
61
  pattern = pattern or self.identifier_pattern
62
62
  try:
63
63
  identifier = re.match(pattern, identifier).group()
64
- except AttributeError:
64
+ except AttributeError as e:
65
65
  error_msg = error_msg or (
66
66
  "Invalid identifier format for pattern "
67
67
  f"{pattern}. Got identifier='{identifier}'"
68
68
  )
69
- raise IdentifierError(error_msg)
69
+ raise IdentifierError(error_msg) from e
70
70
  return identifier
71
71
 
72
72
  @property
@@ -102,9 +102,10 @@ class Identifier:
102
102
  .order_by("-sequence_number")
103
103
  .first()
104
104
  )
105
- return instance.identifier
106
105
  except AttributeError:
107
106
  return None
107
+ else:
108
+ return instance.identifier
108
109
 
109
110
  def remove_separator(self, identifier):
110
111
  """Returns the identifier after removing the separator.
@@ -126,5 +127,4 @@ class Identifier:
126
127
  for item in self.identifier_as_list:
127
128
  items.append(identifier[start : start + len(item)])
128
129
  start += len(item)
129
- identifier = (self.separator or "").join(items)
130
- return identifier
130
+ return (self.separator or "").join(items)
@@ -113,7 +113,7 @@ class SubjectIdentifierMethodsModelMixin(models.Model):
113
113
  raise IdentifierError(
114
114
  "Cannot lookup a unique RegisteredSubject instance. "
115
115
  f"Identity {self.identity} is not unique. Got {e}"
116
- )
116
+ ) from e
117
117
  return obj
118
118
 
119
119
  class Meta: