meta-edc 0.3.6__py3-none-any.whl → 0.3.15__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (129) hide show
  1. meta_auth/auth_objects.py +10 -3
  2. meta_consent/baker_recipes.py +4 -4
  3. meta_consent/consents.py +1 -1
  4. meta_consent/migrations/0025_alter_historicalsubjectconsent_first_name_and_more.py +151 -0
  5. meta_consent/models/signals.py +16 -13
  6. meta_consent/models/subject_consent_v1.py +1 -3
  7. meta_consent/tests/tests/test_form_validators.py +1 -1
  8. meta_dashboard/templates/meta_dashboard/bootstrap3/screening/listboard.html +4 -4
  9. meta_dashboard/templates/meta_dashboard/bootstrap3/subject/listboard.html +1 -2
  10. meta_edc/settings/debug.py +9 -9
  11. meta_edc/settings/defaults.py +25 -18
  12. meta_edc/settings/live.py +1 -9
  13. meta_edc/settings/uat.py +1 -14
  14. meta_edc/templates/meta_edc/bootstrap3/home.html +8 -5
  15. meta_edc/tests/test_settings.py +176 -0
  16. meta_edc/tests/tests/test_endpoints.py +20 -19
  17. meta_edc/urls.py +1 -1
  18. {meta_edc-0.3.6.dist-info → meta_edc-0.3.15.dist-info}/METADATA +5 -4
  19. {meta_edc-0.3.6.dist-info → meta_edc-0.3.15.dist-info}/RECORD +128 -74
  20. meta_prn/action_items.py +44 -2
  21. meta_prn/admin/__init__.py +3 -0
  22. meta_prn/admin/dm_referral_admin.py +49 -0
  23. meta_prn/admin/offschedule_dm_referral_admin.py +47 -0
  24. meta_prn/admin/onschedule_dm_referral_admin.py +39 -0
  25. meta_prn/baker_recipes.py +8 -1
  26. meta_prn/choices.py +2 -1
  27. meta_prn/constants.py +4 -1
  28. meta_prn/forms/__init__.py +2 -0
  29. meta_prn/forms/dm_referral_form.py +40 -0
  30. meta_prn/forms/offschedule_dm_referral_form.py +35 -0
  31. meta_prn/forms/offschedule_form.py +6 -0
  32. meta_prn/migrations/0057_historicalonscheduledmreferral_and_more.py +1156 -0
  33. meta_prn/migrations/0058_dmreferral_referral_note_and_more.py +29 -0
  34. meta_prn/migrations/0059_alter_historicaloffstudymedication_reason_and_more.py +53 -0
  35. meta_prn/models/__init__.py +13 -2
  36. meta_prn/models/dm_referral.py +39 -0
  37. meta_prn/models/offschedule.py +15 -1
  38. meta_prn/models/onschedule.py +6 -0
  39. meta_prn/models/signals.py +41 -1
  40. meta_prn/tests/tests/test_dm_referral.py +206 -0
  41. meta_screening/form_validators/screening_part_two.py +1 -1
  42. meta_screening/migrations/0062_remove_icpreferral_site_and_more.py +27 -0
  43. meta_screening/migrations/0063_alter_historicalscreeningpartone_fasting_duration_str_and_more.py +184 -0
  44. meta_screening/migrations/0064_remove_historicalscreeningpartone_fasting_duration_minutes_and_more.py +126 -0
  45. meta_screening/migrations/0065_auto_20240516_0352.py +31 -0
  46. meta_screening/migrations/0066_alter_historicalscreeningpartone_fasting_duration_delta_and_more.py +103 -0
  47. meta_screening/models/__init__.py +1 -1
  48. meta_screening/tests/meta_test_case_mixin.py +2 -2
  49. meta_screening/tests/options.py +3 -3
  50. meta_sites/__init__.py +0 -1
  51. meta_sites/sites.py +8 -7
  52. meta_subject/action_items.py +23 -0
  53. meta_subject/admin/__init__.py +1 -1
  54. meta_subject/admin/birth_outcome_admin.py +2 -3
  55. meta_subject/admin/delivery_admin.py +0 -1
  56. meta_subject/admin/diabetes/__init__.py +2 -0
  57. meta_subject/admin/diabetes/dm_diagnosis_admin.py +89 -0
  58. meta_subject/admin/{dm_referral_followup_admin.py → diabetes/dm_followup_admin.py} +15 -8
  59. meta_subject/admin/glucose_admin.py +1 -1
  60. meta_subject/admin/glucose_fbg_admin.py +34 -8
  61. meta_subject/admin/subject_visit_admin.py +4 -1
  62. meta_subject/baker_recipes.py +6 -0
  63. meta_subject/choices.py +8 -0
  64. meta_subject/constants.py +2 -1
  65. meta_subject/form_validators/__init__.py +2 -1
  66. meta_subject/form_validators/dm_diagnosis_form_validator.py +38 -0
  67. meta_subject/form_validators/dm_dx_result_form_validator.py +7 -0
  68. meta_subject/form_validators/{dm_referral_followup_form_validator.py → dm_followup_form_validator.py} +41 -2
  69. meta_subject/forms/__init__.py +1 -0
  70. meta_subject/forms/diabetes/__init__.py +3 -0
  71. meta_subject/forms/diabetes/dm_diagnosis_form.py +13 -0
  72. meta_subject/forms/diabetes/dm_dx_result_form.py +11 -0
  73. meta_subject/forms/diabetes/dm_followup_form.py +25 -0
  74. meta_subject/forms/glucose_fbg_form.py +38 -16
  75. meta_subject/forms/subject_visit_form.py +16 -0
  76. meta_subject/metadata_rules/metadata_rules.py +14 -0
  77. meta_subject/metadata_rules/predicates.py +22 -0
  78. meta_subject/migrations/0181_dmreferralfollowup_action_identifier_and_more.py +143 -0
  79. meta_subject/migrations/0182_rename_dmreferralfollowup_dmfollowup_and_more.py +54 -0
  80. meta_subject/migrations/0183_alter_dmfollowup_on_dm_medications_and_more.py +31 -0
  81. meta_subject/migrations/0184_alter_glucose_options_and_more.py +31 -0
  82. meta_subject/migrations/0185_alter_bloodresultsins_fasting_duration_str_and_more.py +82 -0
  83. meta_subject/migrations/0186_healtheconomicsupdate_singleton_field_and_more.py +55 -0
  84. meta_subject/migrations/0187_dmdiagnosis_historicaldmdiagnosis_dmdxresult_and_more.py +451 -0
  85. meta_subject/migrations/0188_historicaldmdxresult_dmdxresult.py +403 -0
  86. meta_subject/migrations/0189_alter_dmdxresult_options_and_more.py +116 -0
  87. meta_subject/migrations/0190_dmdiagnosis_dx_no_tmg_reason_and_more.py +65 -0
  88. meta_subject/migrations/0191_alter_dmdiagnosis_dx_no_tmg_reason_and_more.py +70 -0
  89. meta_subject/migrations/0192_rename_glucose_quantifier_glucosefbg_fbg_quantifier_and_more.py +44 -0
  90. meta_subject/migrations/0193_alter_glucosefbg_fbg_value_and_more.py +44 -0
  91. meta_subject/migrations/0194_remove_glucosefbg_assay_datetime_and_more.py +166 -0
  92. meta_subject/migrations/0195_alter_glucosefbg_fbg_datetime_and_more.py +27 -0
  93. meta_subject/migrations/0196_glucosefbg_fbg_not_performed_reason_and_more.py +49 -0
  94. meta_subject/migrations/0197_glucosefbg_fasting_duration_estimated_and_more.py +33 -0
  95. meta_subject/migrations/0198_alter_glucosefbg_fasting_duration_estimated_and_more.py +33 -0
  96. meta_subject/migrations/0199_auto_20240516_0247.py +18 -0
  97. meta_subject/migrations/0200_rename_fasting_duration_minutes_bloodresultsins_fasting_duration_delta_and_more.py +43 -0
  98. meta_subject/migrations/0201_alter_bloodresultsins_fasting_duration_delta_and_more.py +58 -0
  99. meta_subject/migrations/0202_auto_20240516_0315.py +32 -0
  100. meta_subject/migrations/0203_alter_bloodresultsins_fasting_duration_delta_and_more.py +67 -0
  101. meta_subject/migrations/0204_glucosefbg_repeat_fbg_date_and_more.py +27 -0
  102. meta_subject/migrations/0205_historicalsubjectrequisition_crf_status_and_more.py +80 -0
  103. meta_subject/migrations/0206_bloodresultsfbc_crf_status_and_more.py +62 -0
  104. meta_subject/models/__init__.py +1 -1
  105. meta_subject/models/blood_results/blood_results_fbc.py +3 -2
  106. meta_subject/models/blood_results/blood_results_hba1c.py +2 -0
  107. meta_subject/models/blood_results/blood_results_ins.py +2 -0
  108. meta_subject/models/blood_results/blood_results_lft.py +2 -0
  109. meta_subject/models/blood_results/blood_results_lipid.py +2 -0
  110. meta_subject/models/blood_results/blood_results_rft.py +2 -0
  111. meta_subject/models/diabetes/__init__.py +3 -0
  112. meta_subject/models/diabetes/dm_diagnosis.py +50 -0
  113. meta_subject/models/diabetes/dm_dx_result.py +70 -0
  114. meta_subject/models/{dm_referral_followup.py → diabetes/dm_followup.py} +18 -6
  115. meta_subject/models/glucose.py +5 -15
  116. meta_subject/models/glucose_fbg.py +40 -51
  117. meta_subject/models/health_economics/health_economics_update.py +2 -0
  118. meta_subject/models/subject_requisition.py +3 -4
  119. meta_subject/tests/tests/test_egfr.py +6 -5
  120. meta_subject/tests/tests/test_metadata_rules.py +32 -2
  121. meta_visit_schedule/constants.py +3 -1
  122. meta_visit_schedule/visit_schedules/phase_three/crfs.py +12 -1
  123. meta_visit_schedule/visit_schedules/phase_three/schedule_dm_referral.py +60 -0
  124. meta_visit_schedule/visit_schedules/phase_three/visit_schedule.py +2 -0
  125. meta_subject/forms/dm_referral_followup.py +0 -18
  126. {meta_edc-0.3.6.dist-info → meta_edc-0.3.15.dist-info}/AUTHORS +0 -0
  127. {meta_edc-0.3.6.dist-info → meta_edc-0.3.15.dist-info}/LICENSE +0 -0
  128. {meta_edc-0.3.6.dist-info → meta_edc-0.3.15.dist-info}/WHEEL +0 -0
  129. {meta_edc-0.3.6.dist-info → meta_edc-0.3.15.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,176 @@
1
+ #!/usr/bin/env python
2
+ import sys
3
+ from datetime import datetime
4
+ from os.path import join
5
+ from pathlib import Path
6
+ from zoneinfo import ZoneInfo
7
+
8
+ from django.conf import locale
9
+ from edc_constants.internationalization import EXTRA_LANG_INFO
10
+ from edc_test_settings.default_test_settings import DefaultTestSettings
11
+ from multisite import SiteID
12
+
13
+ from meta_edc.meta_version import PHASE_THREE
14
+
15
+ LANG_INFO = dict(locale.LANG_INFO, **EXTRA_LANG_INFO)
16
+ locale.LANG_INFO = LANG_INFO
17
+ LANGUAGE_LIST = ["sw", "en-gb", "en", "mas"]
18
+
19
+ app_name = "meta_edc"
20
+ base_dir = Path(__file__).parent.parent
21
+
22
+ project_settings = DefaultTestSettings(
23
+ calling_file=__file__,
24
+ META_PHASE=PHASE_THREE,
25
+ BASE_DIR=base_dir,
26
+ APP_NAME=app_name,
27
+ ETC_DIR=base_dir / "etc",
28
+ DJANGO_CRYPTO_FIELDS_KEY_PATH=base_dir / "tests" / "etc",
29
+ GIT_DIR=base_dir.parent,
30
+ HOLIDAY_FILE=base_dir / "tests" / "holidays.csv",
31
+ EDC_RANDOMIZATION_LIST_PATH=base_dir / "tests" / "etc",
32
+ SITE_ID=SiteID(default=10),
33
+ EDC_SITES_DOMAIN_SUFFIX="meta3.clinicedc.org",
34
+ EDC_EGFR_DROP_NOTIFICATION_MODEL="meta_subject.egfrdropnotification",
35
+ EDC_RANDOMIZATION_REGISTER_DEFAULT_RANDOMIZER=False,
36
+ EDC_MNSI_ABNORMAL_FOOT_APPEARANCE_OBSERVATIONS_MODEL=(
37
+ "meta_lists.abnormalfootappearanceobservations"
38
+ ),
39
+ EDC_QOL_EQ5D3L_MODEL="meta_subject.eq5d3l",
40
+ ROOT_URLCONF="meta_edc.urls",
41
+ EDC_AUTH_CODENAMES_WARN_ONLY=True,
42
+ EDC_DX_REVIEW_LIST_MODEL_APP_LABEL="edc_dx_review",
43
+ SENTRY_ENABLED=False,
44
+ INDEX_PAGE="localhost:8000",
45
+ EXPORT_FOLDER=join(base_dir, "tests", "export"),
46
+ SUBJECT_APP_LABEL="meta_subject",
47
+ SUBJECT_SCREENING_MODEL="meta_screening.subjectscreening",
48
+ SUBJECT_VISIT_MODEL="meta_subject.subjectvisit",
49
+ SUBJECT_VISIT_MISSED_MODEL="meta_subject.subjectvisitmissed",
50
+ SUBJECT_CONSENT_MODEL="meta_consent.subjectconsentv1",
51
+ SUBJECT_REQUISITION_MODEL="meta_subject.subjectrequisition",
52
+ EDC_BLOOD_RESULTS_MODEL_APP_LABEL="meta_subject",
53
+ DEFENDER_ENABLED=False,
54
+ DJANGO_LAB_DASHBOARD_REQUISITION_MODEL="meta_subject.subjectrequisition",
55
+ ADVERSE_EVENT_ADMIN_SITE="meta_ae_admin",
56
+ EDC_DX_LABELS=dict(hiv="HIV", dm="Diabetes", htn="Hypertension", chol="High Cholesterol"),
57
+ ADVERSE_EVENT_APP_LABEL="meta_ae",
58
+ EDC_NAVBAR_DEFAULT="meta_dashboard",
59
+ EDC_PROTOCOL_STUDY_OPEN_DATETIME=datetime(2019, 4, 30, 0, 0, 0, tzinfo=ZoneInfo("UTC")),
60
+ EDC_PROTOCOL_STUDY_CLOSE_DATETIME=datetime(
61
+ 2025, 12, 31, 23, 59, 59, tzinfo=ZoneInfo("UTC")
62
+ ),
63
+ LANGUAGE_CODE="en",
64
+ LANGUAGES=[(code, LANG_INFO[code]["name"]) for code in LANGUAGE_LIST],
65
+ DASHBOARD_BASE_TEMPLATES=dict(
66
+ edc_base_template="edc_dashboard/base.html",
67
+ listboard_base_template="meta_edc/base.html",
68
+ dashboard_base_template="meta_edc/base.html",
69
+ screening_listboard_template="meta_dashboard/screening/listboard.html",
70
+ subject_listboard_template="meta_dashboard/subject/listboard.html",
71
+ subject_dashboard_template="meta_dashboard/subject/dashboard.html",
72
+ subject_review_listboard_template="edc_review_dashboard/subject_review_listboard.html",
73
+ ),
74
+ EDC_BOOTSTRAP=3,
75
+ EMAIL_BACKEND="django.core.mail.backends.locmem.EmailBackend",
76
+ EMAIL_CONTACTS={
77
+ "ae_reports": "someone@example.com",
78
+ "data_request": "someone@example.com",
79
+ "data_manager": "someone@example.com",
80
+ "tmg": "someone@example.com",
81
+ },
82
+ EMAIL_ENABLED=True,
83
+ LIVE_SYSTEM=False,
84
+ EDC_SITES_MODULE_NAME="meta_sites",
85
+ EDC_AUTH_SKIP_SITE_AUTHS=True,
86
+ EDC_AUTH_SKIP_AUTH_UPDATER=True,
87
+ EDC_MNSI_MODEL="meta_subject.mnsi",
88
+ INSTALLED_APPS=[
89
+ "django.contrib.admin",
90
+ "django.contrib.auth",
91
+ "django.contrib.contenttypes",
92
+ "django.contrib.sessions",
93
+ "django.contrib.messages",
94
+ "django.contrib.staticfiles",
95
+ "django.contrib.sites",
96
+ "django_crypto_fields.apps.AppConfig",
97
+ "django_revision.apps.AppConfig",
98
+ # "debug_toolbar",
99
+ "django_extensions",
100
+ "logentry_admin",
101
+ "simple_history",
102
+ "storages",
103
+ "edc_sites.apps.AppConfig",
104
+ "edc_action_item.apps.AppConfig",
105
+ "edc_adherence.apps.AppConfig",
106
+ "edc_adverse_event.apps.AppConfig",
107
+ "edc_appointment.apps.AppConfig",
108
+ "edc_auth.apps.AppConfig",
109
+ "edc_crf.apps.AppConfig",
110
+ "edc_he.apps.AppConfig",
111
+ "edc_data_manager.apps.AppConfig",
112
+ "edc_consent.apps.AppConfig",
113
+ "edc_device.apps.AppConfig",
114
+ "edc_dashboard.apps.AppConfig",
115
+ "edc_egfr.apps.AppConfig",
116
+ "edc_export.apps.AppConfig",
117
+ "edc_facility.apps.AppConfig",
118
+ "edc_fieldsets.apps.AppConfig",
119
+ "edc_form_runners.apps.AppConfig",
120
+ "edc_form_validators.apps.AppConfig",
121
+ "edc_reportable.apps.AppConfig",
122
+ "edc_lab.apps.AppConfig",
123
+ "edc_lab_dashboard.apps.AppConfig",
124
+ "edc_label.apps.AppConfig",
125
+ "edc_listboard.apps.AppConfig",
126
+ "edc_locator.apps.AppConfig",
127
+ "edc_pdf_reports.apps.AppConfig",
128
+ "edc_identifier.apps.AppConfig",
129
+ "edc_metadata.apps.AppConfig",
130
+ "edc_model_admin.apps.AppConfig",
131
+ "edc_navbar.apps.AppConfig",
132
+ "edc_notification.apps.AppConfig",
133
+ "edc_offstudy.apps.AppConfig",
134
+ "edc_visit_tracking.apps.AppConfig",
135
+ "edc_visit_schedule.apps.AppConfig",
136
+ "edc_pdutils.apps.AppConfig",
137
+ "edc_pharmacy.apps.AppConfig",
138
+ "edc_protocol.apps.AppConfig",
139
+ "edc_protocol_incident.apps.AppConfig",
140
+ "edc_prn.apps.AppConfig",
141
+ "edc_randomization.apps.AppConfig",
142
+ "edc_registration.apps.AppConfig",
143
+ "edc_subject_dashboard.apps.AppConfig",
144
+ "edc_screening.apps.AppConfig",
145
+ "edc_timepoint.apps.AppConfig",
146
+ "edc_list_data.apps.AppConfig",
147
+ "edc_review_dashboard.apps.AppConfig",
148
+ "edc_refusal.apps.AppConfig",
149
+ "edc_mnsi.apps.AppConfig",
150
+ "edc_unblinding.apps.AppConfig",
151
+ "edc_qol.apps.AppConfig",
152
+ "edc_dx_review.apps.AppConfig",
153
+ "edc_dx.apps.AppConfig",
154
+ "meta_auth.apps.AppConfig",
155
+ "meta_consent.apps.AppConfig",
156
+ "meta_lists.apps.AppConfig",
157
+ "meta_dashboard.apps.AppConfig",
158
+ "meta_labs.apps.AppConfig",
159
+ "meta_rando.apps.AppConfig",
160
+ "meta_subject.apps.AppConfig",
161
+ "meta_visit_schedule.apps.AppConfig",
162
+ "meta_ae.apps.AppConfig",
163
+ "meta_prn.apps.AppConfig",
164
+ "meta_export.apps.AppConfig",
165
+ "meta_sites.apps.AppConfig",
166
+ "meta_screening.apps.AppConfig",
167
+ "meta_edc.apps.AppConfig",
168
+ "edc_appconfig.apps.AppConfig",
169
+ ],
170
+ add_dashboard_middleware=True,
171
+ add_lab_dashboard_middleware=True,
172
+ add_adverse_event_dashboard_middleware=True,
173
+ ).settings
174
+
175
+ for k, v in project_settings.items():
176
+ setattr(sys.modules[__name__], k, v)
@@ -12,8 +12,7 @@ from django.apps import apps as django_apps
12
12
  from django.conf import settings
13
13
  from django.contrib.auth import get_user_model
14
14
  from django.contrib.sites.models import Site
15
- from django.test import tag
16
- from django.test.utils import override_settings
15
+ from django.test.utils import override_settings, tag
17
16
  from django.urls.base import reverse
18
17
  from django.urls.exceptions import NoReverseMatch
19
18
  from django_extensions.management.color import color_style
@@ -25,7 +24,7 @@ from edc_auth.auth_updater import AuthUpdater
25
24
  from edc_auth.constants import AUDITOR_ROLE, CLINICIAN_ROLE, STAFF_ROLE
26
25
  from edc_auth.site_auths import site_auths
27
26
  from edc_consent.site_consents import site_consents
28
- from edc_constants.constants import PENDING, YES
27
+ from edc_constants.constants import YES
29
28
  from edc_dashboard.url_names import url_names
30
29
  from edc_export.constants import DATA_EXPORTER_ROLE
31
30
  from edc_lab.auth_objects import LAB_TECHNICIAN_ROLE
@@ -217,7 +216,7 @@ class AdminSiteTest(MetaTestCaseMixin, WebTest):
217
216
  else:
218
217
  self.assertNotIn(label, response)
219
218
 
220
- @tag("1")
219
+ @skip
221
220
  @time_machine.travel(datetime(2019, 6, 11, 8, 00, tzinfo=ZoneInfo("UTC")))
222
221
  def test_screening_form_phase3(self):
223
222
  self.login(superuser=False, roles=[STAFF_ROLE, CLINICIAN_ROLE])
@@ -241,18 +240,18 @@ class AdminSiteTest(MetaTestCaseMixin, WebTest):
241
240
  add_screening_part_two,
242
241
  screening_identifier,
243
242
  ) = self.webtest_for_screening_form_part_one(part_one_data)
244
- part_two_data = deepcopy(get_part_two_eligible_options())
245
- part_two_data["part_two_report_datetime"] = get_utcnow() + relativedelta(minutes=10)
246
- part_two_data["appt_datetime"] = part_two_data[
247
- "part_two_report_datetime"
248
- ] + relativedelta(days=10)
249
- if part_two_data["appt_datetime"] < get_utcnow():
250
- part_two_data.update(p3_ltfu=PENDING)
251
- # part_two_data.update(p3_ltfu_date=get_utcnow().date())
252
- # part_two_data.update()
253
-
254
- traveller = time_machine.travel(part_two_data["part_two_report_datetime"])
243
+
244
+ # travel 10 min into the future
245
+ traveller = time_machine.travel(
246
+ part_one_data["report_datetime"] + relativedelta(minutes=10)
247
+ )
255
248
  traveller.start()
249
+ part_two_data = deepcopy(
250
+ get_part_two_eligible_options(
251
+ report_datetime=get_utcnow() + relativedelta(minutes=1)
252
+ )
253
+ )
254
+ part_two_data["appt_datetime"] = get_utcnow() + relativedelta(days=10)
256
255
  part_two_data.update(
257
256
  dict(
258
257
  part_two_report_datetime_0=part_two_data["part_two_report_datetime"].strftime(
@@ -272,11 +271,14 @@ class AdminSiteTest(MetaTestCaseMixin, WebTest):
272
271
  ) = self.webtest_for_screening_form_part_two(
273
272
  home_page, add_screening_part_two, screening_identifier, part_two_data
274
273
  )
274
+ traveller.stop()
275
275
 
276
+ # travel 10 days into the future
276
277
  traveller = time_machine.travel(part_two_data["appt_datetime"])
277
278
  traveller.start()
278
- part_three_data = deepcopy(get_part_three_eligible_options())
279
- # report_datetime = part_three_data.get("part_three_report_datetime")
279
+ part_three_data = deepcopy(
280
+ get_part_three_eligible_options(report_datetime=get_utcnow())
281
+ )
280
282
 
281
283
  traveller = time_machine.travel(part_two_data.get("part_three_report_datetime"))
282
284
  traveller.start()
@@ -311,7 +313,6 @@ class AdminSiteTest(MetaTestCaseMixin, WebTest):
311
313
  self.assertIn(screening_identifier, screening_listboard_page)
312
314
  self.assertIn("Consent", screening_listboard_page)
313
315
 
314
- @tag("1")
315
316
  def webtest_for_screening_form_part_one(self, part_one_data):
316
317
  home_page = self.app.get(reverse("home_url"), user=self.user, status=200)
317
318
  screening_listboard_page = home_page.click(description="Screening", index=1)
@@ -367,7 +368,7 @@ class AdminSiteTest(MetaTestCaseMixin, WebTest):
367
368
  errorlist = soup.find_all("ul", "errorlist")
368
369
  self.assertEqual([], errorlist)
369
370
  # redirects back to listboard
370
- obj = SubjectScreening.objects.all().last()
371
+ obj = SubjectScreening.objects.get(screening_identifier=screening_identifier)
371
372
  url = reverse(screening_listboard_url, args=(obj.screening_identifier,))
372
373
  self.assertRedirects(page, url)
373
374
  # shows P1 | P2 | P3 | PENDING
meta_edc/urls.py CHANGED
@@ -1,8 +1,8 @@
1
1
  from django.conf import settings
2
+ from django.contrib.auth.views import LogoutView
2
3
  from django.urls.conf import include, path, re_path
3
4
  from django.views.defaults import page_not_found, server_error # noqa
4
5
  from django.views.generic import RedirectView
5
- from edc_auth.views import LogoutView
6
6
  from edc_dashboard.utils import get_index_page
7
7
  from edc_dashboard.views import AdministrationView
8
8
  from edc_utils.paths_for_urlpatterns import paths_for_urlpatterns
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: meta-edc
3
- Version: 0.3.6
3
+ Version: 0.3.15
4
4
  Summary: META Trial EDC (http://www.isrctn.com/ISRCTN76157257)
5
5
  Home-page: https://github.com/meta-trial/meta-edc
6
6
  Author: Erik van Widenfelt
@@ -13,15 +13,16 @@ Classifier: Framework :: Django :: 4.2
13
13
  Classifier: Intended Audience :: Developers
14
14
  Classifier: Intended Audience :: Science/Research
15
15
  Classifier: Operating System :: OS Independent
16
- Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
17
17
  Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
18
- Requires-Python: >=3.11
18
+ Requires-Python: >=3.12
19
19
  Description-Content-Type: text/x-rst
20
20
  License-File: LICENSE
21
21
  License-File: AUTHORS
22
- Requires-Dist: edc ==0.5.73
22
+ Requires-Dist: edc ==0.5.90
23
23
  Requires-Dist: edc-microscopy
24
24
  Requires-Dist: beautifulsoup4
25
+ Requires-Dist: Django ==4.2.11
25
26
 
26
27
  |pypi| |actions| |codecov| |downloads|
27
28