clinicedc 2.0.5__py3-none-any.whl → 2.0.7__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 (387) hide show
  1. {clinicedc-2.0.5.dist-info → clinicedc-2.0.7.dist-info}/METADATA +2 -2
  2. {clinicedc-2.0.5.dist-info → clinicedc-2.0.7.dist-info}/RECORD +387 -336
  3. edc_action_item/action.py +1 -1
  4. edc_action_item/action_item_notification.py +2 -2
  5. edc_action_item/create_action_item.py +1 -1
  6. edc_action_item/decorators.py +1 -1
  7. edc_action_item/migrations/0001_initial.py +21 -22
  8. edc_action_item/migrations/0006_auto_20180707_1659.py +4 -4
  9. edc_action_item/migrations/0008_auto_20180809_0303.py +4 -4
  10. edc_action_item/migrations/0015_auto_20190114_0250.py +4 -4
  11. edc_action_item/migrations/0017_auto_20190305_0123.py +11 -30
  12. edc_action_item/migrations/0030_edcpermissions.py +3 -2
  13. edc_action_item/migrations/0039_alter_actionitem_auto_created_comment_and_more.py +398 -0
  14. edc_action_item/migrations/0040_alter_actionitem_report_datetime_and_more.py +34 -0
  15. edc_action_item/models/action_item.py +9 -4
  16. edc_action_item/models/action_model_mixin.py +4 -4
  17. edc_action_item/models/reference.py +2 -2
  18. edc_action_item/post_migrate_signals.py +1 -1
  19. edc_action_item/send_email.py +0 -85
  20. edc_adherence/migrations/0005_alter_nonadherencereasons_extra_value_and_more.py +36 -0
  21. edc_adherence/model_mixins.py +1 -1
  22. edc_adverse_event/migrations/0001_initial.py +5 -4
  23. edc_adverse_event/migrations/0002_auto_20190802_0059.py +3 -2
  24. edc_adverse_event/migrations/0008_auto_20220825_0451.py +3 -2
  25. edc_adverse_event/migrations/0009_auto_20220907_0157.py +3 -2
  26. edc_adverse_event/migrations/0016_alter_aeactionclassification_device_created_and_more.py +285 -0
  27. edc_adverse_event/model_mixins/ae_followup/ae_followup_fields_model_mixin.py +2 -2
  28. edc_adverse_event/model_mixins/ae_initial/ae_initial_fields_model_mixin.py +6 -5
  29. edc_adverse_event/model_mixins/ae_special_interest/aesi_fields_model_mixin.py +2 -2
  30. edc_adverse_event/model_mixins/ae_susar/ae_susar_fields_model_mixin.py +2 -2
  31. edc_adverse_event/model_mixins/ae_tmg/ae_tmg_fields_model_mixin.py +15 -11
  32. edc_adverse_event/model_mixins/death_report/death_report_model_mixin.py +5 -4
  33. edc_adverse_event/model_mixins/death_report/death_report_tmg_model_mixin.py +6 -3
  34. edc_adverse_event/model_mixins/death_report/simple_death_report_model_mixin.py +2 -2
  35. edc_adverse_event/model_mixins/hospitaization/hospitalization_model_mixin.py +4 -3
  36. edc_adverse_event/modeladmin_mixins/death_report_admin_mixin.py +3 -3
  37. edc_adverse_event/models/signals.py +7 -7
  38. edc_adverse_event/templatetags/edc_adverse_event_extras.py +5 -4
  39. edc_adverse_event/view_mixins/ae/ae_listboard_view_mixin.py +3 -5
  40. edc_adverse_event/view_mixins/ae/death_report_listboard_view_mixin.py +6 -8
  41. edc_adverse_event/view_mixins/tmg/tmg_ae_listboard_view_mixin.py +2 -2
  42. edc_adverse_event/views/tmg/summary_listboard_view.py +3 -2
  43. edc_appointment/admin/appointment_admin.py +2 -2
  44. edc_appointment/admin/list_filters.py +2 -2
  45. edc_appointment/form_validators/appointment_form_validator.py +108 -82
  46. edc_appointment/migrations/0003_auto_20161127_2226.py +5 -6
  47. edc_appointment/migrations/0006_auto_20170106_2118.py +5 -5
  48. edc_appointment/migrations/0018_auto_20190305_0123.py +5 -12
  49. edc_appointment/migrations/0050_alter_appointment_appt_type_and_more.py +220 -0
  50. edc_appointment/model_mixins/appointment_fields_model_mixin.py +1 -2
  51. edc_appointment/model_mixins/window_period_model_mixin.py +6 -7
  52. edc_appointment/models/signals.py +44 -35
  53. edc_appointment/view_utils/appointment_button.py +2 -2
  54. edc_auth/admin/user_admin.py +1 -1
  55. edc_auth/migrations/0001_squashed_0033_alter_userprofile_is_multisite_viewer.py +5 -5
  56. edc_auth/migrations/0012_auto_20191026_0034.py +3 -2
  57. edc_auth/migrations/0013_auto_20191026_0055.py +3 -2
  58. edc_auth/migrations/0025_permissions.py +3 -2
  59. edc_auth/migrations/0035_alter_edcpermissions_device_created_and_more.py +85 -0
  60. edc_auth/post_migrate_signals.py +1 -1
  61. edc_consent/actions.py +4 -5
  62. edc_consent/migrations/0001_initial.py +3 -2
  63. edc_consent/migrations/0006_alter_edcpermissions_device_created_and_more.py +49 -0
  64. edc_consent/model_mixins/consent_extension_model_mixin.py +4 -5
  65. edc_consent/model_mixins/requires_consent_fields_model_mixin.py +2 -2
  66. edc_consent/utils.py +1 -1
  67. edc_crf/migrations/0001_initial.py +3 -2
  68. edc_crf/migrations/0009_alter_crfstatus_device_created_and_more.py +54 -0
  69. edc_dashboard/migrations/0001_initial.py +3 -2
  70. edc_dashboard/migrations/0006_alter_edcpermissions_device_created_and_more.py +49 -0
  71. edc_dashboard/templatetags/edc_dashboard_extras.py +3 -2
  72. edc_data_manager/action_items.py +4 -6
  73. edc_data_manager/admin/actions.py +5 -5
  74. edc_data_manager/handlers/handlers.py +6 -7
  75. edc_data_manager/migrations/0001_initial.py +19 -19
  76. edc_data_manager/migrations/0025_edcpermissions.py +3 -2
  77. edc_data_manager/migrations/0040_alter_datadictionary_device_created_and_more.py +327 -0
  78. edc_data_manager/migrations/0041_alter_dataquery_dm_user_and_more.py +164 -0
  79. edc_data_manager/models/data_query.py +5 -5
  80. edc_data_manager/models/model_mixins.py +8 -8
  81. edc_data_manager/rule/rule_runner.py +4 -3
  82. edc_document_status/model_mixins.py +1 -1
  83. edc_egfr/egfr.py +11 -7
  84. edc_egfr/model_mixins/egfr_model_mixin.py +3 -7
  85. edc_export/admin/data_request_admin.py +2 -2
  86. edc_export/archive_exporter.py +4 -3
  87. edc_export/files_archiver.py +3 -2
  88. edc_export/migrations/0001_initial.py +26 -26
  89. edc_export/migrations/0004_auto_20190305_0123.py +25 -72
  90. edc_export/migrations/0013_edcpermissions.py +3 -2
  91. edc_export/migrations/0022_alter_datarequest_description_and_more.py +611 -0
  92. edc_export/migrations/0023_alter_datarequesthistory_archive_filename_and_more.py +29 -0
  93. edc_export/model_exporter/file_history_updater.py +10 -10
  94. edc_export/model_exporter/model_exporter.py +13 -14
  95. edc_export/model_exporter/object_history_helpers.py +2 -2
  96. edc_export/models/data_request_history.py +4 -4
  97. edc_export/utils.py +10 -15
  98. edc_facility/facility.py +10 -15
  99. edc_facility/import_holidays.py +13 -13
  100. edc_facility/migrations/0005_healthfacility_healthfacilitytypes_and_more.py +8 -7
  101. edc_facility/migrations/0016_alter_healthfacility_device_created_and_more.py +139 -0
  102. edc_facility/migrations/0017_alter_healthfacility_gps_and_more.py +54 -0
  103. edc_facility/model_mixins.py +5 -5
  104. edc_form_runners/form_runner.py +3 -5
  105. edc_form_runners/migrations/0001_initial.py +3 -2
  106. edc_form_runners/migrations/0005_alter_issue_device_created_and_more.py +49 -0
  107. edc_identifier/migrations/0001_squashed_0018_auto_20180128_1054.py +3 -3
  108. edc_identifier/migrations/0002_auto_20190305_0123.py +3 -6
  109. edc_identifier/migrations/0006_auto_20161127_2226.py +15 -15
  110. edc_identifier/migrations/0007_auto_20161204_2227.py +3 -3
  111. edc_identifier/migrations/0009_auto_20161221_2323.py +3 -5
  112. edc_identifier/migrations/0010_auto_20170112_0602.py +17 -17
  113. edc_identifier/migrations/0011_alter_identifiermodel_device_created_and_more.py +79 -0
  114. edc_identifier/model_mixins.py +1 -1
  115. edc_identifier/models.py +9 -9
  116. edc_identifier/simple_identifier.py +1 -3
  117. edc_identifier/subject_identifier.py +3 -2
  118. edc_lab/migrations/0001_initial.py +29 -29
  119. edc_lab/migrations/0008_auto_20170921_0719.py +3 -3
  120. edc_lab/migrations/0010_auto_20171127_1541.py +15 -15
  121. edc_lab/migrations/0012_auto_20180114_1438.py +3 -3
  122. edc_lab/migrations/0019_auto_20190305_0123.py +43 -127
  123. edc_lab/migrations/0036_alter_aliquot_comment_alter_aliquot_device_created_and_more.py +1139 -0
  124. edc_lab/migrations/0037_alter_historicalorder_order_datetime_and_more.py +31 -0
  125. edc_lab/model_mixins/aliquot/aliquot_identifier_model_mixin.py +2 -2
  126. edc_lab/model_mixins/aliquot/aliquot_model_mixin.py +2 -2
  127. edc_lab/model_mixins/panel_model_mixin.py +18 -7
  128. edc_lab/model_mixins/requisition/crf_with_requisition_model_mixin.py +2 -4
  129. edc_lab/model_mixins/requisition/requisition_model_mixin.py +7 -8
  130. edc_lab/model_mixins/requisition/requisition_verify_model_mixin.py +1 -1
  131. edc_lab/model_mixins/result/result_item_model_mixin.py +4 -4
  132. edc_lab/model_mixins/shipping/manifest_model_mixin.py +4 -5
  133. edc_lab/model_mixins/shipping/verify_model_mixin.py +4 -6
  134. edc_lab/models/box.py +1 -1
  135. edc_lab/models/box_item.py +6 -7
  136. edc_lab/models/manifest/manifest.py +1 -1
  137. edc_lab/models/manifest/manifest_item.py +6 -6
  138. edc_lab/models/manifest/shipper.py +3 -4
  139. edc_lab/models/order.py +6 -4
  140. edc_lab/models/panel.py +4 -4
  141. edc_lab/models/result.py +2 -2
  142. edc_lab/models/result_item.py +2 -2
  143. edc_lab_dashboard/migrations/0001_initial.py +3 -2
  144. edc_lab_dashboard/migrations/0005_alter_edcpermissions_device_created_and_more.py +49 -0
  145. edc_lab_dashboard/views/action_views/receive_view.py +2 -2
  146. edc_lab_dashboard/views/action_views/verify_box_item_view.py +2 -2
  147. edc_lab_results/model_mixins/blood_result_model_mixin.py +7 -7
  148. edc_lab_results/model_mixins/fbg_model_mixin.py +3 -3
  149. edc_lab_results/model_mixins/glucose_model_mixin.py +3 -3
  150. edc_lab_results/model_mixins/hba1c_model_mixin.py +3 -3
  151. edc_label/migrations/0001_initial.py +3 -2
  152. edc_label/migrations/0007_alter_zpllabeltemplates_device_created_and_more.py +49 -0
  153. edc_list_data/list_model_maker.py +2 -2
  154. edc_list_data/load_list_data.py +11 -14
  155. edc_list_data/model_mixins.py +12 -4
  156. edc_list_data/preload_data.py +3 -3
  157. edc_listboard/migrations/0001_initial.py +3 -2
  158. edc_listboard/migrations/0007_alter_listboard_device_created_and_more.py +49 -0
  159. edc_locator/migrations/0001_initial.py +7 -7
  160. edc_locator/migrations/0018_auto_20190305_0123.py +5 -12
  161. edc_locator/migrations/0040_alter_historicalsubjectlocator_action_identifier_and_more.py +187 -0
  162. edc_locator/migrations/0041_alter_historicalsubjectlocator_report_datetime_and_more.py +27 -0
  163. edc_locator/model_mixins/locator_model_mixin.py +2 -2
  164. edc_locator/model_mixins/subject_contact_fields_mixin.py +1 -1
  165. edc_locator/modeladmin_mixins.py +5 -4
  166. edc_ltfu/model_mixins.py +7 -5
  167. edc_metadata/metadata_rules/decorators.py +1 -1
  168. edc_metadata/migrations/0002_auto_20161127_2226.py +5 -5
  169. edc_metadata/migrations/0005_auto_20170112_0602.py +5 -5
  170. edc_metadata/migrations/0011_auto_20190305_0123.py +5 -12
  171. edc_metadata/migrations/0031_alter_crfmetadata_device_created_and_more.py +120 -0
  172. edc_metadata/model_mixins/updates/updates_crf_metadata_model_mixin.py +1 -1
  173. edc_metadata/model_mixins/updates/updates_requisition_metadata_model_mixin.py +1 -1
  174. edc_metadata/models/crf_metadata.py +5 -5
  175. edc_metadata/models/crf_metadata_model_mixin.py +4 -5
  176. edc_metadata/models/requisition_metadata.py +6 -6
  177. edc_metadata/views/refresh_metadata_actions_view.py +3 -3
  178. edc_model/models/address_mixin.py +6 -6
  179. edc_model/models/fields/initials_field.py +2 -1
  180. edc_model/models/historical_records.py +2 -9
  181. edc_model/models/url_model_mixin.py +2 -2
  182. edc_model/validators/date.py +7 -8
  183. edc_model_admin/list_filters/future_date_list_filter.py +3 -3
  184. edc_model_admin/list_filters/past_date_list_filter.py +3 -3
  185. edc_model_admin/mixins/model_admin_protect_pii_mixin.py +4 -5
  186. edc_model_fields/fields/other_charfield.py +2 -2
  187. edc_navbar/migrations/0004_auto_20220825_0451.py +3 -2
  188. edc_navbar/migrations/0009_alter_edcpermissions_device_created_and_more.py +49 -0
  189. edc_notification/migrations/0001_initial.py +3 -3
  190. edc_notification/migrations/0004_auto_20190305_0123.py +3 -6
  191. edc_notification/migrations/0011_alter_notification_device_created_and_more.py +59 -0
  192. edc_notification/models/notification.py +1 -1
  193. edc_notification/notification/notification.py +12 -12
  194. edc_offstudy/migrations/0001_initial.py +4 -4
  195. edc_offstudy/migrations/0002_auto_20180921_0434.py +4 -4
  196. edc_offstudy/migrations/0005_auto_20190305_0123.py +5 -12
  197. edc_offstudy/migrations/0023_alter_historicalsubjectoffstudy_action_identifier_and_more.py +188 -0
  198. edc_offstudy/migrations/0024_alter_historicalsubjectoffstudy_offstudy_datetime_and_more.py +43 -0
  199. edc_offstudy/model_mixins/offstudy_model_mixin.py +3 -2
  200. edc_pdutils/df_exporters/csv_exporter.py +33 -37
  201. edc_pdutils/df_exporters/csv_model_exporter.py +2 -1
  202. edc_pdutils/migrations/0001_initial.py +8 -8
  203. edc_pharmacy/admin/prescription/rx_refill_admin.py +4 -3
  204. edc_pharmacy/admin/reports/stock_availability_admin.py +5 -6
  205. edc_pharmacy/migrations/0001_initial.py +64 -63
  206. edc_pharmacy/migrations/0015_auto_20220913_2139.py +26 -26
  207. edc_pharmacy/migrations/0024_allocation_assignment_containerunits_dispense_and_more.py +81 -86
  208. edc_pharmacy/migrations/0037_remove_historicalstock_confirmed_at_site_by_and_more.py +5 -5
  209. edc_pharmacy/migrations/0039_remove_dispense_registered_subject_and_more.py +7 -8
  210. edc_pharmacy/migrations/0049_remove_stocktransferconfirmation_stock_and_more.py +12 -12
  211. edc_pharmacy/migrations/0050_remove_stocktransferconfirmation2_location_and_more.py +5 -5
  212. edc_pharmacy/migrations/0051_alter_historicalstocktransferconfirmationitem_options_and_more.py +3 -4
  213. edc_pharmacy/migrations/0053_alter_location_managers_alter_historicalstock_lot_and_more.py +3 -3
  214. edc_pharmacy/migrations/0057_scanduplicates.py +3 -3
  215. edc_pharmacy/migrations/0060_alter_container_max_per_subject_and_more.py +13 -15
  216. edc_pharmacy/migrations/0068_stockout.py +2 -3
  217. edc_pharmacy/migrations/0076_historicalstockadjustment_stockadjustment.py +5 -5
  218. edc_pharmacy/migrations/0077_historicalstockadjustment_adjustment_datetime_and_more.py +3 -4
  219. edc_pharmacy/migrations/0081_historicalconfirmation_confirmation.py +8 -8
  220. edc_pharmacy/migrations/0084_confirmationatsiteitem_and_more.py +0 -2
  221. edc_pharmacy/migrations/0089_alter_allocation_allocated_by_and_more.py +3284 -0
  222. edc_pharmacy/migrations/0090_alter_allocation_allocation_datetime_and_more.py +227 -0
  223. edc_pharmacy/model_mixins/study_medication_refill_model_mixin.py +2 -2
  224. edc_pharmacy/models/medication/medication.py +3 -3
  225. edc_pharmacy/models/model_mixins.py +10 -11
  226. edc_pharmacy/models/prescription/rx.py +13 -12
  227. edc_pharmacy/models/prescription/rx_refill.py +0 -1
  228. edc_pharmacy/models/stock/allocation.py +3 -3
  229. edc_pharmacy/models/stock/confirmation.py +3 -3
  230. edc_pharmacy/models/stock/confirmation_at_site.py +3 -2
  231. edc_pharmacy/models/stock/confirmation_at_site_item.py +3 -4
  232. edc_pharmacy/models/stock/dispense.py +5 -6
  233. edc_pharmacy/models/stock/dispense_item.py +2 -2
  234. edc_pharmacy/models/stock/location.py +3 -4
  235. edc_pharmacy/models/stock/lot.py +6 -7
  236. edc_pharmacy/models/stock/order.py +1 -1
  237. edc_pharmacy/models/stock/receive.py +3 -3
  238. edc_pharmacy/models/stock/receive_item.py +4 -4
  239. edc_pharmacy/models/stock/repack_request.py +2 -2
  240. edc_pharmacy/models/stock/stock.py +12 -18
  241. edc_pharmacy/models/stock/stock_adjustment.py +4 -4
  242. edc_pharmacy/models/stock/stock_request.py +2 -2
  243. edc_pharmacy/models/stock/stock_request_item.py +2 -2
  244. edc_pharmacy/models/stock/stock_transfer.py +3 -3
  245. edc_pharmacy/models/stock/stock_transfer_item.py +2 -2
  246. edc_pharmacy/models/stock/storage_bin.py +3 -4
  247. edc_pharmacy/models/stock/storage_bin_item.py +2 -2
  248. edc_pharmacy/models/stock/supplier.py +3 -4
  249. edc_pharmacy/models/storage/box.py +2 -2
  250. edc_pharmacy/models/storage/items/container_model_mixin.py +3 -4
  251. edc_pharmacy/models/storage/items/pill_bottle_model_mixin.py +2 -2
  252. edc_pharmacy/models/storage/items/subject_pill_bottle.py +1 -1
  253. edc_pharmacy/models/storage/room.py +2 -2
  254. edc_pharmacy/models/storage/shelf.py +2 -2
  255. edc_pharmacy/models/storage/utils.py +1 -1
  256. edc_pharmacy/utils/allocate_stock.py +2 -3
  257. edc_pharmacy/utils/confirm_stock.py +2 -3
  258. edc_pharmacy/utils/confirm_stock_at_site.py +3 -4
  259. edc_pharmacy/utils/dispense.py +3 -4
  260. edc_pharmacy/utils/process_repack_request.py +4 -5
  261. edc_pharmacy/utils/stock_request/bulk_create_stock_request_items.py +2 -3
  262. edc_pharmacy/utils/transfer_stock.py +2 -3
  263. edc_pharmacy/views/add_to_storage_bin_view.py +2 -2
  264. edc_pharmacy/views/allocate_to_subject_view.py +2 -2
  265. edc_pharmacy/views/dispense_view.py +2 -2
  266. edc_pharmacy/views/move_to_storage_bin_view.py +2 -3
  267. edc_pharmacy/views/print_labels_view.py +2 -2
  268. edc_protocol/research_protocol_config.py +2 -3
  269. edc_protocol_incident/migrations/0001_initial.py +7 -7
  270. edc_protocol_incident/migrations/0001_squashed_0015_auto_20220927_0401.py +13 -13
  271. edc_protocol_incident/migrations/0005_protocolincident_historicalprotocolincident_and_more.py +7 -7
  272. edc_protocol_incident/migrations/0024_alter_actionsrequired_extra_value_and_more.py +625 -0
  273. edc_protocol_incident/migrations/0025_alter_historicalprotocoldeviationviolation_report_datetime_and_more.py +42 -0
  274. edc_protocol_incident/model_mixins/protocol_deviation_violation_model_mixin.py +18 -11
  275. edc_protocol_incident/model_mixins/protocol_incident_model_mixin.py +26 -11
  276. edc_pylabels/actions.py +3 -5
  277. edc_pylabels/migrations/0002_alter_label_options_label_created_and_more.py +3 -7
  278. edc_pylabels/migrations/0005_labelconfiguration_delete_label_and_more.py +3 -3
  279. edc_pylabels/migrations/0013_alter_labelconfiguration_device_created_and_more.py +49 -0
  280. edc_qareports/migrations/0001_initial.py +4 -5
  281. edc_qareports/migrations/0005_edcpermissions.py +3 -3
  282. edc_qareports/migrations/0006_qareportlog.py +2 -3
  283. edc_qareports/migrations/0019_alter_edcpermissions_device_created_and_more.py +102 -0
  284. edc_qareports/migrations/0020_alter_note_report_datetime_and_more.py +24 -0
  285. edc_qareports/model_mixins/note_model_mixin.py +7 -4
  286. edc_qareports/model_mixins/on_study_missing_values_model_mixin.py +4 -4
  287. edc_qareports/model_mixins/qa_report_model_mixin.py +2 -3
  288. edc_qareports/models/note.py +4 -4
  289. edc_qareports/models/qa_reports_log.py +2 -3
  290. edc_randomization/decorators.py +1 -1
  291. edc_randomization/migrations/0001_initial.py +3 -2
  292. edc_randomization/migrations/0002_historicalrandomizationlist.py +3 -2
  293. edc_randomization/migrations/0009_edcpermissions.py +3 -2
  294. edc_randomization/migrations/0014_alter_edcpermissions_device_created_and_more.py +141 -0
  295. edc_randomization/model_mixins.py +9 -9
  296. edc_randomization/utils.py +2 -2
  297. edc_refusal/migrations/0001_initial.py +4 -4
  298. edc_refusal/migrations/0002_historicalsubjectrefusal.py +4 -4
  299. edc_refusal/migrations/0012_alter_historicalsubjectrefusal_comment_and_more.py +122 -0
  300. edc_refusal/migrations/0013_alter_historicalsubjectrefusal_report_datetime_and_more.py +28 -0
  301. edc_refusal/model_mixins.py +3 -3
  302. edc_registration/migrations/0002_auto_20161127_2226.py +3 -4
  303. edc_registration/migrations/0005_auto_20170111_1809.py +4 -2
  304. edc_registration/migrations/0016_historicalregisteredsubject.py +3 -2
  305. edc_registration/migrations/0017_auto_20190305_0123.py +5 -12
  306. edc_registration/migrations/0033_alter_historicalregisteredsubject_additional_key_and_more.py +302 -0
  307. edc_registration/model_mixins/updates_or_creates_registered_subject_model_mixin.py +2 -3
  308. edc_registration/models/registered_subject.py +27 -26
  309. edc_reportable/age_evaluator.py +4 -2
  310. edc_reportable/formula.py +5 -5
  311. edc_reportable/migrations/0001_initial.py +7 -7
  312. edc_reportable/migrations/0003_referencerangecollection_grade1_and_more.py +3 -3
  313. edc_reportable/migrations/0004_alter_referencerangecollection_grade3_and_more.py +5 -5
  314. edc_reportable/migrations/0006_alter_gradingdata_revision_and_more.py +5 -6
  315. edc_reportable/migrations/0007_alter_gradingdata_age_phrase_and_more.py +509 -0
  316. edc_reportable/models/normal_data.py +4 -5
  317. edc_reportable/models/reference_model_mixins.py +10 -11
  318. edc_reportable/models/reference_range_collection.py +12 -13
  319. edc_reportable/post_migrate_signals.py +1 -1
  320. edc_reportable/utils/convert_units.py +11 -45
  321. edc_reportable/utils/get_normal_data_or_raise.py +2 -2
  322. edc_reportable/utils/load_data.py +4 -4
  323. edc_reportable/utils/update_grading_data.py +5 -5
  324. edc_review_dashboard/migrations/0001_initial.py +3 -2
  325. edc_review_dashboard/migrations/0006_alter_edcpermissions_device_created_and_more.py +49 -0
  326. edc_screening/age_evaluator.py +3 -3
  327. edc_screening/migrations/0001_initial.py +3 -2
  328. edc_screening/migrations/0005_alter_edcpermissions_device_created_and_more.py +49 -0
  329. edc_screening/model_mixins/eligibility_model_mixin.py +3 -4
  330. edc_screening/model_mixins/screening_fields_model_mixin.py +6 -8
  331. edc_search/model_mixins.py +2 -3
  332. edc_search/search_slug.py +9 -8
  333. edc_search/updater.py +2 -2
  334. edc_sites/migrations/0007_edcpermissions.py +3 -2
  335. edc_sites/migrations/0010_alter_edcpermissions_device_created_and_more.py +69 -0
  336. edc_sites/model_mixins/site_model_mixin.py +2 -2
  337. edc_sites/site.py +5 -5
  338. edc_sites/system_checks.py +1 -1
  339. edc_subject_dashboard/migrations/0001_initial.py +3 -2
  340. edc_subject_dashboard/migrations/0005_alter_edcpermissions_device_created_and_more.py +49 -0
  341. edc_subject_dashboard/requisition_report.py +6 -4
  342. edc_subject_dashboard/requisition_verifier.py +6 -6
  343. edc_subject_dashboard/templatetags/edc_subject_dashboard_extras.py +2 -2
  344. edc_subject_dashboard/view_mixins/subject_visit_view_mixin.py +7 -8
  345. edc_subject_dashboard/view_utils/subject_consent_listboard_button.py +3 -2
  346. edc_subject_dashboard/view_utils/timepoint_status_button.py +2 -2
  347. edc_timepoint/model_mixins.py +22 -20
  348. edc_transfer/model_mixins.py +4 -4
  349. edc_transfer/modeladmin_mixins.py +1 -1
  350. edc_unblinding/migrations/0001_initial.py +13 -13
  351. edc_unblinding/migrations/0014_alter_historicalunblindingrequest_action_identifier_and_more.py +291 -0
  352. edc_unblinding/migrations/0015_alter_historicalunblindingrequest_report_datetime_and_more.py +45 -0
  353. edc_unblinding/models/unblinding_request.py +2 -2
  354. edc_unblinding/models/unblinding_review.py +3 -3
  355. edc_utils/age.py +10 -16
  356. edc_visit_schedule/migrations/0001_initial.py +3 -3
  357. edc_visit_schedule/migrations/0002_auto_20190305_0123.py +3 -6
  358. edc_visit_schedule/migrations/0003_historicalvisitschedule_visitschedule.py +5 -4
  359. edc_visit_schedule/migrations/0015_historicalonschedule_offschedule_onschedule.py +10 -10
  360. edc_visit_schedule/migrations/0019_alter_historicalonschedule_device_created_and_more.py +229 -0
  361. edc_visit_schedule/migrations/0020_alter_historicalonschedule_onschedule_datetime_and_more.py +65 -0
  362. edc_visit_schedule/model_mixins/off_schedule_model_mixin.py +5 -4
  363. edc_visit_schedule/model_mixins/on_schedule_model_mixin.py +5 -4
  364. edc_visit_schedule/model_mixins/visit_schedule/visit_code_fields_model_mixin.py +1 -1
  365. edc_visit_schedule/models/subject_schedule_history.py +6 -6
  366. edc_visit_schedule/schedule/visit_collection.py +1 -1
  367. edc_visit_schedule/subject_schedule.py +5 -4
  368. edc_visit_schedule/view_mixins.py +2 -3
  369. edc_visit_schedule/visit/visit.py +3 -2
  370. edc_visit_tracking/migrations/0004_subjectvisit_subjectvisitmissedreasons_extra_value_and_more.py +13 -13
  371. edc_visit_tracking/migrations/0009_alter_historicalsubjectvisit_comments_and_more.py +450 -0
  372. edc_visit_tracking/migrations/0010_alter_historicalsubjectvisit_report_datetime_and_more.py +68 -0
  373. edc_visit_tracking/model_mixins/base/visit_methods_model_mixin.py +3 -3
  374. edc_visit_tracking/model_mixins/crfs/visit_tracking_crf_model_mixin.py +2 -2
  375. edc_visit_tracking/model_mixins/requisitions/visit_tracking_requisition_model_mixin.py +2 -2
  376. edc_visit_tracking/model_mixins/subject_visit_missed_model_mixin.py +2 -2
  377. edc_visit_tracking/model_mixins/visit_model_mixin/caretaker_fields_mixin.py +2 -3
  378. edc_visit_tracking/model_mixins/visit_model_mixin/previous_visit_model_mixin.py +1 -1
  379. edc_visit_tracking/model_mixins/visit_model_mixin/visit_model_fields_mixin.py +8 -11
  380. edc_visit_tracking/model_mixins/visit_model_mixin/visit_model_mixin.py +1 -1
  381. edc_visit_tracking/models/signals.py +1 -1
  382. edc_visit_tracking/models/subject_visit.py +1 -1
  383. edc_vitals/calculators/bmi.py +7 -5
  384. edc_vitals/form_validators/blood_pressure_form_validator_mixin.py +3 -1
  385. edc_vitals/utils.py +1 -1
  386. {clinicedc-2.0.5.dist-info → clinicedc-2.0.7.dist-info}/WHEEL +0 -0
  387. {clinicedc-2.0.5.dist-info → clinicedc-2.0.7.dist-info}/licenses/LICENSE +0 -0
@@ -6,6 +6,7 @@ from django.db import models
6
6
  from django.db.models.deletion import PROTECT
7
7
  from django.template.loader import render_to_string
8
8
  from django.urls.base import reverse
9
+ from django.utils import timezone
9
10
 
10
11
  from edc_action_item.models.action_model_mixin import ActionModelMixin
11
12
  from edc_constants.constants import CLOSED, RESOLVED
@@ -13,7 +14,6 @@ from edc_dashboard.url_names import InvalidDashboardUrlName, url_names
13
14
  from edc_model.models import BaseUuidModel
14
15
  from edc_sites.managers import CurrentSiteManager
15
16
  from edc_sites.model_mixins import SiteModelMixin
16
- from edc_utils.date import get_utcnow
17
17
  from edc_visit_tracking.utils import get_related_visit_model_cls
18
18
 
19
19
  from ..action_items import DATA_QUERY_ACTION
@@ -28,7 +28,7 @@ from .requisition_panel import RequisitionPanel
28
28
  class DataQuery(DataQueryModelMixin, ActionModelMixin, SiteModelMixin, BaseUuidModel):
29
29
  action_name = DATA_QUERY_ACTION
30
30
 
31
- subject_identifier = models.CharField(max_length=50, null=True, editable=False)
31
+ subject_identifier = models.CharField(max_length=50, default="", editable=False)
32
32
 
33
33
  registered_subject = models.ForeignKey(
34
34
  QuerySubject,
@@ -83,7 +83,7 @@ class DataQuery(DataQueryModelMixin, ActionModelMixin, SiteModelMixin, BaseUuidM
83
83
  )
84
84
 
85
85
  rule_reference = models.CharField(
86
- verbose_name="Query rule reference", max_length=150, null=True, default=uuid4
86
+ verbose_name="Query rule reference", max_length=150, default=uuid4
87
87
  )
88
88
 
89
89
  objects = models.Manager()
@@ -107,7 +107,7 @@ class DataQuery(DataQueryModelMixin, ActionModelMixin, SiteModelMixin, BaseUuidM
107
107
  and self.site_response_text.strip() == AUTO_RESOLVED
108
108
  ):
109
109
  self.status = CLOSED
110
- self.resolved_datetime = get_utcnow()
110
+ self.resolved_datetime = timezone.now()
111
111
  self.dm_user = self.sender
112
112
 
113
113
  def form_and_numbers_to_string(self):
@@ -192,7 +192,7 @@ class DataQuery(DataQueryModelMixin, ActionModelMixin, SiteModelMixin, BaseUuidM
192
192
  class Meta(BaseUuidModel.Meta):
193
193
  verbose_name = "Data Query"
194
194
  verbose_name_plural = "Data Queries"
195
- unique_together = ["registered_subject", "rule_reference", "visit_schedule"]
195
+ unique_together = ("registered_subject", "rule_reference", "visit_schedule")
196
196
  indexes = (
197
197
  models.Index(
198
198
  fields=[
@@ -1,8 +1,8 @@
1
1
  from django.db import models
2
2
  from django.db.models import PROTECT
3
+ from django.utils import timezone
3
4
 
4
5
  from edc_constants.constants import CLOSED, NEW, NORMAL, OPEN, RESOLVED
5
- from edc_utils import get_utcnow
6
6
 
7
7
  from ..choices import DM_STATUS, QUERY_PRIORITY, RESPONSE_STATUS
8
8
  from ..constants import CLOSED_WITH_ACTION
@@ -10,16 +10,16 @@ from .user import DataManagerUser, QueryUser
10
10
 
11
11
 
12
12
  class DataQueryModelMixin(models.Model):
13
- report_datetime = models.DateTimeField(verbose_name="Query date", default=get_utcnow)
13
+ report_datetime = models.DateTimeField(verbose_name="Query date", default=timezone.now)
14
14
 
15
- title = models.CharField(max_length=150, null=True, blank=False)
15
+ title = models.CharField(max_length=150, default="", blank=False)
16
16
 
17
17
  sender = models.ForeignKey(
18
18
  DataManagerUser,
19
19
  related_name="+",
20
20
  on_delete=PROTECT,
21
21
  verbose_name="Query raised by",
22
- help_text="Select a name from the list",
22
+ help_text="Please select a name from the list",
23
23
  )
24
24
 
25
25
  recipients = models.ManyToManyField(
@@ -43,7 +43,7 @@ class DataQueryModelMixin(models.Model):
43
43
  verbose_name="Site resolved on", null=True, blank=True
44
44
  )
45
45
 
46
- site_response_text = models.TextField(null=True, blank=True)
46
+ site_response_text = models.TextField(default="", blank=True)
47
47
 
48
48
  site_response_status = models.CharField(
49
49
  verbose_name="Site status", max_length=25, choices=RESPONSE_STATUS, default=NEW
@@ -60,7 +60,7 @@ class DataQueryModelMixin(models.Model):
60
60
  on_delete=PROTECT,
61
61
  null=True,
62
62
  blank=True,
63
- help_text="select a name from the list",
63
+ help_text="Please select a name from the list",
64
64
  )
65
65
 
66
66
  resolved_datetime = models.DateTimeField(
@@ -70,7 +70,7 @@ class DataQueryModelMixin(models.Model):
70
70
  auto_resolved = models.BooleanField(default=False)
71
71
 
72
72
  plan_of_action = models.TextField(
73
- null=True, blank=True, help_text="If required, provide a plan of action"
73
+ default="", blank=True, help_text="If required, provide a plan of action"
74
74
  )
75
75
 
76
76
  locked = models.BooleanField(
@@ -80,7 +80,7 @@ class DataQueryModelMixin(models.Model):
80
80
 
81
81
  locked_reason = models.TextField(
82
82
  verbose_name="Reason query locked",
83
- null=True,
83
+ default="",
84
84
  blank=True,
85
85
  help_text="If required, the reason the query cannot be resolved.",
86
86
  )
@@ -5,9 +5,10 @@ from datetime import datetime
5
5
  from decimal import Decimal
6
6
  from typing import TYPE_CHECKING
7
7
 
8
+ from django.utils import timezone
9
+
8
10
  from edc_metadata import KEYED, REQUIRED
9
11
  from edc_metadata.metadata_inspector import MetaDataInspector
10
- from edc_utils import get_utcnow
11
12
 
12
13
  from ..models import QueryVisitSchedule
13
14
  from .query_rule_wrapper import QueryRuleWrapper
@@ -24,7 +25,7 @@ class RuleRunner:
24
25
  verbose: bool | None = None,
25
26
  ):
26
27
  self.query_rule_obj = query_rule_obj # query rule model instance
27
- self.now = now or get_utcnow()
28
+ self.now = now or timezone.now()
28
29
  self.verbose = verbose
29
30
 
30
31
  @property
@@ -39,7 +40,7 @@ class RuleRunner:
39
40
  created_counter = 0
40
41
  resolved_counter = 0
41
42
  query_rules_data = query_rules_data or self.query_rules_data
42
- for key, wrapped_query_rules in query_rules_data.items():
43
+ for _, wrapped_query_rules in query_rules_data.items():
43
44
  for wrapped_query_rule in wrapped_query_rules:
44
45
  if self.verbose:
45
46
  sys.stdout.write(f" - running {wrapped_query_rule}\n")
@@ -17,7 +17,7 @@ class DocumentStatusModelMixin(models.Model):
17
17
 
18
18
  document_status_comments = models.TextField(
19
19
  verbose_name="Any comments related to status of this document",
20
- null=True,
20
+ default="",
21
21
  blank=True,
22
22
  help_text="for example, why some data is still pending",
23
23
  )
edc_egfr/egfr.py CHANGED
@@ -8,12 +8,13 @@ from zoneinfo import ZoneInfo
8
8
  from dateutil.relativedelta import relativedelta
9
9
  from django.core.exceptions import ObjectDoesNotExist
10
10
  from django.db import transaction
11
+ from django.utils import timezone
11
12
 
12
13
  from edc_constants.constants import NEW
13
14
  from edc_reportable.models import ReferenceRangeCollection
14
15
  from edc_reportable.units import EGFR_UNITS, PERCENT
15
16
  from edc_reportable.utils import get_grade_for_value
16
- from edc_utils import age, get_utcnow
17
+ from edc_utils.age import age
17
18
 
18
19
  from .calculators import EgfrCkdEpi, EgfrCockcroftGault, egfr_percent_change
19
20
  from .get_drop_notification_model import get_egfr_drop_notification_model_cls
@@ -27,7 +28,7 @@ class EgfrError(Exception):
27
28
 
28
29
 
29
30
  class Egfr:
30
- calculators: dict = {"ckd-epi": EgfrCkdEpi, "cockcroft-gault": EgfrCockcroftGault}
31
+ calculators: dict = {"ckd-epi": EgfrCkdEpi, "cockcroft-gault": EgfrCockcroftGault} # noqa: RUF012
31
32
 
32
33
  def __init__(
33
34
  self,
@@ -78,7 +79,7 @@ class Egfr:
78
79
  name=reference_range_collection_name
79
80
  )
80
81
  except ObjectDoesNotExist as e:
81
- raise ObjectDoesNotExist(f"{e} Got {reference_range_collection_name}")
82
+ raise ObjectDoesNotExist(f"{e} Got {reference_range_collection_name}") from e
82
83
  else:
83
84
  self.reference_range_collection = reference_range_collection
84
85
  self.report_datetime = report_datetime
@@ -134,9 +135,12 @@ class Egfr:
134
135
  """A hook to respond if egfr percent drop from baseline
135
136
  is at or beyond the percent drop threshold.
136
137
  """
137
- if self.egfr_drop_value and self.percent_drop_threshold is not None:
138
- if self.egfr_drop_value >= self.percent_drop_threshold:
139
- self.create_or_update_egfr_drop_notification()
138
+ if (
139
+ self.egfr_drop_value
140
+ and self.percent_drop_threshold is not None
141
+ and self.egfr_drop_value >= self.percent_drop_threshold
142
+ ):
143
+ self.create_or_update_egfr_drop_notification()
140
144
 
141
145
  @property
142
146
  def egfr_value(self) -> float:
@@ -226,7 +230,7 @@ class Egfr:
226
230
  obj.weight = self.get_weight_in_kgs()
227
231
  obj.egfr_percent_change = self.egfr_drop_value
228
232
  obj.creatinine_date = self.assay_date
229
- obj.modified = get_utcnow()
233
+ obj.modified = timezone.now()
230
234
  obj.save()
231
235
  obj.refresh_from_db()
232
236
  return obj
@@ -1,5 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
+ import contextlib
3
4
  from decimal import Decimal
4
5
 
5
6
  from django.core.exceptions import ObjectDoesNotExist
@@ -104,13 +105,8 @@ class EgfrModelMixin(
104
105
  appointment__timepoint=self.baseline_timepoint,
105
106
  visit_code_sequence=0,
106
107
  )
107
- with transaction.atomic():
108
- try:
109
- egfr_value = self.__class__.objects.get(
110
- subject_visit=baseline_visit
111
- ).egfr_value
112
- except ObjectDoesNotExist:
113
- pass
108
+ with transaction.atomic(), contextlib.suppress(ObjectDoesNotExist):
109
+ egfr_value = self.__class__.objects.get(subject_visit=baseline_visit).egfr_value
114
110
  return egfr_value
115
111
 
116
112
  def get_weight_in_kgs_for_egfr(self) -> Decimal | None:
@@ -1,4 +1,5 @@
1
1
  from django.contrib import admin
2
+ from django.utils import timezone
2
3
  from django_audit_fields import ModelAdminAuditFieldsMixin
3
4
  from django_revision.modeladmin_mixin import ModelAdminRevisionMixin
4
5
 
@@ -11,7 +12,6 @@ from edc_model_admin.mixins import (
11
12
  TemplatesModelAdminMixin,
12
13
  )
13
14
  from edc_sites.admin import SiteModelAdminMixin
14
- from edc_utils import get_utcnow
15
15
 
16
16
  from ..admin_site import edc_export_admin
17
17
  from ..forms import DataRequestForm
@@ -66,7 +66,7 @@ class DataRequestAdmin(
66
66
  def export_selected(self, request, queryset):
67
67
  for obj in queryset:
68
68
  DataRequestHistory.objects.create(data_request=obj)
69
- rows_updated = queryset.update(exported_datetime=get_utcnow())
69
+ rows_updated = queryset.update(exported_datetime=timezone.now())
70
70
  if rows_updated == 1:
71
71
  message_bit = "1 data request was"
72
72
  else:
@@ -3,9 +3,10 @@ from __future__ import annotations
3
3
  from tempfile import mkdtemp
4
4
  from typing import TYPE_CHECKING
5
5
 
6
+ from django.utils import timezone
7
+
6
8
  from edc_pdutils.df_exporters import CsvModelExporter
7
9
  from edc_sites.site import sites
8
- from edc_utils import get_utcnow
9
10
 
10
11
  from .files_archiver import FilesArchiver
11
12
  from .files_emailer import FilesEmailer, FilesEmailerError
@@ -85,8 +86,8 @@ class ArchiveExporter:
85
86
  summary="\n".join(summary),
86
87
  )
87
88
  except FilesEmailerError as e:
88
- raise ArchiveExporterEmailError(e)
89
+ raise ArchiveExporterEmailError(e) from e
89
90
  else:
90
91
  self.emailed_to = user.email
91
- self.emailed_datetime = get_utcnow()
92
+ self.emailed_datetime = timezone.now()
92
93
  self.exported_datetime = self.exported_datetime or self.emailed_datetime
@@ -5,8 +5,9 @@ import shutil
5
5
  import sys
6
6
  from typing import TYPE_CHECKING
7
7
 
8
+ from django.utils import timezone
9
+
8
10
  from edc_export.utils import get_base_dir
9
- from edc_utils import get_utcnow
10
11
 
11
12
  if TYPE_CHECKING:
12
13
  from datetime import datetime
@@ -25,7 +26,7 @@ class FilesArchiver:
25
26
  date_format: str = None,
26
27
  verbose: bool | None = None,
27
28
  ):
28
- self.exported_datetime: datetime = exported_datetime or get_utcnow()
29
+ self.exported_datetime: datetime = exported_datetime or timezone.now()
29
30
  formatted_date: str = self.exported_datetime.strftime(date_format)
30
31
  base_dir: str = get_base_dir()
31
32
  archive_name: str = os.path.join(path, f"{user.username}_{formatted_date}")
@@ -13,7 +13,7 @@ from django.db import migrations, models
13
13
 
14
14
  import edc_model_fields.fields.hostname_modification_field
15
15
  import edc_model_fields.fields.userfield
16
- import edc_utils
16
+ import django.utils.timezone
17
17
 
18
18
 
19
19
  class Migration(migrations.Migration):
@@ -27,11 +27,11 @@ class Migration(migrations.Migration):
27
27
  fields=[
28
28
  (
29
29
  "created",
30
- models.DateTimeField(blank=True, default=edc_utils.date.get_utcnow),
30
+ models.DateTimeField(blank=True, default=django.utils.timezone.now),
31
31
  ),
32
32
  (
33
33
  "modified",
34
- models.DateTimeField(blank=True, default=edc_utils.date.get_utcnow),
34
+ models.DateTimeField(blank=True, default=django.utils.timezone.now),
35
35
  ),
36
36
  (
37
37
  "user_created",
@@ -112,11 +112,11 @@ class Migration(migrations.Migration):
112
112
  fields=[
113
113
  (
114
114
  "created",
115
- models.DateTimeField(blank=True, default=edc_utils.date.get_utcnow),
115
+ models.DateTimeField(blank=True, default=django.utils.timezone.now),
116
116
  ),
117
117
  (
118
118
  "modified",
119
- models.DateTimeField(blank=True, default=edc_utils.date.get_utcnow),
119
+ models.DateTimeField(blank=True, default=django.utils.timezone.now),
120
120
  ),
121
121
  (
122
122
  "user_created",
@@ -182,7 +182,7 @@ class Migration(migrations.Migration):
182
182
  ("summary", models.TextField(null=True)),
183
183
  (
184
184
  "exported_datetime",
185
- models.DateTimeField(default=edc_utils.date.get_utcnow),
185
+ models.DateTimeField(default=django.utils.timezone.now),
186
186
  ),
187
187
  (
188
188
  "data_request",
@@ -199,11 +199,11 @@ class Migration(migrations.Migration):
199
199
  fields=[
200
200
  (
201
201
  "created",
202
- models.DateTimeField(blank=True, default=edc_utils.date.get_utcnow),
202
+ models.DateTimeField(blank=True, default=django.utils.timezone.now),
203
203
  ),
204
204
  (
205
205
  "modified",
206
- models.DateTimeField(blank=True, default=edc_utils.date.get_utcnow),
206
+ models.DateTimeField(blank=True, default=django.utils.timezone.now),
207
207
  ),
208
208
  (
209
209
  "user_created",
@@ -284,11 +284,11 @@ class Migration(migrations.Migration):
284
284
  fields=[
285
285
  (
286
286
  "created",
287
- models.DateTimeField(blank=True, default=edc_utils.date.get_utcnow),
287
+ models.DateTimeField(blank=True, default=django.utils.timezone.now),
288
288
  ),
289
289
  (
290
290
  "modified",
291
- models.DateTimeField(blank=True, default=edc_utils.date.get_utcnow),
291
+ models.DateTimeField(blank=True, default=django.utils.timezone.now),
292
292
  ),
293
293
  (
294
294
  "user_created",
@@ -430,11 +430,11 @@ class Migration(migrations.Migration):
430
430
  fields=[
431
431
  (
432
432
  "created",
433
- models.DateTimeField(blank=True, default=edc_utils.date.get_utcnow),
433
+ models.DateTimeField(blank=True, default=django.utils.timezone.now),
434
434
  ),
435
435
  (
436
436
  "modified",
437
- models.DateTimeField(blank=True, default=edc_utils.date.get_utcnow),
437
+ models.DateTimeField(blank=True, default=django.utils.timezone.now),
438
438
  ),
439
439
  (
440
440
  "user_created",
@@ -543,11 +543,11 @@ class Migration(migrations.Migration):
543
543
  fields=[
544
544
  (
545
545
  "created",
546
- models.DateTimeField(blank=True, default=edc_utils.date.get_utcnow),
546
+ models.DateTimeField(blank=True, default=django.utils.timezone.now),
547
547
  ),
548
548
  (
549
549
  "modified",
550
- models.DateTimeField(blank=True, default=edc_utils.date.get_utcnow),
550
+ models.DateTimeField(blank=True, default=django.utils.timezone.now),
551
551
  ),
552
552
  (
553
553
  "user_created",
@@ -656,11 +656,11 @@ class Migration(migrations.Migration):
656
656
  fields=[
657
657
  (
658
658
  "created",
659
- models.DateTimeField(blank=True, default=edc_utils.date.get_utcnow),
659
+ models.DateTimeField(blank=True, default=django.utils.timezone.now),
660
660
  ),
661
661
  (
662
662
  "modified",
663
- models.DateTimeField(blank=True, default=edc_utils.date.get_utcnow),
663
+ models.DateTimeField(blank=True, default=django.utils.timezone.now),
664
664
  ),
665
665
  (
666
666
  "user_created",
@@ -830,11 +830,11 @@ class Migration(migrations.Migration):
830
830
  fields=[
831
831
  (
832
832
  "created",
833
- models.DateTimeField(blank=True, default=edc_utils.date.get_utcnow),
833
+ models.DateTimeField(blank=True, default=django.utils.timezone.now),
834
834
  ),
835
835
  (
836
836
  "modified",
837
- models.DateTimeField(blank=True, default=edc_utils.date.get_utcnow),
837
+ models.DateTimeField(blank=True, default=django.utils.timezone.now),
838
838
  ),
839
839
  (
840
840
  "user_created",
@@ -996,11 +996,11 @@ class Migration(migrations.Migration):
996
996
  fields=[
997
997
  (
998
998
  "created",
999
- models.DateTimeField(blank=True, default=edc_utils.date.get_utcnow),
999
+ models.DateTimeField(blank=True, default=django.utils.timezone.now),
1000
1000
  ),
1001
1001
  (
1002
1002
  "modified",
1003
- models.DateTimeField(blank=True, default=edc_utils.date.get_utcnow),
1003
+ models.DateTimeField(blank=True, default=django.utils.timezone.now),
1004
1004
  ),
1005
1005
  (
1006
1006
  "user_created",
@@ -1132,11 +1132,11 @@ class Migration(migrations.Migration):
1132
1132
  fields=[
1133
1133
  (
1134
1134
  "created",
1135
- models.DateTimeField(blank=True, default=edc_utils.date.get_utcnow),
1135
+ models.DateTimeField(blank=True, default=django.utils.timezone.now),
1136
1136
  ),
1137
1137
  (
1138
1138
  "modified",
1139
- models.DateTimeField(blank=True, default=edc_utils.date.get_utcnow),
1139
+ models.DateTimeField(blank=True, default=django.utils.timezone.now),
1140
1140
  ),
1141
1141
  (
1142
1142
  "user_created",
@@ -1270,11 +1270,11 @@ class Migration(migrations.Migration):
1270
1270
  fields=[
1271
1271
  (
1272
1272
  "created",
1273
- models.DateTimeField(blank=True, default=edc_utils.date.get_utcnow),
1273
+ models.DateTimeField(blank=True, default=django.utils.timezone.now),
1274
1274
  ),
1275
1275
  (
1276
1276
  "modified",
1277
- models.DateTimeField(blank=True, default=edc_utils.date.get_utcnow),
1277
+ models.DateTimeField(blank=True, default=django.utils.timezone.now),
1278
1278
  ),
1279
1279
  (
1280
1280
  "user_created",
@@ -1382,11 +1382,11 @@ class Migration(migrations.Migration):
1382
1382
  fields=[
1383
1383
  (
1384
1384
  "created",
1385
- models.DateTimeField(blank=True, default=edc_utils.date.get_utcnow),
1385
+ models.DateTimeField(blank=True, default=django.utils.timezone.now),
1386
1386
  ),
1387
1387
  (
1388
1388
  "modified",
1389
- models.DateTimeField(blank=True, default=edc_utils.date.get_utcnow),
1389
+ models.DateTimeField(blank=True, default=django.utils.timezone.now),
1390
1390
  ),
1391
1391
  (
1392
1392
  "user_created",