clinicedc 2.0.24__py3-none-any.whl → 2.0.25__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.
- {clinicedc-2.0.24.dist-info → clinicedc-2.0.25.dist-info}/METADATA +1 -1
- {clinicedc-2.0.24.dist-info → clinicedc-2.0.25.dist-info}/RECORD +47 -47
- edc_action_item/site_action_items.py +2 -2
- edc_appointment/view_utils/appointment_button.py +1 -1
- edc_consent/modeladmin_mixins/consent_model_admin_mixin.py +14 -12
- edc_consent/models/__init__.py +2 -2
- edc_consent/models/signals.py +26 -28
- edc_dashboard/view_mixins/message_view_mixin.py +3 -4
- edc_identifier/admin.py +3 -2
- edc_identifier/identifier.py +5 -5
- edc_identifier/model_mixins.py +1 -1
- edc_identifier/models.py +7 -6
- edc_identifier/research_identifier.py +1 -1
- edc_identifier/short_identifier.py +1 -1
- edc_identifier/simple_identifier.py +15 -5
- edc_identifier/subject_identifier.py +2 -2
- edc_identifier/utils.py +13 -14
- edc_listboard/view_mixins/search_listboard_view_mixin.py +6 -7
- edc_metadata/view_mixins/metadata_view_mixin.py +7 -4
- edc_randomization/randomization_list_importer.py +21 -17
- edc_randomization/randomization_list_verifier.py +2 -2
- edc_randomization/randomizer.py +1 -1
- edc_review_dashboard/middleware.py +4 -4
- edc_review_dashboard/views/subject_review_listboard_view.py +3 -3
- edc_screening/age_evaluator.py +1 -1
- edc_screening/eligibility.py +5 -5
- edc_screening/exceptions.py +3 -3
- edc_screening/gender_evaluator.py +1 -1
- edc_screening/modelform_mixins.py +1 -1
- edc_screening/screening_eligibility.py +30 -35
- edc_screening/utils.py +10 -12
- edc_sites/admin/list_filters.py +2 -2
- edc_sites/admin/site_model_admin_mixin.py +8 -8
- edc_sites/exceptions.py +1 -1
- edc_sites/forms.py +3 -1
- edc_sites/management/commands/sync_sites.py +11 -17
- edc_sites/models/site_profile.py +6 -4
- edc_sites/post_migrate_signals.py +2 -2
- edc_sites/site.py +8 -8
- edc_sites/utils/add_or_update_django_sites.py +3 -3
- edc_sites/utils/valid_site_for_subject_or_raise.py +7 -4
- edc_sites/view_mixins.py +2 -2
- edc_subject_dashboard/view_utils/subject_screening_button.py +5 -3
- edc_view_utils/dashboard_model_button.py +3 -3
- edc_visit_schedule/site_visit_schedules.py +2 -1
- {clinicedc-2.0.24.dist-info → clinicedc-2.0.25.dist-info}/WHEEL +0 -0
- {clinicedc-2.0.24.dist-info → clinicedc-2.0.25.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: clinicedc
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.25
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
1226
|
-
edc_identifier/models.py,sha256=
|
|
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=
|
|
1229
|
-
edc_identifier/short_identifier.py,sha256=
|
|
1230
|
-
edc_identifier/simple_identifier.py,sha256=
|
|
1231
|
-
edc_identifier/subject_identifier.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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
|
|
@@ -2793,9 +2793,9 @@ edc_randomization/model_mixins.py,sha256=pKLkZJeYgobKPyHVJTby8Q7zBKQoflbLgraTN4p
|
|
|
2793
2793
|
edc_randomization/models/__init__.py,sha256=iaJ6FM7VVqLpp8M-OjVWjohp4ELdxtPXqbEiT3iN5Tw,94
|
|
2794
2794
|
edc_randomization/models/edc_permissions.py,sha256=f6P4zXxLQdTAbn2KnFlwfE86Lmzj7Ecp4JJ2F8mrwTc,286
|
|
2795
2795
|
edc_randomization/models/randomization_list.py,sha256=Hd5yUSZ5HBKhNzYdlbJufab8U2x3Dzw8n4WXnYzJxyc,253
|
|
2796
|
-
edc_randomization/randomization_list_importer.py,sha256
|
|
2797
|
-
edc_randomization/randomization_list_verifier.py,sha256=
|
|
2798
|
-
edc_randomization/randomizer.py,sha256=
|
|
2796
|
+
edc_randomization/randomization_list_importer.py,sha256=-rFYIyTY2NZHzTJ9KH5bvA3PecNoZE2MSz4IUxszoHU,12739
|
|
2797
|
+
edc_randomization/randomization_list_verifier.py,sha256=xeybFaxW62Zq0wW36CThU_E40BPxkrYpItCRwuMcLAI,6682
|
|
2798
|
+
edc_randomization/randomizer.py,sha256=DU4iH8mMUXiE7UpAiKHOrJXvhdWkjTTG9ex8Ho0xIHo,12940
|
|
2799
2799
|
edc_randomization/randomizers.py,sha256=JvMDAnsgvRZkl50Bawm2iLsyw3bfWfGwBafn54K5g44,297
|
|
2800
2800
|
edc_randomization/site_randomizers.py,sha256=et5Yf92ld8qgn-AThrBTRALB3WInI03UK4yGw2PlsKo,4499
|
|
2801
2801
|
edc_randomization/system_checks.py,sha256=S_2Vkq3J3DQVEXOV3JNNlCzuZcl1l34-tTnaBaSZaBk,3025
|
|
@@ -2953,7 +2953,7 @@ edc_review_dashboard/apps.py,sha256=oE7NrIwzeRqMzLbWe_6Mt-CqzDAw5zASwZDbdaqJP1o,
|
|
|
2953
2953
|
edc_review_dashboard/auths.py,sha256=3Xe7yNnuOx4Kc8fwVGte0xmDYsaCZUevJQUSbRL55mU,1148
|
|
2954
2954
|
edc_review_dashboard/dashboard_templates.py,sha256=hzHXLHoOjZTR0gScZkna8qAHY7yotK4QVByfPtWY_p8,174
|
|
2955
2955
|
edc_review_dashboard/locale/sw/LC_MESSAGES/django.po,sha256=NQNFg4l5mpOCUwe9dkKYZ6VMS822ZiaSEAD5g4gPgEk,930
|
|
2956
|
-
edc_review_dashboard/middleware.py,sha256=
|
|
2956
|
+
edc_review_dashboard/middleware.py,sha256=OYzEnaLViv7Ir1tVwscq5-jMc8Rr5MP-1ju84R1tU1A,767
|
|
2957
2957
|
edc_review_dashboard/migrations/0001_initial.py,sha256=2vQfWw_dXF2tm55w3iUTgyvp_Xl54rmYuimyhr1wJAM,3884
|
|
2958
2958
|
edc_review_dashboard/migrations/0002_auto_20220825_0451.py,sha256=i9aOYzLQs5ql2L1muL19OEF9-ZRC2kjaWWXuodTzd5Y,579
|
|
2959
2959
|
edc_review_dashboard/migrations/0003_alter_edcpermissions_device_created_and_more.py,sha256=fwRe2loBVqpl5oAzggeV1sD4hRVr-3eqOOII691lvEg,1554
|
|
@@ -2970,19 +2970,19 @@ edc_review_dashboard/templates/edc_review_dashboard/subject_review_button.html,s
|
|
|
2970
2970
|
edc_review_dashboard/templates/edc_review_dashboard/subject_review_listboard.html,sha256=UKar7ZSkUYo9kosBpB0YQ5gz1UIawWX-oyhvXjOsaYA,4539
|
|
2971
2971
|
edc_review_dashboard/urls.py,sha256=W_a0EsvqNTut0Ji7Oi32RPDgxqAtg3CuG8snI9Qy5UY,558
|
|
2972
2972
|
edc_review_dashboard/views/__init__.py,sha256=SPOYk6ibkFyId4iVtMR62pQpJ0Lpa77AUVg4naRqYRk,70
|
|
2973
|
-
edc_review_dashboard/views/subject_review_listboard_view.py,sha256=
|
|
2973
|
+
edc_review_dashboard/views/subject_review_listboard_view.py,sha256=TUL9__RAwckpBMxjd1L3LWqVjzBfRPaKBJKUrpaR2d4,2684
|
|
2974
2974
|
edc_screening/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2975
|
-
edc_screening/age_evaluator.py,sha256=
|
|
2975
|
+
edc_screening/age_evaluator.py,sha256=PwhHilXyvl222fYgfn-dCfMAI4EeVuQxdCdDNWh_NSo,1265
|
|
2976
2976
|
edc_screening/apps.py,sha256=O2ZdsusCjy7LOrv2BWm3vX_l32FsL4HHlaz6iUiMQyw,151
|
|
2977
2977
|
edc_screening/auth_objects.py,sha256=tNks5_2gexmVmUtKh5FQY8jPwNXgfdTD3H_yzmOhCys,128
|
|
2978
2978
|
edc_screening/auths.py,sha256=NwJREYHgMBkuvCo43PZXtzEcwnFK13EB_peHqdPAh4U,1592
|
|
2979
2979
|
edc_screening/choices.py,sha256=e8qx6dPCqTcgCTSRmzhciueOWxHPP1dbvvV0kpd2-P4,325
|
|
2980
2980
|
edc_screening/constants.py,sha256=0oIMMeCJdhsVqlVTUQx4doLZVChyLYWNnCxqC3Cnm8E,52
|
|
2981
|
-
edc_screening/eligibility.py,sha256=
|
|
2982
|
-
edc_screening/exceptions.py,sha256=
|
|
2981
|
+
edc_screening/eligibility.py,sha256=nY3mNUOCr4NEaofAw8PLlSnU9TpaATou5jiEIkNBd1s,2941
|
|
2982
|
+
edc_screening/exceptions.py,sha256=QWkbDF7kh1XVVDWRcIJW0V7hVZTkeXsvQxmsWI98HJA,669
|
|
2983
2983
|
edc_screening/fc.py,sha256=KSAKKORJhUept2a9Mq9mAdUeQQbpfvHPSiMTOdSgzuc,894
|
|
2984
2984
|
edc_screening/form_validator_mixins.py,sha256=DBU3ewkzxTtO4lKtRGvhiWbDdtVcUS6vr5SEmMS1D20,1903
|
|
2985
|
-
edc_screening/gender_evaluator.py,sha256=
|
|
2985
|
+
edc_screening/gender_evaluator.py,sha256=RqHwcXDTZibdM16NwEnNeMmRok3djyOknb8-7rEV3bU,399
|
|
2986
2986
|
edc_screening/migrations/0001_initial.py,sha256=HNLX2wzHJRZOUeJONktV6LcqMX3ANacbY7QBTSuqcXU,3657
|
|
2987
2987
|
edc_screening/migrations/0002_alter_edcpermissions_device_created_and_more.py,sha256=0iV-Bl2i4eKCmqgb3VgG8eYUmljDvUmNDFbKgPqyfRo,1536
|
|
2988
2988
|
edc_screening/migrations/0003_alter_edcpermissions_options_and_more.py,sha256=DahSnLRqkQ7FN4wHFGhgl2ILXjpb8y9FdudAl2GXtJE,1949
|
|
@@ -2996,12 +2996,12 @@ edc_screening/model_mixins/screening_fields_model_mixin.py,sha256=KsVwIYuFFNx_2y
|
|
|
2996
2996
|
edc_screening/model_mixins/screening_identifier_model_mixin.py,sha256=2lkd0KmBWSFf_68U609voFP_97AKwp6HKQuud5zzBT0,1728
|
|
2997
2997
|
edc_screening/model_mixins/screening_methods_model_mixin.py,sha256=N6VDi6Sq0TVshvERY61Su3qL2hi7uBScvSYDj9mbBpE,840
|
|
2998
2998
|
edc_screening/model_mixins/screening_model_mixin.py,sha256=P8ZDj0NIb93ItKJNumU5Xxz_oUhVLVN6jhvjqAyCVfU,1459
|
|
2999
|
-
edc_screening/modelform_mixins.py,sha256=
|
|
2999
|
+
edc_screening/modelform_mixins.py,sha256=EAhiEs9N4Wn1w5r_vgEUVtl8A_vBl6py58_MzncyFYg,1508
|
|
3000
3000
|
edc_screening/models.py,sha256=K4enndi4ov-N--3LQWeez3yuCMzmbaVGd7J72q_f73Q,306
|
|
3001
|
-
edc_screening/screening_eligibility.py,sha256=
|
|
3001
|
+
edc_screening/screening_eligibility.py,sha256=o_AVtJL16TiC7UBKBzm7v4_CbzUYmpIEwZvB1d-VkmI,9361
|
|
3002
3002
|
edc_screening/screening_identifier.py,sha256=EeQGCCj8eSFKR50GKYPG2ZB_utDcKjpUhcafYvcLMDk,318
|
|
3003
3003
|
edc_screening/stubs.py,sha256=eFNCW8LQrN8LIYtTIvivvt8tGCSd7GZ92MJuXLo363Q,608
|
|
3004
|
-
edc_screening/utils.py,sha256=
|
|
3004
|
+
edc_screening/utils.py,sha256=E5sMZHHq5HwsP6EMWKlz4_Ic6S17_XC8dzJfA9T422I,4722
|
|
3005
3005
|
edc_search/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3006
3006
|
edc_search/apps.py,sha256=FVRplFa-i0FIYsFB0g4fRruRVlykiwnRRtEkoJmU_yI,113
|
|
3007
3007
|
edc_search/generate_slug.py,sha256=FXatw6FWfSuwqYtpTffJ_ESeUiI47MV11dnnOc-HWG8,817
|
|
@@ -3009,19 +3009,19 @@ edc_search/model_mixins.py,sha256=LHPFV-rlVTtnqqSN8ZF3V1Umbv31oUBSPYf-KqgMnwc,95
|
|
|
3009
3009
|
edc_search/urls.py,sha256=_sVCnQeiAFRYKhxga3_DjoKj_4bgs1s2gjcynDiapvA,111
|
|
3010
3010
|
edc_sites/__init__.py,sha256=IwBGYTNMywiVvkVOJLfxAvUeIpBiAR0DBjSgvy15Gf8,64
|
|
3011
3011
|
edc_sites/admin/__init__.py,sha256=WSOdF91qWcdhb4EUqmbKw7yaFMtljf5YWu-K8fdvBAs,214
|
|
3012
|
-
edc_sites/admin/list_filters.py,sha256=
|
|
3012
|
+
edc_sites/admin/list_filters.py,sha256=P5HE6WYLXOQkgBwGMmsln6eCGu4pBDKCJ9jdcikmKKk,923
|
|
3013
3013
|
edc_sites/admin/site_admin.py,sha256=haNSrz3WiP_cMLv2SHRrKphVo316Z-RKJUORCPtBC5k,351
|
|
3014
3014
|
edc_sites/admin/site_fieldset_tuple.py,sha256=s_TbpCBrM2DBATFmKf6OwnDiDWvcTWc2gfl8EEUNpG8,224
|
|
3015
|
-
edc_sites/admin/site_model_admin_mixin.py,sha256=
|
|
3015
|
+
edc_sites/admin/site_model_admin_mixin.py,sha256=WhcJsQMOcosYfXP05xDm18vBZ9eD0iILj_O-4AWJhB0,8927
|
|
3016
3016
|
edc_sites/admin_site.py,sha256=AINI5Kxx8_KimVIhpPWz_9PAvMcXGzkLWnEHKAFL-6E,163
|
|
3017
3017
|
edc_sites/apps.py,sha256=MbE5MfmP676ZfwUI9Jsuf6M-KiZSmYvMqJ3zhI8BN-o,2115
|
|
3018
3018
|
edc_sites/auths.py,sha256=oda_eUVL9cyfsVqUK7vpz3X5N4aGqAupVtV_nBY44-E,299
|
|
3019
|
-
edc_sites/exceptions.py,sha256=
|
|
3019
|
+
edc_sites/exceptions.py,sha256=tONByk2eadKijHSzVLTYjgieTmUGypv8KgUP3UI3SsE,162
|
|
3020
3020
|
edc_sites/form_validator_mixin.py,sha256=eN8LMpGkNaDwLYnoeJMeZGYovqnuA2hFeEwbym_CW8w,539
|
|
3021
|
-
edc_sites/forms.py,sha256=
|
|
3021
|
+
edc_sites/forms.py,sha256=kc4S7DI-WJsHkkoyVOc0h_pFVAtVFVQK4bMIljeLCgU,83
|
|
3022
3022
|
edc_sites/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3023
3023
|
edc_sites/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3024
|
-
edc_sites/management/commands/sync_sites.py,sha256=
|
|
3024
|
+
edc_sites/management/commands/sync_sites.py,sha256=5-VBpwu5Sz_hWV9Mz3-VNNH4Y8RSfDIaj5nlANYZn44,2856
|
|
3025
3025
|
edc_sites/managers.py,sha256=Cx_8UsoGb0P0YoXXQS0g0omckL3foPLN1HPJO8Lodbc,286
|
|
3026
3026
|
edc_sites/migrations/0001_initial.py,sha256=Wlu9KZ-EUqNYTF2dHrvUxemSpOYQRyHl8WkHa-gQ8ws,1335
|
|
3027
3027
|
edc_sites/migrations/0002_auto_20190922_0452.py,sha256=a0JphBNC9dA0o0EMpil2rottvbek-kSEz0IxrqYQfTU,376
|
|
@@ -3040,19 +3040,19 @@ edc_sites/model_mixins/site_model_mixin.py,sha256=unTrWnybow0_-br604jv1kuH85xQDq
|
|
|
3040
3040
|
edc_sites/modelform_mixins.py,sha256=hSNRoJ5Uy-oOjlqaHzvMZx0M7cE6o5iu2ueqMkWGsdQ,1727
|
|
3041
3041
|
edc_sites/models/__init__.py,sha256=FOmMgO0Re1RVjvqEsEHXOF5BvDe2BqVCpQvySAvuh54,124
|
|
3042
3042
|
edc_sites/models/edc_permissions.py,sha256=K4enndi4ov-N--3LQWeez3yuCMzmbaVGd7J72q_f73Q,306
|
|
3043
|
-
edc_sites/models/site_profile.py,sha256=
|
|
3044
|
-
edc_sites/post_migrate_signals.py,sha256=
|
|
3043
|
+
edc_sites/models/site_profile.py,sha256=TXYBSA4F0-lRk0W_sfO7ljJg0pVoeqcvLR0n2nYvL5w,726
|
|
3044
|
+
edc_sites/post_migrate_signals.py,sha256=E4Nz7Q2qEGLZA6c0t2Oh4gQMI81mnCz1boHTRrAjqb0,565
|
|
3045
3045
|
edc_sites/single_site/__init__.py,sha256=4ZQgZWC4L2LyX46b7UMZgFzcS8GBWpszXvUWl8OWraw,197
|
|
3046
3046
|
edc_sites/single_site/get_languages.py,sha256=wvFxnz0TRMwvPBGpHupQaZLleX7nyGLCN4zE53FwBxU,848
|
|
3047
3047
|
edc_sites/single_site/get_languages_from_settings.py,sha256=97Q8iYoGqRsvbdcUk8kA0nKT1zLzWPOsxhzL1LXCPUY,395
|
|
3048
3048
|
edc_sites/single_site/single_site.py,sha256=Mdm3Rga_jlgih1bN5b_M_oouEpjplkbPn4VDcCdD4xU,894
|
|
3049
|
-
edc_sites/site.py,sha256=
|
|
3049
|
+
edc_sites/site.py,sha256=kLVk4xKbg1ZSl7V5x-A21xodsdtx3aNABWiPLVxJ5HQ,12166
|
|
3050
3050
|
edc_sites/system_checks.py,sha256=LjQ2SiKuu73HLHktR663u36MQB5jwN-5Gj6-_qgnw6Q,3639
|
|
3051
3051
|
edc_sites/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3052
3052
|
edc_sites/templatetags/edc_sites_extras.py,sha256=psMeeqrKOkdmeJlqVHGNY_lPlUFpvflPDhXqb6UeLOY,188
|
|
3053
3053
|
edc_sites/urls.py,sha256=XUYhimFMY3YTt8A44-wYAaUd0aBPUDl0MNmIxXxBmU4,281
|
|
3054
3054
|
edc_sites/utils/__init__.py,sha256=R1iguQwSmEhpwYcs0xNUCul2tqTkA6wS2x1MjqLd7uc,482
|
|
3055
|
-
edc_sites/utils/add_or_update_django_sites.py,sha256=
|
|
3055
|
+
edc_sites/utils/add_or_update_django_sites.py,sha256=Sg0CbKecK85EYETSmz11dzExkdSSXca9g2_SoMKRJCU,2082
|
|
3056
3056
|
edc_sites/utils/get_message_text.py,sha256=0oWQvOD8Y3eVa80WVbvgHyj529MS1yzJwz7JLUgv8Ms,675
|
|
3057
3057
|
edc_sites/utils/get_or_create_site_obj.py,sha256=PbLj-im-5E2vtGhRYEKLAUAYOR2JWg4WMeHNaMKGpXg,989
|
|
3058
3058
|
edc_sites/utils/get_or_create_site_profile_obj.py,sha256=zY2YJXEIZPvSK_UeYyF0IuvjZPSp4ti3BlKvGY1isFw,920
|
|
@@ -3060,8 +3060,8 @@ edc_sites/utils/get_site_model_cls.py,sha256=xRLvecBArO_-CMNGyOEEQIILqbU83fPUYUv
|
|
|
3060
3060
|
edc_sites/utils/has_profile_or_raise.py,sha256=GJ64qe92mxxZqNGyRO1a_ke174S4BdNXtH01bgn6a9M,828
|
|
3061
3061
|
edc_sites/utils/insert_into_domain.py,sha256=Qqmwu7ZL2ibjJihyXCm-h5lb81XLzDruuUVMtYHAjy4,207
|
|
3062
3062
|
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=
|
|
3064
|
-
edc_sites/view_mixins.py,sha256
|
|
3063
|
+
edc_sites/utils/valid_site_for_subject_or_raise.py,sha256=DbHEDuE3I2XD9h1kk2uv5FSe5zm1O9j81R1vDhDTyhw,2013
|
|
3064
|
+
edc_sites/view_mixins.py,sha256=cP7Retlz3dkd-AJ0Hky2nOcoBv5gjyCFIpxNfA6-kHE,952
|
|
3065
3065
|
edc_subject_dashboard/__init__.py,sha256=ecLybhWo_8tq7c9HlBHnalvJTfxFkW7lg8o79xjoh5I,260
|
|
3066
3066
|
edc_subject_dashboard/apps.py,sha256=wbvA8hlNAD77U8k9vWYLpBRBNWCGLDzcb7rKpVFeRJU,275
|
|
3067
3067
|
edc_subject_dashboard/auths.py,sha256=wYxSu_3BLCW94weUN4FoYYQ6dJv9ojZeLECDBLs5PNc,1253
|
|
@@ -3122,7 +3122,7 @@ edc_subject_dashboard/view_utils/go_to_forms_button.py,sha256=8tY4LC2CuBxqsmZBC1
|
|
|
3122
3122
|
edc_subject_dashboard/view_utils/requisition_button.py,sha256=fS-_AglX3TnU00_MxBBRRzvMVVEpEarVHS8AOtjxuYw,1019
|
|
3123
3123
|
edc_subject_dashboard/view_utils/subject_consent_dashboard_button.py,sha256=HfXb0Y9wPfZZ7MyjTVqwrXfLfhbr2hBprMx4ofjox00,1187
|
|
3124
3124
|
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=
|
|
3125
|
+
edc_subject_dashboard/view_utils/subject_screening_button.py,sha256=c5NUhsqXGtK7J7Sh-zqXCdCKZDSOvxjJINiDMNiC3-U,1606
|
|
3126
3126
|
edc_subject_dashboard/view_utils/timepoint_status_button.py,sha256=tXdE8pV38OMnpBNpLHoEhMufMh-41SaE2GCraK5HvzI,3163
|
|
3127
3127
|
edc_subject_dashboard/views/__init__.py,sha256=-PjvFdwPDVNFjlBtwC2rUpONdlQxjhx_N0na9LKMCG4,266
|
|
3128
3128
|
edc_subject_dashboard/views/base_requisition_view.py,sha256=OWmoZuRLLwOW8ABvyHYtOHhfQ3l8U9Is7OiS_YEkzpA,1136
|
|
@@ -3212,7 +3212,7 @@ edc_utils/sqlite.py,sha256=nFT4x0gxG9K6Eru_8mkwOGZLQV9jKt2tnxbQUHQU7mE,235
|
|
|
3212
3212
|
edc_utils/text.py,sha256=18lidD2CE2hSXgtydZFs5H723fW1EZ56JyzG1VEfD3U,3526
|
|
3213
3213
|
edc_view_utils/__init__.py,sha256=wH6dVBlPnKBYW8AlN0YTsTk4dyGCI3POMMCY-hCmxO4,610
|
|
3214
3214
|
edc_view_utils/apps.py,sha256=Fw_b7JzNByXHdk0CHPmIqM9jAIhaI9biTYy_npnNy80,231
|
|
3215
|
-
edc_view_utils/dashboard_model_button.py,sha256=
|
|
3215
|
+
edc_view_utils/dashboard_model_button.py,sha256=7WAR3HOYuzm9NsG5Nu0z7EOxu90DdbAl8SBQLUeAq5g,1897
|
|
3216
3216
|
edc_view_utils/history_button.py,sha256=nd_P_Df0dSflC14r4XnjhK0eq8v8xJZutFIAt5K28MU,1243
|
|
3217
3217
|
edc_view_utils/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3218
3218
|
edc_view_utils/model_button.py,sha256=C0XUMJZGX6G-8m-jxCs99WW11f9-PZq0Fg_KzCZF8Bw,4487
|
|
@@ -3291,7 +3291,7 @@ edc_visit_schedule/schedule/schedule.py,sha256=ROUNin-k1oJVtx_wEXwlj5xrhTw3I_6Ve
|
|
|
3291
3291
|
edc_visit_schedule/schedule/visit_collection.py,sha256=9OJKrLtx-H0eL9oo0dsRqYGPICiAMqEF4xIhhlinx0A,2033
|
|
3292
3292
|
edc_visit_schedule/schedule/window.py,sha256=gsXW7z3P84h6kWX7e7CABmalyLGgbbIwe0Q6atIbyEI,5229
|
|
3293
3293
|
edc_visit_schedule/simple_model_validator.py,sha256=5lMyVrrlAy4HxLmAqM3he7D2ssCJoyjAWDWnFmJwRT0,789
|
|
3294
|
-
edc_visit_schedule/site_visit_schedules.py,sha256=
|
|
3294
|
+
edc_visit_schedule/site_visit_schedules.py,sha256=MeeJjyYludPlmjrYHmnx5D6t85DZrWvPyFMgidYbewE,13087
|
|
3295
3295
|
edc_visit_schedule/subject_schedule.py,sha256=gai8sQ9nek3KEu27GL656twm0zKP3I3g510effNdIT8,16552
|
|
3296
3296
|
edc_visit_schedule/system_checks.py,sha256=Gp5DXTThRCFXyZ3dlN2S8FJPz16weonpjedcy6XIIms,9300
|
|
3297
3297
|
edc_visit_schedule/templates/edc_visit_schedule/home.html,sha256=RqtGsq6-zXi43jU0iSv24-xsIXXHkuiHjJvF-yqDyjA,1112
|
|
@@ -3406,7 +3406,7 @@ edc_vitals/models/fields/waist_circumference.py,sha256=fZcHFDdEwWLjIVLktKrFCD9UU
|
|
|
3406
3406
|
edc_vitals/models/fields/weight.py,sha256=zo9_9e3Cpu0UqoRbWS-iDkcDo6fK80b1dDQy4x4MyxE,921
|
|
3407
3407
|
edc_vitals/utils.py,sha256=vXid44KUXxeaSyund_y5MNXc5DFJs052_PwUAjszE2k,1384
|
|
3408
3408
|
edc_vitals/validators.py,sha256=vNiElWMs0rRnHRNuVoPLRf0rW_C_0xcfUyep1Y_Si5s,156
|
|
3409
|
-
clinicedc-2.0.
|
|
3410
|
-
clinicedc-2.0.
|
|
3411
|
-
clinicedc-2.0.
|
|
3412
|
-
clinicedc-2.0.
|
|
3409
|
+
clinicedc-2.0.25.dist-info/licenses/LICENSE,sha256=jOtLnuWt7d5Hsx6XXB2QxzrSe2sWWh3NgMfFRetluQM,35147
|
|
3410
|
+
clinicedc-2.0.25.dist-info/WHEEL,sha256=-neZj6nU9KAMg2CnCY6T3w8J53nx1kFGw_9HfoSzM60,79
|
|
3411
|
+
clinicedc-2.0.25.dist-info/METADATA,sha256=40tXyAKH80VvRdH6fqf00N2gLL4ZUo2-hj11Uwem5x8,15787
|
|
3412
|
+
clinicedc-2.0.25.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]
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
106
|
-
|
|
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
|
edc_consent/models/__init__.py
CHANGED
|
@@ -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
|
]
|
edc_consent/models/signals.py
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
from django.db.models.signals import
|
|
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
|
|
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
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
)
|
|
60
|
-
def update_appointment_from_consentext_post_save(
|
|
61
|
-
|
|
62
|
-
):
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
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
|
-
|
|
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
|
-
|
|
67
|
+
*DEFAULT_BASE_FIELDS,
|
|
68
|
+
)
|
edc_identifier/identifier.py
CHANGED
|
@@ -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
|
-
|
|
130
|
-
return identifier
|
|
130
|
+
return (self.separator or "").join(items)
|
edc_identifier/model_mixins.py
CHANGED
edc_identifier/models.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from django.db import models
|
|
2
2
|
from django.db.models import UniqueConstraint
|
|
3
3
|
|
|
4
|
+
from edc_constants.constants import NULL_STRING
|
|
4
5
|
from edc_model.models import BaseUuidModel
|
|
5
6
|
from edc_sites.model_mixins import SiteModelMixin
|
|
6
7
|
|
|
@@ -25,21 +26,21 @@ class IdentifierModel(SiteModelMixin, BaseUuidModel):
|
|
|
25
26
|
|
|
26
27
|
name = models.CharField(max_length=100)
|
|
27
28
|
|
|
28
|
-
subject_identifier = models.CharField(max_length=50, default=
|
|
29
|
+
subject_identifier = models.CharField(max_length=50, default=NULL_STRING)
|
|
29
30
|
|
|
30
31
|
sequence_number = models.IntegerField(default=1)
|
|
31
32
|
|
|
32
|
-
linked_identifier = models.CharField(max_length=50, default=
|
|
33
|
+
linked_identifier = models.CharField(max_length=50, default=NULL_STRING)
|
|
33
34
|
|
|
34
35
|
device_id = models.IntegerField()
|
|
35
36
|
|
|
36
|
-
protocol_number = models.CharField(max_length=25, default=
|
|
37
|
+
protocol_number = models.CharField(max_length=25, default=NULL_STRING)
|
|
37
38
|
|
|
38
|
-
model = models.CharField(max_length=100, default=
|
|
39
|
+
model = models.CharField(max_length=100, default=NULL_STRING)
|
|
39
40
|
|
|
40
|
-
identifier_type = models.CharField(max_length=100, default=
|
|
41
|
+
identifier_type = models.CharField(max_length=100, default=NULL_STRING)
|
|
41
42
|
|
|
42
|
-
identifier_prefix = models.CharField(max_length=25, default=
|
|
43
|
+
identifier_prefix = models.CharField(max_length=25, default=NULL_STRING)
|
|
43
44
|
|
|
44
45
|
objects = IdentifierModelManager()
|
|
45
46
|
|
|
@@ -21,7 +21,7 @@ class IdentifierMissingTemplateValue(Exception): # noqa: N818
|
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
class ResearchIdentifier:
|
|
24
|
-
label: str = None # e.g. subject_identifier, plot_identifier, etc
|
|
24
|
+
label: str | None = None # e.g. subject_identifier, plot_identifier, etc
|
|
25
25
|
identifier_type: str | None = None # e.g. 'subject', 'infant', 'plot', a.k.a subject_type
|
|
26
26
|
template: str | None = None
|
|
27
27
|
padding: int = 5
|