clinicedc 2.0.0__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 (3146) hide show
  1. clinicedc/__init__.py +6 -0
  2. clinicedc-2.0.0.dist-info/METADATA +377 -0
  3. clinicedc-2.0.0.dist-info/RECORD +3146 -0
  4. clinicedc-2.0.0.dist-info/WHEEL +4 -0
  5. clinicedc-2.0.0.dist-info/licenses/LICENSE +674 -0
  6. edc_action_item/__init__.py +8 -0
  7. edc_action_item/action.py +517 -0
  8. edc_action_item/action_item_notification.py +223 -0
  9. edc_action_item/action_with_notification.py +49 -0
  10. edc_action_item/admin/__init__.py +2 -0
  11. edc_action_item/admin/action_item_admin.py +157 -0
  12. edc_action_item/admin/action_type_admin.py +78 -0
  13. edc_action_item/admin_site.py +7 -0
  14. edc_action_item/apps.py +11 -0
  15. edc_action_item/auth_objects.py +26 -0
  16. edc_action_item/auths.py +55 -0
  17. edc_action_item/choices.py +22 -0
  18. edc_action_item/constants.py +9 -0
  19. edc_action_item/create_action_item.py +61 -0
  20. edc_action_item/create_or_update_action_type.py +44 -0
  21. edc_action_item/data_fixers.py +294 -0
  22. edc_action_item/decorators.py +22 -0
  23. edc_action_item/delete_action_item.py +45 -0
  24. edc_action_item/exceptions.py +29 -0
  25. edc_action_item/fieldsets.py +8 -0
  26. edc_action_item/forms/__init__.py +4 -0
  27. edc_action_item/forms/action_item_crf_form_mixin.py +13 -0
  28. edc_action_item/forms/action_item_form.py +42 -0
  29. edc_action_item/forms/action_item_form_mixin.py +25 -0
  30. edc_action_item/forms/action_type_form.py +9 -0
  31. edc_action_item/get_action_type.py +21 -0
  32. edc_action_item/identifiers.py +8 -0
  33. edc_action_item/management/commands/inspect_action_items.py +86 -0
  34. edc_action_item/managers.py +17 -0
  35. edc_action_item/migrations/0001_initial.py +688 -0
  36. edc_action_item/migrations/0002_auto_20180109_1117.py +17 -0
  37. edc_action_item/migrations/0003_auto_20180116_1528.py +41 -0
  38. edc_action_item/migrations/0004_auto_20180319_2128.py +27 -0
  39. edc_action_item/migrations/0005_auto_20180409_1005.py +50 -0
  40. edc_action_item/migrations/0006_auto_20180707_1659.py +219 -0
  41. edc_action_item/migrations/0007_auto_20180707_1715.py +14 -0
  42. edc_action_item/migrations/0008_auto_20180809_0303.py +133 -0
  43. edc_action_item/migrations/0009_auto_20180927_0306.py +30 -0
  44. edc_action_item/migrations/0010_auto_20181009_0445.py +99 -0
  45. edc_action_item/migrations/0011_auto_20181009_2236.py +43 -0
  46. edc_action_item/migrations/0012_auto_20181010_2348.py +28 -0
  47. edc_action_item/migrations/0013_auto_20181108_0353.py +26 -0
  48. edc_action_item/migrations/0014_auto_20181121_1738.py +19 -0
  49. edc_action_item/migrations/0015_auto_20190114_0250.py +246 -0
  50. edc_action_item/migrations/0016_auto_20190131_2004.py +37 -0
  51. edc_action_item/migrations/0017_auto_20190305_0123.py +228 -0
  52. edc_action_item/migrations/0018_auto_20190626_1629.py +20 -0
  53. edc_action_item/migrations/0019_auto_20190627_2257.py +17 -0
  54. edc_action_item/migrations/0020_auto_20190628_2113.py +15 -0
  55. edc_action_item/migrations/0021_auto_20190628_2113.py +25 -0
  56. edc_action_item/migrations/0022_auto_20190628_2136.py +33 -0
  57. edc_action_item/migrations/0023_auto_20191007_0520.py +20 -0
  58. edc_action_item/migrations/0024_auto_20191024_1000.py +22 -0
  59. edc_action_item/migrations/0025_auto_20200528_0520.py +20 -0
  60. edc_action_item/migrations/0026_auto_20200729_2240.py +43 -0
  61. edc_action_item/migrations/0027_auto_20210120_0005.py +42 -0
  62. edc_action_item/migrations/0028_auto_20210203_0706.py +85 -0
  63. edc_action_item/migrations/0029_auto_20220704_1841.py +40 -0
  64. edc_action_item/migrations/0030_edcpermissions.py +100 -0
  65. edc_action_item/migrations/0031_auto_20220922_2236.py +26 -0
  66. edc_action_item/migrations/0032_alter_actionitem_options_alter_actiontype_options_and_more.py +62 -0
  67. edc_action_item/migrations/0033_alter_actionitem_managers.py +23 -0
  68. edc_action_item/migrations/0034_alter_actionitem_device_created_and_more.py +224 -0
  69. edc_action_item/migrations/0035_alter_actionitem_options_alter_actiontype_options_and_more.py +257 -0
  70. edc_action_item/migrations/0036_alter_actionitem_priority_alter_actionitem_site_and_more.py +82 -0
  71. edc_action_item/migrations/0037_remove_actionitem_reference_model_and_more.py +31 -0
  72. edc_action_item/migrations/__init__.py +0 -0
  73. edc_action_item/modeladmin_mixins.py +23 -0
  74. edc_action_item/modelform_mixins/__init__.py +1 -0
  75. edc_action_item/modelform_mixins/modelform_mixins.py +59 -0
  76. edc_action_item/models/__init__.py +12 -0
  77. edc_action_item/models/action_item.py +287 -0
  78. edc_action_item/models/action_model_mixin.py +157 -0
  79. edc_action_item/models/action_type.py +93 -0
  80. edc_action_item/models/edc_permissions.py +9 -0
  81. edc_action_item/models/reference.py +42 -0
  82. edc_action_item/models/signals.py +146 -0
  83. edc_action_item/offline_models.py +26 -0
  84. edc_action_item/post_migrate_signals.py +14 -0
  85. edc_action_item/send_email.py +85 -0
  86. edc_action_item/site_action_items.py +185 -0
  87. edc_action_item/stubs.py +68 -0
  88. edc_action_item/system_checks.py +25 -0
  89. edc_action_item/templates/edc_action_item/action_item_admin_additional_instructions.html +3 -0
  90. edc_action_item/templates/edc_action_item/action_item_button.html +1 -0
  91. edc_action_item/templates/edc_action_item/action_item_reason.html +3 -0
  92. edc_action_item/templates/edc_action_item/action_item_with_popover.html +5 -0
  93. edc_action_item/templates/edc_action_item/add_action_item_popover.html +6 -0
  94. edc_action_item/templates/edc_action_item/parent_action_changelist_link.html +2 -0
  95. edc_action_item/templatetags/__init__.py +0 -0
  96. edc_action_item/templatetags/action_item_extras.py +177 -0
  97. edc_action_item/urls.py +11 -0
  98. edc_action_item/utils.py +103 -0
  99. edc_action_item/view_mixins/__init__.py +1 -0
  100. edc_action_item/view_mixins/action_item_view_mixin.py +28 -0
  101. edc_action_item/view_utils/__init__.py +2 -0
  102. edc_action_item/view_utils/action_item_button.py +76 -0
  103. edc_action_item/view_utils/action_item_popover_list_item.py +104 -0
  104. edc_action_item/visit_schedule_mixin.py +24 -0
  105. edc_adherence/__init__.py +0 -0
  106. edc_adherence/apps.py +8 -0
  107. edc_adherence/choices.py +11 -0
  108. edc_adherence/form_validator_mixin.py +41 -0
  109. edc_adherence/list_data.py +14 -0
  110. edc_adherence/migrations/0001_initial.py +82 -0
  111. edc_adherence/migrations/0002_nonadherencereasons_plural_name.py +19 -0
  112. edc_adherence/migrations/0003_nonadherencereasons_extra_value.py +17 -0
  113. edc_adherence/migrations/0004_alter_nonadherencereasons_options_and_more.py +67 -0
  114. edc_adherence/migrations/__init__.py +0 -0
  115. edc_adherence/model_admin_mixin.py +79 -0
  116. edc_adherence/model_form_mixin.py +9 -0
  117. edc_adherence/model_mixins.py +63 -0
  118. edc_adherence/models.py +7 -0
  119. edc_adherence/templates/edc_adherence/missed_medication_fieldset_description.html +7 -0
  120. edc_adherence/templates/edc_adherence/visual_score_fieldset_description.html +8 -0
  121. edc_adverse_event/__init__.py +5 -0
  122. edc_adverse_event/action_items/__init__.py +8 -0
  123. edc_adverse_event/action_items/ae_followup_action.py +106 -0
  124. edc_adverse_event/action_items/ae_initial_action.py +93 -0
  125. edc_adverse_event/action_items/ae_susar_action.py +24 -0
  126. edc_adverse_event/action_items/ae_tmg_action.py +28 -0
  127. edc_adverse_event/action_items/death_report_action.py +73 -0
  128. edc_adverse_event/action_items/death_report_tmg_action.py +48 -0
  129. edc_adverse_event/action_items/death_report_tmg_second_action.py +38 -0
  130. edc_adverse_event/action_items/hospitalization_action.py +17 -0
  131. edc_adverse_event/admin.py +24 -0
  132. edc_adverse_event/admin_site.py +13 -0
  133. edc_adverse_event/apps.py +8 -0
  134. edc_adverse_event/auth_objects.py +85 -0
  135. edc_adverse_event/auths.py +81 -0
  136. edc_adverse_event/baker_recipes.py +10 -0
  137. edc_adverse_event/choices.py +98 -0
  138. edc_adverse_event/constants.py +41 -0
  139. edc_adverse_event/dashboard_templates.py +10 -0
  140. edc_adverse_event/dashboard_urls.py +4 -0
  141. edc_adverse_event/form_validator_mixins/__init__.py +5 -0
  142. edc_adverse_event/form_validator_mixins/death_report_form_validator.py +96 -0
  143. edc_adverse_event/form_validator_mixins/requires_death_report_form_validator_mixin.py +161 -0
  144. edc_adverse_event/form_validators/__init__.py +7 -0
  145. edc_adverse_event/form_validators/ae_followup.py +23 -0
  146. edc_adverse_event/form_validators/ae_initial.py +18 -0
  147. edc_adverse_event/form_validators/ae_susar.py +5 -0
  148. edc_adverse_event/form_validators/ae_tmg.py +18 -0
  149. edc_adverse_event/form_validators/death_report.py +7 -0
  150. edc_adverse_event/form_validators/death_report_tmg.py +78 -0
  151. edc_adverse_event/form_validators/hospitalization.py +32 -0
  152. edc_adverse_event/forms/__init__.py +7 -0
  153. edc_adverse_event/forms/ae_followup_form.py +10 -0
  154. edc_adverse_event/forms/ae_initial_form.py +10 -0
  155. edc_adverse_event/forms/ae_susar_form.py +10 -0
  156. edc_adverse_event/forms/ae_tmg_form.py +10 -0
  157. edc_adverse_event/forms/death_report_form.py +10 -0
  158. edc_adverse_event/forms/death_report_tmg_form.py +10 -0
  159. edc_adverse_event/forms/death_report_tmg_second_form.py +10 -0
  160. edc_adverse_event/get_ae_model.py +9 -0
  161. edc_adverse_event/list_data.py +30 -0
  162. edc_adverse_event/locale/sw/LC_MESSAGES/django.po +21 -0
  163. edc_adverse_event/middleware.py +22 -0
  164. edc_adverse_event/migrations/0001_initial.py +272 -0
  165. edc_adverse_event/migrations/0002_auto_20190802_0059.py +143 -0
  166. edc_adverse_event/migrations/0003_auto_20191026_2231.py +68 -0
  167. edc_adverse_event/migrations/0004_auto_20200513_0023.py +54 -0
  168. edc_adverse_event/migrations/0005_auto_20210120_0005.py +27 -0
  169. edc_adverse_event/migrations/0006_auto_20210425_1628.py +42 -0
  170. edc_adverse_event/migrations/0007_edcpermissions.py +23 -0
  171. edc_adverse_event/migrations/0008_auto_20220825_0451.py +103 -0
  172. edc_adverse_event/migrations/0009_auto_20220907_0157.py +158 -0
  173. edc_adverse_event/migrations/0010_auto_20220913_2139.py +40 -0
  174. edc_adverse_event/migrations/0011_alter_aeactionclassification_options_and_more.py +76 -0
  175. edc_adverse_event/migrations/0012_aeactionclassification_extra_value_and_more.py +32 -0
  176. edc_adverse_event/migrations/0013_alter_aeactionclassification_device_created_and_more.py +189 -0
  177. edc_adverse_event/migrations/0014_alter_aeactionclassification_options_and_more.py +422 -0
  178. edc_adverse_event/migrations/__init__.py +0 -0
  179. edc_adverse_event/model_mixins/__init__.py +28 -0
  180. edc_adverse_event/model_mixins/ae_followup/__init__.py +3 -0
  181. edc_adverse_event/model_mixins/ae_followup/ae_followup_fields_model_mixin.py +52 -0
  182. edc_adverse_event/model_mixins/ae_followup/ae_followup_methods_model_mixin.py +32 -0
  183. edc_adverse_event/model_mixins/ae_followup/ae_followup_model_mixin.py +45 -0
  184. edc_adverse_event/model_mixins/ae_initial/__init__.py +7 -0
  185. edc_adverse_event/model_mixins/ae_initial/ae_initial_ae_model_mixin.py +41 -0
  186. edc_adverse_event/model_mixins/ae_initial/ae_initial_fields_model_mixin.py +59 -0
  187. edc_adverse_event/model_mixins/ae_initial/ae_initial_methods_model_mixin.py +31 -0
  188. edc_adverse_event/model_mixins/ae_initial/ae_initial_model_mixin.py +50 -0
  189. edc_adverse_event/model_mixins/ae_initial/ae_initial_sae_model_mixin.py +28 -0
  190. edc_adverse_event/model_mixins/ae_initial/ae_initial_susar_model_mixin.py +28 -0
  191. edc_adverse_event/model_mixins/ae_initial/ae_initial_tmg_model_mixin.py +16 -0
  192. edc_adverse_event/model_mixins/ae_special_interest/__init__.py +3 -0
  193. edc_adverse_event/model_mixins/ae_special_interest/aesi_fields_model_mixin.py +28 -0
  194. edc_adverse_event/model_mixins/ae_special_interest/aesi_methods_model_mixin.py +16 -0
  195. edc_adverse_event/model_mixins/ae_special_interest/aesi_model_mixin.py +43 -0
  196. edc_adverse_event/model_mixins/ae_susar/__init__.py +3 -0
  197. edc_adverse_event/model_mixins/ae_susar/ae_susar_fields_model_mixin.py +28 -0
  198. edc_adverse_event/model_mixins/ae_susar/ae_susar_methods_model_mixin.py +24 -0
  199. edc_adverse_event/model_mixins/ae_susar/ae_susar_model_mixin.py +44 -0
  200. edc_adverse_event/model_mixins/ae_tmg/__init__.py +3 -0
  201. edc_adverse_event/model_mixins/ae_tmg/ae_tmg_fields_model_mixin.py +104 -0
  202. edc_adverse_event/model_mixins/ae_tmg/ae_tmg_methods_model_mixin.py +25 -0
  203. edc_adverse_event/model_mixins/ae_tmg/ae_tmg_model_mixin.py +46 -0
  204. edc_adverse_event/model_mixins/death_report/__init__.py +11 -0
  205. edc_adverse_event/model_mixins/death_report/death_report_extra_fields_model_mixin.py +60 -0
  206. edc_adverse_event/model_mixins/death_report/death_report_model_mixin.py +115 -0
  207. edc_adverse_event/model_mixins/death_report/death_report_tmg_model_mixin.py +137 -0
  208. edc_adverse_event/model_mixins/death_report/death_report_tmg_second_model_mixin.py +33 -0
  209. edc_adverse_event/model_mixins/death_report/simple_death_report_model_mixin.py +64 -0
  210. edc_adverse_event/model_mixins/hospitaization/__init__.py +1 -0
  211. edc_adverse_event/model_mixins/hospitaization/hospitalization_model_mixin.py +66 -0
  212. edc_adverse_event/modeladmin_mixins/__init__.py +14 -0
  213. edc_adverse_event/modeladmin_mixins/ae_followup_admin_mixin.py +94 -0
  214. edc_adverse_event/modeladmin_mixins/ae_initial_admin_mixin.py +157 -0
  215. edc_adverse_event/modeladmin_mixins/ae_susar_admin_mixin.py +70 -0
  216. edc_adverse_event/modeladmin_mixins/ae_tmg_admin_mixin.py +134 -0
  217. edc_adverse_event/modeladmin_mixins/death_report_admin_mixin.py +191 -0
  218. edc_adverse_event/modeladmin_mixins/death_report_tmg_admin_mixin.py +108 -0
  219. edc_adverse_event/modeladmin_mixins/hospitalization_admin_mixin.py +59 -0
  220. edc_adverse_event/modeladmin_mixins/list_filters.py +34 -0
  221. edc_adverse_event/modeladmin_mixins/modeladmin_mixins.py +141 -0
  222. edc_adverse_event/modeladmin_mixins/utils.py +63 -0
  223. edc_adverse_event/modelform_mixins/__init__.py +9 -0
  224. edc_adverse_event/modelform_mixins/ae_followup_modelform_mixin.py +42 -0
  225. edc_adverse_event/modelform_mixins/ae_initial_modelform_mixin.py +68 -0
  226. edc_adverse_event/modelform_mixins/ae_modelform_mixin.py +15 -0
  227. edc_adverse_event/modelform_mixins/ae_susar_modelform_mixin.py +18 -0
  228. edc_adverse_event/modelform_mixins/ae_tmg_modelform_mixin.py +31 -0
  229. edc_adverse_event/modelform_mixins/death_report_modelform_mixin.py +18 -0
  230. edc_adverse_event/modelform_mixins/death_report_tmg_modelform_mixin.py +22 -0
  231. edc_adverse_event/modelform_mixins/death_report_tmg_second_modelform_mixin.py +18 -0
  232. edc_adverse_event/modelform_mixins/hospitalization_modelform_mixin.py +18 -0
  233. edc_adverse_event/models/__init__.py +12 -0
  234. edc_adverse_event/models/ae_action_classification.py +8 -0
  235. edc_adverse_event/models/ae_classification.py +6 -0
  236. edc_adverse_event/models/cause_of_death.py +6 -0
  237. edc_adverse_event/models/edc_permissions.py +9 -0
  238. edc_adverse_event/models/sae_reason.py +6 -0
  239. edc_adverse_event/models/signals.py +126 -0
  240. edc_adverse_event/navbars.py +28 -0
  241. edc_adverse_event/notifications.py +43 -0
  242. edc_adverse_event/pdf_reports/__init__.py +2 -0
  243. edc_adverse_event/pdf_reports/ae_pdf_report.py +289 -0
  244. edc_adverse_event/pdf_reports/death_pdf_report.py +166 -0
  245. edc_adverse_event/pdf_reports/utils/__init__.py +0 -0
  246. edc_adverse_event/templates/edc_adverse_event/action_item_column.html +7 -0
  247. edc_adverse_event/templates/edc_adverse_event/admin/app_index.html +7 -0
  248. edc_adverse_event/templates/edc_adverse_event/admin/change_form.html +8 -0
  249. edc_adverse_event/templates/edc_adverse_event/admin/change_list.html +6 -0
  250. edc_adverse_event/templates/edc_adverse_event/admin/index.html +6 -0
  251. edc_adverse_event/templates/edc_adverse_event/ae/ae_death_report_listboard.html +50 -0
  252. edc_adverse_event/templates/edc_adverse_event/ae/ae_home.html +28 -0
  253. edc_adverse_event/templates/edc_adverse_event/ae/ae_listboard.html +53 -0
  254. edc_adverse_event/templates/edc_adverse_event/ae/ae_listboard_instructions.html +2 -0
  255. edc_adverse_event/templates/edc_adverse_event/ae/death_report_listboard_instructions.html +3 -0
  256. edc_adverse_event/templates/edc_adverse_event/ae_button.html +1 -0
  257. edc_adverse_event/templates/edc_adverse_event/aefollowup_description.html +42 -0
  258. edc_adverse_event/templates/edc_adverse_event/aeinitial_description.html +32 -0
  259. edc_adverse_event/templates/edc_adverse_event/aesusar_description.html +29 -0
  260. edc_adverse_event/templates/edc_adverse_event/datetime_with_ago.html +2 -0
  261. edc_adverse_event/templates/edc_adverse_event/parent_action_item_column.html +3 -0
  262. edc_adverse_event/templates/edc_adverse_event/tmg/ae_initial_panel.html +13 -0
  263. edc_adverse_event/templates/edc_adverse_event/tmg/ae_tmg_panel.html +15 -0
  264. edc_adverse_event/templates/edc_adverse_event/tmg/death_report_tmg_panel.html +14 -0
  265. edc_adverse_event/templates/edc_adverse_event/tmg/tmg_ae_listboard.html +45 -0
  266. edc_adverse_event/templates/edc_adverse_event/tmg/tmg_ae_listboard_result.html +122 -0
  267. edc_adverse_event/templates/edc_adverse_event/tmg/tmg_button_group.html +8 -0
  268. edc_adverse_event/templates/edc_adverse_event/tmg/tmg_death_listboard.html +77 -0
  269. edc_adverse_event/templates/edc_adverse_event/tmg/tmg_home.html +52 -0
  270. edc_adverse_event/templates/edc_adverse_event/tmg/tmg_summary_listboard.html +61 -0
  271. edc_adverse_event/templates/edc_adverse_event/tmg_button.html +1 -0
  272. edc_adverse_event/templatetags/__init__.py +0 -0
  273. edc_adverse_event/templatetags/edc_adverse_event_extras.py +360 -0
  274. edc_adverse_event/urls.py +45 -0
  275. edc_adverse_event/utils.py +131 -0
  276. edc_adverse_event/view_mixins/__init__.py +2 -0
  277. edc_adverse_event/view_mixins/ae/__init__.py +2 -0
  278. edc_adverse_event/view_mixins/ae/ae_listboard_view_mixin.py +131 -0
  279. edc_adverse_event/view_mixins/ae/death_report_listboard_view_mixin.py +118 -0
  280. edc_adverse_event/view_mixins/tmg/__init__.py +4 -0
  281. edc_adverse_event/view_mixins/tmg/tmg_ae_listboard_view_mixin.py +115 -0
  282. edc_adverse_event/view_utils/__init__.py +1 -0
  283. edc_adverse_event/view_utils/tmg_button.py +117 -0
  284. edc_adverse_event/views/__init__.py +9 -0
  285. edc_adverse_event/views/home_view.py +44 -0
  286. edc_adverse_event/views/tmg/__init__.py +8 -0
  287. edc_adverse_event/views/tmg/death_listboard_view.py +60 -0
  288. edc_adverse_event/views/tmg/home_view.py +79 -0
  289. edc_adverse_event/views/tmg/status_listboards.py +24 -0
  290. edc_adverse_event/views/tmg/summary_listboard_view.py +68 -0
  291. edc_appconfig/__init__.py +0 -0
  292. edc_appconfig/apps.py +248 -0
  293. edc_appconfig/migrations/__init__.py +1 -0
  294. edc_appconfig/models.py +1 -0
  295. edc_appconfig/system_checks.py +32 -0
  296. edc_appointment/__init__.py +3 -0
  297. edc_appointment/admin/__init__.py +3 -0
  298. edc_appointment/admin/actions.py +64 -0
  299. edc_appointment/admin/appointment_admin.py +311 -0
  300. edc_appointment/admin/list_filters.py +93 -0
  301. edc_appointment/admin_site.py +7 -0
  302. edc_appointment/analytics/__init__.py +1 -0
  303. edc_appointment/analytics/dataframes/__init__.py +1 -0
  304. edc_appointment/analytics/dataframes/get_appointment_df.py +99 -0
  305. edc_appointment/appointment_reason_updater.py +205 -0
  306. edc_appointment/appointment_status_updater.py +45 -0
  307. edc_appointment/apps.py +15 -0
  308. edc_appointment/auth_objects.py +10 -0
  309. edc_appointment/auths.py +24 -0
  310. edc_appointment/choices.py +47 -0
  311. edc_appointment/constants.py +33 -0
  312. edc_appointment/context_processors.py +18 -0
  313. edc_appointment/creators/__init__.py +11 -0
  314. edc_appointment/creators/appointment_creator.py +262 -0
  315. edc_appointment/creators/appointments_creator.py +156 -0
  316. edc_appointment/creators/unscheduled_appointment_creator.py +273 -0
  317. edc_appointment/creators/utils.py +66 -0
  318. edc_appointment/exceptions.py +82 -0
  319. edc_appointment/form_runners.py +11 -0
  320. edc_appointment/form_validator_mixins/__init__.py +4 -0
  321. edc_appointment/form_validator_mixins/next_appointment_crf_form_validator_mixin.py +174 -0
  322. edc_appointment/form_validator_mixins/window_period_form_validator_mixin.py +106 -0
  323. edc_appointment/form_validators/__init__.py +3 -0
  324. edc_appointment/form_validators/appointment_form_validator.py +638 -0
  325. edc_appointment/form_validators/next_appointment_crf_form_validator.py +11 -0
  326. edc_appointment/form_validators/utils.py +88 -0
  327. edc_appointment/forms/__init__.py +1 -0
  328. edc_appointment/forms/appointment_form.py +40 -0
  329. edc_appointment/list_data.py +36 -0
  330. edc_appointment/management/__init__.py +0 -0
  331. edc_appointment/management/commands/__init__.py +0 -0
  332. edc_appointment/management/commands/close_appointments.py +56 -0
  333. edc_appointment/management/commands/reset_visit_code_sequences.py +34 -0
  334. edc_appointment/management/commands/update_appointment_status.py +16 -0
  335. edc_appointment/management/commands/update_skipped_appointments.py +56 -0
  336. edc_appointment/managers.py +263 -0
  337. edc_appointment/migrations/0001_initial.py +31 -0
  338. edc_appointment/migrations/0002_auto_20161126_1156.py +526 -0
  339. edc_appointment/migrations/0003_auto_20161127_2226.py +47 -0
  340. edc_appointment/migrations/0004_auto_20161210_1408.py +36 -0
  341. edc_appointment/migrations/0005_auto_20161221_2135.py +22 -0
  342. edc_appointment/migrations/0006_auto_20170106_2118.py +101 -0
  343. edc_appointment/migrations/0007_auto_20170302_2220.py +48 -0
  344. edc_appointment/migrations/0008_auto_20171115_1601.py +182 -0
  345. edc_appointment/migrations/0009_auto_20171119_1032.py +34 -0
  346. edc_appointment/migrations/0010_auto_20171124_1120.py +26 -0
  347. edc_appointment/migrations/0011_auto_20171128_1054.py +62 -0
  348. edc_appointment/migrations/0012_auto_20171128_2153.py +14 -0
  349. edc_appointment/migrations/0013_delete_holiday.py +9 -0
  350. edc_appointment/migrations/0014_auto_20180116_1411.py +41 -0
  351. edc_appointment/migrations/0015_auto_20180706_1519.py +18 -0
  352. edc_appointment/migrations/0016_auto_20181108_0353.py +19 -0
  353. edc_appointment/migrations/0017_auto_20190201_0446.py +24 -0
  354. edc_appointment/migrations/0018_auto_20190305_0123.py +99 -0
  355. edc_appointment/migrations/0019_auto_20190627_2257.py +24 -0
  356. edc_appointment/migrations/0020_auto_20190922_0439.py +20 -0
  357. edc_appointment/migrations/0021_auto_20191024_1000.py +22 -0
  358. edc_appointment/migrations/0022_auto_20200729_2310.py +27 -0
  359. edc_appointment/migrations/0023_auto_20200821_2119.py +74 -0
  360. edc_appointment/migrations/0024_auto_20200911_0425.py +22 -0
  361. edc_appointment/migrations/0025_auto_20210624_0225.py +38 -0
  362. edc_appointment/migrations/0026_auto_20220501_1548.py +104 -0
  363. edc_appointment/migrations/0027_appointment_document_status_and_more.py +40 -0
  364. edc_appointment/migrations/0028_appointment_document_status_comments_and_more.py +32 -0
  365. edc_appointment/migrations/0029_appointment_ignore_window_period_and_more.py +22 -0
  366. edc_appointment/migrations/0030_alter_appointment_appt_status_and_more.py +76 -0
  367. edc_appointment/migrations/0031_auto_20220704_1841.py +26 -0
  368. edc_appointment/migrations/0032_alter_appointment_unique_together.py +31 -0
  369. edc_appointment/migrations/0033_alter_appointment_appt_reason_and_more.py +66 -0
  370. edc_appointment/migrations/0034_appointmenttype_alter_appointment_appt_type_and_more.py +127 -0
  371. edc_appointment/migrations/0035_rename_appointment_appt_type.py +36 -0
  372. edc_appointment/migrations/0036_auto_20230124_1822.py +32 -0
  373. edc_appointment/migrations/0037_remove_appointment_appt_type_old_and_more.py +20 -0
  374. edc_appointment/migrations/0038_alter_appointment_options.py +28 -0
  375. edc_appointment/migrations/0039_appointmenttype_extra_value.py +17 -0
  376. edc_appointment/migrations/0040_appointment_appt_type_other_and_more.py +33 -0
  377. edc_appointment/migrations/0041_alter_appointment_appt_reason_and_more.py +66 -0
  378. edc_appointment/migrations/0042_alter_appointment_device_created_and_more.py +84 -0
  379. edc_appointment/migrations/0043_alter_appointment_appt_status_and_more.py +80 -0
  380. edc_appointment/migrations/0044_alter_appointment_appt_reason_and_more.py +38 -0
  381. edc_appointment/migrations/0045_alter_appointment_appt_reason_and_more.py +52 -0
  382. edc_appointment/migrations/0046_infosources.py +88 -0
  383. edc_appointment/migrations/0047_alter_appointment_options_and_more.py +276 -0
  384. edc_appointment/migrations/0048_alter_appointment_site_and_more.py +36 -0
  385. edc_appointment/migrations/__init__.py +0 -0
  386. edc_appointment/model_mixins/__init__.py +9 -0
  387. edc_appointment/model_mixins/appointment_fields_model_mixin.py +92 -0
  388. edc_appointment/model_mixins/appointment_methods_model_mixin.py +200 -0
  389. edc_appointment/model_mixins/appointment_model_mixin.py +225 -0
  390. edc_appointment/model_mixins/missed_appointment_model_mixin.py +53 -0
  391. edc_appointment/model_mixins/next_appointment_crf_model_mixin.py +94 -0
  392. edc_appointment/model_mixins/window_period_model_mixin.py +42 -0
  393. edc_appointment/modeladmin_mixins/__init__.py +1 -0
  394. edc_appointment/modeladmin_mixins/next_appointment_crf_modeladmin_mixin.py +109 -0
  395. edc_appointment/modelform_mixins/__init__.py +2 -0
  396. edc_appointment/modelform_mixins/next_appointment_crf_modelform_mixins.py +162 -0
  397. edc_appointment/modelform_mixins/previous_appointment_form_mixin.py +38 -0
  398. edc_appointment/models/__init__.py +12 -0
  399. edc_appointment/models/appointment.py +29 -0
  400. edc_appointment/models/appointment_type.py +7 -0
  401. edc_appointment/models/list_models.py +9 -0
  402. edc_appointment/models/signals.py +225 -0
  403. edc_appointment/offline_models.py +3 -0
  404. edc_appointment/skip_appointments.py +324 -0
  405. edc_appointment/stubs.py +42 -0
  406. edc_appointment/system_checks.py +15 -0
  407. edc_appointment/templates/button.html +11 -0
  408. edc_appointment/urls.py +18 -0
  409. edc_appointment/utils.py +884 -0
  410. edc_appointment/view_mixins/__init__.py +1 -0
  411. edc_appointment/view_mixins/appointment_view_mixin.py +122 -0
  412. edc_appointment/view_utils/__init__.py +1 -0
  413. edc_appointment/view_utils/appointment_button.py +77 -0
  414. edc_appointment/views/__init__.py +2 -0
  415. edc_appointment/views/home_view.py +7 -0
  416. edc_appointment/views/unscheduled_appointment_view.py +80 -0
  417. edc_auth/__init__.py +3 -0
  418. edc_auth/admin/__init__.py +5 -0
  419. edc_auth/admin/fieldsets.py +74 -0
  420. edc_auth/admin/group_admin.py +36 -0
  421. edc_auth/admin/list_filters.py +47 -0
  422. edc_auth/admin/log_entries_admin.py +18 -0
  423. edc_auth/admin/role_admin.py +37 -0
  424. edc_auth/admin/user_admin.py +124 -0
  425. edc_auth/admin/user_profile_admin.py +68 -0
  426. edc_auth/admin_site.py +5 -0
  427. edc_auth/apps.py +27 -0
  428. edc_auth/auth_objects/__init__.py +30 -0
  429. edc_auth/auth_objects/codenames/__init__.py +7 -0
  430. edc_auth/auth_objects/codenames/account_manager.py +18 -0
  431. edc_auth/auth_objects/codenames/administration.py +9 -0
  432. edc_auth/auth_objects/codenames/auditor.py +1 -0
  433. edc_auth/auth_objects/codenames/celery_manager.py +51 -0
  434. edc_auth/auth_objects/codenames/clinic.py +1 -0
  435. edc_auth/auth_objects/codenames/clinic_super.py +1 -0
  436. edc_auth/auth_objects/codenames/everyone.py +8 -0
  437. edc_auth/auth_objects/default_groups.py +24 -0
  438. edc_auth/auth_objects/default_pii_models.py +1 -0
  439. edc_auth/auth_objects/default_roles.py +45 -0
  440. edc_auth/auth_updater/__init__.py +1 -0
  441. edc_auth/auth_updater/auth_updater.py +172 -0
  442. edc_auth/auth_updater/group_updater.py +292 -0
  443. edc_auth/auth_updater/role_updater.py +70 -0
  444. edc_auth/backends.py +23 -0
  445. edc_auth/constants.py +21 -0
  446. edc_auth/export_users.py +45 -0
  447. edc_auth/fix_export_permissions.py +77 -0
  448. edc_auth/forms.py +99 -0
  449. edc_auth/get_app_codenames.py +88 -0
  450. edc_auth/get_clinic_codenames.py +23 -0
  451. edc_auth/import_users.py +290 -0
  452. edc_auth/management/commands/export_users.py +31 -0
  453. edc_auth/management/commands/fix_export_permissions.py +9 -0
  454. edc_auth/management/commands/import_users.py +78 -0
  455. edc_auth/management/commands/reset_password.py +38 -0
  456. edc_auth/migrations/0001_initial.py +81 -0
  457. edc_auth/migrations/0001_squashed_0033_alter_userprofile_is_multisite_viewer.py +645 -0
  458. edc_auth/migrations/0002_auto_20180803_0515.py +18 -0
  459. edc_auth/migrations/0003_auto_20180803_0532.py +15 -0
  460. edc_auth/migrations/0004_auto_20180804_2041.py +19 -0
  461. edc_auth/migrations/0005_userprofile_job_title.py +15 -0
  462. edc_auth/migrations/0006_userprofile_notifications.py +22 -0
  463. edc_auth/migrations/0007_auto_20181025_0150.py +46 -0
  464. edc_auth/migrations/0008_auto_20191022_0134.py +15 -0
  465. edc_auth/migrations/0009_userprofile_alternate_email.py +17 -0
  466. edc_auth/migrations/0010_auto_20191022_0422.py +20 -0
  467. edc_auth/migrations/0011_auto_20191025_2335.py +34 -0
  468. edc_auth/migrations/0012_auto_20191026_0034.py +143 -0
  469. edc_auth/migrations/0013_auto_20191026_0055.py +154 -0
  470. edc_auth/migrations/0014_auto_20191026_1841.py +13 -0
  471. edc_auth/migrations/0015_auto_20191026_2149.py +26 -0
  472. edc_auth/migrations/0016_auto_20191026_2153.py +24 -0
  473. edc_auth/migrations/0017_auto_20191026_2231.py +21 -0
  474. edc_auth/migrations/0018_auto_20191029_2039.py +15 -0
  475. edc_auth/migrations/0019_userprofile_export_format.py +31 -0
  476. edc_auth/migrations/0020_auto_20210120_0005.py +27 -0
  477. edc_auth/migrations/0021_auto_20210125_0421.py +25 -0
  478. edc_auth/migrations/0022_auto_20210125_2214.py +31 -0
  479. edc_auth/migrations/0023_auto_20210423_1451.py +17 -0
  480. edc_auth/migrations/0024_alter_userprofile_export_format.py +31 -0
  481. edc_auth/migrations/0025_permissions.py +108 -0
  482. edc_auth/migrations/0026_rename_permissions_edcpermissions.py +16 -0
  483. edc_auth/migrations/0027_alter_edcpermissions_options.py +19 -0
  484. edc_auth/migrations/0028_alter_role_options.py +28 -0
  485. edc_auth/migrations/0029_alter_edcpermissions_device_created_and_more.py +84 -0
  486. edc_auth/migrations/0030_alter_role_options_and_more.py +81 -0
  487. edc_auth/migrations/0031_alter_edcpermissions_options_and_more.py +61 -0
  488. edc_auth/migrations/0032_userprofile_is_multisite_viewer.py +17 -0
  489. edc_auth/migrations/0033_alter_userprofile_is_multisite_viewer.py +21 -0
  490. edc_auth/migrations/__init__.py +0 -0
  491. edc_auth/model_mixins.py +21 -0
  492. edc_auth/models/__init__.py +16 -0
  493. edc_auth/models/edc_permissions.py +10 -0
  494. edc_auth/models/role.py +55 -0
  495. edc_auth/models/signals.py +33 -0
  496. edc_auth/models/user_profile.py +141 -0
  497. edc_auth/password_setter.py +98 -0
  498. edc_auth/post_migrate_signals.py +38 -0
  499. edc_auth/send_new_credentials_to_user.py +46 -0
  500. edc_auth/site_auths.py +344 -0
  501. edc_auth/system_checks.py +91 -0
  502. edc_auth/templates/edc_auth/login.html +61 -0
  503. edc_auth/templates/edc_auth/user_country_sites.html +11 -0
  504. edc_auth/templates/edc_auth/user_role_description.html +15 -0
  505. edc_auth/urls.py +12 -0
  506. edc_auth/urls_for_accounts.py +57 -0
  507. edc_auth/utils.py +145 -0
  508. edc_auth/views.py +60 -0
  509. edc_consent/__init__.py +1 -0
  510. edc_consent/actions.py +63 -0
  511. edc_consent/admin_site.py +5 -0
  512. edc_consent/apps.py +7 -0
  513. edc_consent/auth_objects.py +25 -0
  514. edc_consent/auths.py +20 -0
  515. edc_consent/choices.py +21 -0
  516. edc_consent/consent_definition.py +236 -0
  517. edc_consent/consent_definition_extension.py +159 -0
  518. edc_consent/constants.py +5 -0
  519. edc_consent/exceptions.py +46 -0
  520. edc_consent/field_mixins/__init__.py +23 -0
  521. edc_consent/field_mixins/citizen_fields_mixin.py +49 -0
  522. edc_consent/field_mixins/identity_fields_mixin.py +45 -0
  523. edc_consent/field_mixins/personal_fields_mixin.py +95 -0
  524. edc_consent/field_mixins/review_fields_mixin.py +65 -0
  525. edc_consent/field_mixins/sample_collection_fields_mixin.py +27 -0
  526. edc_consent/field_mixins/scored_review_fields_mixin.py +58 -0
  527. edc_consent/field_mixins/site_fields_mixin.py +15 -0
  528. edc_consent/field_mixins/verification_fields_mixin.py +18 -0
  529. edc_consent/field_mixins/vulnerability_fields_mixin.py +56 -0
  530. edc_consent/fieldsets.py +10 -0
  531. edc_consent/form_validators/__init__.py +4 -0
  532. edc_consent/form_validators/consent_definition_form_validator_mixin.py +102 -0
  533. edc_consent/form_validators/subject_consent_form_validator.py +146 -0
  534. edc_consent/forms.py +36 -0
  535. edc_consent/managers.py +41 -0
  536. edc_consent/migrations/0001_initial.py +100 -0
  537. edc_consent/migrations/0002_alter_edcpermissions_device_created_and_more.py +49 -0
  538. edc_consent/migrations/0003_edcpermissions_locale_created_and_more.py +34 -0
  539. edc_consent/migrations/0004_alter_edcpermissions_options_and_more.py +41 -0
  540. edc_consent/migrations/__init__.py +0 -0
  541. edc_consent/model_mixins/__init__.py +11 -0
  542. edc_consent/model_mixins/consent_extension_model_mixin.py +79 -0
  543. edc_consent/model_mixins/consent_model_mixin.py +145 -0
  544. edc_consent/model_mixins/consent_version_model_mixin.py +81 -0
  545. edc_consent/model_mixins/requires_consent_fields_model_mixin.py +12 -0
  546. edc_consent/modeladmin_mixins/__init__.py +8 -0
  547. edc_consent/modeladmin_mixins/consent_model_admin_mixin.py +209 -0
  548. edc_consent/modeladmin_mixins/requires_consent_model_admin_mixin.py +19 -0
  549. edc_consent/modelform_mixins/__init__.py +8 -0
  550. edc_consent/modelform_mixins/consent_modelform_mixin/__init__.py +4 -0
  551. edc_consent/modelform_mixins/consent_modelform_mixin/clean_fields_modelform_validation_mixin.py +52 -0
  552. edc_consent/modelform_mixins/consent_modelform_mixin/consent_modelform_mixin.py +29 -0
  553. edc_consent/modelform_mixins/consent_modelform_mixin/consent_modelform_validation_mixin.py +257 -0
  554. edc_consent/modelform_mixins/consent_modelform_mixin/review_fields_modelform_mixin.py +52 -0
  555. edc_consent/modelform_mixins/requires_consent_modelform_mixin.py +72 -0
  556. edc_consent/models/__init__.py +11 -0
  557. edc_consent/models/edc_permissions.py +9 -0
  558. edc_consent/models/signals.py +78 -0
  559. edc_consent/navbars.py +15 -0
  560. edc_consent/site_consents.py +431 -0
  561. edc_consent/stubs.py +22 -0
  562. edc_consent/system_checks.py +139 -0
  563. edc_consent/templates/edc_consent/home.html +40 -0
  564. edc_consent/urls.py +11 -0
  565. edc_consent/utils.py +104 -0
  566. edc_consent/validators.py +94 -0
  567. edc_consent/view_mixins/__init__.py +3 -0
  568. edc_consent/view_mixins/consent_view_mixins.py +85 -0
  569. edc_consent/views/__init__.py +3 -0
  570. edc_consent/views/home_view.py +25 -0
  571. edc_consent/wsgi.py +16 -0
  572. edc_constants/__init__.py +3 -0
  573. edc_constants/apps.py +12 -0
  574. edc_constants/choices.py +835 -0
  575. edc_constants/constants.py +239 -0
  576. edc_constants/context_processor.py +47 -0
  577. edc_constants/date_constants.py +23 -0
  578. edc_constants/disease_constants.py +22 -0
  579. edc_constants/internationalization.py +61 -0
  580. edc_constants/locale/sw/LC_MESSAGES/django.po +923 -0
  581. edc_constants/system_checks.py +15 -0
  582. edc_constants/utils.py +19 -0
  583. edc_crf/__init__.py +3 -0
  584. edc_crf/admin/__init__.py +1 -0
  585. edc_crf/admin/crf_status_admin.py +53 -0
  586. edc_crf/admin_site.py +5 -0
  587. edc_crf/apps.py +8 -0
  588. edc_crf/auths.py +0 -0
  589. edc_crf/crf_form_validator.py +165 -0
  590. edc_crf/crf_form_validator_mixins.py +114 -0
  591. edc_crf/fieldset.py +6 -0
  592. edc_crf/form_validator_mixins.py +7 -0
  593. edc_crf/locale/sw/LC_MESSAGES/django.po +67 -0
  594. edc_crf/management/commands/update_crf_status.py +8 -0
  595. edc_crf/migrations/0001_initial.py +124 -0
  596. edc_crf/migrations/0002_auto_20200729_2310.py +29 -0
  597. edc_crf/migrations/0003_alter_crfstatus_options.py +30 -0
  598. edc_crf/migrations/0004_alter_crfstatus_device_created_and_more.py +49 -0
  599. edc_crf/migrations/0005_alter_crfstatus_options_crfstatus_locale_created_and_more.py +63 -0
  600. edc_crf/migrations/0006_remove_crfstatus_edc_crf_crf_modifie_6152c9_idx_and_more.py +22 -0
  601. edc_crf/migrations/0007_crfstatus_edc_crf_crf_subject_e09e96_idx_and_more.py +30 -0
  602. edc_crf/migrations/__init__.py +0 -0
  603. edc_crf/model_mixins/__init__.py +6 -0
  604. edc_crf/model_mixins/crf_inline_model_mixin.py +87 -0
  605. edc_crf/model_mixins/crf_model_mixin.py +23 -0
  606. edc_crf/model_mixins/crf_no_manager_model_mixin.py +38 -0
  607. edc_crf/model_mixins/crf_status_model_mixin.py +41 -0
  608. edc_crf/model_mixins/crf_with_action_model_mixin.py +21 -0
  609. edc_crf/model_mixins/singleton_crf_model_mixin.py +28 -0
  610. edc_crf/modeladmin_mixins/__init__.py +2 -0
  611. edc_crf/modeladmin_mixins/crf_model_admin.py +16 -0
  612. edc_crf/modeladmin_mixins/crf_status_model_admin_mixin.py +15 -0
  613. edc_crf/modelform_mixins/__init__.py +4 -0
  614. edc_crf/modelform_mixins/crf_model_form_mixin.py +41 -0
  615. edc_crf/modelform_mixins/crf_singleton_model_form_mixin.py +45 -0
  616. edc_crf/modelform_mixins/inline_model_form_mixin.py +24 -0
  617. edc_crf/modelform_mixins/requisition_model_form_mixin.py +5 -0
  618. edc_crf/models/__init__.py +2 -0
  619. edc_crf/models/crf_status.py +36 -0
  620. edc_crf/models/signals.py +19 -0
  621. edc_crf/update_crf_status_command.py +24 -0
  622. edc_crf/update_crf_status_for_instance.py +27 -0
  623. edc_crf/urls.py +11 -0
  624. edc_crf/utils.py +65 -0
  625. edc_dashboard/__init__.py +0 -0
  626. edc_dashboard/apps.py +14 -0
  627. edc_dashboard/auth_objects.py +3 -0
  628. edc_dashboard/auths.py +13 -0
  629. edc_dashboard/dashboard_templates.py +7 -0
  630. edc_dashboard/locale/sw/LC_MESSAGES/django.po +64 -0
  631. edc_dashboard/management/__init__.py +0 -0
  632. edc_dashboard/management/commands/__init__.py +0 -0
  633. edc_dashboard/management/commands/update_search_slugs.py +63 -0
  634. edc_dashboard/middleware.py +33 -0
  635. edc_dashboard/migrations/0001_initial.py +100 -0
  636. edc_dashboard/migrations/0002_auto_20220910_0214.py +18 -0
  637. edc_dashboard/migrations/0003_alter_edcpermissions_device_created_and_more.py +49 -0
  638. edc_dashboard/migrations/0004_edcpermissions_locale_created_and_more.py +34 -0
  639. edc_dashboard/migrations/__init__.py +0 -0
  640. edc_dashboard/models.py +9 -0
  641. edc_dashboard/navbars.py +15 -0
  642. edc_dashboard/static/edc_dashboard/css/changelist_button.css +18 -0
  643. edc_dashboard/static/edc_dashboard/css/edc.css +92 -0
  644. edc_dashboard/static/edc_dashboard/css/sticky-footer-navbar.css +39 -0
  645. edc_dashboard/static/edc_dashboard/icons/apple-touch-icon-114x114.png +0 -0
  646. edc_dashboard/static/edc_dashboard/icons/apple-touch-icon-120x120.png +0 -0
  647. edc_dashboard/static/edc_dashboard/icons/apple-touch-icon-144x144.png +0 -0
  648. edc_dashboard/static/edc_dashboard/icons/apple-touch-icon-152x152.png +0 -0
  649. edc_dashboard/static/edc_dashboard/icons/apple-touch-icon-180x180.png +0 -0
  650. edc_dashboard/static/edc_dashboard/icons/apple-touch-icon-57x57.png +0 -0
  651. edc_dashboard/static/edc_dashboard/icons/apple-touch-icon-72x72.png +0 -0
  652. edc_dashboard/static/edc_dashboard/icons/apple-touch-icon-76x76.png +0 -0
  653. edc_dashboard/static/edc_dashboard/icons/apple-touch-icon.png +0 -0
  654. edc_dashboard/static/edc_dashboard/icons/favicon.ico +0 -0
  655. edc_dashboard/static/edc_dashboard/js/edc.js +16 -0
  656. edc_dashboard/static/edc_dashboard/js/ie10-viewport-bug-workaround.js +21 -0
  657. edc_dashboard/system_checks.py +15 -0
  658. edc_dashboard/templates/403.html +30 -0
  659. edc_dashboard/templates/403_csrf.html +30 -0
  660. edc_dashboard/templates/404.html +30 -0
  661. edc_dashboard/templates/500.html +41 -0
  662. edc_dashboard/templates/edc_dashboard/administration.html +54 -0
  663. edc_dashboard/templates/edc_dashboard/alert_messages.html +20 -0
  664. edc_dashboard/templates/edc_dashboard/base.html +109 -0
  665. edc_dashboard/templates/edc_dashboard/base_dj3.html +47 -0
  666. edc_dashboard/templates/edc_dashboard/base_dj4.html +45 -0
  667. edc_dashboard/templates/edc_dashboard/controls/change_button.html +11 -0
  668. edc_dashboard/templates/edc_dashboard/controls/change_button_as_column.html +18 -0
  669. edc_dashboard/templates/edc_dashboard/controls/change_button_as_list_group_item.html +6 -0
  670. edc_dashboard/templates/edc_dashboard/controls/history_button.html +31 -0
  671. edc_dashboard/templates/edc_dashboard/copy_element.html +1 -0
  672. edc_dashboard/templates/edc_dashboard/footer.html +14 -0
  673. edc_dashboard/templates/edc_dashboard/help_modal.html +37 -0
  674. edc_dashboard/templates/edc_dashboard/home.html +73 -0
  675. edc_dashboard/templates/edc_dashboard/index_link.html +1 -0
  676. edc_dashboard/templates/edc_dashboard/navbar_topbar_title.html +3 -0
  677. edc_dashboard/templates/edc_dashboard/paginator/paginator_row.html +32 -0
  678. edc_dashboard/templates/edc_dashboard/search_form.html +25 -0
  679. edc_dashboard/templates/edc_dashboard/set_language.html +14 -0
  680. edc_dashboard/templatetags/__init__.py +0 -0
  681. edc_dashboard/templatetags/edc_dashboard_extras.py +159 -0
  682. edc_dashboard/url_config.py +197 -0
  683. edc_dashboard/url_names.py +50 -0
  684. edc_dashboard/urls.py +9 -0
  685. edc_dashboard/utils.py +55 -0
  686. edc_dashboard/view_mixins/__init__.py +5 -0
  687. edc_dashboard/view_mixins/administration_view_mixin.py +116 -0
  688. edc_dashboard/view_mixins/edc_view_mixin.py +84 -0
  689. edc_dashboard/view_mixins/message_view_mixin.py +37 -0
  690. edc_dashboard/view_mixins/template_request_context_mixin.py +30 -0
  691. edc_dashboard/view_mixins/url_request_context_mixin.py +66 -0
  692. edc_dashboard/views/__init__.py +4 -0
  693. edc_dashboard/views/administration_view.py +12 -0
  694. edc_dashboard/views/dashboard_view.py +45 -0
  695. edc_dashboard/views/error_handlers.py +49 -0
  696. edc_dashboard/views/home_view.py +28 -0
  697. edc_data_manager/__init__.py +3 -0
  698. edc_data_manager/action_items.py +114 -0
  699. edc_data_manager/admin/__init__.py +11 -0
  700. edc_data_manager/admin/action_item_admin.py +11 -0
  701. edc_data_manager/admin/actions.py +99 -0
  702. edc_data_manager/admin/autocomplete_admin.py +91 -0
  703. edc_data_manager/admin/data_dictionary_admin.py +162 -0
  704. edc_data_manager/admin/data_query_admin.py +388 -0
  705. edc_data_manager/admin/issue_admin.py +11 -0
  706. edc_data_manager/admin/query_rule_admin.py +150 -0
  707. edc_data_manager/admin_site.py +7 -0
  708. edc_data_manager/apps.py +14 -0
  709. edc_data_manager/auth_objects.py +58 -0
  710. edc_data_manager/auths.py +64 -0
  711. edc_data_manager/baker_recipes.py +18 -0
  712. edc_data_manager/choices.py +27 -0
  713. edc_data_manager/constants.py +2 -0
  714. edc_data_manager/data_manager.py +5 -0
  715. edc_data_manager/forms/__init__.py +3 -0
  716. edc_data_manager/forms/data_dictionary.py +12 -0
  717. edc_data_manager/forms/data_query.py +82 -0
  718. edc_data_manager/forms/query_rule.py +24 -0
  719. edc_data_manager/get_data_queries.py +15 -0
  720. edc_data_manager/get_longitudinal_value.py +39 -0
  721. edc_data_manager/handlers/__init__.py +1 -0
  722. edc_data_manager/handlers/handlers.py +385 -0
  723. edc_data_manager/manage.py +21 -0
  724. edc_data_manager/management/__init__.py +0 -0
  725. edc_data_manager/management/commands/__init__.py +0 -0
  726. edc_data_manager/management/commands/run_query_rules.py +36 -0
  727. edc_data_manager/migrations/0001_initial.py +1488 -0
  728. edc_data_manager/migrations/0002_auto_20190725_1822.py +36 -0
  729. edc_data_manager/migrations/0003_auto_20190806_1749.py +122 -0
  730. edc_data_manager/migrations/0004_auto_20190806_1750.py +16 -0
  731. edc_data_manager/migrations/0005_auto_20190826_1646.py +28 -0
  732. edc_data_manager/migrations/0006_auto_20190917_2133.py +20 -0
  733. edc_data_manager/migrations/0007_auto_20190917_2212.py +20 -0
  734. edc_data_manager/migrations/0008_auto_20190922_0135.py +36 -0
  735. edc_data_manager/migrations/0009_auto_20190923_0603.py +28 -0
  736. edc_data_manager/migrations/0010_auto_20191002_1521.py +36 -0
  737. edc_data_manager/migrations/0011_auto_20191018_2220.py +28 -0
  738. edc_data_manager/migrations/0012_auto_20191024_1000.py +22 -0
  739. edc_data_manager/migrations/0013_auto_20191120_0304.py +38 -0
  740. edc_data_manager/migrations/0014_auto_20191213_0314.py +30 -0
  741. edc_data_manager/migrations/0015_auto_20200227_2327.py +38 -0
  742. edc_data_manager/migrations/0016_auto_20200327_1435.py +30 -0
  743. edc_data_manager/migrations/0017_auto_20200729_2310.py +95 -0
  744. edc_data_manager/migrations/0018_auto_20210203_0706.py +86 -0
  745. edc_data_manager/migrations/0019_auto_20210510_2036.py +43 -0
  746. edc_data_manager/migrations/0020_auto_20210921_0403.py +32 -0
  747. edc_data_manager/migrations/0021_auto_20210929_2343.py +40 -0
  748. edc_data_manager/migrations/0022_alter_dataquery_recipients_and_more.py +67 -0
  749. edc_data_manager/migrations/0023_auto_20220704_1841.py +54 -0
  750. edc_data_manager/migrations/0024_alter_dataquery_action_identifier_and_more.py +22 -0
  751. edc_data_manager/migrations/0025_edcpermissions.py +100 -0
  752. edc_data_manager/migrations/0026_auto_20220826_0258.py +22 -0
  753. edc_data_manager/migrations/0027_alter_dataquery_dm_user.py +26 -0
  754. edc_data_manager/migrations/0028_alter_dataquery_options_alter_queryrule_options_and_more.py +57 -0
  755. edc_data_manager/migrations/0029_alter_dataquery_managers.py +24 -0
  756. edc_data_manager/migrations/0030_alter_datadictionary_device_created_and_more.py +259 -0
  757. edc_data_manager/migrations/0031_alter_dataquery_visit_code_sequence_and_more.py +39 -0
  758. edc_data_manager/migrations/0032_alter_datadictionary_options_and_more.py +52 -0
  759. edc_data_manager/migrations/0033_datadictionary_locale_created_and_more.py +176 -0
  760. edc_data_manager/migrations/0034_issue.py +25 -0
  761. edc_data_manager/migrations/0035_datadictionary_edc_data_ma_model_92b469_idx.py +19 -0
  762. edc_data_manager/migrations/0036_alter_historicalqueryrule_rule_handler_name_and_more.py +30 -0
  763. edc_data_manager/migrations/0037_alter_dataquery_site_alter_historicaldataquery_site_and_more.py +57 -0
  764. edc_data_manager/migrations/0038_rename_default_datadictionary_default_value_and_more.py +26 -0
  765. edc_data_manager/migrations/__init__.py +0 -0
  766. edc_data_manager/models/__init__.py +18 -0
  767. edc_data_manager/models/action_item.py +18 -0
  768. edc_data_manager/models/data_dictionary.py +77 -0
  769. edc_data_manager/models/data_query.py +207 -0
  770. edc_data_manager/models/edc_permissions.py +9 -0
  771. edc_data_manager/models/model_mixins.py +99 -0
  772. edc_data_manager/models/proxy_models.py +8 -0
  773. edc_data_manager/models/query_rule.py +241 -0
  774. edc_data_manager/models/query_subject.py +9 -0
  775. edc_data_manager/models/query_visit_schedule.py +12 -0
  776. edc_data_manager/models/requisition_panel.py +9 -0
  777. edc_data_manager/models/signals.py +62 -0
  778. edc_data_manager/models/user.py +27 -0
  779. edc_data_manager/navbar_item.py +9 -0
  780. edc_data_manager/populate_data_dictionary.py +163 -0
  781. edc_data_manager/post_migrate_signals.py +37 -0
  782. edc_data_manager/rule/__init__.py +3 -0
  783. edc_data_manager/rule/query_rule_wrapper.py +99 -0
  784. edc_data_manager/rule/rule_runner.py +131 -0
  785. edc_data_manager/rule/update_query_rules.py +39 -0
  786. edc_data_manager/site_data_manager.py +78 -0
  787. edc_data_manager/tasks.py +27 -0
  788. edc_data_manager/templates/edc_data_manager/action_item_display_name.html +8 -0
  789. edc_data_manager/templates/edc_data_manager/columns/auto.html +6 -0
  790. edc_data_manager/templates/edc_data_manager/columns/created.html +5 -0
  791. edc_data_manager/templates/edc_data_manager/columns/locked.html +3 -0
  792. edc_data_manager/templates/edc_data_manager/columns/query_date.html +4 -0
  793. edc_data_manager/templates/edc_data_manager/columns/query_recipients.html +4 -0
  794. edc_data_manager/templates/edc_data_manager/columns/query_text.html +53 -0
  795. edc_data_manager/templates/edc_data_manager/columns/rule_generated.html +5 -0
  796. edc_data_manager/templates/edc_data_manager/columns/status.html +21 -0
  797. edc_data_manager/templates/edc_data_manager/dashboard_data_queries.html +22 -0
  798. edc_data_manager/templates/edc_data_manager/default_query_text.html +1 -0
  799. edc_data_manager/templates/edc_data_manager/home.html +39 -0
  800. edc_data_manager/urls.py +11 -0
  801. edc_data_manager/view_mixins/__init__.py +1 -0
  802. edc_data_manager/view_mixins/data_manager_view_mixin.py +29 -0
  803. edc_data_manager/views/__init__.py +1 -0
  804. edc_data_manager/views/home_view.py +11 -0
  805. edc_device/__init__.py +14 -0
  806. edc_device/apps.py +57 -0
  807. edc_device/constants.py +5 -0
  808. edc_device/device.py +124 -0
  809. edc_device/device_permission.py +131 -0
  810. edc_device/models.py +6 -0
  811. edc_device/navbars.py +15 -0
  812. edc_device/signals.py +28 -0
  813. edc_device/templates/edc_device/home.html +43 -0
  814. edc_device/urls.py +7 -0
  815. edc_device/view_mixins.py +38 -0
  816. edc_device/views.py +29 -0
  817. edc_document_status/__init__.py +3 -0
  818. edc_document_status/apps.py +8 -0
  819. edc_document_status/fieldsets.py +6 -0
  820. edc_document_status/model_mixins.py +44 -0
  821. edc_document_status/modeladmin_mixins.py +7 -0
  822. edc_document_status/models/__init__.py +0 -0
  823. edc_document_status/models/signals.py +36 -0
  824. edc_document_status/urls.py +8 -0
  825. edc_export/__init__.py +3 -0
  826. edc_export/admin/__init__.py +8 -0
  827. edc_export/admin/data_request_admin.py +79 -0
  828. edc_export/admin/data_request_history_admin.py +89 -0
  829. edc_export/admin/export_receipt_admin.py +12 -0
  830. edc_export/admin/file_history_admin.py +35 -0
  831. edc_export/admin/object_history_admin.py +31 -0
  832. edc_export/admin/plan_admin.py +31 -0
  833. edc_export/admin/upload_export_receipt_file_admin.py +22 -0
  834. edc_export/admin_site.py +5 -0
  835. edc_export/apps.py +11 -0
  836. edc_export/archive_exporter.py +97 -0
  837. edc_export/auth_objects.py +39 -0
  838. edc_export/auths.py +37 -0
  839. edc_export/choices.py +9 -0
  840. edc_export/constants.py +14 -0
  841. edc_export/exceptions.py +14 -0
  842. edc_export/exportables.py +127 -0
  843. edc_export/files_archiver.py +36 -0
  844. edc_export/files_emailer.py +103 -0
  845. edc_export/forms/__init__.py +1 -0
  846. edc_export/forms/data_request_form.py +30 -0
  847. edc_export/management/__init__.py +0 -0
  848. edc_export/management/commands/__init__.py +0 -0
  849. edc_export/management/commands/export_object_history.py +27 -0
  850. edc_export/management/commands/import_receipts.py +119 -0
  851. edc_export/managers.py +36 -0
  852. edc_export/migrations/0001_initial.py +1488 -0
  853. edc_export/migrations/0002_auto_20180922_1843.py +18 -0
  854. edc_export/migrations/0003_auto_20181108_0353.py +47 -0
  855. edc_export/migrations/0004_auto_20190305_0123.py +529 -0
  856. edc_export/migrations/0005_exportdata_importdata.py +48 -0
  857. edc_export/migrations/0006_auto_20200512_0208.py +32 -0
  858. edc_export/migrations/0007_auto_20200512_0452.py +27 -0
  859. edc_export/migrations/0008_auto_20201002_0403.py +42 -0
  860. edc_export/migrations/0009_auto_20210510_2036.py +26 -0
  861. edc_export/migrations/0010_auto_20210910_1636.py +28 -0
  862. edc_export/migrations/0011_auto_20220215_2308.py +42 -0
  863. edc_export/migrations/0012_auto_20220704_1841.py +82 -0
  864. edc_export/migrations/0013_edcpermissions.py +100 -0
  865. edc_export/migrations/0014_alter_plan_options.py +28 -0
  866. edc_export/migrations/0015_alter_datarequest_managers_and_more.py +62 -0
  867. edc_export/migrations/0016_alter_datarequest_device_created_and_more.py +469 -0
  868. edc_export/migrations/0017_alter_datarequest_options_and_more.py +444 -0
  869. edc_export/migrations/0018_remove_objecthistory_edc_export__modifie_36e5ad_idx_and_more.py +32 -0
  870. edc_export/migrations/0019_alter_datarequest_site_alter_datarequesthistory_site_and_more.py +49 -0
  871. edc_export/migrations/0020_remove_datarequesthistory_edc_export__exporte_ba8050_idx_and_more.py +57 -0
  872. edc_export/migrations/__init__.py +0 -0
  873. edc_export/model_exporter/__init__.py +9 -0
  874. edc_export/model_exporter/file_history_updater.py +45 -0
  875. edc_export/model_exporter/model_exporter.py +195 -0
  876. edc_export/model_exporter/object_history_helpers.py +116 -0
  877. edc_export/model_exporter/plan_exporter.py +36 -0
  878. edc_export/model_exporter/value_getter.py +163 -0
  879. edc_export/model_mixins/__init__.py +4 -0
  880. edc_export/model_mixins/export_tracking_fields_model_mixin.py +45 -0
  881. edc_export/model_mixins/notification_model_mixin.py +30 -0
  882. edc_export/model_mixins/notification_plan_model_mixin.py +18 -0
  883. edc_export/model_options.py +40 -0
  884. edc_export/models/__init__.py +13 -0
  885. edc_export/models/data_request.py +44 -0
  886. edc_export/models/data_request_history.py +28 -0
  887. edc_export/models/edc_permissions.py +9 -0
  888. edc_export/models/export_receipt.py +36 -0
  889. edc_export/models/file_history.py +81 -0
  890. edc_export/models/object_history.py +78 -0
  891. edc_export/models/permission_dummies.py +15 -0
  892. edc_export/models/plan.py +56 -0
  893. edc_export/models/signals.py +36 -0
  894. edc_export/models/upload_export_receipt_file.py +79 -0
  895. edc_export/navbars.py +25 -0
  896. edc_export/offline_models.py +12 -0
  897. edc_export/static/edc_export/edc.css +46 -0
  898. edc_export/static/edc_export/edc.js +20 -0
  899. edc_export/system_checks.py +32 -0
  900. edc_export/templates/edc_export/export_models.html +167 -0
  901. edc_export/templates/edc_export/home.html +28 -0
  902. edc_export/urls.py +22 -0
  903. edc_export/utils.py +75 -0
  904. edc_export/views/__init__.py +3 -0
  905. edc_export/views/export_models_view.py +28 -0
  906. edc_export/views/export_selected_models_view.py +181 -0
  907. edc_export/views/home_view.py +10 -0
  908. edc_facility/__init__.py +6 -0
  909. edc_facility/admin.py +23 -0
  910. edc_facility/admin_site.py +5 -0
  911. edc_facility/apps.py +30 -0
  912. edc_facility/auth_objects.py +20 -0
  913. edc_facility/auths.py +7 -0
  914. edc_facility/constants.py +6 -0
  915. edc_facility/default_definitions.py +27 -0
  916. edc_facility/exceptions.py +22 -0
  917. edc_facility/facility.py +201 -0
  918. edc_facility/form_validators/__init__.py +1 -0
  919. edc_facility/form_validators/health_facility_form_validator.py +18 -0
  920. edc_facility/forms/__init__.py +1 -0
  921. edc_facility/forms/health_facility_form.py +14 -0
  922. edc_facility/holidays.py +98 -0
  923. edc_facility/holidays_disabled.py +5 -0
  924. edc_facility/import_holidays.py +128 -0
  925. edc_facility/list_data.py +11 -0
  926. edc_facility/management/__init__.py +0 -0
  927. edc_facility/management/commands/__init__.py +0 -0
  928. edc_facility/management/commands/import_holidays.py +13 -0
  929. edc_facility/migrations/0001_initial.py +31 -0
  930. edc_facility/migrations/0002_auto_20180102_1158.py +36 -0
  931. edc_facility/migrations/0003_auto_20190901_1100.py +16 -0
  932. edc_facility/migrations/0004_auto_20210423_1451.py +17 -0
  933. edc_facility/migrations/0005_healthfacility_healthfacilitytypes_and_more.py +468 -0
  934. edc_facility/migrations/0006_alter_healthfacility_health_facility_type.py +23 -0
  935. edc_facility/migrations/0007_healthfacilitytypes_extra_value.py +17 -0
  936. edc_facility/migrations/0008_alter_healthfacility_device_created_and_more.py +84 -0
  937. edc_facility/migrations/0009_alter_healthfacility_options_and_more.py +155 -0
  938. edc_facility/migrations/0010_remove_healthfacility_edc_facilit_modifie_dcf8ac_idx_and_more.py +22 -0
  939. edc_facility/migrations/0011_remove_healthfacilitytypes_edc_facilit_name_78007a_idx.py +19 -0
  940. edc_facility/migrations/0012_alter_holiday_unique_together_and_more.py +23 -0
  941. edc_facility/migrations/0013_alter_healthfacility_site_and_more.py +36 -0
  942. edc_facility/migrations/0014_healthfacility_title_historicalhealthfacility_title.py +23 -0
  943. edc_facility/migrations/__init__.py +0 -0
  944. edc_facility/model_mixins.py +124 -0
  945. edc_facility/modeladmin_mixins.py +87 -0
  946. edc_facility/models/__init__.py +3 -0
  947. edc_facility/models/health_facility.py +15 -0
  948. edc_facility/models/holiday.py +40 -0
  949. edc_facility/models/list_models.py +7 -0
  950. edc_facility/system_checks.py +52 -0
  951. edc_facility/urls.py +11 -0
  952. edc_facility/utils.py +56 -0
  953. edc_fieldsets/__init__.py +8 -0
  954. edc_fieldsets/apps.py +5 -0
  955. edc_fieldsets/fieldlist.py +26 -0
  956. edc_fieldsets/fieldset.py +5 -0
  957. edc_fieldsets/fieldsets.py +79 -0
  958. edc_fieldsets/fieldsets_modeladmin_mixin.py +80 -0
  959. edc_fieldsets/models.py +1 -0
  960. edc_fieldsets/urls.py +20 -0
  961. edc_form_describer/__init__.py +0 -0
  962. edc_form_describer/apps.py +5 -0
  963. edc_form_describer/form_describer.py +216 -0
  964. edc_form_describer/forms_reference.py +125 -0
  965. edc_form_describer/make_forms_reference.py +49 -0
  966. edc_form_describer/management/__init__.py +0 -0
  967. edc_form_describer/management/commands/__init__.py +0 -0
  968. edc_form_describer/management/commands/make_forms_reference.py +106 -0
  969. edc_form_describer/markdown_writer.py +59 -0
  970. edc_form_describer/migrations/__init__.py +0 -0
  971. edc_form_describer/models.py +0 -0
  972. edc_form_describer/urls.py +4 -0
  973. edc_form_label/__init__.py +3 -0
  974. edc_form_label/apps.py +5 -0
  975. edc_form_label/custom_label_condition.py +82 -0
  976. edc_form_label/form_label.py +45 -0
  977. edc_form_label/form_label_modeladmin_mixin.py +32 -0
  978. edc_form_label/models.py +0 -0
  979. edc_form_label/urls.py +4 -0
  980. edc_form_runners/__init__.py +0 -0
  981. edc_form_runners/admin/__init__.py +1 -0
  982. edc_form_runners/admin/actions.py +12 -0
  983. edc_form_runners/admin/issue_admin.py +164 -0
  984. edc_form_runners/admin_site.py +9 -0
  985. edc_form_runners/apps.py +11 -0
  986. edc_form_runners/auth_objects.py +15 -0
  987. edc_form_runners/auths.py +18 -0
  988. edc_form_runners/decorators.py +17 -0
  989. edc_form_runners/exceptions.py +26 -0
  990. edc_form_runners/form_runner.py +230 -0
  991. edc_form_runners/form_runner_by_scr_id.py +36 -0
  992. edc_form_runners/get_form_runner.py +14 -0
  993. edc_form_runners/get_form_runner_by_src_id.py +20 -0
  994. edc_form_runners/management/__init__.py +0 -0
  995. edc_form_runners/management/commands/__init__.py +0 -0
  996. edc_form_runners/management/commands/run_form_runners.py +95 -0
  997. edc_form_runners/migrations/0001_initial.py +191 -0
  998. edc_form_runners/migrations/0002_alter_issue_options_and_more.py +166 -0
  999. edc_form_runners/migrations/0003_alter_issue_visit_code_and_more.py +23 -0
  1000. edc_form_runners/migrations/__init__.py +0 -0
  1001. edc_form_runners/models/__init__.py +2 -0
  1002. edc_form_runners/models/issue.py +72 -0
  1003. edc_form_runners/models/signals.py +33 -0
  1004. edc_form_runners/run_form_runners.py +44 -0
  1005. edc_form_runners/site.py +67 -0
  1006. edc_form_runners/templates/edc_form_runners/form_runner_issues.html +1 -0
  1007. edc_form_runners/templatetags/__init__.py +0 -0
  1008. edc_form_runners/templatetags/form_runners_extras.py +32 -0
  1009. edc_form_runners/urls.py +8 -0
  1010. edc_form_runners/utils.py +96 -0
  1011. edc_form_validators/__init__.py +20 -0
  1012. edc_form_validators/applicable_field_validator.py +220 -0
  1013. edc_form_validators/apps.py +5 -0
  1014. edc_form_validators/base_form_validator.py +166 -0
  1015. edc_form_validators/current_site_validator.py +9 -0
  1016. edc_form_validators/date_range_validator.py +140 -0
  1017. edc_form_validators/date_validator.py +237 -0
  1018. edc_form_validators/exceptions.py +2 -0
  1019. edc_form_validators/extra_mixins/__init__.py +1 -0
  1020. edc_form_validators/extra_mixins/study_day_form_validator.py +53 -0
  1021. edc_form_validators/form_validator.py +25 -0
  1022. edc_form_validators/form_validator_mixin.py +9 -0
  1023. edc_form_validators/form_validator_mixins.py +45 -0
  1024. edc_form_validators/locale_validator.py +9 -0
  1025. edc_form_validators/many_to_many_field_validator.py +364 -0
  1026. edc_form_validators/other_specify_field_validator.py +78 -0
  1027. edc_form_validators/range_field_validator.py +43 -0
  1028. edc_form_validators/required_field_validator.py +322 -0
  1029. edc_form_validators/test_case_mixin.py +73 -0
  1030. edc_form_validators/urls.py +4 -0
  1031. edc_identifier/__init__.py +2 -0
  1032. edc_identifier/admin.py +69 -0
  1033. edc_identifier/admin_site.py +7 -0
  1034. edc_identifier/apps.py +18 -0
  1035. edc_identifier/checkdigit_mixins.py +27 -0
  1036. edc_identifier/exceptions.py +34 -0
  1037. edc_identifier/identifier.py +133 -0
  1038. edc_identifier/managers.py +13 -0
  1039. edc_identifier/migrations/0001_initial.py +270 -0
  1040. edc_identifier/migrations/0001_squashed_0018_auto_20180128_1054.py +210 -0
  1041. edc_identifier/migrations/0002_auto_20160505_1435.py +42 -0
  1042. edc_identifier/migrations/0002_auto_20190305_0123.py +56 -0
  1043. edc_identifier/migrations/0003_auto_20160625_0938.py +38 -0
  1044. edc_identifier/migrations/0003_auto_20191024_1000.py +22 -0
  1045. edc_identifier/migrations/0004_auto_20160807_1443.py +35 -0
  1046. edc_identifier/migrations/0004_auto_20200513_0042.py +27 -0
  1047. edc_identifier/migrations/0005_alter_identifiermodel_managers.py +21 -0
  1048. edc_identifier/migrations/0005_historicalidentifierhistory_historicalidentifiertracker_historicalsubjectidentifier.py +276 -0
  1049. edc_identifier/migrations/0006_alter_identifiermodel_options.py +28 -0
  1050. edc_identifier/migrations/0006_auto_20161127_2226.py +240 -0
  1051. edc_identifier/migrations/0007_alter_identifiermodel_device_created_and_more.py +49 -0
  1052. edc_identifier/migrations/0007_auto_20161204_2227.py +103 -0
  1053. edc_identifier/migrations/0008_alter_identifiermodel_options_and_more.py +72 -0
  1054. edc_identifier/migrations/0008_identifiermodel_linked_identifier.py +17 -0
  1055. edc_identifier/migrations/0009_alter_identifiermodel_site.py +24 -0
  1056. edc_identifier/migrations/0009_auto_20161221_2323.py +23 -0
  1057. edc_identifier/migrations/0010_auto_20170112_0602.py +359 -0
  1058. edc_identifier/migrations/0011_auto_20170511_1323.py +36 -0
  1059. edc_identifier/migrations/0012_auto_20171116_1606.py +361 -0
  1060. edc_identifier/migrations/0013_auto_20171230_1316.py +65 -0
  1061. edc_identifier/migrations/0014_auto_20180103_1322.py +33 -0
  1062. edc_identifier/migrations/0015_auto_20180116_1235.py +9 -0
  1063. edc_identifier/migrations/0016_auto_20180116_1411.py +21 -0
  1064. edc_identifier/migrations/0017_identifiermodel_subject_identifier.py +15 -0
  1065. edc_identifier/migrations/0018_auto_20180128_1054.py +15 -0
  1066. edc_identifier/migrations/__init__.py +0 -0
  1067. edc_identifier/model_mixins.py +167 -0
  1068. edc_identifier/models.py +59 -0
  1069. edc_identifier/offline_models.py +3 -0
  1070. edc_identifier/research_identifier.py +165 -0
  1071. edc_identifier/short_identifier.py +133 -0
  1072. edc_identifier/simple_identifier.py +216 -0
  1073. edc_identifier/subject_identifier.py +30 -0
  1074. edc_identifier/templates/edc_identifier/home.html +2 -0
  1075. edc_identifier/urls.py +11 -0
  1076. edc_identifier/utils.py +51 -0
  1077. edc_identifier/views.py +13 -0
  1078. edc_lab/__init__.py +23 -0
  1079. edc_lab/admin/__init__.py +21 -0
  1080. edc_lab/admin/aliquot_admin.py +74 -0
  1081. edc_lab/admin/base_model_admin.py +30 -0
  1082. edc_lab/admin/box_admin.py +67 -0
  1083. edc_lab/admin/box_item_admin.py +22 -0
  1084. edc_lab/admin/box_type_admin.py +22 -0
  1085. edc_lab/admin/consignee_admin.py +12 -0
  1086. edc_lab/admin/fieldsets.py +56 -0
  1087. edc_lab/admin/manifest_admin.py +51 -0
  1088. edc_lab/admin/manifest_item_admin.py +29 -0
  1089. edc_lab/admin/modeladmin_mixins.py +115 -0
  1090. edc_lab/admin/order_admin.py +10 -0
  1091. edc_lab/admin/panel_admin.py +18 -0
  1092. edc_lab/admin/result_admin.py +21 -0
  1093. edc_lab/admin/shipper_admin.py +12 -0
  1094. edc_lab/admin_site.py +5 -0
  1095. edc_lab/aliquot_types.py +33 -0
  1096. edc_lab/apps.py +12 -0
  1097. edc_lab/auth_objects.py +30 -0
  1098. edc_lab/auths.py +43 -0
  1099. edc_lab/choices.py +167 -0
  1100. edc_lab/constants.py +13 -0
  1101. edc_lab/form_validators/__init__.py +3 -0
  1102. edc_lab/form_validators/crf_requisition_form_validator_mixin.py +81 -0
  1103. edc_lab/form_validators/requisition_form_validator.py +11 -0
  1104. edc_lab/form_validators/requisition_form_validator_mixin.py +88 -0
  1105. edc_lab/forms/__init__.py +7 -0
  1106. edc_lab/forms/aliquot_form.py +11 -0
  1107. edc_lab/forms/box_form.py +40 -0
  1108. edc_lab/forms/box_item_form.py +9 -0
  1109. edc_lab/forms/box_type_form.py +20 -0
  1110. edc_lab/forms/manifest_form.py +17 -0
  1111. edc_lab/forms/manifest_item_form.py +9 -0
  1112. edc_lab/forms/requisition_form_mixin.py +17 -0
  1113. edc_lab/identifiers/__init__.py +9 -0
  1114. edc_lab/identifiers/aliquot_identifier.py +72 -0
  1115. edc_lab/identifiers/box_identifier.py +7 -0
  1116. edc_lab/identifiers/manifest_identifier.py +7 -0
  1117. edc_lab/identifiers/prefix.py +43 -0
  1118. edc_lab/identifiers/requisition_identifier.py +6 -0
  1119. edc_lab/lab/__init__.py +28 -0
  1120. edc_lab/lab/aliquot_creator.py +108 -0
  1121. edc_lab/lab/aliquot_type.py +48 -0
  1122. edc_lab/lab/lab_profile.py +54 -0
  1123. edc_lab/lab/manifest.py +106 -0
  1124. edc_lab/lab/primary_aliquot.py +45 -0
  1125. edc_lab/lab/processing_profile.py +73 -0
  1126. edc_lab/lab/requisition_panel.py +116 -0
  1127. edc_lab/lab/requisition_panel_group.py +63 -0
  1128. edc_lab/lab/specimen.py +84 -0
  1129. edc_lab/lab/specimen_processor.py +56 -0
  1130. edc_lab/labels/__init__.py +4 -0
  1131. edc_lab/labels/aliquot_label.py +74 -0
  1132. edc_lab/labels/base_label.py +15 -0
  1133. edc_lab/labels/box_label.py +22 -0
  1134. edc_lab/labels/manifest_label.py +23 -0
  1135. edc_lab/labels/requisition_label.py +68 -0
  1136. edc_lab/list_data.py +13 -0
  1137. edc_lab/managers.py +25 -0
  1138. edc_lab/migrations/0001_initial.py +1828 -0
  1139. edc_lab/migrations/0002_auto_20170305_1939.py +140 -0
  1140. edc_lab/migrations/0003_auto_20170305_1940.py +52 -0
  1141. edc_lab/migrations/0004_auto_20170305_2015.py +76 -0
  1142. edc_lab/migrations/0005_auto_20170305_2109.py +108 -0
  1143. edc_lab/migrations/0006_auto_20170305_2121.py +22 -0
  1144. edc_lab/migrations/0007_auto_20170321_1119.py +26 -0
  1145. edc_lab/migrations/0008_auto_20170921_0719.py +791 -0
  1146. edc_lab/migrations/0009_auto_20171116_1606.py +58 -0
  1147. edc_lab/migrations/0010_auto_20171127_1541.py +668 -0
  1148. edc_lab/migrations/0011_delete_identifierhistory.py +9 -0
  1149. edc_lab/migrations/0012_auto_20180114_1438.py +118 -0
  1150. edc_lab/migrations/0013_auto_20180117_1438.py +169 -0
  1151. edc_lab/migrations/0014_auto_20180123_1936.py +14 -0
  1152. edc_lab/migrations/0015_manifestitem_site.py +24 -0
  1153. edc_lab/migrations/0016_auto_20180706_1519.py +82 -0
  1154. edc_lab/migrations/0017_auto_20181108_0353.py +75 -0
  1155. edc_lab/migrations/0018_auto_20190201_0446.py +115 -0
  1156. edc_lab/migrations/0019_auto_20190305_0123.py +916 -0
  1157. edc_lab/migrations/0020_auto_20191024_1000.py +88 -0
  1158. edc_lab/migrations/0021_auto_20200513_0034.py +277 -0
  1159. edc_lab/migrations/0022_auto_20211210_1839.py +82 -0
  1160. edc_lab/migrations/0023_auto_20220704_1841.py +138 -0
  1161. edc_lab/migrations/0024_alter_manifestitem_managers.py +21 -0
  1162. edc_lab/migrations/0025_alter_aliquot_measure_units_and_more.py +40 -0
  1163. edc_lab/migrations/0026_alter_aliquot_options_alter_box_options_and_more.py +217 -0
  1164. edc_lab/migrations/0027_alter_aliquot_managers_alter_box_managers_and_more.py +62 -0
  1165. edc_lab/migrations/0028_alter_aliquot_device_created_and_more.py +749 -0
  1166. edc_lab/migrations/0029_alter_aliquot_options_alter_box_options_and_more.py +804 -0
  1167. edc_lab/migrations/0030_remove_aliquot_edc_lab_ali_modifie_49b6da_idx_and_more.py +112 -0
  1168. edc_lab/migrations/0031_alter_box_options_alter_boxitem_options_and_more.py +140 -0
  1169. edc_lab/migrations/0032_alter_consignee_options_and_more.py +44 -0
  1170. edc_lab/migrations/0033_remove_panel_edc_lab_pan_lab_pro_2a0c6d_idx_and_more.py +29 -0
  1171. edc_lab/migrations/0034_alter_aliquot_site_alter_box_site_and_more.py +156 -0
  1172. edc_lab/migrations/__init__.py +0 -0
  1173. edc_lab/model_mixins/__init__.py +17 -0
  1174. edc_lab/model_mixins/aliquot/__init__.py +5 -0
  1175. edc_lab/model_mixins/aliquot/aliquot_identifier_model_mixin.py +19 -0
  1176. edc_lab/model_mixins/aliquot/aliquot_label_mixin.py +32 -0
  1177. edc_lab/model_mixins/aliquot/aliquot_model_mixin.py +68 -0
  1178. edc_lab/model_mixins/aliquot/aliquot_shipping_mixin.py +8 -0
  1179. edc_lab/model_mixins/aliquot/aliquot_type_model_mixin.py +21 -0
  1180. edc_lab/model_mixins/panel_model_mixin.py +53 -0
  1181. edc_lab/model_mixins/requisition/__init__.py +10 -0
  1182. edc_lab/model_mixins/requisition/crf_with_requisition_model_mixin.py +51 -0
  1183. edc_lab/model_mixins/requisition/requisition_identifier_mixin.py +63 -0
  1184. edc_lab/model_mixins/requisition/requisition_model_mixin.py +162 -0
  1185. edc_lab/model_mixins/requisition/requisition_status_mixin.py +22 -0
  1186. edc_lab/model_mixins/requisition/requisition_verify_model_mixin.py +12 -0
  1187. edc_lab/model_mixins/result/__init__.py +2 -0
  1188. edc_lab/model_mixins/result/result_item_model_mixin.py +29 -0
  1189. edc_lab/model_mixins/result/result_model_mixin.py +21 -0
  1190. edc_lab/model_mixins/shipping/__init__.py +2 -0
  1191. edc_lab/model_mixins/shipping/manifest_model_mixin.py +71 -0
  1192. edc_lab/model_mixins/shipping/verify_model_mixin.py +51 -0
  1193. edc_lab/models/__init__.py +10 -0
  1194. edc_lab/models/aliquot.py +48 -0
  1195. edc_lab/models/box.py +130 -0
  1196. edc_lab/models/box_item.py +67 -0
  1197. edc_lab/models/box_type.py +44 -0
  1198. edc_lab/models/manifest/__init__.py +4 -0
  1199. edc_lab/models/manifest/consignee.py +25 -0
  1200. edc_lab/models/manifest/manifest.py +64 -0
  1201. edc_lab/models/manifest/manifest_item.py +49 -0
  1202. edc_lab/models/manifest/shipper.py +26 -0
  1203. edc_lab/models/order.py +46 -0
  1204. edc_lab/models/panel.py +37 -0
  1205. edc_lab/models/result.py +35 -0
  1206. edc_lab/models/result_item.py +36 -0
  1207. edc_lab/models/signals.py +31 -0
  1208. edc_lab/offline_models.py +3 -0
  1209. edc_lab/patterns.py +4 -0
  1210. edc_lab/pdf_reports/__init__.py +1 -0
  1211. edc_lab/pdf_reports/manifest_pdf_report.py +526 -0
  1212. edc_lab/post_migrate_signals.py +14 -0
  1213. edc_lab/site_labs.py +201 -0
  1214. edc_lab/stubs.py +10 -0
  1215. edc_lab/urls.py +8 -0
  1216. edc_lab/utils.py +22 -0
  1217. edc_lab/wsgi.py +7 -0
  1218. edc_lab_dashboard/__init__.py +6 -0
  1219. edc_lab_dashboard/apps.py +8 -0
  1220. edc_lab_dashboard/auth_objects.py +29 -0
  1221. edc_lab_dashboard/auths.py +23 -0
  1222. edc_lab_dashboard/dashboard_templates.py +28 -0
  1223. edc_lab_dashboard/dashboard_urls.py +38 -0
  1224. edc_lab_dashboard/middleware.py +38 -0
  1225. edc_lab_dashboard/migrations/0001_initial.py +100 -0
  1226. edc_lab_dashboard/migrations/0002_alter_edcpermissions_device_created_and_more.py +49 -0
  1227. edc_lab_dashboard/migrations/0003_edcpermissions_locale_created_and_more.py +34 -0
  1228. edc_lab_dashboard/migrations/__init__.py +0 -0
  1229. edc_lab_dashboard/model_wrappers/__init__.py +8 -0
  1230. edc_lab_dashboard/model_wrappers/aliquot_model_wrapper.py +31 -0
  1231. edc_lab_dashboard/model_wrappers/base_box_item_model_wrapper.py +21 -0
  1232. edc_lab_dashboard/model_wrappers/box_model_wrapper.py +12 -0
  1233. edc_lab_dashboard/model_wrappers/manage_box_item_model_wrapper.py +6 -0
  1234. edc_lab_dashboard/model_wrappers/manifest_item_model_wrapper.py +21 -0
  1235. edc_lab_dashboard/model_wrappers/manifest_model_wrapper.py +11 -0
  1236. edc_lab_dashboard/model_wrappers/requisition_model_wrapper.py +25 -0
  1237. edc_lab_dashboard/model_wrappers/result_model_wrapper.py +8 -0
  1238. edc_lab_dashboard/model_wrappers/verify_box_model_wrapper.py +10 -0
  1239. edc_lab_dashboard/models.py +9 -0
  1240. edc_lab_dashboard/navbars.py +94 -0
  1241. edc_lab_dashboard/static/edc_lab_dashboard/beep-03.mp3 +0 -0
  1242. edc_lab_dashboard/static/edc_lab_dashboard/css/extra.css +7 -0
  1243. edc_lab_dashboard/static/edc_lab_dashboard/css/print.css +19 -0
  1244. edc_lab_dashboard/static/edc_lab_dashboard/images/checked.png +0 -0
  1245. edc_lab_dashboard/static/edc_lab_dashboard/images/unchecked.png +0 -0
  1246. edc_lab_dashboard/static/edc_lab_dashboard/js/beep.js +16 -0
  1247. edc_lab_dashboard/templates/edc_lab_dashboard/action_listboard.html +28 -0
  1248. edc_lab_dashboard/templates/edc_lab_dashboard/aliquot_listboard.html +16 -0
  1249. edc_lab_dashboard/templates/edc_lab_dashboard/base.html +13 -0
  1250. edc_lab_dashboard/templates/edc_lab_dashboard/base_listboard.html +43 -0
  1251. edc_lab_dashboard/templates/edc_lab_dashboard/box_listboard.html +39 -0
  1252. edc_lab_dashboard/templates/edc_lab_dashboard/controls/verified_check.html +1 -0
  1253. edc_lab_dashboard/templates/edc_lab_dashboard/controls/verified_shipped.html +1 -0
  1254. edc_lab_dashboard/templates/edc_lab_dashboard/home.html +46 -0
  1255. edc_lab_dashboard/templates/edc_lab_dashboard/listboard/aliquot/columns.html +50 -0
  1256. edc_lab_dashboard/templates/edc_lab_dashboard/listboard/aliquot/results_body.html +13 -0
  1257. edc_lab_dashboard/templates/edc_lab_dashboard/listboard/aliquot/results_header.html +14 -0
  1258. edc_lab_dashboard/templates/edc_lab_dashboard/listboard/box/box_cell.html +23 -0
  1259. edc_lab_dashboard/templates/edc_lab_dashboard/listboard/box/columns.html +26 -0
  1260. edc_lab_dashboard/templates/edc_lab_dashboard/listboard/box/results_body.html +10 -0
  1261. edc_lab_dashboard/templates/edc_lab_dashboard/listboard/box/results_header.html +14 -0
  1262. edc_lab_dashboard/templates/edc_lab_dashboard/listboard/manage_manifest_listboard.html +22 -0
  1263. edc_lab_dashboard/templates/edc_lab_dashboard/listboard/manifest/columns.html +41 -0
  1264. edc_lab_dashboard/templates/edc_lab_dashboard/listboard/manifest/results_body.html +13 -0
  1265. edc_lab_dashboard/templates/edc_lab_dashboard/listboard/manifest/results_header.html +16 -0
  1266. edc_lab_dashboard/templates/edc_lab_dashboard/listboard/pack/columns.html +37 -0
  1267. edc_lab_dashboard/templates/edc_lab_dashboard/listboard/pack/results_body.html +13 -0
  1268. edc_lab_dashboard/templates/edc_lab_dashboard/listboard/pack/results_header.html +15 -0
  1269. edc_lab_dashboard/templates/edc_lab_dashboard/listboard/requisition/columns.html +42 -0
  1270. edc_lab_dashboard/templates/edc_lab_dashboard/listboard/requisition/results_body.html +13 -0
  1271. edc_lab_dashboard/templates/edc_lab_dashboard/listboard/requisition/results_header.html +16 -0
  1272. edc_lab_dashboard/templates/edc_lab_dashboard/listboard/result/columns.html +21 -0
  1273. edc_lab_dashboard/templates/edc_lab_dashboard/listboard/result/results_body.html +13 -0
  1274. edc_lab_dashboard/templates/edc_lab_dashboard/listboard/result/results_header.html +13 -0
  1275. edc_lab_dashboard/templates/edc_lab_dashboard/listboard.html +84 -0
  1276. edc_lab_dashboard/templates/edc_lab_dashboard/manage_box_listboard.html +37 -0
  1277. edc_lab_dashboard/templates/edc_lab_dashboard/manage_manifest_listboard.html +85 -0
  1278. edc_lab_dashboard/templates/edc_lab_dashboard/manifest_listboard.html +26 -0
  1279. edc_lab_dashboard/templates/edc_lab_dashboard/pack_aliquots_modal.html +39 -0
  1280. edc_lab_dashboard/templates/edc_lab_dashboard/pack_listboard.html +56 -0
  1281. edc_lab_dashboard/templates/edc_lab_dashboard/process_listboard.html +5 -0
  1282. edc_lab_dashboard/templates/edc_lab_dashboard/receive_listboard.html +19 -0
  1283. edc_lab_dashboard/templates/edc_lab_dashboard/requisition_listboard.html +19 -0
  1284. edc_lab_dashboard/templates/edc_lab_dashboard/result_listboard.html +9 -0
  1285. edc_lab_dashboard/templates/edc_lab_dashboard/verify_box_listboard.html +56 -0
  1286. edc_lab_dashboard/templatetags/__init__.py +0 -0
  1287. edc_lab_dashboard/templatetags/edc_lab_extras.py +85 -0
  1288. edc_lab_dashboard/urls.py +177 -0
  1289. edc_lab_dashboard/view_mixins/__init__.py +5 -0
  1290. edc_lab_dashboard/view_mixins/box_view_mixin.py +124 -0
  1291. edc_lab_dashboard/view_mixins/clean_search_term_mixin.py +15 -0
  1292. edc_lab_dashboard/view_mixins/form_action_view_mixin.py +35 -0
  1293. edc_lab_dashboard/view_mixins/manifest_view_mixin.py +110 -0
  1294. edc_lab_dashboard/view_mixins/process_requisition_view_mixin.py +67 -0
  1295. edc_lab_dashboard/views/__init__.py +24 -0
  1296. edc_lab_dashboard/views/action_views/__init__.py +9 -0
  1297. edc_lab_dashboard/views/action_views/action_view.py +70 -0
  1298. edc_lab_dashboard/views/action_views/aliquot_view.py +29 -0
  1299. edc_lab_dashboard/views/action_views/box_view.py +8 -0
  1300. edc_lab_dashboard/views/action_views/manage_box_item_view.py +127 -0
  1301. edc_lab_dashboard/views/action_views/manage_manifest_view.py +68 -0
  1302. edc_lab_dashboard/views/action_views/manifest_view.py +76 -0
  1303. edc_lab_dashboard/views/action_views/pack_view.py +100 -0
  1304. edc_lab_dashboard/views/action_views/process_view.py +22 -0
  1305. edc_lab_dashboard/views/action_views/receive_view.py +53 -0
  1306. edc_lab_dashboard/views/action_views/requisition_view.py +60 -0
  1307. edc_lab_dashboard/views/action_views/verify_box_item_view.py +70 -0
  1308. edc_lab_dashboard/views/home_view.py +12 -0
  1309. edc_lab_dashboard/views/listboard_filters/__init__.py +4 -0
  1310. edc_lab_dashboard/views/listboard_filters/aliquot_listboard_view_filters.py +28 -0
  1311. edc_lab_dashboard/views/listboard_filters/manifest_listboard_filters.py +15 -0
  1312. edc_lab_dashboard/views/listboard_filters/pack_listboard_filters.py +24 -0
  1313. edc_lab_dashboard/views/listboard_filters/requisition_listboard_view_filters.py +28 -0
  1314. edc_lab_dashboard/views/listboard_views/__init__.py +10 -0
  1315. edc_lab_dashboard/views/listboard_views/aliquot_listboard_view.py +15 -0
  1316. edc_lab_dashboard/views/listboard_views/base_box_item_listboard_view.py +23 -0
  1317. edc_lab_dashboard/views/listboard_views/base_listboard_view.py +17 -0
  1318. edc_lab_dashboard/views/listboard_views/manage_box_listboard_view.py +34 -0
  1319. edc_lab_dashboard/views/listboard_views/manage_manifest_listboard_view.py +29 -0
  1320. edc_lab_dashboard/views/listboard_views/manifest_listboard_view.py +48 -0
  1321. edc_lab_dashboard/views/listboard_views/pack_listboard_view.py +37 -0
  1322. edc_lab_dashboard/views/listboard_views/process_listboard_view.py +46 -0
  1323. edc_lab_dashboard/views/listboard_views/receive_listboard_view.py +48 -0
  1324. edc_lab_dashboard/views/listboard_views/requisition_listboard_view.py +58 -0
  1325. edc_lab_dashboard/views/listboard_views/result_listboard_view.py +12 -0
  1326. edc_lab_dashboard/views/listboard_views/verify_box_listboard_view.py +51 -0
  1327. edc_lab_dashboard/wsgi.py +7 -0
  1328. edc_lab_panel/__init__.py +0 -0
  1329. edc_lab_panel/apps.py +7 -0
  1330. edc_lab_panel/constants.py +31 -0
  1331. edc_lab_panel/panels.py +142 -0
  1332. edc_lab_panel/processing_profiles.py +14 -0
  1333. edc_lab_results/__init__.py +10 -0
  1334. edc_lab_results/action_items.py +131 -0
  1335. edc_lab_results/admin/__init__.py +2 -0
  1336. edc_lab_results/admin/blood_results_modeladmin_mixin.py +5 -0
  1337. edc_lab_results/admin/reportable_results_modeladmin_mixin.py +54 -0
  1338. edc_lab_results/apps.py +6 -0
  1339. edc_lab_results/calculate_missing.py +30 -0
  1340. edc_lab_results/constants.py +9 -0
  1341. edc_lab_results/fieldsets.py +127 -0
  1342. edc_lab_results/form_validator_mixins/__init__.py +3 -0
  1343. edc_lab_results/form_validator_mixins/blood_results_fbg_form_validator_mixin.py +28 -0
  1344. edc_lab_results/form_validator_mixins/blood_results_form_validator_mixin.py +115 -0
  1345. edc_lab_results/form_validator_mixins/blood_results_glu_form_validator_mixin.py +5 -0
  1346. edc_lab_results/get_summary.py +55 -0
  1347. edc_lab_results/model_mixin_factory/__init__.py +2 -0
  1348. edc_lab_results/model_mixin_factory/field_attrs.py +88 -0
  1349. edc_lab_results/model_mixin_factory/reportable_result_model_mixin_factory.py +37 -0
  1350. edc_lab_results/model_mixin_factory/result_model_mixin_factory.py +35 -0
  1351. edc_lab_results/model_mixins/__init__.py +46 -0
  1352. edc_lab_results/model_mixins/blood_result_model_mixin.py +120 -0
  1353. edc_lab_results/model_mixins/electrolytes_model_mixins.py +48 -0
  1354. edc_lab_results/model_mixins/fbc_model_mixins.py +189 -0
  1355. edc_lab_results/model_mixins/fbg_model_mixin.py +60 -0
  1356. edc_lab_results/model_mixins/glucose_model_mixin.py +60 -0
  1357. edc_lab_results/model_mixins/hba1c_model_mixin.py +55 -0
  1358. edc_lab_results/model_mixins/insulin_model_mixin.py +39 -0
  1359. edc_lab_results/model_mixins/lft_model_mixins.py +127 -0
  1360. edc_lab_results/model_mixins/lipid_model_mixins.py +64 -0
  1361. edc_lab_results/model_mixins/proteinuria_model_mixin.py +18 -0
  1362. edc_lab_results/model_mixins/rft_model_mixins.py +55 -0
  1363. edc_lab_results/models.py +0 -0
  1364. edc_label/__init__.py +5 -0
  1365. edc_label/admin.py +18 -0
  1366. edc_label/admin_site.py +5 -0
  1367. edc_label/apps.py +49 -0
  1368. edc_label/auth_objects.py +15 -0
  1369. edc_label/auths.py +5 -0
  1370. edc_label/constants.py +7 -0
  1371. edc_label/job_result.py +38 -0
  1372. edc_label/lab_printers_mixin.py +47 -0
  1373. edc_label/label.py +48 -0
  1374. edc_label/label_template.py +52 -0
  1375. edc_label/migrations/0001_initial.py +112 -0
  1376. edc_label/migrations/0002_alter_zpllabeltemplates_options.py +30 -0
  1377. edc_label/migrations/0003_alter_zpllabeltemplates_device_created_and_more.py +49 -0
  1378. edc_label/migrations/0004_alter_zpllabeltemplates_options_and_more.py +63 -0
  1379. edc_label/migrations/0005_remove_zpllabeltemplates_edc_label_z_modifie_79a6b3_idx_and_more.py +22 -0
  1380. edc_label/migrations/__init__.py +0 -0
  1381. edc_label/models.py +16 -0
  1382. edc_label/navbars.py +15 -0
  1383. edc_label/printer.py +92 -0
  1384. edc_label/printers_mixin.py +127 -0
  1385. edc_label/static/edc_label/js/BrowserPrint-3.0.216.min.js +16 -0
  1386. edc_label/static/edc_label/js/edc_label.js +108 -0
  1387. edc_label/static/edc_label/label_templates/aliquot.lbl +9 -0
  1388. edc_label/static/edc_label/label_templates/box.lbl +9 -0
  1389. edc_label/static/edc_label/label_templates/manifest.lbl +9 -0
  1390. edc_label/static/edc_label/label_templates/requisition.lbl +9 -0
  1391. edc_label/subject_label.py +47 -0
  1392. edc_label/templates/edc_label/browser_print_labels.html +46 -0
  1393. edc_label/templates/edc_label/home.html +18 -0
  1394. edc_label/templates/edc_label/print_button.html +8 -0
  1395. edc_label/templates/edc_label/printer_config.html +41 -0
  1396. edc_label/templates/edc_label/printer_setup.html +45 -0
  1397. edc_label/templatetags/__init__.py +0 -0
  1398. edc_label/templatetags/edc_label_extras.py +24 -0
  1399. edc_label/urls.py +53 -0
  1400. edc_label/view_mixins.py +37 -0
  1401. edc_label/views/__init__.py +4 -0
  1402. edc_label/views/browser_print_labels_view.py +20 -0
  1403. edc_label/views/change_printer_view.py +46 -0
  1404. edc_label/views/home_view.py +22 -0
  1405. edc_label/views/print_label_view.py +33 -0
  1406. edc_label/views/print_setup_view.py +27 -0
  1407. edc_list_data/__init__.py +3 -0
  1408. edc_list_data/admin.py +13 -0
  1409. edc_list_data/apps.py +9 -0
  1410. edc_list_data/list_model_maker.py +65 -0
  1411. edc_list_data/load_list_data.py +48 -0
  1412. edc_list_data/load_model_data.py +74 -0
  1413. edc_list_data/management/commands/__init__.py +0 -0
  1414. edc_list_data/management/commands/load_list_data.py +14 -0
  1415. edc_list_data/migrations/__init__.py +0 -0
  1416. edc_list_data/model_mixins.py +109 -0
  1417. edc_list_data/models.py +0 -0
  1418. edc_list_data/post_migrate_signals.py +15 -0
  1419. edc_list_data/preload_data.py +37 -0
  1420. edc_list_data/row.py +38 -0
  1421. edc_list_data/site_list_data.py +166 -0
  1422. edc_list_data/stubs.py +9 -0
  1423. edc_list_data/urls.py +4 -0
  1424. edc_listboard/__init__.py +0 -0
  1425. edc_listboard/apps.py +13 -0
  1426. edc_listboard/dashboard_templates.py +5 -0
  1427. edc_listboard/filters/__init__.py +2 -0
  1428. edc_listboard/filters/listboard_filter.py +43 -0
  1429. edc_listboard/filters/listboard_view_filters.py +38 -0
  1430. edc_listboard/middleware.py +24 -0
  1431. edc_listboard/migrations/0001_initial.py +108 -0
  1432. edc_listboard/migrations/0002_alter_listboard_options.py +28 -0
  1433. edc_listboard/migrations/0003_alter_listboard_device_created_and_more.py +49 -0
  1434. edc_listboard/migrations/0004_alter_listboard_options_listboard_locale_created_and_more.py +61 -0
  1435. edc_listboard/migrations/0005_remove_listboard_edc_listboa_modifie_a5fdf8_idx_and_more.py +25 -0
  1436. edc_listboard/migrations/__init__.py +0 -0
  1437. edc_listboard/models.py +14 -0
  1438. edc_listboard/system_checks.py +15 -0
  1439. edc_listboard/templates/edc_listboard/buttons/dashboard_button.html +2 -0
  1440. edc_listboard/templates/edc_listboard/include/buttons_column.html +12 -0
  1441. edc_listboard/templates/edc_listboard/include/columns.html +13 -0
  1442. edc_listboard/templates/edc_listboard/include/results_body.html +16 -0
  1443. edc_listboard/templates/edc_listboard/include/results_header.html +12 -0
  1444. edc_listboard/templates/edc_listboard/listboard.html +106 -0
  1445. edc_listboard/templates/edc_listboard/search_form.html +38 -0
  1446. edc_listboard/urls.py +9 -0
  1447. edc_listboard/view_mixins/__init__.py +4 -0
  1448. edc_listboard/view_mixins/listboard_filter_view_mixin.py +71 -0
  1449. edc_listboard/view_mixins/querystring_view_mixin.py +33 -0
  1450. edc_listboard/view_mixins/search_form_view_mixin.py +39 -0
  1451. edc_listboard/view_mixins/search_listboard_view_mixin.py +93 -0
  1452. edc_listboard/views/__init__.py +3 -0
  1453. edc_listboard/views/listboard_view.py +238 -0
  1454. edc_listboard/views/screen/__init__.py +4 -0
  1455. edc_listboard/views/screen/listboard_view_filter.py +22 -0
  1456. edc_listboard/views/screen/screening_listboard_view.py +57 -0
  1457. edc_listboard/views/subject/__init__.py +1 -0
  1458. edc_listboard/views/subject/subject_listboard_view.py +39 -0
  1459. edc_locator/__init__.py +0 -0
  1460. edc_locator/action_items.py +20 -0
  1461. edc_locator/admin.py +20 -0
  1462. edc_locator/admin_site.py +5 -0
  1463. edc_locator/apps.py +8 -0
  1464. edc_locator/auths.py +17 -0
  1465. edc_locator/exceptions.py +2 -0
  1466. edc_locator/fieldsets.py +44 -0
  1467. edc_locator/forms/__init__.py +1 -0
  1468. edc_locator/forms/subject_locator_form.py +21 -0
  1469. edc_locator/forms/subject_locator_form_validator.py +70 -0
  1470. edc_locator/migrations/0001_initial.py +625 -0
  1471. edc_locator/migrations/0002_auto_20180103_1322.py +31 -0
  1472. edc_locator/migrations/0003_auto_20180103_1351.py +81 -0
  1473. edc_locator/migrations/0004_auto_20180106_2148.py +83 -0
  1474. edc_locator/migrations/0005_auto_20180116_1411.py +21 -0
  1475. edc_locator/migrations/0006_auto_20180116_1528.py +15 -0
  1476. edc_locator/migrations/0007_auto_20180117_1819.py +15 -0
  1477. edc_locator/migrations/0008_auto_20180409_1009.py +40 -0
  1478. edc_locator/migrations/0009_auto_20180708_1954.py +38 -0
  1479. edc_locator/migrations/0010_auto_20180809_0301.py +20 -0
  1480. edc_locator/migrations/0011_auto_20181007_0053.py +78 -0
  1481. edc_locator/migrations/0012_auto_20181010_2121.py +56 -0
  1482. edc_locator/migrations/0013_auto_20181007_0054.py +16 -0
  1483. edc_locator/migrations/0014_auto_20181009_0545.py +14 -0
  1484. edc_locator/migrations/0015_auto_20181010_2125.py +56 -0
  1485. edc_locator/migrations/0016_auto_20181108_0353.py +19 -0
  1486. edc_locator/migrations/0017_auto_20190114_0250.py +24 -0
  1487. edc_locator/migrations/0018_auto_20190305_0123.py +99 -0
  1488. edc_locator/migrations/0019_auto_20190626_1629.py +20 -0
  1489. edc_locator/migrations/0020_auto_20190922_0439.py +20 -0
  1490. edc_locator/migrations/0021_auto_20191024_1000.py +22 -0
  1491. edc_locator/migrations/0022_auto_20200729_2310.py +28 -0
  1492. edc_locator/migrations/0023_auto_20210203_0706.py +86 -0
  1493. edc_locator/migrations/0024_auto_20210911_2036.py +22 -0
  1494. edc_locator/migrations/0025_auto_20220704_1841.py +26 -0
  1495. edc_locator/migrations/0026_alter_historicalsubjectlocator_action_identifier_and_more.py +22 -0
  1496. edc_locator/migrations/0027_auto_20220826_0258.py +25 -0
  1497. edc_locator/migrations/0028_auto_20220826_0322.py +22 -0
  1498. edc_locator/migrations/0029_auto_20220826_0406.py +20 -0
  1499. edc_locator/migrations/0030_auto_20220922_2236.py +30 -0
  1500. edc_locator/migrations/0031_alter_subjectlocator_options.py +29 -0
  1501. edc_locator/migrations/0032_alter_subjectlocator_managers.py +25 -0
  1502. edc_locator/migrations/0033_alter_subjectlocator_options.py +30 -0
  1503. edc_locator/migrations/0034_alter_historicalsubjectlocator_device_created_and_more.py +84 -0
  1504. edc_locator/migrations/0035_alter_subjectlocator_options_and_more.py +97 -0
  1505. edc_locator/migrations/0036_alter_historicalsubjectlocator_site_and_more.py +36 -0
  1506. edc_locator/migrations/0037_alter_historicalsubjectlocator_consent_model_and_more.py +33 -0
  1507. edc_locator/migrations/0038_alter_historicalsubjectlocator_may_call_work_and_more.py +31 -0
  1508. edc_locator/migrations/__init__.py +0 -0
  1509. edc_locator/model_mixins/__init__.py +1 -0
  1510. edc_locator/model_mixins/locator_methods_model_mixin.py +26 -0
  1511. edc_locator/model_mixins/locator_model_mixin.py +44 -0
  1512. edc_locator/model_mixins/subject_contact_fields_mixin.py +81 -0
  1513. edc_locator/model_mixins/subject_indirect_contact_fields_mixin.py +53 -0
  1514. edc_locator/model_mixins/subject_work_fields_mixin.py +43 -0
  1515. edc_locator/modeladmin_mixins.py +109 -0
  1516. edc_locator/models.py +36 -0
  1517. edc_locator/offline_models.py +3 -0
  1518. edc_locator/templates/edc_locator/changelist_locator_contact_rules.html +7 -0
  1519. edc_locator/templates/edc_locator/changelist_locator_contacts.html +7 -0
  1520. edc_locator/templates/edc_locator/changelist_locator_subject.html +4 -0
  1521. edc_locator/templates/edc_locator/locator_include.html +50 -0
  1522. edc_locator/urls.py +8 -0
  1523. edc_locator/utils.py +21 -0
  1524. edc_locator/view_mixins/__init__.py +3 -0
  1525. edc_locator/view_mixins/subject_locator_view_mixins.py +84 -0
  1526. edc_ltfu/__init__.py +0 -0
  1527. edc_ltfu/action_items.py +23 -0
  1528. edc_ltfu/admin.py +15 -0
  1529. edc_ltfu/admin_site.py +5 -0
  1530. edc_ltfu/apps.py +8 -0
  1531. edc_ltfu/choices.py +8 -0
  1532. edc_ltfu/constants.py +3 -0
  1533. edc_ltfu/forms/__init__.py +3 -0
  1534. edc_ltfu/forms/ltfu_form.py +24 -0
  1535. edc_ltfu/forms/ltfu_form_validator.py +13 -0
  1536. edc_ltfu/forms/ltfu_form_validator_mixin.py +43 -0
  1537. edc_ltfu/migrations/__init__.py +0 -0
  1538. edc_ltfu/model_mixins.py +86 -0
  1539. edc_ltfu/modeladmin_mixin.py +58 -0
  1540. edc_ltfu/modelform_mixins.py +107 -0
  1541. edc_ltfu/models.py +29 -0
  1542. edc_ltfu/urls.py +8 -0
  1543. edc_ltfu/utils.py +13 -0
  1544. edc_metadata/__init__.py +1 -0
  1545. edc_metadata/admin/__init__.py +2 -0
  1546. edc_metadata/admin/crf_metadata.py +24 -0
  1547. edc_metadata/admin/list_filters.py +24 -0
  1548. edc_metadata/admin/modeladmin_mixins.py +209 -0
  1549. edc_metadata/admin/requisition_metadata.py +32 -0
  1550. edc_metadata/admin_site.py +5 -0
  1551. edc_metadata/apps.py +12 -0
  1552. edc_metadata/auths.py +12 -0
  1553. edc_metadata/choices.py +16 -0
  1554. edc_metadata/constants.py +7 -0
  1555. edc_metadata/management/__init__.py +0 -0
  1556. edc_metadata/management/commands/__init__.py +0 -0
  1557. edc_metadata/management/commands/update_metadata.py +23 -0
  1558. edc_metadata/management/commands/update_metadata_schedule_names.py +57 -0
  1559. edc_metadata/management/commands/validate_entry_status.py +112 -0
  1560. edc_metadata/management/commands/validate_rule_groups.py +10 -0
  1561. edc_metadata/managers.py +47 -0
  1562. edc_metadata/metadata/__init__.py +10 -0
  1563. edc_metadata/metadata/crf_metadata_getter.py +15 -0
  1564. edc_metadata/metadata/metadata.py +391 -0
  1565. edc_metadata/metadata/metadata_getter.py +151 -0
  1566. edc_metadata/metadata/requisition_metadata_getter.py +19 -0
  1567. edc_metadata/metadata_handler.py +109 -0
  1568. edc_metadata/metadata_helper/__init__.py +2 -0
  1569. edc_metadata/metadata_helper/metadata_helper.py +8 -0
  1570. edc_metadata/metadata_helper/metadata_helper_mixin.py +121 -0
  1571. edc_metadata/metadata_inspector.py +66 -0
  1572. edc_metadata/metadata_mixins/__init__.py +1 -0
  1573. edc_metadata/metadata_mixins/source_model_metadata_mixin.py +82 -0
  1574. edc_metadata/metadata_refresher.py +164 -0
  1575. edc_metadata/metadata_rules/__init__.py +21 -0
  1576. edc_metadata/metadata_rules/crf/__init__.py +2 -0
  1577. edc_metadata/metadata_rules/crf/crf_rule.py +33 -0
  1578. edc_metadata/metadata_rules/crf/crf_rule_group.py +109 -0
  1579. edc_metadata/metadata_rules/decorators.py +26 -0
  1580. edc_metadata/metadata_rules/logic.py +56 -0
  1581. edc_metadata/metadata_rules/metadata_rule_evaluator.py +41 -0
  1582. edc_metadata/metadata_rules/persistant_singleton_mixin.py +111 -0
  1583. edc_metadata/metadata_rules/predicate.py +136 -0
  1584. edc_metadata/metadata_rules/requisition/__init__.py +10 -0
  1585. edc_metadata/metadata_rules/requisition/requisition_rule.py +30 -0
  1586. edc_metadata/metadata_rules/requisition/requisition_rule_group.py +133 -0
  1587. edc_metadata/metadata_rules/rule.py +98 -0
  1588. edc_metadata/metadata_rules/rule_evaluator.py +84 -0
  1589. edc_metadata/metadata_rules/rule_group.py +77 -0
  1590. edc_metadata/metadata_rules/rule_group_meta_options.py +66 -0
  1591. edc_metadata/metadata_rules/rule_group_metaclass.py +97 -0
  1592. edc_metadata/metadata_rules/site.py +85 -0
  1593. edc_metadata/metadata_updater.py +86 -0
  1594. edc_metadata/metadata_wrappers/__init__.py +5 -0
  1595. edc_metadata/metadata_wrappers/crf_metadata_wrapper.py +5 -0
  1596. edc_metadata/metadata_wrappers/crf_metadata_wrappers.py +8 -0
  1597. edc_metadata/metadata_wrappers/metadata_wrapper.py +76 -0
  1598. edc_metadata/metadata_wrappers/metadata_wrappers.py +33 -0
  1599. edc_metadata/metadata_wrappers/requisition_metadata_wrapper.py +26 -0
  1600. edc_metadata/metadata_wrappers/requisition_metadata_wrappers.py +10 -0
  1601. edc_metadata/migrations/0001_initial.py +275 -0
  1602. edc_metadata/migrations/0002_auto_20161127_2226.py +41 -0
  1603. edc_metadata/migrations/0003_auto_20161211_1005.py +28 -0
  1604. edc_metadata/migrations/0004_auto_20161221_2323.py +22 -0
  1605. edc_metadata/migrations/0005_auto_20170112_0602.py +101 -0
  1606. edc_metadata/migrations/0006_auto_20170209_0924.py +40 -0
  1607. edc_metadata/migrations/0007_auto_20170810_1032.py +94 -0
  1608. edc_metadata/migrations/0008_auto_20171211_2239.py +47 -0
  1609. edc_metadata/migrations/0009_auto_20180116_1528.py +43 -0
  1610. edc_metadata/migrations/0010_auto_20180706_1519.py +24 -0
  1611. edc_metadata/migrations/0011_auto_20190305_0123.py +99 -0
  1612. edc_metadata/migrations/0012_auto_20190627_2320.py +59 -0
  1613. edc_metadata/migrations/0013_auto_20190706_0706.py +61 -0
  1614. edc_metadata/migrations/0014_auto_20190707_0002.py +27 -0
  1615. edc_metadata/migrations/0015_auto_20190709_0009.py +42 -0
  1616. edc_metadata/migrations/0016_auto_20190922_0439.py +20 -0
  1617. edc_metadata/migrations/0017_auto_20191024_1000.py +33 -0
  1618. edc_metadata/migrations/0018_auto_20200513_0023.py +46 -0
  1619. edc_metadata/migrations/0019_alter_crfmetadata_entry_status_and_more.py +42 -0
  1620. edc_metadata/migrations/0020_alter_crfmetadata_options_and_more.py +48 -0
  1621. edc_metadata/migrations/0021_alter_crfmetadata_managers_and_more.py +29 -0
  1622. edc_metadata/migrations/0022_alter_crfmetadata_options_and_more.py +48 -0
  1623. edc_metadata/migrations/0023_alter_crfmetadata_device_created_and_more.py +84 -0
  1624. edc_metadata/migrations/0024_rename_current_entry_title_crfmetadata_model_verbose_name_and_more.py +22 -0
  1625. edc_metadata/migrations/0025_crfmetadata_document_user_and_more.py +35 -0
  1626. edc_metadata/migrations/0026_rename_model_verbose_name_crfmetadata_document_name_and_more.py +22 -0
  1627. edc_metadata/migrations/0027_alter_crfmetadata_options_and_more.py +228 -0
  1628. edc_metadata/migrations/0028_remove_requisitionmetadata_edc_metadat_subject_51288a_idx_and_more.py +105 -0
  1629. edc_metadata/migrations/0029_alter_crfmetadata_site_and_more.py +37 -0
  1630. edc_metadata/migrations/__init__.py +0 -0
  1631. edc_metadata/model_mixins/__init__.py +1 -0
  1632. edc_metadata/model_mixins/creates/__init__.py +1 -0
  1633. edc_metadata/model_mixins/creates/creates_metadata_model_mixin.py +108 -0
  1634. edc_metadata/model_mixins/metadata_helper_model_mixin.py +12 -0
  1635. edc_metadata/model_mixins/updates/__init__.py +5 -0
  1636. edc_metadata/model_mixins/updates/updates_crf_metadata_model_mixin.py +66 -0
  1637. edc_metadata/model_mixins/updates/updates_metadata_model_mixin.py +121 -0
  1638. edc_metadata/model_mixins/updates/updates_requisition_metadata_model_mixin.py +77 -0
  1639. edc_metadata/models/__init__.py +7 -0
  1640. edc_metadata/models/crf_metadata.py +89 -0
  1641. edc_metadata/models/crf_metadata_model_mixin.py +132 -0
  1642. edc_metadata/models/requisition_metadata.py +120 -0
  1643. edc_metadata/models/signals.py +107 -0
  1644. edc_metadata/next_form_getter.py +131 -0
  1645. edc_metadata/offline_models.py +13 -0
  1646. edc_metadata/requisition/__init__.py +4 -0
  1647. edc_metadata/requisition/requisition_metadata_handler.py +50 -0
  1648. edc_metadata/requisition/requisition_metadata_updater.py +47 -0
  1649. edc_metadata/stubs.py +111 -0
  1650. edc_metadata/system_checks.py +18 -0
  1651. edc_metadata/templates/edc_metadata/home.html +2 -0
  1652. edc_metadata/update_metadata_on_schedule_change.py +70 -0
  1653. edc_metadata/urls.py +11 -0
  1654. edc_metadata/utils.py +130 -0
  1655. edc_metadata/view_mixins/__init__.py +1 -0
  1656. edc_metadata/view_mixins/metadata_view_mixin.py +51 -0
  1657. edc_metadata/views/__init__.py +2 -0
  1658. edc_metadata/views/home_view.py +13 -0
  1659. edc_metadata/views/refresh_metadata_actions_view.py +71 -0
  1660. edc_model/__init__.py +9 -0
  1661. edc_model/apps.py +25 -0
  1662. edc_model/choices.py +6 -0
  1663. edc_model/constants.py +7 -0
  1664. edc_model/models/__init__.py +20 -0
  1665. edc_model/models/address_mixin.py +28 -0
  1666. edc_model/models/base_model.py +24 -0
  1667. edc_model/models/base_uuid_model.py +20 -0
  1668. edc_model/models/fields/__init__.py +7 -0
  1669. edc_model/models/fields/date_estimated.py +52 -0
  1670. edc_model/models/fields/duration.py +59 -0
  1671. edc_model/models/fields/hostname_modification_field.py +18 -0
  1672. edc_model/models/fields/identity_type_field.py +39 -0
  1673. edc_model/models/fields/initials_field.py +36 -0
  1674. edc_model/models/fields/other_charfield.py +30 -0
  1675. edc_model/models/fields/userfield.py +27 -0
  1676. edc_model/models/historical_records.py +70 -0
  1677. edc_model/models/name_fields_model_mixin.py +59 -0
  1678. edc_model/models/report_status_model_mixin.py +22 -0
  1679. edc_model/models/signals.py +30 -0
  1680. edc_model/models/url_model_mixin.py +77 -0
  1681. edc_model/static/edc_model/slider.css +46 -0
  1682. edc_model/static/edc_model/slider.png +0 -0
  1683. edc_model/stubs.py +46 -0
  1684. edc_model/system_checks.py +12 -0
  1685. edc_model/templates/edc_model/widgets/slider.html +22 -0
  1686. edc_model/utils.py +255 -0
  1687. edc_model/validators/__init__.py +10 -0
  1688. edc_model/validators/date.py +37 -0
  1689. edc_model/validators/duration.py +33 -0
  1690. edc_model/validators/phone.py +28 -0
  1691. edc_model/widgets/__init__.py +1 -0
  1692. edc_model/widgets/slider_widget.py +39 -0
  1693. edc_model_admin/__init__.py +0 -0
  1694. edc_model_admin/admin_site.py +111 -0
  1695. edc_model_admin/apps.py +11 -0
  1696. edc_model_admin/changelist_buttons/__init__.py +2 -0
  1697. edc_model_admin/changelist_buttons/model_admin_changelist_button_mixin.py +81 -0
  1698. edc_model_admin/changelist_buttons/model_admin_changelist_model_button_mixin.py +101 -0
  1699. edc_model_admin/context_processors.py +26 -0
  1700. edc_model_admin/dashboard/__init__.py +4 -0
  1701. edc_model_admin/dashboard/model_admin_crf_dashboard_mixin.py +39 -0
  1702. edc_model_admin/dashboard/model_admin_dashboard_mixin.py +93 -0
  1703. edc_model_admin/dashboard/model_admin_stacked_inline_mixin.py +26 -0
  1704. edc_model_admin/dashboard/model_admin_subject_dashboard_mixin.py +58 -0
  1705. edc_model_admin/history/__init__.py +1 -0
  1706. edc_model_admin/history/model_admin_simple_history.py +66 -0
  1707. edc_model_admin/list_filters/__init__.py +4 -0
  1708. edc_model_admin/list_filters/future_date_list_filter.py +109 -0
  1709. edc_model_admin/list_filters/list_field_with_other_list_filter.py +80 -0
  1710. edc_model_admin/list_filters/past_date_list_filter.py +120 -0
  1711. edc_model_admin/list_filters/report_date_list_filter.py +10 -0
  1712. edc_model_admin/locale/lg/LC_MESSAGES/django.po +268 -0
  1713. edc_model_admin/locale/sw/LC_MESSAGES/django.po +283 -0
  1714. edc_model_admin/mixins/__init__.py +31 -0
  1715. edc_model_admin/mixins/address_model_admin_mixin.py +25 -0
  1716. edc_model_admin/mixins/base_model_admin_redirect_mixin.py +45 -0
  1717. edc_model_admin/mixins/inlines/__init__.py +4 -0
  1718. edc_model_admin/mixins/inlines/inline_hide_original_object_name_mixin.py +31 -0
  1719. edc_model_admin/mixins/inlines/limited_admin_inline_mixin.py +56 -0
  1720. edc_model_admin/mixins/inlines/stacked_inline_modeladmin_mixin.py +5 -0
  1721. edc_model_admin/mixins/inlines/tabular_inline_mixin.py +15 -0
  1722. edc_model_admin/mixins/model_admin_bypass_default_form_cls_mixin.py +153 -0
  1723. edc_model_admin/mixins/model_admin_form_auto_number_mixin.py +50 -0
  1724. edc_model_admin/mixins/model_admin_form_instructions_mixin.py +80 -0
  1725. edc_model_admin/mixins/model_admin_hide_delete_button_on_condition.py +23 -0
  1726. edc_model_admin/mixins/model_admin_institution_mixin.py +7 -0
  1727. edc_model_admin/mixins/model_admin_limit_to_selected_foreignkey.py +34 -0
  1728. edc_model_admin/mixins/model_admin_model_redirect_mixin.py +49 -0
  1729. edc_model_admin/mixins/model_admin_next_url_redirect_mixin.py +178 -0
  1730. edc_model_admin/mixins/model_admin_protect_pii_mixin.py +69 -0
  1731. edc_model_admin/mixins/model_admin_redirect_all_to_changelist_mixin.py +79 -0
  1732. edc_model_admin/mixins/model_admin_redirect_on_delete_mixin.py +86 -0
  1733. edc_model_admin/mixins/model_admin_replace_label_text_mixin.py +21 -0
  1734. edc_model_admin/mixins/templates_model_admin_mixin.py +72 -0
  1735. edc_model_admin/static/edc_model_admin/admin/css/dark_mode.css +33 -0
  1736. edc_model_admin/static/edc_model_admin/admin/css/edc_model_admin.css +23 -0
  1737. edc_model_admin/static/edc_model_admin/admin/css/themes/edc_deep_purple.css +19 -0
  1738. edc_model_admin/static/edc_model_admin/admin/css/themes/edc_indigo.css +20 -0
  1739. edc_model_admin/static/edc_model_admin/admin/css/themes/edc_purple.css +20 -0
  1740. edc_model_admin/static/edc_model_admin/admin/js/delay_save_buttons.js +21 -0
  1741. edc_model_admin/system_checks.py +15 -0
  1742. edc_model_admin/templates/edc_model_admin/admin/app_index.html +35 -0
  1743. edc_model_admin/templates/edc_model_admin/admin/change_form.html +73 -0
  1744. edc_model_admin/templates/edc_model_admin/admin/change_list.html +39 -0
  1745. edc_model_admin/templates/edc_model_admin/admin/delete_confirmation.html +74 -0
  1746. edc_model_admin/templates/edc_model_admin/admin/index.html +82 -0
  1747. edc_model_admin/templates/edc_model_admin/admin/object_history.html +50 -0
  1748. edc_model_admin/templates/edc_model_admin/admin/object_history_form.html +42 -0
  1749. edc_model_admin/templates/edc_model_admin/admin/tabular.html +65 -0
  1750. edc_model_admin/templates/edc_model_admin/changelist_model_button.html +1 -0
  1751. edc_model_admin/templates/edc_model_admin/edc_additional_instructions.html +10 -0
  1752. edc_model_admin/templates/edc_model_admin/edc_instructions.html +4 -0
  1753. edc_model_admin/templates/edc_model_admin/edc_revision_line.html +12 -0
  1754. edc_model_admin/templates/edc_model_admin/edc_submit_line.html +21 -0
  1755. edc_model_admin/templates/edc_model_admin/logout_row.html +36 -0
  1756. edc_model_admin/templates/edc_model_admin/navbar_for_admin_templates.html +71 -0
  1757. edc_model_admin/templates/edc_model_admin/navbar_for_admin_templates_b3.html +7 -0
  1758. edc_model_admin/templates/edc_model_admin/yes_no_coloring.html +5 -0
  1759. edc_model_admin/templatetags/__init__.py +0 -0
  1760. edc_model_admin/templatetags/edc_admin_modify.py +194 -0
  1761. edc_model_admin/utils.py +65 -0
  1762. edc_model_fields/__init__.py +0 -0
  1763. edc_model_fields/apps.py +6 -0
  1764. edc_model_fields/fields/__init__.py +7 -0
  1765. edc_model_fields/fields/custom_django_fields.py +39 -0
  1766. edc_model_fields/fields/date_estimated.py +52 -0
  1767. edc_model_fields/fields/hostname_modification_field.py +18 -0
  1768. edc_model_fields/fields/identity_type_field.py +39 -0
  1769. edc_model_fields/fields/initials_field.py +43 -0
  1770. edc_model_fields/fields/other_charfield.py +33 -0
  1771. edc_model_fields/fields/userfield.py +27 -0
  1772. edc_model_fields/models.py +0 -0
  1773. edc_model_fields/static/edc_model_fields/slider.css +46 -0
  1774. edc_model_fields/static/edc_model_fields/slider.png +0 -0
  1775. edc_model_fields/templates/edc_model_fields/widgets/slider.html +22 -0
  1776. edc_model_fields/utils.py +49 -0
  1777. edc_model_fields/widgets/__init__.py +1 -0
  1778. edc_model_fields/widgets/slider_widget.py +39 -0
  1779. edc_model_form/__init__.py +0 -0
  1780. edc_model_form/apps.py +8 -0
  1781. edc_model_form/mixins/__init__.py +9 -0
  1782. edc_model_form/mixins/base_model_form_mixin.py +64 -0
  1783. edc_model_form/mixins/inline_model_form_mixin.py +89 -0
  1784. edc_model_form/mixins/report_datetime_modelform_mixin.py +29 -0
  1785. edc_model_form/urls.py +4 -0
  1786. edc_model_form/utils.py +17 -0
  1787. edc_model_to_dataframe/__init__.py +2 -0
  1788. edc_model_to_dataframe/apps.py +10 -0
  1789. edc_model_to_dataframe/constants.py +29 -0
  1790. edc_model_to_dataframe/model_to_dataframe.py +499 -0
  1791. edc_model_to_dataframe/read_frame_edc.py +25 -0
  1792. edc_model_to_dataframe/urls.py +6 -0
  1793. edc_navbar/__init__.py +5 -0
  1794. edc_navbar/apps.py +12 -0
  1795. edc_navbar/auth_objects.py +14 -0
  1796. edc_navbar/auths.py +20 -0
  1797. edc_navbar/exceptions.py +14 -0
  1798. edc_navbar/get_default_navbar.py +11 -0
  1799. edc_navbar/migrations/0001_initial.py +26 -0
  1800. edc_navbar/migrations/0002_auto_20210423_1451.py +17 -0
  1801. edc_navbar/migrations/0003_alter_navbar_options.py +16 -0
  1802. edc_navbar/migrations/0004_auto_20220825_0451.py +103 -0
  1803. edc_navbar/migrations/0005_auto_20220910_0210.py +18 -0
  1804. edc_navbar/migrations/0006_alter_edcpermissions_device_created_and_more.py +49 -0
  1805. edc_navbar/migrations/0007_alter_edcpermissions_options_and_more.py +63 -0
  1806. edc_navbar/migrations/__init__.py +0 -0
  1807. edc_navbar/models.py +9 -0
  1808. edc_navbar/navbar.py +53 -0
  1809. edc_navbar/navbar_item.py +62 -0
  1810. edc_navbar/navbars.py +43 -0
  1811. edc_navbar/site_navbars.py +113 -0
  1812. edc_navbar/system_checks.py +42 -0
  1813. edc_navbar/templates/edc_navbar/edc_navbar.html +14 -0
  1814. edc_navbar/templates/edc_navbar/navbar_item.html +2 -0
  1815. edc_navbar/templates/edc_navbar/select_language_item.html +13 -0
  1816. edc_navbar/templatetags/__init__.py +0 -0
  1817. edc_navbar/templatetags/edc_navbar_extras.py +40 -0
  1818. edc_navbar/urls.py +1 -0
  1819. edc_navbar/utils.py +9 -0
  1820. edc_navbar/view_mixin.py +40 -0
  1821. edc_navbar/wsgi.py +16 -0
  1822. edc_notification/__init__.py +0 -0
  1823. edc_notification/admin.py +14 -0
  1824. edc_notification/admin_site.py +7 -0
  1825. edc_notification/apps.py +16 -0
  1826. edc_notification/auth_objects.py +7 -0
  1827. edc_notification/auths.py +12 -0
  1828. edc_notification/constants.py +3 -0
  1829. edc_notification/decorators.py +21 -0
  1830. edc_notification/mailing_list_manager.py +185 -0
  1831. edc_notification/management/commands/list_recipients_by_notification.py +15 -0
  1832. edc_notification/migrations/0001_initial.py +93 -0
  1833. edc_notification/migrations/0002_update_notifications.py +15 -0
  1834. edc_notification/migrations/0003_auto_20181111_2336.py +12 -0
  1835. edc_notification/migrations/0004_auto_20190305_0123.py +56 -0
  1836. edc_notification/migrations/0005_notification_mailing_list_address.py +20 -0
  1837. edc_notification/migrations/0006_auto_20200513_0023.py +27 -0
  1838. edc_notification/migrations/0007_alter_notification_options.py +28 -0
  1839. edc_notification/migrations/0008_alter_notification_device_created_and_more.py +49 -0
  1840. edc_notification/migrations/0009_alter_notification_options_and_more.py +63 -0
  1841. edc_notification/migrations/__init__.py +0 -0
  1842. edc_notification/model_mixins/__init__.py +2 -0
  1843. edc_notification/model_mixins/notification_model_mixin.py +10 -0
  1844. edc_notification/model_mixins/notification_user_profile_model_mixin.py +22 -0
  1845. edc_notification/modeladmin_mixins.py +53 -0
  1846. edc_notification/models/__init__.py +3 -0
  1847. edc_notification/models/notification.py +34 -0
  1848. edc_notification/models/signals.py +68 -0
  1849. edc_notification/notification/__init__.py +5 -0
  1850. edc_notification/notification/graded_event_notification.py +19 -0
  1851. edc_notification/notification/model_notification.py +214 -0
  1852. edc_notification/notification/new_model_notification.py +6 -0
  1853. edc_notification/notification/notification.py +335 -0
  1854. edc_notification/notification/updated_model_notification.py +14 -0
  1855. edc_notification/post_migrate_signals.py +5 -0
  1856. edc_notification/site_notifications.py +229 -0
  1857. edc_notification/stubs.py +39 -0
  1858. edc_notification/system_checks.py +48 -0
  1859. edc_notification/update_mailing_lists_in_m2m.py +59 -0
  1860. edc_notification/urls.py +12 -0
  1861. edc_notification/utils.py +15 -0
  1862. edc_offstudy/__init__.py +0 -0
  1863. edc_offstudy/action_items.py +33 -0
  1864. edc_offstudy/admin.py +41 -0
  1865. edc_offstudy/admin_site.py +5 -0
  1866. edc_offstudy/apps.py +8 -0
  1867. edc_offstudy/auth_objects.py +10 -0
  1868. edc_offstudy/auths.py +17 -0
  1869. edc_offstudy/choices.py +11 -0
  1870. edc_offstudy/constants.py +7 -0
  1871. edc_offstudy/exceptions.py +6 -0
  1872. edc_offstudy/migrations/0001_initial.py +132 -0
  1873. edc_offstudy/migrations/0002_auto_20180921_0434.py +191 -0
  1874. edc_offstudy/migrations/0003_auto_20181108_0353.py +19 -0
  1875. edc_offstudy/migrations/0004_auto_20190114_0250.py +24 -0
  1876. edc_offstudy/migrations/0005_auto_20190305_0123.py +99 -0
  1877. edc_offstudy/migrations/0006_auto_20190922_0439.py +20 -0
  1878. edc_offstudy/migrations/0007_auto_20191024_1000.py +22 -0
  1879. edc_offstudy/migrations/0008_auto_20191102_0033.py +31 -0
  1880. edc_offstudy/migrations/0009_auto_20200513_0023.py +27 -0
  1881. edc_offstudy/migrations/0010_auto_20220704_1841.py +26 -0
  1882. edc_offstudy/migrations/0011_auto_20220714_2136.py +40 -0
  1883. edc_offstudy/migrations/0012_rename_offstudy_reason_other_historicalsubjectoffstudy_other_offstudy_reason_and_more.py +72 -0
  1884. edc_offstudy/migrations/0013_alter_historicalsubjectoffstudy_options_and_more.py +41 -0
  1885. edc_offstudy/migrations/0014_auto_20220918_0508.py +32 -0
  1886. edc_offstudy/migrations/0015_auto_20220925_0032.py +142 -0
  1887. edc_offstudy/migrations/0016_auto_20220929_1742.py +31 -0
  1888. edc_offstudy/migrations/0017_alter_subjectoffstudy_options.py +30 -0
  1889. edc_offstudy/migrations/0018_alter_subjectoffstudy_managers.py +21 -0
  1890. edc_offstudy/migrations/0019_alter_historicalsubjectoffstudy_device_created_and_more.py +84 -0
  1891. edc_offstudy/migrations/0020_alter_subjectoffstudy_options_and_more.py +100 -0
  1892. edc_offstudy/migrations/0021_remove_historicalsubjectoffstudy_consent_model_and_more.py +52 -0
  1893. edc_offstudy/migrations/__init__.py +0 -0
  1894. edc_offstudy/model_mixins/__init__.py +3 -0
  1895. edc_offstudy/model_mixins/offstudy_crf_model_mixin.py +31 -0
  1896. edc_offstudy/model_mixins/offstudy_model_mixin.py +84 -0
  1897. edc_offstudy/model_mixins/offstudy_non_crf_model_mixin.py +35 -0
  1898. edc_offstudy/modelform_mixins/__init__.py +4 -0
  1899. edc_offstudy/modelform_mixins/crf/__init__.py +1 -0
  1900. edc_offstudy/modelform_mixins/crf/offstudy_crf_modelform_mixin.py +61 -0
  1901. edc_offstudy/modelform_mixins/offstudy_modelform_mixins.py +36 -0
  1902. edc_offstudy/modelform_mixins/prn/__init__.py +1 -0
  1903. edc_offstudy/modelform_mixins/prn/offstudy_non_crf_modelform_mixin.py +24 -0
  1904. edc_offstudy/modelform_mixins/requisition/__init__.py +1 -0
  1905. edc_offstudy/modelform_mixins/requisition/offstudy_requisition_modelform_mixin.py +7 -0
  1906. edc_offstudy/models.py +28 -0
  1907. edc_offstudy/offline_models.py +3 -0
  1908. edc_offstudy/templates/edc_offstudy/visit_schedule_row.html +5 -0
  1909. edc_offstudy/templatetags/__init__.py +0 -0
  1910. edc_offstudy/templatetags/edc_offstudy_extras.py +34 -0
  1911. edc_offstudy/urls.py +11 -0
  1912. edc_offstudy/utils.py +61 -0
  1913. edc_pdf_reports/__init__.py +3 -0
  1914. edc_pdf_reports/admin/__init__.py +2 -0
  1915. edc_pdf_reports/admin/actions.py +17 -0
  1916. edc_pdf_reports/admin/modeladmin_mixins.py +27 -0
  1917. edc_pdf_reports/apps.py +5 -0
  1918. edc_pdf_reports/crf_pdf_report.py +327 -0
  1919. edc_pdf_reports/flowables/__init__.py +3 -0
  1920. edc_pdf_reports/flowables/checkbox.py +29 -0
  1921. edc_pdf_reports/flowables/textbox.py +46 -0
  1922. edc_pdf_reports/flowables/textfield.py +43 -0
  1923. edc_pdf_reports/model_mixins.py +23 -0
  1924. edc_pdf_reports/numbered_canvas.py +55 -0
  1925. edc_pdf_reports/report.py +212 -0
  1926. edc_pdf_reports/static/edc_pdf_reports/clinicedc_logo.jpg +0 -0
  1927. edc_pdf_reports/templates/edc_pdf_reports/pdf_button.html +1 -0
  1928. edc_pdf_reports/templates/edc_pdf_reports/pdf_intermediate_edc.html +30 -0
  1929. edc_pdf_reports/templates/edc_pdf_reports/pdf_intermediate_generic.html +30 -0
  1930. edc_pdf_reports/urls.py +23 -0
  1931. edc_pdf_reports/utils.py +64 -0
  1932. edc_pdf_reports/views/__init__.py +2 -0
  1933. edc_pdf_reports/views/pdf_intermediate_view.py +68 -0
  1934. edc_pdf_reports/views/print_pdf_report_view.py +109 -0
  1935. edc_pdutils/__init__.py +0 -0
  1936. edc_pdutils/actions.py +34 -0
  1937. edc_pdutils/admin_site.py +5 -0
  1938. edc_pdutils/apps.py +10 -0
  1939. edc_pdutils/choices.py +8 -0
  1940. edc_pdutils/column_handlers/__init__.py +2 -0
  1941. edc_pdutils/column_handlers/column_apply.py +17 -0
  1942. edc_pdutils/column_handlers/column_map.py +22 -0
  1943. edc_pdutils/constants.py +38 -0
  1944. edc_pdutils/database.py +129 -0
  1945. edc_pdutils/dataframes/__init__.py +6 -0
  1946. edc_pdutils/dataframes/get_appointments.py +69 -0
  1947. edc_pdutils/dataframes/get_crf.py +131 -0
  1948. edc_pdutils/dataframes/get_eos.py +42 -0
  1949. edc_pdutils/dataframes/get_next_appointments.py +28 -0
  1950. edc_pdutils/dataframes/get_subject_consent.py +60 -0
  1951. edc_pdutils/dataframes/get_subject_visit.py +147 -0
  1952. edc_pdutils/df_exporters/__init__.py +6 -0
  1953. edc_pdutils/df_exporters/csv_crf_inline_tables_exporter.py +83 -0
  1954. edc_pdutils/df_exporters/csv_crf_tables_exporter.py +35 -0
  1955. edc_pdutils/df_exporters/csv_exporter.py +280 -0
  1956. edc_pdutils/df_exporters/csv_model_exporter.py +52 -0
  1957. edc_pdutils/df_exporters/csv_noncrf_tables_exporter.py +24 -0
  1958. edc_pdutils/df_exporters/tables_exporter.py +133 -0
  1959. edc_pdutils/df_handlers/__init__.py +3 -0
  1960. edc_pdutils/df_handlers/crf_df_handler.py +88 -0
  1961. edc_pdutils/df_handlers/df_handler.py +69 -0
  1962. edc_pdutils/df_handlers/non_crf_df_handler.py +22 -0
  1963. edc_pdutils/df_handlers/registered_subject_df_handler.py +63 -0
  1964. edc_pdutils/dialects/__init__.py +3 -0
  1965. edc_pdutils/dialects/crf_dialect.py +73 -0
  1966. edc_pdutils/dialects/mysql_dialect.py +90 -0
  1967. edc_pdutils/dialects/rs_dialect.py +16 -0
  1968. edc_pdutils/helper.py +53 -0
  1969. edc_pdutils/management/__init__.py +0 -0
  1970. edc_pdutils/management/commands/__init__.py +0 -0
  1971. edc_pdutils/management/commands/export_models.py +281 -0
  1972. edc_pdutils/mappings.py +3 -0
  1973. edc_pdutils/migrations/0001_initial.py +310 -0
  1974. edc_pdutils/migrations/0002_auto_20180921_2242.py +15 -0
  1975. edc_pdutils/migrations/__init__.py +0 -0
  1976. edc_pdutils/models.py +0 -0
  1977. edc_pdutils/site.py +95 -0
  1978. edc_pdutils/site_values_mappings.py +101 -0
  1979. edc_pdutils/table_to_dataframe/__init__.py +2 -0
  1980. edc_pdutils/table_to_dataframe/helper.py +31 -0
  1981. edc_pdutils/table_to_dataframe/table_to_dataframe.py +27 -0
  1982. edc_pdutils/tables/__init__.py +4 -0
  1983. edc_pdutils/tables/aliquot.py +102 -0
  1984. edc_pdutils/tables/consent.py +48 -0
  1985. edc_pdutils/tables/crf.py +75 -0
  1986. edc_pdutils/tables/requisition.py +77 -0
  1987. edc_pdutils/tables/table.py +35 -0
  1988. edc_pdutils/tables/visit.py +37 -0
  1989. edc_pdutils/urls.py +11 -0
  1990. edc_pdutils/utils/__init__.py +14 -0
  1991. edc_pdutils/utils/convert_dates_from_model.py +36 -0
  1992. edc_pdutils/utils/convert_numbers_to_float64_int64.py +12 -0
  1993. edc_pdutils/utils/convert_numbers_to_nullable_dtype.py +12 -0
  1994. edc_pdutils/utils/convert_numerics_from_model.py +15 -0
  1995. edc_pdutils/utils/convert_timedelta_from_model.py +15 -0
  1996. edc_pdutils/utils/datetime_to_date.py +9 -0
  1997. edc_pdutils/utils/decrypt.py +24 -0
  1998. edc_pdutils/utils/get_export_folder.py +9 -0
  1999. edc_pdutils/utils/identity256.py +26 -0
  2000. edc_pdutils/utils/missing_subject_identifiers.py +50 -0
  2001. edc_pdutils/utils/model_from_table_name.py +5 -0
  2002. edc_pdutils/utils/refresh_model_from_dataframe.py +19 -0
  2003. edc_pdutils/utils/table_names.py +59 -0
  2004. edc_pdutils/utils/undash.py +16 -0
  2005. edc_pharmacy/__init__.py +0 -0
  2006. edc_pharmacy/action_items.py +27 -0
  2007. edc_pharmacy/admin/__init__.py +39 -0
  2008. edc_pharmacy/admin/actions/__init__.py +25 -0
  2009. edc_pharmacy/admin/actions/allocate_stock_to_subject.py +27 -0
  2010. edc_pharmacy/admin/actions/confirm_stock.py +88 -0
  2011. edc_pharmacy/admin/actions/delete_items_for_stock_request.py +21 -0
  2012. edc_pharmacy/admin/actions/delete_order_items.py +38 -0
  2013. edc_pharmacy/admin/actions/delete_receive_items.py +35 -0
  2014. edc_pharmacy/admin/actions/go_to_add_repack_request.py +29 -0
  2015. edc_pharmacy/admin/actions/go_to_allocations.py +19 -0
  2016. edc_pharmacy/admin/actions/go_to_stock.py +19 -0
  2017. edc_pharmacy/admin/actions/prepare_stock_request_items.py +47 -0
  2018. edc_pharmacy/admin/actions/print_labels.py +172 -0
  2019. edc_pharmacy/admin/actions/print_stock_labels.py +41 -0
  2020. edc_pharmacy/admin/actions/print_stock_report.py +20 -0
  2021. edc_pharmacy/admin/actions/print_transfer_stock_manifest.py +23 -0
  2022. edc_pharmacy/admin/actions/process_repack_request.py +76 -0
  2023. edc_pharmacy/admin/actions/storage_bin.py +35 -0
  2024. edc_pharmacy/admin/actions/transfer_stock.py +23 -0
  2025. edc_pharmacy/admin/autocomplete_admin.py +17 -0
  2026. edc_pharmacy/admin/list_filters.py +456 -0
  2027. edc_pharmacy/admin/medication/__init__.py +8 -0
  2028. edc_pharmacy/admin/medication/assignment_admin.py +45 -0
  2029. edc_pharmacy/admin/medication/dosage_guideline_admin.py +38 -0
  2030. edc_pharmacy/admin/medication/formulation_admin.py +75 -0
  2031. edc_pharmacy/admin/medication/formulation_type_admin.py +11 -0
  2032. edc_pharmacy/admin/medication/frequency_units_admin.py +11 -0
  2033. edc_pharmacy/admin/medication/medication_admin.py +30 -0
  2034. edc_pharmacy/admin/medication/route_admin.py +11 -0
  2035. edc_pharmacy/admin/medication/units_admin.py +11 -0
  2036. edc_pharmacy/admin/model_admin_mixin.py +56 -0
  2037. edc_pharmacy/admin/prescription/__init__.py +2 -0
  2038. edc_pharmacy/admin/prescription/rx_admin.py +98 -0
  2039. edc_pharmacy/admin/prescription/rx_refill_admin.py +198 -0
  2040. edc_pharmacy/admin/remove_fields_for_blinded_users.py +23 -0
  2041. edc_pharmacy/admin/reports/__init__.py +1 -0
  2042. edc_pharmacy/admin/reports/stock_availability_admin.py +129 -0
  2043. edc_pharmacy/admin/scan_duplicates_admin.py +29 -0
  2044. edc_pharmacy/admin/stock/__init__.py +27 -0
  2045. edc_pharmacy/admin/stock/allocation_admin.py +237 -0
  2046. edc_pharmacy/admin/stock/allocation_proxy_admin.py +35 -0
  2047. edc_pharmacy/admin/stock/confirmation_admin.py +87 -0
  2048. edc_pharmacy/admin/stock/confirmation_at_site_admin.py +114 -0
  2049. edc_pharmacy/admin/stock/confirmation_at_site_item_admin.py +131 -0
  2050. edc_pharmacy/admin/stock/container_admin.py +111 -0
  2051. edc_pharmacy/admin/stock/container_type_admin.py +14 -0
  2052. edc_pharmacy/admin/stock/container_units_admin.py +14 -0
  2053. edc_pharmacy/admin/stock/dispense_admin.py +114 -0
  2054. edc_pharmacy/admin/stock/dispense_item_admin.py +117 -0
  2055. edc_pharmacy/admin/stock/location_admin.py +51 -0
  2056. edc_pharmacy/admin/stock/lot_admin.py +130 -0
  2057. edc_pharmacy/admin/stock/order_admin.py +129 -0
  2058. edc_pharmacy/admin/stock/order_item_admin.py +261 -0
  2059. edc_pharmacy/admin/stock/product_admin.py +82 -0
  2060. edc_pharmacy/admin/stock/receive_admin.py +132 -0
  2061. edc_pharmacy/admin/stock/receive_item_admin.py +174 -0
  2062. edc_pharmacy/admin/stock/repack_request_admin.py +195 -0
  2063. edc_pharmacy/admin/stock/stock_adjustment_admin.py +83 -0
  2064. edc_pharmacy/admin/stock/stock_admin.py +473 -0
  2065. edc_pharmacy/admin/stock/stock_proxy_admin.py +120 -0
  2066. edc_pharmacy/admin/stock/stock_request_admin.py +273 -0
  2067. edc_pharmacy/admin/stock/stock_request_item_admin.py +231 -0
  2068. edc_pharmacy/admin/stock/stock_transfer_admin.py +170 -0
  2069. edc_pharmacy/admin/stock/stock_transfer_item_admin.py +181 -0
  2070. edc_pharmacy/admin/stock/storage_bin_admin.py +112 -0
  2071. edc_pharmacy/admin/stock/storage_bin_item_admin.py +120 -0
  2072. edc_pharmacy/admin/stock/supplier_admin.py +71 -0
  2073. edc_pharmacy/admin/utils.py +17 -0
  2074. edc_pharmacy/admin_mixin.py +24 -0
  2075. edc_pharmacy/admin_site.py +8 -0
  2076. edc_pharmacy/analytics/__init__.py +5 -0
  2077. edc_pharmacy/analytics/dataframes/__init__.py +6 -0
  2078. edc_pharmacy/analytics/dataframes/get_next_scheduled_visit_for_subjects_df.py +130 -0
  2079. edc_pharmacy/analytics/dataframes/in_stock_for_subjects_df.py +78 -0
  2080. edc_pharmacy/analytics/dataframes/no_stock_for_subjects_df.py +9 -0
  2081. edc_pharmacy/analytics/dataframes/stock_for_subjects.py +116 -0
  2082. edc_pharmacy/approve_prescription.py +19 -0
  2083. edc_pharmacy/apps.py +8 -0
  2084. edc_pharmacy/auth_objects.py +95 -0
  2085. edc_pharmacy/auths.py +38 -0
  2086. edc_pharmacy/choices.py +46 -0
  2087. edc_pharmacy/constants.py +21 -0
  2088. edc_pharmacy/dosage_calculator.py +73 -0
  2089. edc_pharmacy/dosage_per_day.py +11 -0
  2090. edc_pharmacy/exceptions.py +142 -0
  2091. edc_pharmacy/form_validators/__init__.py +1 -0
  2092. edc_pharmacy/form_validators/crf/__init__.py +1 -0
  2093. edc_pharmacy/form_validators/crf/study_medication_form_validator.py +198 -0
  2094. edc_pharmacy/forms/__init__.py +24 -0
  2095. edc_pharmacy/forms/medication/__init__.py +3 -0
  2096. edc_pharmacy/forms/medication/dosage_guideline_form.py +17 -0
  2097. edc_pharmacy/forms/medication/formulation_form.py +9 -0
  2098. edc_pharmacy/forms/medication/medication_form.py +9 -0
  2099. edc_pharmacy/forms/prescription/__init__.py +2 -0
  2100. edc_pharmacy/forms/prescription/rx_form.py +30 -0
  2101. edc_pharmacy/forms/prescription/rx_refill_form.py +9 -0
  2102. edc_pharmacy/forms/stock/__init__.py +20 -0
  2103. edc_pharmacy/forms/stock/confirmation_form.py +13 -0
  2104. edc_pharmacy/forms/stock/container_form.py +30 -0
  2105. edc_pharmacy/forms/stock/container_type_form.py +10 -0
  2106. edc_pharmacy/forms/stock/container_units_form.py +10 -0
  2107. edc_pharmacy/forms/stock/dispense_form.py +13 -0
  2108. edc_pharmacy/forms/stock/location_form.py +21 -0
  2109. edc_pharmacy/forms/stock/lot_form.py +20 -0
  2110. edc_pharmacy/forms/stock/order_form.py +38 -0
  2111. edc_pharmacy/forms/stock/order_item_form.py +9 -0
  2112. edc_pharmacy/forms/stock/product_form.py +23 -0
  2113. edc_pharmacy/forms/stock/receive_form.py +32 -0
  2114. edc_pharmacy/forms/stock/receive_item_form.py +61 -0
  2115. edc_pharmacy/forms/stock/repack_request_form.py +71 -0
  2116. edc_pharmacy/forms/stock/stock_form.py +20 -0
  2117. edc_pharmacy/forms/stock/stock_request_form.py +119 -0
  2118. edc_pharmacy/forms/stock/stock_request_item_form.py +31 -0
  2119. edc_pharmacy/forms/stock/stock_transfer_form.py +32 -0
  2120. edc_pharmacy/forms/stock/storage_bin_form.py +27 -0
  2121. edc_pharmacy/forms/stock/storage_bin_item_form.py +10 -0
  2122. edc_pharmacy/forms/stock/supplier_form.py +13 -0
  2123. edc_pharmacy/labels/__init__.py +6 -0
  2124. edc_pharmacy/labels/draw_bulk_stock_label_code128.py +58 -0
  2125. edc_pharmacy/labels/draw_bulk_stock_label_code39.py +40 -0
  2126. edc_pharmacy/labels/draw_label_watermark.py +20 -0
  2127. edc_pharmacy/labels/draw_patient_stock_label_code128.py +46 -0
  2128. edc_pharmacy/labels/draw_vertical_barcode_only_code128.py +51 -0
  2129. edc_pharmacy/labels/label_data.py +15 -0
  2130. edc_pharmacy/list_data.py +54 -0
  2131. edc_pharmacy/locale/lg/LC_MESSAGES/django.po +156 -0
  2132. edc_pharmacy/locale/sw/LC_MESSAGES/django.po +162 -0
  2133. edc_pharmacy/management/__init__.py +0 -0
  2134. edc_pharmacy/management/commands/__init__.py +0 -0
  2135. edc_pharmacy/management/commands/update_initial_pharmacy_data.py +10 -0
  2136. edc_pharmacy/migrations/0001_initial.py +4345 -0
  2137. edc_pharmacy/migrations/0002_alter_medication_unique_together.py +16 -0
  2138. edc_pharmacy/migrations/0003_alter_rxrefill_unique_together.py +19 -0
  2139. edc_pharmacy/migrations/0004_auto_20220414_1741.py +57 -0
  2140. edc_pharmacy/migrations/0005_alter_rx_managers.py +24 -0
  2141. edc_pharmacy/migrations/0006_historicalrxrefill_roundup_divisible_by_and_more.py +22 -0
  2142. edc_pharmacy/migrations/0007_auto_20220704_1841.py +194 -0
  2143. edc_pharmacy/migrations/0008_auto_20220706_2324.py +116 -0
  2144. edc_pharmacy/migrations/0009_auto_20220708_0805.py +59 -0
  2145. edc_pharmacy/migrations/0010_auto_20220708_0813.py +62 -0
  2146. edc_pharmacy/migrations/0011_auto_20220826_0406.py +22 -0
  2147. edc_pharmacy/migrations/0012_auto_20220907_0157.py +45 -0
  2148. edc_pharmacy/migrations/0013_auto_20220907_0202.py +41 -0
  2149. edc_pharmacy/migrations/0014_auto_20220907_0207.py +30 -0
  2150. edc_pharmacy/migrations/0015_auto_20220913_2139.py +1355 -0
  2151. edc_pharmacy/migrations/0016_auto_20220929_1742.py +27 -0
  2152. edc_pharmacy/migrations/0017_alter_box_options_alter_dispensinghistory_options_and_more.py +390 -0
  2153. edc_pharmacy/migrations/0018_alter_rxrefill_managers.py +25 -0
  2154. edc_pharmacy/migrations/0019_container_extra_value_containertype_extra_value_and_more.py +47 -0
  2155. edc_pharmacy/migrations/0020_alter_box_device_created_alter_box_device_modified_and_more.py +1242 -0
  2156. edc_pharmacy/migrations/0021_alter_box_options_alter_container_options_and_more.py +1854 -0
  2157. edc_pharmacy/migrations/0022_alter_historicalproduct_site_alter_historicalrx_site_and_more.py +102 -0
  2158. edc_pharmacy/migrations/0023_remove_rx_edc_pharmac_modifie_986021_idx_and_more.py +32 -0
  2159. edc_pharmacy/migrations/0024_allocation_assignment_containerunits_dispense_and_more.py +6835 -0
  2160. edc_pharmacy/migrations/0025_alter_stock_receive_item.py +23 -0
  2161. edc_pharmacy/migrations/0026_historicalstockrequest_cutoff_datetime_and_more.py +27 -0
  2162. edc_pharmacy/migrations/0027_rename_at_location_historicalstock_transferred_and_more.py +23 -0
  2163. edc_pharmacy/migrations/0028_remove_historicalstock_transferred_and_more.py +24 -0
  2164. edc_pharmacy/migrations/0029_remove_historicalrepackrequest_qty_and_more.py +41 -0
  2165. edc_pharmacy/migrations/0030_remove_historicalrepackrequest_processed_and_more.py +41 -0
  2166. edc_pharmacy/migrations/0031_historicalrepackrequest_task_id_and_more.py +67 -0
  2167. edc_pharmacy/migrations/0032_historicalstockrequest_task_id_stockrequest_task_id.py +23 -0
  2168. edc_pharmacy/migrations/0033_container_display_name_and_more.py +25 -0
  2169. edc_pharmacy/migrations/0034_rename_display_label_assignment_display_name_and_more.py +23 -0
  2170. edc_pharmacy/migrations/0035_container_max_per_subject_and_more.py +27 -0
  2171. edc_pharmacy/migrations/0036_historicalstock_confirmed_at_site_and_more.py +53 -0
  2172. edc_pharmacy/migrations/0037_remove_historicalstock_confirmed_at_site_by_and_more.py +349 -0
  2173. edc_pharmacy/migrations/0038_historicalstocktransferconfirmation_transfer_confirmation_identifier_and_more.py +35 -0
  2174. edc_pharmacy/migrations/0039_remove_dispense_registered_subject_and_more.py +448 -0
  2175. edc_pharmacy/migrations/0040_historicalstock_dispensed_stock_dispensed.py +23 -0
  2176. edc_pharmacy/migrations/0041_alter_dispenseitem_dispense_and_more.py +37 -0
  2177. edc_pharmacy/migrations/0042_remove_historicaldispensinghistory_history_user_and_more.py +49 -0
  2178. edc_pharmacy/migrations/0043_stockproxy_alter_historicallot_lot_no_and_more.py +40 -0
  2179. edc_pharmacy/migrations/0044_location_contact_email_location_contact_name_and_more.py +28 -0
  2180. edc_pharmacy/migrations/0045_historicallot_manufacture_date_and_more.py +106 -0
  2181. edc_pharmacy/migrations/0046_remove_historicalrx_slug_remove_rx_slug.py +21 -0
  2182. edc_pharmacy/migrations/0047_historicalstockrequest_cancel_stockrequest_cancel_and_more.py +59 -0
  2183. edc_pharmacy/migrations/0048_historicalorderitem_unit_qty_ordered_and_more.py +68 -0
  2184. edc_pharmacy/migrations/0049_remove_stocktransferconfirmation_stock_and_more.py +769 -0
  2185. edc_pharmacy/migrations/0050_remove_stocktransferconfirmation2_location_and_more.py +433 -0
  2186. edc_pharmacy/migrations/0051_alter_historicalstocktransferconfirmationitem_options_and_more.py +87 -0
  2187. edc_pharmacy/migrations/0052_formulation_imp_formulation_imp_description_and_more.py +36 -0
  2188. edc_pharmacy/migrations/0053_alter_location_managers_alter_historicalstock_lot_and_more.py +268 -0
  2189. edc_pharmacy/migrations/0054_historicalreceiveitem_task_id_receiveitem_task_id.py +26 -0
  2190. edc_pharmacy/migrations/0055_historicalreceiveitem_comment_and_more.py +33 -0
  2191. edc_pharmacy/migrations/0056_rename_manufacture_date_historicallot_manufactured_date_and_more.py +83 -0
  2192. edc_pharmacy/migrations/0057_scanduplicates.py +160 -0
  2193. edc_pharmacy/migrations/0058_stockrequestproxy_alter_stockproxy_options.py +33 -0
  2194. edc_pharmacy/migrations/0059_delete_stockrequestproxy.py +16 -0
  2195. edc_pharmacy/migrations/0060_alter_container_max_per_subject_and_more.py +751 -0
  2196. edc_pharmacy/migrations/0061_alter_historicalstocktransferconfirmation_options_and_more.py +274 -0
  2197. edc_pharmacy/migrations/0062_auto_20250312_1433.py +59 -0
  2198. edc_pharmacy/migrations/0063_alter_allocation_managers_remove_allocation_site_and_more.py +28 -0
  2199. edc_pharmacy/migrations/0064_historicalstockrequest_start_datetime_and_more.py +56 -0
  2200. edc_pharmacy/migrations/0065_allocationproxy.py +29 -0
  2201. edc_pharmacy/migrations/0066_historicalstock_stored_at_site_stock_stored_at_site.py +23 -0
  2202. edc_pharmacy/migrations/0067_auto_20250314_1547.py +21 -0
  2203. edc_pharmacy/migrations/0068_stockout.py +58 -0
  2204. edc_pharmacy/migrations/0069_alter_historicalstoragebin_capacity_and_more.py +50 -0
  2205. edc_pharmacy/migrations/0070_stockout_codes.py +18 -0
  2206. edc_pharmacy/migrations/0071_alter_stockout_codes.py +18 -0
  2207. edc_pharmacy/migrations/0072_stockout_bins.py +18 -0
  2208. edc_pharmacy/migrations/0073_alter_stockout_options.py +21 -0
  2209. edc_pharmacy/migrations/0074_rename_stockout_stockavailability_and_more.py +23 -0
  2210. edc_pharmacy/migrations/0075_remove_historicalstockrequestitem_in_stock_and_more.py +37 -0
  2211. edc_pharmacy/migrations/0076_historicalstockadjustment_stockadjustment.py +338 -0
  2212. edc_pharmacy/migrations/0077_historicalstockadjustment_adjustment_datetime_and_more.py +24 -0
  2213. edc_pharmacy/migrations/0078_alter_historicalstock_qty_and_more.py +139 -0
  2214. edc_pharmacy/migrations/0079_remove_historicalstock_allocated_and_more.py +21 -0
  2215. edc_pharmacy/migrations/0080_remove_historicalstock_allocated_datetime_and_more.py +65 -0
  2216. edc_pharmacy/migrations/0081_historicalconfirmation_confirmation.py +382 -0
  2217. edc_pharmacy/migrations/0082_alter_confirmation_managers_remove_confirmation_site_and_more.py +29 -0
  2218. edc_pharmacy/migrations/0083_auto_20250707_1820.py +33 -0
  2219. edc_pharmacy/migrations/0084_confirmationatsiteitem_and_more.py +46 -0
  2220. edc_pharmacy/migrations/0085_alter_confirmationatsite_options_and_more.py +147 -0
  2221. edc_pharmacy/migrations/0086_auto_20250708_2337.py +31 -0
  2222. edc_pharmacy/migrations/0087_alter_storagebinitem_stock.py +27 -0
  2223. edc_pharmacy/migrations/__init__.py +0 -0
  2224. edc_pharmacy/model_mixins/__init__.py +4 -0
  2225. edc_pharmacy/model_mixins/medication_order_model_mixin.py +25 -0
  2226. edc_pharmacy/model_mixins/previous_model_mixin.py +81 -0
  2227. edc_pharmacy/model_mixins/study_medication_crf_model_mixin.py +130 -0
  2228. edc_pharmacy/model_mixins/study_medication_refill_model_mixin.py +73 -0
  2229. edc_pharmacy/models/__init__.py +70 -0
  2230. edc_pharmacy/models/edc_permissions.py +9 -0
  2231. edc_pharmacy/models/medication/__init__.py +8 -0
  2232. edc_pharmacy/models/medication/assignment.py +37 -0
  2233. edc_pharmacy/models/medication/dosage_guideline.py +93 -0
  2234. edc_pharmacy/models/medication/formulation.py +114 -0
  2235. edc_pharmacy/models/medication/formulation_type.py +7 -0
  2236. edc_pharmacy/models/medication/frequency_units.py +7 -0
  2237. edc_pharmacy/models/medication/medication.py +46 -0
  2238. edc_pharmacy/models/medication/route.py +7 -0
  2239. edc_pharmacy/models/medication/units.py +7 -0
  2240. edc_pharmacy/models/model_mixins.py +32 -0
  2241. edc_pharmacy/models/prescription/__init__.py +2 -0
  2242. edc_pharmacy/models/prescription/rx.py +149 -0
  2243. edc_pharmacy/models/prescription/rx_refill.py +204 -0
  2244. edc_pharmacy/models/proxy_models.py +21 -0
  2245. edc_pharmacy/models/reports/__init__.py +1 -0
  2246. edc_pharmacy/models/reports/stock_availability.py +25 -0
  2247. edc_pharmacy/models/scan_duplicates.py +21 -0
  2248. edc_pharmacy/models/signals.py +293 -0
  2249. edc_pharmacy/models/stock/__init__.py +28 -0
  2250. edc_pharmacy/models/stock/allocation.py +84 -0
  2251. edc_pharmacy/models/stock/allocation_proxy.py +10 -0
  2252. edc_pharmacy/models/stock/confirmation.py +55 -0
  2253. edc_pharmacy/models/stock/confirmation_at_site.py +57 -0
  2254. edc_pharmacy/models/stock/confirmation_at_site_item.py +63 -0
  2255. edc_pharmacy/models/stock/container.py +81 -0
  2256. edc_pharmacy/models/stock/container_type.py +13 -0
  2257. edc_pharmacy/models/stock/container_units.py +23 -0
  2258. edc_pharmacy/models/stock/dispense.py +60 -0
  2259. edc_pharmacy/models/stock/dispense_item.py +57 -0
  2260. edc_pharmacy/models/stock/location.py +46 -0
  2261. edc_pharmacy/models/stock/lot.py +66 -0
  2262. edc_pharmacy/models/stock/managers.py +50 -0
  2263. edc_pharmacy/models/stock/order.py +68 -0
  2264. edc_pharmacy/models/stock/order_item.py +91 -0
  2265. edc_pharmacy/models/stock/product.py +53 -0
  2266. edc_pharmacy/models/stock/receive.py +73 -0
  2267. edc_pharmacy/models/stock/receive_item.py +122 -0
  2268. edc_pharmacy/models/stock/repack_request.py +101 -0
  2269. edc_pharmacy/models/stock/stock.py +227 -0
  2270. edc_pharmacy/models/stock/stock_adjustment.py +64 -0
  2271. edc_pharmacy/models/stock/stock_proxy.py +10 -0
  2272. edc_pharmacy/models/stock/stock_request.py +167 -0
  2273. edc_pharmacy/models/stock/stock_request_item.py +91 -0
  2274. edc_pharmacy/models/stock/stock_transfer.py +115 -0
  2275. edc_pharmacy/models/stock/stock_transfer_item.py +62 -0
  2276. edc_pharmacy/models/stock/storage_bin.py +58 -0
  2277. edc_pharmacy/models/stock/storage_bin_item.py +52 -0
  2278. edc_pharmacy/models/stock/supplier.py +41 -0
  2279. edc_pharmacy/models/storage/__init__.py +5 -0
  2280. edc_pharmacy/models/storage/box.py +27 -0
  2281. edc_pharmacy/models/storage/items/__init__.py +4 -0
  2282. edc_pharmacy/models/storage/items/container_model_mixin.py +37 -0
  2283. edc_pharmacy/models/storage/items/generic_container.py +9 -0
  2284. edc_pharmacy/models/storage/items/pill_bottle.py +7 -0
  2285. edc_pharmacy/models/storage/items/pill_bottle_model_mixin.py +44 -0
  2286. edc_pharmacy/models/storage/items/subject_pill_bottle.py +18 -0
  2287. edc_pharmacy/models/storage/room.py +27 -0
  2288. edc_pharmacy/models/storage/shelf.py +27 -0
  2289. edc_pharmacy/models/storage/unit_type.py +11 -0
  2290. edc_pharmacy/models/storage/utils.py +90 -0
  2291. edc_pharmacy/navbars.py +15 -0
  2292. edc_pharmacy/offline_models.py +3 -0
  2293. edc_pharmacy/pdf_reports/__init__.py +2 -0
  2294. edc_pharmacy/pdf_reports/manifest_pdf_report.py +303 -0
  2295. edc_pharmacy/pdf_reports/stock_pdf_report.py +215 -0
  2296. edc_pharmacy/prescribe/__init__.py +1 -0
  2297. edc_pharmacy/prescribe/create_prescription.py +59 -0
  2298. edc_pharmacy/refill/__init__.py +8 -0
  2299. edc_pharmacy/refill/activate_refill.py +16 -0
  2300. edc_pharmacy/refill/adjust_previous_end_datetime.py +32 -0
  2301. edc_pharmacy/refill/create_next_refill.py +40 -0
  2302. edc_pharmacy/refill/create_refill.py +60 -0
  2303. edc_pharmacy/refill/crf/__init__.py +2 -0
  2304. edc_pharmacy/refill/crf/create_refills_from_crf.py +28 -0
  2305. edc_pharmacy/refill/crf/delete_next_refills_for_crf.py +14 -0
  2306. edc_pharmacy/refill/deactivate_refill.py +6 -0
  2307. edc_pharmacy/refill/get_active_refill.py +31 -0
  2308. edc_pharmacy/refill/refill_creator.py +188 -0
  2309. edc_pharmacy/sample_usb_printing/__init__.py +0 -0
  2310. edc_pharmacy/sample_usb_printing/network_printers.py +53 -0
  2311. edc_pharmacy/sample_usb_printing/sample.html +22 -0
  2312. edc_pharmacy/sample_usb_printing/urls.py +5 -0
  2313. edc_pharmacy/sample_usb_printing/usb_printing.py +57 -0
  2314. edc_pharmacy/settings.py +149 -0
  2315. edc_pharmacy/static/edc_pharmacy/js/edc_pharma.js +41 -0
  2316. edc_pharmacy/static/edc_pharmacy/label_templates/dispense_label_capsule.lbl +12 -0
  2317. edc_pharmacy/static/edc_pharmacy/label_templates/dispense_label_iv.lbl +22 -0
  2318. edc_pharmacy/static/edc_pharmacy/label_templates/dispense_label_suppositories.lbl +12 -0
  2319. edc_pharmacy/static/edc_pharmacy/label_templates/dispense_label_syrup.lbl +12 -0
  2320. edc_pharmacy/static/edc_pharmacy/label_templates/dispense_label_tablet.lbl +7 -0
  2321. edc_pharmacy/static/edc_pharmacy/label_templates/medication_stock_label.lbl +7 -0
  2322. edc_pharmacy/static/edc_pharmacy/label_templates/rando_pharmacy_label.lbl +7 -0
  2323. edc_pharmacy/templates/edc_pharmacy/central_home.html +24 -0
  2324. edc_pharmacy/templates/edc_pharmacy/clinic_home.html +22 -0
  2325. edc_pharmacy/templates/edc_pharmacy/duration.html +5 -0
  2326. edc_pharmacy/templates/edc_pharmacy/home.html +29 -0
  2327. edc_pharmacy/templates/edc_pharmacy/medication/lot_button.html +1 -0
  2328. edc_pharmacy/templates/edc_pharmacy/rx_refill_description.html +7 -0
  2329. edc_pharmacy/templates/edc_pharmacy/site_home.html +29 -0
  2330. edc_pharmacy/templates/edc_pharmacy/stock/add_to_storage_bin.html +48 -0
  2331. edc_pharmacy/templates/edc_pharmacy/stock/allocate_to_subject.html +64 -0
  2332. edc_pharmacy/templates/edc_pharmacy/stock/confirm_stock_by_instance.html +48 -0
  2333. edc_pharmacy/templates/edc_pharmacy/stock/confirm_stock_by_queryset.html +62 -0
  2334. edc_pharmacy/templates/edc_pharmacy/stock/confirmation_at_site.html +136 -0
  2335. edc_pharmacy/templates/edc_pharmacy/stock/dispense.html +102 -0
  2336. edc_pharmacy/templates/edc_pharmacy/stock/instructions/repack_instructions.html +3 -0
  2337. edc_pharmacy/templates/edc_pharmacy/stock/items_as_button.html +3 -0
  2338. edc_pharmacy/templates/edc_pharmacy/stock/items_as_link.html +1 -0
  2339. edc_pharmacy/templates/edc_pharmacy/stock/print_labels.html +44 -0
  2340. edc_pharmacy/templates/edc_pharmacy/stock/return.html +92 -0
  2341. edc_pharmacy/templates/edc_pharmacy/stock/stock_request.html +71 -0
  2342. edc_pharmacy/templates/edc_pharmacy/stock/stock_request_links_column.html +6 -0
  2343. edc_pharmacy/templates/edc_pharmacy/stock/stock_request_product_column.html +2 -0
  2344. edc_pharmacy/templates/edc_pharmacy/stock/stock_request_status_column.html +12 -0
  2345. edc_pharmacy/templates/edc_pharmacy/stock/subject_list_display.html +3 -0
  2346. edc_pharmacy/templates/edc_pharmacy/stock/transfer_stock.html +58 -0
  2347. edc_pharmacy/templates/edc_pharmacy/stock/update_label_config_intermediate.html +28 -0
  2348. edc_pharmacy/templates/edc_pharmacy/task_status.html +31 -0
  2349. edc_pharmacy/urls.py +150 -0
  2350. edc_pharmacy/utils/__init__.py +45 -0
  2351. edc_pharmacy/utils/allocate_stock.py +102 -0
  2352. edc_pharmacy/utils/blinded_user.py +16 -0
  2353. edc_pharmacy/utils/confirm_stock.py +59 -0
  2354. edc_pharmacy/utils/confirm_stock_at_site.py +95 -0
  2355. edc_pharmacy/utils/create_new_stock_on_receive.py +20 -0
  2356. edc_pharmacy/utils/dispense.py +72 -0
  2357. edc_pharmacy/utils/format_qty.py +19 -0
  2358. edc_pharmacy/utils/get_codenames.py +27 -0
  2359. edc_pharmacy/utils/get_imp_schedule_names.py +14 -0
  2360. edc_pharmacy/utils/get_random_code.py +27 -0
  2361. edc_pharmacy/utils/get_related_or_none.py +10 -0
  2362. edc_pharmacy/utils/get_stock_for_location_df.py +54 -0
  2363. edc_pharmacy/utils/get_unit_qty_out.py +23 -0
  2364. edc_pharmacy/utils/miscellaneous.py +14 -0
  2365. edc_pharmacy/utils/process_repack_request.py +69 -0
  2366. edc_pharmacy/utils/process_repack_request_queryset.py +26 -0
  2367. edc_pharmacy/utils/stock_request/__init__.py +4 -0
  2368. edc_pharmacy/utils/stock_request/bulk_create_stock_request_items.py +73 -0
  2369. edc_pharmacy/utils/stock_request/get_instock_and_nostock_data.py +71 -0
  2370. edc_pharmacy/utils/stock_unit_qty_in_check.py +17 -0
  2371. edc_pharmacy/utils/transfer_stock.py +48 -0
  2372. edc_pharmacy/utils/update_previous_refill_end_datetime.py +26 -0
  2373. edc_pharmacy/utils/update_stock_instance.py +47 -0
  2374. edc_pharmacy/views/__init__.py +15 -0
  2375. edc_pharmacy/views/add_to_storage_bin_view.py +219 -0
  2376. edc_pharmacy/views/allocate_to_subject_view.py +401 -0
  2377. edc_pharmacy/views/auths_view_mixin.py +18 -0
  2378. edc_pharmacy/views/celery_task_status_view.py +17 -0
  2379. edc_pharmacy/views/confirm_stock_from_instance_view.py +122 -0
  2380. edc_pharmacy/views/confirm_stock_from_queryset_view.py +193 -0
  2381. edc_pharmacy/views/confirmation_at_site_view.py +303 -0
  2382. edc_pharmacy/views/dispense_view.py +137 -0
  2383. edc_pharmacy/views/get_stock_transfers_view.py +19 -0
  2384. edc_pharmacy/views/home_view.py +13 -0
  2385. edc_pharmacy/views/move_to_storage_bin_view.py +140 -0
  2386. edc_pharmacy/views/prepare_and_review_stock_request_view.py +239 -0
  2387. edc_pharmacy/views/print_labels_view.py +132 -0
  2388. edc_pharmacy/views/print_stock_transfer_manifest_view.py +34 -0
  2389. edc_pharmacy/views/print_stock_view.py +40 -0
  2390. edc_pharmacy/views/return_view.py +16 -0
  2391. edc_pharmacy/views/transfer_stock_view.py +96 -0
  2392. edc_prn/__init__.py +2 -0
  2393. edc_prn/apps.py +6 -0
  2394. edc_prn/modeladmin_mixins.py +28 -0
  2395. edc_prn/modelform_mixins.py +69 -0
  2396. edc_prn/models.py +27 -0
  2397. edc_prn/prn.py +90 -0
  2398. edc_prn/site_prn_forms.py +81 -0
  2399. edc_prn/templates/edc_prn/add_prn_popover.html +1 -0
  2400. edc_prn/templates/edc_prn/list_prns.html +9 -0
  2401. edc_prn/templatetags/__init__.py +0 -0
  2402. edc_prn/templatetags/edc_prn_extras.py +107 -0
  2403. edc_protocol/__init__.py +0 -0
  2404. edc_protocol/address.py +15 -0
  2405. edc_protocol/apps.py +30 -0
  2406. edc_protocol/locale/sw/LC_MESSAGES/django.po +22 -0
  2407. edc_protocol/middleware.py +25 -0
  2408. edc_protocol/navbars.py +15 -0
  2409. edc_protocol/research_protocol_config.py +190 -0
  2410. edc_protocol/system_checks.py +15 -0
  2411. edc_protocol/templates/edc_protocol/home.html +48 -0
  2412. edc_protocol/urls.py +7 -0
  2413. edc_protocol/validators.py +39 -0
  2414. edc_protocol/view_mixins.py +19 -0
  2415. edc_protocol/views.py +28 -0
  2416. edc_protocol_incident/__init__.py +0 -0
  2417. edc_protocol_incident/action_items.py +40 -0
  2418. edc_protocol_incident/admin/__init__.py +0 -0
  2419. edc_protocol_incident/admin/protocol_deviation_violation_admin.py +94 -0
  2420. edc_protocol_incident/admin/protocol_incident_admin.py +13 -0
  2421. edc_protocol_incident/admin_site.py +7 -0
  2422. edc_protocol_incident/apps.py +8 -0
  2423. edc_protocol_incident/auth_objects.py +26 -0
  2424. edc_protocol_incident/auths.py +39 -0
  2425. edc_protocol_incident/choices.py +17 -0
  2426. edc_protocol_incident/constants.py +8 -0
  2427. edc_protocol_incident/form_validators/__init__.py +4 -0
  2428. edc_protocol_incident/form_validators/mixins.py +54 -0
  2429. edc_protocol_incident/form_validators/protocol_deviation_violation_form_validator.py +53 -0
  2430. edc_protocol_incident/form_validators/protocol_incident_form_validator.py +45 -0
  2431. edc_protocol_incident/forms/__init__.py +2 -0
  2432. edc_protocol_incident/forms/protocol_deviation_violation_form.py +33 -0
  2433. edc_protocol_incident/forms/protocol_incident_form.py +26 -0
  2434. edc_protocol_incident/list_data.py +41 -0
  2435. edc_protocol_incident/migrations/0001_initial.py +845 -0
  2436. edc_protocol_incident/migrations/0001_squashed_0015_auto_20220927_0401.py +1904 -0
  2437. edc_protocol_incident/migrations/0002_auto_20210911_2036.py +62 -0
  2438. edc_protocol_incident/migrations/0003_auto_20211104_1456.py +37 -0
  2439. edc_protocol_incident/migrations/0004_alter_protocoldeviationviolation_violation.py +25 -0
  2440. edc_protocol_incident/migrations/0005_protocolincident_historicalprotocolincident_and_more.py +686 -0
  2441. edc_protocol_incident/migrations/0006_protocolincidents_and_more.py +85 -0
  2442. edc_protocol_incident/migrations/0007_auto_20220704_1841.py +40 -0
  2443. edc_protocol_incident/migrations/0008_alter_historicalprotocoldeviationviolation_action_identifier_and_more.py +32 -0
  2444. edc_protocol_incident/migrations/0009_auto_20220826_0258.py +35 -0
  2445. edc_protocol_incident/migrations/0010_auto_20220826_0322.py +32 -0
  2446. edc_protocol_incident/migrations/0011_auto_20220826_0406.py +28 -0
  2447. edc_protocol_incident/migrations/0012_auto_20220913_2139.py +33 -0
  2448. edc_protocol_incident/migrations/0013_auto_20220927_0349.py +67 -0
  2449. edc_protocol_incident/migrations/0014_auto_20220927_0400.py +43 -0
  2450. edc_protocol_incident/migrations/0015_auto_20220927_0401.py +43 -0
  2451. edc_protocol_incident/migrations/0016_historicalprotocolincident_reasons_withdrawn_and_more.py +54 -0
  2452. edc_protocol_incident/migrations/0017_alter_historicalprotocolincident_reasons_withdrawn_and_more.py +25 -0
  2453. edc_protocol_incident/migrations/0018_alter_protocoldeviationviolation_options_and_more.py +51 -0
  2454. edc_protocol_incident/migrations/0019_actionsrequired_extra_value_and_more.py +30 -0
  2455. edc_protocol_incident/migrations/0020_alter_historicalprotocoldeviationviolation_device_created_and_more.py +154 -0
  2456. edc_protocol_incident/migrations/0021_alter_actionsrequired_options_and_more.py +384 -0
  2457. edc_protocol_incident/migrations/0022_alter_historicalprotocoldeviationviolation_site_and_more.py +58 -0
  2458. edc_protocol_incident/migrations/__init__.py +0 -0
  2459. edc_protocol_incident/model_mixins/__init__.py +4 -0
  2460. edc_protocol_incident/model_mixins/protocol_deviation_violation_model_mixin.py +142 -0
  2461. edc_protocol_incident/model_mixins/protocol_incident_model_mixin.py +137 -0
  2462. edc_protocol_incident/modeladmin_mixins.py +131 -0
  2463. edc_protocol_incident/models/__init__.py +3 -0
  2464. edc_protocol_incident/models/list_models.py +19 -0
  2465. edc_protocol_incident/models/protocol_deviation_violation.py +34 -0
  2466. edc_protocol_incident/models/protocol_incident.py +34 -0
  2467. edc_protocol_incident/pdf_reports/__init__.py +0 -0
  2468. edc_protocol_incident/urls.py +10 -0
  2469. edc_pylabels/__init__.py +0 -0
  2470. edc_pylabels/actions.py +87 -0
  2471. edc_pylabels/admin/__init__.py +2 -0
  2472. edc_pylabels/admin/label_configuration_admin.py +52 -0
  2473. edc_pylabels/admin/label_specification_admin.py +52 -0
  2474. edc_pylabels/admin_site.py +9 -0
  2475. edc_pylabels/apps.py +8 -0
  2476. edc_pylabels/auth_objects.py +15 -0
  2477. edc_pylabels/auths.py +5 -0
  2478. edc_pylabels/drawing_callable_example.py +63 -0
  2479. edc_pylabels/forms/__init__.py +1 -0
  2480. edc_pylabels/forms/label_configuration_form.py +30 -0
  2481. edc_pylabels/label_configs.py +27 -0
  2482. edc_pylabels/migrations/0001_initial.py +125 -0
  2483. edc_pylabels/migrations/0002_alter_label_options_label_created_and_more.py +163 -0
  2484. edc_pylabels/migrations/0003_label_sample_data.py +22 -0
  2485. edc_pylabels/migrations/0004_remove_label_drawing_callable_name_and_more.py +30 -0
  2486. edc_pylabels/migrations/0005_labelconfiguration_delete_label_and_more.py +175 -0
  2487. edc_pylabels/migrations/0006_delete_drawing.py +16 -0
  2488. edc_pylabels/migrations/0007_alter_labelconfiguration_name.py +22 -0
  2489. edc_pylabels/migrations/0008_labelconfiguration_requires_allocated.py +18 -0
  2490. edc_pylabels/migrations/0009_remove_labelconfiguration_requires_allocated_and_more.py +22 -0
  2491. edc_pylabels/migrations/0010_alter_labelconfiguration_requires_allocation.py +20 -0
  2492. edc_pylabels/migrations/0011_alter_labelconfiguration_name.py +23 -0
  2493. edc_pylabels/migrations/__init__.py +0 -0
  2494. edc_pylabels/models/__init__.py +2 -0
  2495. edc_pylabels/models/label_configuration.py +41 -0
  2496. edc_pylabels/models/label_specification_proxy.py +6 -0
  2497. edc_pylabels/site_label_configs.py +112 -0
  2498. edc_pylabels/urls.py +10 -0
  2499. edc_qareports/__init__.py +0 -0
  2500. edc_qareports/admin/__init__.py +3 -0
  2501. edc_qareports/admin/note_modeladmin.py +17 -0
  2502. edc_qareports/admin/qa_report_log_admin.py +33 -0
  2503. edc_qareports/admin/qa_report_log_summary_admin.py +62 -0
  2504. edc_qareports/admin_site.py +5 -0
  2505. edc_qareports/apps.py +8 -0
  2506. edc_qareports/auth_objects.py +20 -0
  2507. edc_qareports/auths.py +20 -0
  2508. edc_qareports/choices.py +6 -0
  2509. edc_qareports/forms/__init__.py +1 -0
  2510. edc_qareports/forms/note_form.py +33 -0
  2511. edc_qareports/migrations/0001_initial.py +198 -0
  2512. edc_qareports/migrations/0002_rename_reportnote_qareportnote_and_more.py +39 -0
  2513. edc_qareports/migrations/0003_alter_qareportnote_options_and_more.py +40 -0
  2514. edc_qareports/migrations/0004_alter_qareportnote_status.py +22 -0
  2515. edc_qareports/migrations/0005_edcpermissions.py +133 -0
  2516. edc_qareports/migrations/0006_qareportlog.py +43 -0
  2517. edc_qareports/migrations/0007_qareportlog_edc_qarepor_accesse_738ffe_idx.py +19 -0
  2518. edc_qareports/migrations/0008_qareportlogsummary.py +39 -0
  2519. edc_qareports/migrations/0009_auto_20240812_1918.py +12 -0
  2520. edc_qareports/migrations/0010_auto_20240812_1918.py +12 -0
  2521. edc_qareports/migrations/0011_auto_20240813_0219.py +48 -0
  2522. edc_qareports/migrations/0012_alter_qareportnote_note.py +18 -0
  2523. edc_qareports/migrations/0013_rename_qareportnote_note_and_more.py +39 -0
  2524. edc_qareports/migrations/0014_alter_note_options_alter_note_status.py +42 -0
  2525. edc_qareports/migrations/0015_alter_note_status.py +25 -0
  2526. edc_qareports/migrations/0016_alter_note_options_alter_qareportlog_options.py +38 -0
  2527. edc_qareports/migrations/0017_auto_20240816_0256.py +24 -0
  2528. edc_qareports/migrations/__init__.py +0 -0
  2529. edc_qareports/model_mixins/__init__.py +4 -0
  2530. edc_qareports/model_mixins/note_model_mixin.py +33 -0
  2531. edc_qareports/model_mixins/on_study_missing_values_model_mixin.py +24 -0
  2532. edc_qareports/model_mixins/qa_report_model_mixin.py +28 -0
  2533. edc_qareports/model_mixins/qa_reports_permissions.py +1 -0
  2534. edc_qareports/modeladmin_mixins/__init__.py +6 -0
  2535. edc_qareports/modeladmin_mixins/list_filters.py +64 -0
  2536. edc_qareports/modeladmin_mixins/note_modeladmin_mixin.py +100 -0
  2537. edc_qareports/modeladmin_mixins/on_study_missing_values_modeladmin_mixin.py +147 -0
  2538. edc_qareports/modeladmin_mixins/qa_report_modeladmin_mixin.py +124 -0
  2539. edc_qareports/models/__init__.py +4 -0
  2540. edc_qareports/models/dbviews/__init__.py +1 -0
  2541. edc_qareports/models/dbviews/unmanaged_model.py +24 -0
  2542. edc_qareports/models/dbviews/view_definition.py +43 -0
  2543. edc_qareports/models/edc_permissions.py +9 -0
  2544. edc_qareports/models/note.py +31 -0
  2545. edc_qareports/models/qa_reports_log.py +20 -0
  2546. edc_qareports/sql_generator/__init__.py +5 -0
  2547. edc_qareports/sql_generator/crf_case.py +44 -0
  2548. edc_qareports/sql_generator/crf_subquery.py +63 -0
  2549. edc_qareports/sql_generator/requisition_case.py +17 -0
  2550. edc_qareports/sql_generator/requisition_subquery.py +62 -0
  2551. edc_qareports/sql_generator/sql_view_generator.py +75 -0
  2552. edc_qareports/sql_generator/subquery_from_dict.py +39 -0
  2553. edc_qareports/templates/edc_qareports/columns/add_button.html +1 -0
  2554. edc_qareports/templates/edc_qareports/columns/change_button.html +1 -0
  2555. edc_qareports/templates/edc_qareports/columns/notes_column.html +1 -0
  2556. edc_qareports/templates/edc_qareports/columns/subject_identifier_column.html +1 -0
  2557. edc_qareports/templates/edc_qareports/qa_report_note.html +2 -0
  2558. edc_qareports/urls.py +11 -0
  2559. edc_qareports/utils.py +124 -0
  2560. edc_randomization/__init__.py +0 -0
  2561. edc_randomization/admin.py +169 -0
  2562. edc_randomization/admin_site.py +7 -0
  2563. edc_randomization/apps.py +26 -0
  2564. edc_randomization/auth_objects.py +80 -0
  2565. edc_randomization/auths.py +23 -0
  2566. edc_randomization/blinding.py +74 -0
  2567. edc_randomization/choices.py +3 -0
  2568. edc_randomization/constants.py +17 -0
  2569. edc_randomization/decorators.py +23 -0
  2570. edc_randomization/migrations/0001_initial.py +155 -0
  2571. edc_randomization/migrations/0002_historicalrandomizationlist.py +182 -0
  2572. edc_randomization/migrations/0003_auto_20191024_0426.py +17 -0
  2573. edc_randomization/migrations/0004_auto_20191108_0752.py +21 -0
  2574. edc_randomization/migrations/0005_auto_20200202_2301.py +27 -0
  2575. edc_randomization/migrations/0006_auto_20200213_2055.py +22 -0
  2576. edc_randomization/migrations/0007_auto_20200513_0023.py +28 -0
  2577. edc_randomization/migrations/0008_auto_20220704_1841.py +26 -0
  2578. edc_randomization/migrations/0009_edcpermissions.py +100 -0
  2579. edc_randomization/migrations/0010_alter_randomizationlist_options.py +29 -0
  2580. edc_randomization/migrations/0011_alter_edcpermissions_device_created_and_more.py +119 -0
  2581. edc_randomization/migrations/0012_alter_randomizationlist_options_and_more.py +117 -0
  2582. edc_randomization/migrations/__init__.py +0 -0
  2583. edc_randomization/model_mixins.py +121 -0
  2584. edc_randomization/models/__init__.py +2 -0
  2585. edc_randomization/models/edc_permissions.py +9 -0
  2586. edc_randomization/models/randomization_list.py +8 -0
  2587. edc_randomization/randomization_list_importer.py +327 -0
  2588. edc_randomization/randomization_list_verifier.py +166 -0
  2589. edc_randomization/randomizer.py +374 -0
  2590. edc_randomization/randomizers.py +11 -0
  2591. edc_randomization/site_randomizers.py +131 -0
  2592. edc_randomization/system_checks.py +85 -0
  2593. edc_randomization/urls.py +9 -0
  2594. edc_randomization/utils.py +180 -0
  2595. edc_randomization/views.py +10 -0
  2596. edc_refusal/__init__.py +0 -0
  2597. edc_refusal/admin.py +76 -0
  2598. edc_refusal/admin_site.py +5 -0
  2599. edc_refusal/apps.py +9 -0
  2600. edc_refusal/auth_objects.py +7 -0
  2601. edc_refusal/auths.py +7 -0
  2602. edc_refusal/forms.py +72 -0
  2603. edc_refusal/list_data.py +16 -0
  2604. edc_refusal/managers.py +8 -0
  2605. edc_refusal/migrations/0001_initial.py +230 -0
  2606. edc_refusal/migrations/0002_historicalsubjectrefusal.py +185 -0
  2607. edc_refusal/migrations/0003_auto_20220704_1841.py +26 -0
  2608. edc_refusal/migrations/0004_refusalreasons_plural_name.py +19 -0
  2609. edc_refusal/migrations/0005_alter_subjectrefusal_options_and_more.py +39 -0
  2610. edc_refusal/migrations/0006_alter_subjectrefusal_managers.py +21 -0
  2611. edc_refusal/migrations/0007_refusalreasons_extra_value.py +17 -0
  2612. edc_refusal/migrations/0008_alter_historicalsubjectrefusal_device_created_and_more.py +84 -0
  2613. edc_refusal/migrations/0009_alter_refusalreasons_options_and_more.py +140 -0
  2614. edc_refusal/migrations/0010_alter_historicalsubjectrefusal_site_and_more.py +36 -0
  2615. edc_refusal/migrations/__init__.py +0 -0
  2616. edc_refusal/model_mixins.py +39 -0
  2617. edc_refusal/models/__init__.py +3 -0
  2618. edc_refusal/models/list_models.py +7 -0
  2619. edc_refusal/models/signals.py +45 -0
  2620. edc_refusal/models/subject_refusal.py +18 -0
  2621. edc_refusal/models.py +0 -0
  2622. edc_refusal/urls.py +8 -0
  2623. edc_refusal/utils.py +12 -0
  2624. edc_registration/__init__.py +1 -0
  2625. edc_registration/admin.py +96 -0
  2626. edc_registration/admin_site.py +7 -0
  2627. edc_registration/apps.py +9 -0
  2628. edc_registration/auths.py +30 -0
  2629. edc_registration/exceptions.py +2 -0
  2630. edc_registration/migrations/0001_initial.py +297 -0
  2631. edc_registration/migrations/0002_auto_20161127_2226.py +27 -0
  2632. edc_registration/migrations/0003_registeredsubject_subject_type.py +17 -0
  2633. edc_registration/migrations/0004_auto_20161221_0018.py +30 -0
  2634. edc_registration/migrations/0005_auto_20170111_1809.py +80 -0
  2635. edc_registration/migrations/0006_auto_20170209_0924.py +24 -0
  2636. edc_registration/migrations/0007_auto_20170321_1119.py +19 -0
  2637. edc_registration/migrations/0008_auto_20170810_1032.py +54 -0
  2638. edc_registration/migrations/0009_auto_20171228_1816.py +34 -0
  2639. edc_registration/migrations/0010_registeredsubject_consent_datetime.py +15 -0
  2640. edc_registration/migrations/0011_auto_20180116_1411.py +21 -0
  2641. edc_registration/migrations/0012_auto_20180116_1528.py +15 -0
  2642. edc_registration/migrations/0013_auto_20180813_1614.py +28 -0
  2643. edc_registration/migrations/0014_auto_20180814_2017.py +24 -0
  2644. edc_registration/migrations/0015_auto_20181006_2257.py +23 -0
  2645. edc_registration/migrations/0016_historicalregisteredsubject.py +340 -0
  2646. edc_registration/migrations/0017_auto_20190305_0123.py +99 -0
  2647. edc_registration/migrations/0018_auto_20190917_2117.py +20 -0
  2648. edc_registration/migrations/0019_auto_20190922_0439.py +20 -0
  2649. edc_registration/migrations/0020_auto_20191024_1000.py +22 -0
  2650. edc_registration/migrations/0021_auto_20200513_0023.py +35 -0
  2651. edc_registration/migrations/0022_auto_20210801_2021.py +20 -0
  2652. edc_registration/migrations/0023_alter_registeredsubject_options.py +36 -0
  2653. edc_registration/migrations/0024_auto_20220704_1841.py +26 -0
  2654. edc_registration/migrations/0025_auto_20220914_0038.py +22 -0
  2655. edc_registration/migrations/0026_historicalregisteredsubject_familiar_name_and_more.py +57 -0
  2656. edc_registration/migrations/0027_alter_registeredsubject_options.py +37 -0
  2657. edc_registration/migrations/0028_alter_registeredsubject_managers.py +25 -0
  2658. edc_registration/migrations/0029_alter_historicalregisteredsubject_device_created_and_more.py +84 -0
  2659. edc_registration/migrations/0030_alter_registeredsubject_options_and_more.py +117 -0
  2660. edc_registration/migrations/0031_alter_historicalregisteredsubject_site_and_more.py +36 -0
  2661. edc_registration/migrations/__init__.py +0 -0
  2662. edc_registration/model_mixins/__init__.py +3 -0
  2663. edc_registration/model_mixins/updates_or_creates_registered_subject_model_mixin.py +118 -0
  2664. edc_registration/modeladmin_mixins.py +119 -0
  2665. edc_registration/modelform_mixins.py +26 -0
  2666. edc_registration/models/__init__.py +2 -0
  2667. edc_registration/models/managers.py +17 -0
  2668. edc_registration/models/registered_subject.py +275 -0
  2669. edc_registration/models/signals.py +21 -0
  2670. edc_registration/offline_models.py +3 -0
  2671. edc_registration/urls.py +11 -0
  2672. edc_registration/utils.py +69 -0
  2673. edc_reportable/__init__.py +42 -0
  2674. edc_reportable/admin/__init__.py +2 -0
  2675. edc_reportable/admin/grading_data_admin.py +79 -0
  2676. edc_reportable/admin/normal_data_admin.py +78 -0
  2677. edc_reportable/admin_site.py +7 -0
  2678. edc_reportable/adult_age_options.py +7 -0
  2679. edc_reportable/age_evaluator.py +45 -0
  2680. edc_reportable/apps.py +9 -0
  2681. edc_reportable/auths.py +25 -0
  2682. edc_reportable/choices.py +12 -0
  2683. edc_reportable/constants.py +10 -0
  2684. edc_reportable/data/__init__.py +3 -0
  2685. edc_reportable/data/grading_data/__init__.py +0 -0
  2686. edc_reportable/data/grading_data/ctcae_v5.py +61 -0
  2687. edc_reportable/data/grading_data/daids_july_2017.py +817 -0
  2688. edc_reportable/data/molecular_weights.py +11 -0
  2689. edc_reportable/data/normal_data/__init__.py +0 -0
  2690. edc_reportable/data/normal_data/africa.py +314 -0
  2691. edc_reportable/evaluator.py +125 -0
  2692. edc_reportable/exceptions.py +42 -0
  2693. edc_reportable/forms/__init__.py +1 -0
  2694. edc_reportable/forms/reportables_form_validator_mixin.py +61 -0
  2695. edc_reportable/formula.py +143 -0
  2696. edc_reportable/management/__init__.py +0 -0
  2697. edc_reportable/management/commands/__init__.py +0 -0
  2698. edc_reportable/management/commands/export_reportables.py +56 -0
  2699. edc_reportable/migrations/0001_initial.py +442 -0
  2700. edc_reportable/migrations/0002_alter_gradingdata_age_upper_and_more.py +43 -0
  2701. edc_reportable/migrations/0003_referencerangecollection_grade1_and_more.py +247 -0
  2702. edc_reportable/migrations/0004_alter_referencerangecollection_grade3_and_more.py +436 -0
  2703. edc_reportable/migrations/0005_historicalnormaldata_auto_created_and_more.py +23 -0
  2704. edc_reportable/migrations/__init__.py +0 -0
  2705. edc_reportable/models/__init__.py +6 -0
  2706. edc_reportable/models/grading_data.py +24 -0
  2707. edc_reportable/models/grading_exception.py +28 -0
  2708. edc_reportable/models/mw.py +21 -0
  2709. edc_reportable/models/normal_data.py +63 -0
  2710. edc_reportable/models/reference_model_mixins.py +135 -0
  2711. edc_reportable/models/reference_range_collection.py +134 -0
  2712. edc_reportable/post_migrate_signals.py +27 -0
  2713. edc_reportable/reference_range_evaluator.py +307 -0
  2714. edc_reportable/units.py +32 -0
  2715. edc_reportable/urls.py +11 -0
  2716. edc_reportable/utils/__init__.py +15 -0
  2717. edc_reportable/utils/convert_units.py +200 -0
  2718. edc_reportable/utils/get_default_reportable_grades.py +7 -0
  2719. edc_reportable/utils/get_grade_for_value.py +147 -0
  2720. edc_reportable/utils/get_normal_data_or_raise.py +143 -0
  2721. edc_reportable/utils/get_reference_range_collection.py +30 -0
  2722. edc_reportable/utils/grading_data_model_cls.py +14 -0
  2723. edc_reportable/utils/grading_exception_model_cls.py +14 -0
  2724. edc_reportable/utils/in_normal_bounds_or_raise.py +39 -0
  2725. edc_reportable/utils/load_data.py +98 -0
  2726. edc_reportable/utils/molecular_weight_model_cls.py +12 -0
  2727. edc_reportable/utils/normal_data_model_cls.py +15 -0
  2728. edc_reportable/utils/reference_range_colllection_model_cls.py +15 -0
  2729. edc_reportable/utils/update_grading_data.py +89 -0
  2730. edc_reportable/utils/update_grading_exceptions.py +32 -0
  2731. edc_reportable/utils/update_normal_data.py +28 -0
  2732. edc_review_dashboard/__init__.py +0 -0
  2733. edc_review_dashboard/apps.py +11 -0
  2734. edc_review_dashboard/auths.py +32 -0
  2735. edc_review_dashboard/dashboard_templates.py +4 -0
  2736. edc_review_dashboard/locale/sw/LC_MESSAGES/django.po +26 -0
  2737. edc_review_dashboard/middleware.py +24 -0
  2738. edc_review_dashboard/migrations/0001_initial.py +108 -0
  2739. edc_review_dashboard/migrations/0002_auto_20220825_0451.py +23 -0
  2740. edc_review_dashboard/migrations/0003_alter_edcpermissions_device_created_and_more.py +49 -0
  2741. edc_review_dashboard/migrations/0004_edcpermissions_locale_created_and_more.py +34 -0
  2742. edc_review_dashboard/migrations/__init__.py +0 -0
  2743. edc_review_dashboard/models.py +9 -0
  2744. edc_review_dashboard/navbars.py +16 -0
  2745. edc_review_dashboard/system_checks.py +15 -0
  2746. edc_review_dashboard/templates/edc_review_dashboard/home.html +22 -0
  2747. edc_review_dashboard/templates/edc_review_dashboard/subject_review_button.html +3 -0
  2748. edc_review_dashboard/templates/edc_review_dashboard/subject_review_listboard.html +60 -0
  2749. edc_review_dashboard/urls.py +20 -0
  2750. edc_review_dashboard/views/__init__.py +1 -0
  2751. edc_review_dashboard/views/subject_review_listboard_view.py +81 -0
  2752. edc_screening/__init__.py +0 -0
  2753. edc_screening/age_evaluator.py +37 -0
  2754. edc_screening/apps.py +6 -0
  2755. edc_screening/auth_objects.py +4 -0
  2756. edc_screening/auths.py +46 -0
  2757. edc_screening/choices.py +13 -0
  2758. edc_screening/constants.py +2 -0
  2759. edc_screening/eligibility.py +84 -0
  2760. edc_screening/exceptions.py +31 -0
  2761. edc_screening/fc.py +31 -0
  2762. edc_screening/form_validator_mixins.py +58 -0
  2763. edc_screening/gender_evaluator.py +13 -0
  2764. edc_screening/migrations/0001_initial.py +100 -0
  2765. edc_screening/migrations/0002_alter_edcpermissions_device_created_and_more.py +49 -0
  2766. edc_screening/migrations/0003_alter_edcpermissions_options_and_more.py +63 -0
  2767. edc_screening/migrations/__init__.py +0 -0
  2768. edc_screening/model_mixins/__init__.py +5 -0
  2769. edc_screening/model_mixins/eligibility_model_mixin.py +64 -0
  2770. edc_screening/model_mixins/screening_fields_model_mixin.py +97 -0
  2771. edc_screening/model_mixins/screening_identifier_model_mixin.py +49 -0
  2772. edc_screening/model_mixins/screening_methods_model_mixin.py +28 -0
  2773. edc_screening/model_mixins/screening_model_mixin.py +45 -0
  2774. edc_screening/modelform_mixins.py +44 -0
  2775. edc_screening/models.py +9 -0
  2776. edc_screening/screening_eligibility.py +250 -0
  2777. edc_screening/screening_identifier.py +8 -0
  2778. edc_screening/stubs.py +26 -0
  2779. edc_screening/utils.py +136 -0
  2780. edc_search/__init__.py +0 -0
  2781. edc_search/apps.py +5 -0
  2782. edc_search/constants.py +1 -0
  2783. edc_search/model_mixins.py +45 -0
  2784. edc_search/models.py +0 -0
  2785. edc_search/search_slug.py +56 -0
  2786. edc_search/updater.py +33 -0
  2787. edc_search/urls.py +4 -0
  2788. edc_search/wsgi.py +7 -0
  2789. edc_sites/__init__.py +3 -0
  2790. edc_sites/admin/__init__.py +5 -0
  2791. edc_sites/admin/list_filters.py +26 -0
  2792. edc_sites/admin/site_admin.py +15 -0
  2793. edc_sites/admin/site_fieldset_tuple.py +8 -0
  2794. edc_sites/admin/site_model_admin_mixin.py +218 -0
  2795. edc_sites/admin_site.py +5 -0
  2796. edc_sites/apps.py +48 -0
  2797. edc_sites/auths.py +6 -0
  2798. edc_sites/exceptions.py +10 -0
  2799. edc_sites/form_validator_mixin.py +23 -0
  2800. edc_sites/forms.py +1 -0
  2801. edc_sites/management/__init__.py +0 -0
  2802. edc_sites/management/commands/__init__.py +0 -0
  2803. edc_sites/management/commands/sync_sites.py +81 -0
  2804. edc_sites/managers.py +8 -0
  2805. edc_sites/migrations/0001_initial.py +43 -0
  2806. edc_sites/migrations/0002_auto_20190922_0452.py +15 -0
  2807. edc_sites/migrations/0003_siteprofile_country.py +17 -0
  2808. edc_sites/migrations/0004_siteprofile_country_code.py +17 -0
  2809. edc_sites/migrations/0005_auto_20210423_1451.py +17 -0
  2810. edc_sites/migrations/0006_siteprofile_languages.py +17 -0
  2811. edc_sites/migrations/0007_edcpermissions.py +151 -0
  2812. edc_sites/migrations/0008_delete_edcsite_remove_siteprofile_description.py +19 -0
  2813. edc_sites/migrations/__init__.py +0 -0
  2814. edc_sites/model_mixins/__init__.py +1 -0
  2815. edc_sites/model_mixins/site_model_mixin.py +71 -0
  2816. edc_sites/modelform_mixins.py +58 -0
  2817. edc_sites/models/__init__.py +3 -0
  2818. edc_sites/models/edc_permissions.py +9 -0
  2819. edc_sites/models/site_profile.py +26 -0
  2820. edc_sites/post_migrate_signals.py +18 -0
  2821. edc_sites/single_site/__init__.py +3 -0
  2822. edc_sites/single_site/get_languages.py +23 -0
  2823. edc_sites/single_site/get_languages_from_settings.py +12 -0
  2824. edc_sites/single_site/single_site.py +34 -0
  2825. edc_sites/site.py +377 -0
  2826. edc_sites/system_checks.py +100 -0
  2827. edc_sites/templatetags/__init__.py +0 -0
  2828. edc_sites/templatetags/edc_sites_extras.py +10 -0
  2829. edc_sites/urls.py +11 -0
  2830. edc_sites/utils/__init__.py +8 -0
  2831. edc_sites/utils/add_or_update_django_sites.py +67 -0
  2832. edc_sites/utils/get_message_text.py +17 -0
  2833. edc_sites/utils/get_or_create_site_obj.py +30 -0
  2834. edc_sites/utils/get_or_create_site_profile_obj.py +28 -0
  2835. edc_sites/utils/get_site_model_cls.py +12 -0
  2836. edc_sites/utils/has_profile_or_raise.py +27 -0
  2837. edc_sites/utils/insert_into_domain.py +5 -0
  2838. edc_sites/utils/is_current_site_or_raise.py +13 -0
  2839. edc_sites/utils/valid_site_for_subject_or_raise.py +55 -0
  2840. edc_sites/view_mixins.py +28 -0
  2841. edc_subject_dashboard/__init__.py +6 -0
  2842. edc_subject_dashboard/apps.py +11 -0
  2843. edc_subject_dashboard/auths.py +36 -0
  2844. edc_subject_dashboard/dashboard_templates.py +7 -0
  2845. edc_subject_dashboard/locale/sw/LC_MESSAGES/django.po +66 -0
  2846. edc_subject_dashboard/middleware.py +26 -0
  2847. edc_subject_dashboard/migrations/0001_initial.py +100 -0
  2848. edc_subject_dashboard/migrations/0002_alter_edcpermissions_device_created_and_more.py +49 -0
  2849. edc_subject_dashboard/migrations/0003_edcpermissions_locale_created_and_more.py +34 -0
  2850. edc_subject_dashboard/migrations/__init__.py +0 -0
  2851. edc_subject_dashboard/models.py +9 -0
  2852. edc_subject_dashboard/requisition_labels.py +57 -0
  2853. edc_subject_dashboard/requisition_report.py +401 -0
  2854. edc_subject_dashboard/requisition_verifier.py +79 -0
  2855. edc_subject_dashboard/system_checks.py +15 -0
  2856. edc_subject_dashboard/templates/edc_subject_dashboard/appointment_in_progress.html +1 -0
  2857. edc_subject_dashboard/templates/edc_subject_dashboard/appointment_status.html +27 -0
  2858. edc_subject_dashboard/templates/edc_subject_dashboard/buttons/appointment_button.html +4 -0
  2859. edc_subject_dashboard/templates/edc_subject_dashboard/buttons/crf_button_group.html +3 -0
  2860. edc_subject_dashboard/templates/edc_subject_dashboard/buttons/forms_button.html +3 -0
  2861. edc_subject_dashboard/templates/edc_subject_dashboard/buttons/popover_list_item.html +1 -0
  2862. edc_subject_dashboard/templates/edc_subject_dashboard/buttons/prn_button.html +1 -0
  2863. edc_subject_dashboard/templates/edc_subject_dashboard/buttons/refresh_appointments_button.html +1 -0
  2864. edc_subject_dashboard/templates/edc_subject_dashboard/buttons/refresh_data_collection_schedule_button.html +2 -0
  2865. edc_subject_dashboard/templates/edc_subject_dashboard/buttons/requisition_button_group.html +5 -0
  2866. edc_subject_dashboard/templates/edc_subject_dashboard/buttons/subject_consent_button.html +4 -0
  2867. edc_subject_dashboard/templates/edc_subject_dashboard/buttons/subject_schedule_button.html +6 -0
  2868. edc_subject_dashboard/templates/edc_subject_dashboard/buttons/unscheduled_appointment_button.html +6 -0
  2869. edc_subject_dashboard/templates/edc_subject_dashboard/buttons/visit_button.html +7 -0
  2870. edc_subject_dashboard/templates/edc_subject_dashboard/dashboard/appointments.html +39 -0
  2871. edc_subject_dashboard/templates/edc_subject_dashboard/dashboard/crf_totals.html +11 -0
  2872. edc_subject_dashboard/templates/edc_subject_dashboard/dashboard/crfs.html +57 -0
  2873. edc_subject_dashboard/templates/edc_subject_dashboard/dashboard/data_queries.html +20 -0
  2874. edc_subject_dashboard/templates/edc_subject_dashboard/dashboard/requisitions.html +74 -0
  2875. edc_subject_dashboard/templates/edc_subject_dashboard/dashboard/sidebar/consents.html +20 -0
  2876. edc_subject_dashboard/templates/edc_subject_dashboard/dashboard/sidebar/demographics.html +5 -0
  2877. edc_subject_dashboard/templates/edc_subject_dashboard/dashboard/sidebar/metadata.html +5 -0
  2878. edc_subject_dashboard/templates/edc_subject_dashboard/dashboard/sidebar/prn.html +2 -0
  2879. edc_subject_dashboard/templates/edc_subject_dashboard/dashboard/sidebar/sidebar.html +58 -0
  2880. edc_subject_dashboard/templates/edc_subject_dashboard/dashboard/sidebar.html +41 -0
  2881. edc_subject_dashboard/templates/edc_subject_dashboard/dashboard/topbar.html +6 -0
  2882. edc_subject_dashboard/templates/edc_subject_dashboard/dashboard.html +103 -0
  2883. edc_subject_dashboard/templates/edc_subject_dashboard/dashboard_button.html +4 -0
  2884. edc_subject_dashboard/templates/edc_subject_dashboard/print_requisition_popover.html +5 -0
  2885. edc_subject_dashboard/templates/edc_subject_dashboard/requisition_panel_actions.html +52 -0
  2886. edc_subject_dashboard/templatetags/__init__.py +0 -0
  2887. edc_subject_dashboard/templatetags/edc_subject_dashboard_extras.py +530 -0
  2888. edc_subject_dashboard/urls.py +42 -0
  2889. edc_subject_dashboard/view_mixins/__init__.py +2 -0
  2890. edc_subject_dashboard/view_mixins/registered_subject_view_mixin.py +49 -0
  2891. edc_subject_dashboard/view_mixins/subject_visit_view_mixin.py +94 -0
  2892. edc_subject_dashboard/view_utils/__init__.py +18 -0
  2893. edc_subject_dashboard/view_utils/crf_button.py +31 -0
  2894. edc_subject_dashboard/view_utils/go_to_forms_button.py +92 -0
  2895. edc_subject_dashboard/view_utils/requisition_button.py +39 -0
  2896. edc_subject_dashboard/view_utils/subject_consent_dashboard_button.py +45 -0
  2897. edc_subject_dashboard/view_utils/subject_consent_listboard_button.py +83 -0
  2898. edc_subject_dashboard/view_utils/subject_screening_button.py +61 -0
  2899. edc_subject_dashboard/view_utils/timepoint_status_button.py +98 -0
  2900. edc_subject_dashboard/views/__init__.py +4 -0
  2901. edc_subject_dashboard/views/base_requisition_view.py +34 -0
  2902. edc_subject_dashboard/views/refresh_appointments_view.py +34 -0
  2903. edc_subject_dashboard/views/requisition_print_actions_view.py +191 -0
  2904. edc_subject_dashboard/views/requisition_verify_actions_view.py +41 -0
  2905. edc_subject_dashboard/views/subject_dashboard_view.py +63 -0
  2906. edc_subject_dashboard/wsgi.py +16 -0
  2907. edc_timepoint/__init__.py +2 -0
  2908. edc_timepoint/apps.py +59 -0
  2909. edc_timepoint/choices.py +7 -0
  2910. edc_timepoint/constants.py +3 -0
  2911. edc_timepoint/form_mixin.py +25 -0
  2912. edc_timepoint/model_mixins.py +153 -0
  2913. edc_timepoint/models/__init__.py +1 -0
  2914. edc_timepoint/models/signals.py +14 -0
  2915. edc_timepoint/timepoint.py +28 -0
  2916. edc_timepoint/timepoint_collection.py +43 -0
  2917. edc_timepoint/timepoint_lookup.py +55 -0
  2918. edc_timepoint/utils.py +5 -0
  2919. edc_transfer/__init__.py +0 -0
  2920. edc_transfer/action_items.py +23 -0
  2921. edc_transfer/apps.py +6 -0
  2922. edc_transfer/choices.py +7 -0
  2923. edc_transfer/constants.py +2 -0
  2924. edc_transfer/form_validators.py +84 -0
  2925. edc_transfer/forms.py +29 -0
  2926. edc_transfer/list_data.py +12 -0
  2927. edc_transfer/model_mixins.py +89 -0
  2928. edc_transfer/modeladmin_mixins.py +67 -0
  2929. edc_transfer/modelform_mixins.py +25 -0
  2930. edc_transfer/models.py +20 -0
  2931. edc_unblinding/__init__.py +0 -0
  2932. edc_unblinding/action_items.py +53 -0
  2933. edc_unblinding/admin/__init__.py +6 -0
  2934. edc_unblinding/admin/autocomplete_admin.py +42 -0
  2935. edc_unblinding/admin/unblinding_request_admin.py +54 -0
  2936. edc_unblinding/admin/unblinding_review_admin.py +36 -0
  2937. edc_unblinding/admin_site.py +7 -0
  2938. edc_unblinding/apps.py +8 -0
  2939. edc_unblinding/auth_objects.py +24 -0
  2940. edc_unblinding/auths.py +15 -0
  2941. edc_unblinding/constants.py +2 -0
  2942. edc_unblinding/forms/__init__.py +2 -0
  2943. edc_unblinding/forms/unblinding_request_form.py +28 -0
  2944. edc_unblinding/forms/unblinding_review_form.py +28 -0
  2945. edc_unblinding/migrations/0001_initial.py +886 -0
  2946. edc_unblinding/migrations/0002_auto_20210908_2318.py +63 -0
  2947. edc_unblinding/migrations/0003_auto_20210911_2036.py +32 -0
  2948. edc_unblinding/migrations/0004_auto_20220704_1841.py +40 -0
  2949. edc_unblinding/migrations/0005_alter_historicalunblindingrequest_action_identifier_and_more.py +32 -0
  2950. edc_unblinding/migrations/0006_auto_20220826_0258.py +35 -0
  2951. edc_unblinding/migrations/0007_auto_20220826_0322.py +32 -0
  2952. edc_unblinding/migrations/0008_auto_20220826_0406.py +28 -0
  2953. edc_unblinding/migrations/0009_alter_unblindingrequest_managers_and_more.py +28 -0
  2954. edc_unblinding/migrations/0010_alter_historicalunblindingrequest_device_created_and_more.py +154 -0
  2955. edc_unblinding/migrations/0011_alter_unblindingrequest_options_and_more.py +135 -0
  2956. edc_unblinding/migrations/0012_alter_historicalunblindingrequest_site_and_more.py +58 -0
  2957. edc_unblinding/migrations/__init__.py +0 -0
  2958. edc_unblinding/models/__init__.py +3 -0
  2959. edc_unblinding/models/unblinding_request.py +73 -0
  2960. edc_unblinding/models/unblinding_review.py +55 -0
  2961. edc_unblinding/models/unblinding_user.py +23 -0
  2962. edc_unblinding/urls.py +11 -0
  2963. edc_utils/__init__.py +55 -0
  2964. edc_utils/age.py +90 -0
  2965. edc_utils/apps.py +8 -0
  2966. edc_utils/celery.py +48 -0
  2967. edc_utils/context_processors_check.py +20 -0
  2968. edc_utils/dashboard_middleware_check.py +16 -0
  2969. edc_utils/date.py +57 -0
  2970. edc_utils/disable_signals.py +51 -0
  2971. edc_utils/get_datetime_from_env.py +32 -0
  2972. edc_utils/get_static_file.py +25 -0
  2973. edc_utils/get_uuid.py +5 -0
  2974. edc_utils/logging_filters/__init__.py +1 -0
  2975. edc_utils/logging_filters/ignore_specific_ip_disallowed_host.py +15 -0
  2976. edc_utils/message_in_queue.py +9 -0
  2977. edc_utils/paths_for_urlpatterns.py +23 -0
  2978. edc_utils/round_up.py +27 -0
  2979. edc_utils/show_urls.py +89 -0
  2980. edc_utils/sqlite.py +5 -0
  2981. edc_utils/text.py +119 -0
  2982. edc_view_utils/__init__.py +22 -0
  2983. edc_view_utils/apps.py +8 -0
  2984. edc_view_utils/dashboard_model_button.py +61 -0
  2985. edc_view_utils/history_button.py +42 -0
  2986. edc_view_utils/migrations/__init__.py +0 -0
  2987. edc_view_utils/model_button.py +163 -0
  2988. edc_view_utils/next_querystring.py +45 -0
  2989. edc_view_utils/perms.py +98 -0
  2990. edc_view_utils/prn_button.py +8 -0
  2991. edc_view_utils/query_button.py +76 -0
  2992. edc_view_utils/render_history_and_query_buttons.py +36 -0
  2993. edc_visit_schedule/__init__.py +0 -0
  2994. edc_visit_schedule/action_items.py +25 -0
  2995. edc_visit_schedule/admin/__init__.py +3 -0
  2996. edc_visit_schedule/admin/list_filters.py +43 -0
  2997. edc_visit_schedule/admin/subject_schedule_history_admin.py +116 -0
  2998. edc_visit_schedule/admin/visit_schedule_admin.py +66 -0
  2999. edc_visit_schedule/admin_site.py +7 -0
  3000. edc_visit_schedule/apps.py +11 -0
  3001. edc_visit_schedule/auths.py +4 -0
  3002. edc_visit_schedule/baseline.py +99 -0
  3003. edc_visit_schedule/choices.py +11 -0
  3004. edc_visit_schedule/constants.py +41 -0
  3005. edc_visit_schedule/exceptions.py +70 -0
  3006. edc_visit_schedule/fieldsets.py +22 -0
  3007. edc_visit_schedule/forms.py +14 -0
  3008. edc_visit_schedule/management/__init__.py +0 -0
  3009. edc_visit_schedule/management/commands/__init__.py +0 -0
  3010. edc_visit_schedule/management/commands/find_invalid_onschedules.py +48 -0
  3011. edc_visit_schedule/migrations/0001_initial.py +141 -0
  3012. edc_visit_schedule/migrations/0002_auto_20190305_0123.py +56 -0
  3013. edc_visit_schedule/migrations/0003_historicalvisitschedule_visitschedule.py +227 -0
  3014. edc_visit_schedule/migrations/0004_auto_20190629_1800.py +25 -0
  3015. edc_visit_schedule/migrations/0005_auto_20190706_0137.py +20 -0
  3016. edc_visit_schedule/migrations/0006_auto_20190706_0706.py +24 -0
  3017. edc_visit_schedule/migrations/0007_auto_20190922_0439.py +15 -0
  3018. edc_visit_schedule/migrations/0008_auto_20200513_0023.py +42 -0
  3019. edc_visit_schedule/migrations/0009_auto_20220704_1841.py +26 -0
  3020. edc_visit_schedule/migrations/0010_alter_subjectschedulehistory_options_and_more.py +44 -0
  3021. edc_visit_schedule/migrations/0011_alter_historicalvisitschedule_device_created_and_more.py +119 -0
  3022. edc_visit_schedule/migrations/0012_alter_subjectschedulehistory_managers_and_more.py +37 -0
  3023. edc_visit_schedule/migrations/0013_auto_20230928_1810.py +23 -0
  3024. edc_visit_schedule/migrations/0014_alter_subjectschedulehistory_options_and_more.py +136 -0
  3025. edc_visit_schedule/migrations/0015_historicalonschedule_offschedule_onschedule.py +502 -0
  3026. edc_visit_schedule/migrations/0016_alter_historicalonschedule_site_and_more.py +56 -0
  3027. edc_visit_schedule/migrations/0017_alter_onschedule_managers.py +25 -0
  3028. edc_visit_schedule/migrations/__init__.py +0 -0
  3029. edc_visit_schedule/model_mixins/__init__.py +11 -0
  3030. edc_visit_schedule/model_mixins/crf/__init__.py +1 -0
  3031. edc_visit_schedule/model_mixins/crf/crf_schedule_model_mixin.py +60 -0
  3032. edc_visit_schedule/model_mixins/off_schedule_model_mixin.py +96 -0
  3033. edc_visit_schedule/model_mixins/on_schedule_model_mixin.py +94 -0
  3034. edc_visit_schedule/model_mixins/subject_on_schedule_model_mixin.py +25 -0
  3035. edc_visit_schedule/model_mixins/visit_schedule/__init__.py +7 -0
  3036. edc_visit_schedule/model_mixins/visit_schedule/visit_code_fields_model_mixin.py +20 -0
  3037. edc_visit_schedule/model_mixins/visit_schedule/visit_schedule_fields_model_mixin.py +20 -0
  3038. edc_visit_schedule/model_mixins/visit_schedule/visit_schedule_methods_model_mixin.py +75 -0
  3039. edc_visit_schedule/model_mixins/visit_schedule/visit_schedule_model_mixins.py +24 -0
  3040. edc_visit_schedule/modelform_mixins/__init__.py +9 -0
  3041. edc_visit_schedule/modelform_mixins/crf/__init__.py +1 -0
  3042. edc_visit_schedule/modelform_mixins/crf/visit_schedule_crf_modelform_mixin.py +71 -0
  3043. edc_visit_schedule/modelform_mixins/off_schedule_modelform_mixin.py +63 -0
  3044. edc_visit_schedule/modelform_mixins/visit_schedule_non_crf_modelform_mixin.py +89 -0
  3045. edc_visit_schedule/models/__init__.py +8 -0
  3046. edc_visit_schedule/models/offschedule.py +13 -0
  3047. edc_visit_schedule/models/onschedule.py +11 -0
  3048. edc_visit_schedule/models/signals.py +68 -0
  3049. edc_visit_schedule/models/subject_schedule_history.py +117 -0
  3050. edc_visit_schedule/models/visit_schedule.py +70 -0
  3051. edc_visit_schedule/navbars.py +30 -0
  3052. edc_visit_schedule/ordered_collection.py +60 -0
  3053. edc_visit_schedule/post_migrate_signals.py +23 -0
  3054. edc_visit_schedule/schedule/__init__.py +2 -0
  3055. edc_visit_schedule/schedule/schedule.py +412 -0
  3056. edc_visit_schedule/schedule/visit_collection.py +64 -0
  3057. edc_visit_schedule/schedule/window.py +137 -0
  3058. edc_visit_schedule/simple_model_validator.py +29 -0
  3059. edc_visit_schedule/site_visit_schedules.py +337 -0
  3060. edc_visit_schedule/subject_schedule.py +411 -0
  3061. edc_visit_schedule/system_checks.py +217 -0
  3062. edc_visit_schedule/templates/edc_visit_schedule/home.html +27 -0
  3063. edc_visit_schedule/templates/edc_visit_schedule/subject_schedule_footer_row.html +11 -0
  3064. edc_visit_schedule/templates/edc_visit_schedule/visit_schedule.html +76 -0
  3065. edc_visit_schedule/templatetags/__init__.py +0 -0
  3066. edc_visit_schedule/templatetags/edc_visit_schedule_extras.py +76 -0
  3067. edc_visit_schedule/typing_stubs.py +11 -0
  3068. edc_visit_schedule/urls.py +32 -0
  3069. edc_visit_schedule/utils.py +383 -0
  3070. edc_visit_schedule/view_mixins.py +60 -0
  3071. edc_visit_schedule/views/__init__.py +2 -0
  3072. edc_visit_schedule/views/home_view.py +10 -0
  3073. edc_visit_schedule/views/visit_schedule_view.py +29 -0
  3074. edc_visit_schedule/visit/__init__.py +7 -0
  3075. edc_visit_schedule/visit/crf.py +74 -0
  3076. edc_visit_schedule/visit/crf_collection.py +23 -0
  3077. edc_visit_schedule/visit/forms_collection.py +120 -0
  3078. edc_visit_schedule/visit/requisition.py +73 -0
  3079. edc_visit_schedule/visit/requisition_collection.py +23 -0
  3080. edc_visit_schedule/visit/visit.py +319 -0
  3081. edc_visit_schedule/visit/window_period.py +51 -0
  3082. edc_visit_schedule/visit_schedule/__init__.py +9 -0
  3083. edc_visit_schedule/visit_schedule/schedules_collection.py +42 -0
  3084. edc_visit_schedule/visit_schedule/visit_schedule.py +166 -0
  3085. edc_visit_schedule/wsgi.py +16 -0
  3086. edc_visit_tracking/__init__.py +0 -0
  3087. edc_visit_tracking/action_items.py +40 -0
  3088. edc_visit_tracking/admin.py +19 -0
  3089. edc_visit_tracking/admin_site.py +7 -0
  3090. edc_visit_tracking/apps.py +18 -0
  3091. edc_visit_tracking/choices.py +87 -0
  3092. edc_visit_tracking/constants.py +15 -0
  3093. edc_visit_tracking/context_processors.py +12 -0
  3094. edc_visit_tracking/crf_date_validator.py +99 -0
  3095. edc_visit_tracking/exceptions.py +10 -0
  3096. edc_visit_tracking/form_validators/__init__.py +2 -0
  3097. edc_visit_tracking/form_validators/visit_form_validator.py +329 -0
  3098. edc_visit_tracking/form_validators/visit_missed_form_validator.py +44 -0
  3099. edc_visit_tracking/locale/sw/LC_MESSAGES/django.po +111 -0
  3100. edc_visit_tracking/managers.py +126 -0
  3101. edc_visit_tracking/migrations/0001_initial.py +168 -0
  3102. edc_visit_tracking/migrations/0002_auto_20210423_1451.py +22 -0
  3103. edc_visit_tracking/migrations/0003_auto_20220913_2139.py +26 -0
  3104. edc_visit_tracking/migrations/0004_subjectvisit_subjectvisitmissedreasons_extra_value_and_more.py +1317 -0
  3105. edc_visit_tracking/migrations/0005_alter_subjectvisit_options_and_more.py +279 -0
  3106. edc_visit_tracking/migrations/0006_alter_historicalsubjectvisit_site_and_more.py +58 -0
  3107. edc_visit_tracking/migrations/0007_alter_historicalsubjectvisit_consent_model_and_more.py +53 -0
  3108. edc_visit_tracking/migrations/__init__.py +0 -0
  3109. edc_visit_tracking/model_mixins/__init__.py +11 -0
  3110. edc_visit_tracking/model_mixins/base/__init__.py +1 -0
  3111. edc_visit_tracking/model_mixins/base/visit_methods_model_mixin.py +125 -0
  3112. edc_visit_tracking/model_mixins/crfs/__init__.py +2 -0
  3113. edc_visit_tracking/model_mixins/crfs/inline_visits_methods_model_mixin.py +14 -0
  3114. edc_visit_tracking/model_mixins/crfs/visit_tracking_crf_model_mixin.py +63 -0
  3115. edc_visit_tracking/model_mixins/requisitions/__init__.py +1 -0
  3116. edc_visit_tracking/model_mixins/requisitions/visit_tracking_requisition_model_mixin.py +40 -0
  3117. edc_visit_tracking/model_mixins/subject_visit_missed_model_mixin.py +117 -0
  3118. edc_visit_tracking/model_mixins/utils.py +40 -0
  3119. edc_visit_tracking/model_mixins/visit_model_mixin/__init__.py +4 -0
  3120. edc_visit_tracking/model_mixins/visit_model_mixin/caretaker_fields_mixin.py +40 -0
  3121. edc_visit_tracking/model_mixins/visit_model_mixin/previous_visit_model_mixin.py +60 -0
  3122. edc_visit_tracking/model_mixins/visit_model_mixin/visit_model_fields_mixin.py +106 -0
  3123. edc_visit_tracking/model_mixins/visit_model_mixin/visit_model_mixin.py +130 -0
  3124. edc_visit_tracking/modeladmin_mixins/__init__.py +2 -0
  3125. edc_visit_tracking/modeladmin_mixins/crf_model_admin_mixin.py +128 -0
  3126. edc_visit_tracking/modeladmin_mixins/visit_model_admin_mixin.py +158 -0
  3127. edc_visit_tracking/modelform_mixins/__init__.py +3 -0
  3128. edc_visit_tracking/modelform_mixins/crf/__init__.py +4 -0
  3129. edc_visit_tracking/modelform_mixins/crf/visit_tracking_crf_modelform_mixin.py +123 -0
  3130. edc_visit_tracking/modelform_mixins/utils.py +53 -0
  3131. edc_visit_tracking/modelform_mixins/visit_tracking_modelform_mixin.py +89 -0
  3132. edc_visit_tracking/models/__init__.py +8 -0
  3133. edc_visit_tracking/models/signals.py +68 -0
  3134. edc_visit_tracking/models/subject_visit.py +56 -0
  3135. edc_visit_tracking/models/subject_visit_missed.py +30 -0
  3136. edc_visit_tracking/models/subject_visit_missed_reasons.py +7 -0
  3137. edc_visit_tracking/models/visit_reasons.py +7 -0
  3138. edc_visit_tracking/stubs.py +44 -0
  3139. edc_visit_tracking/system_checks.py +15 -0
  3140. edc_visit_tracking/typing_stubs.py +74 -0
  3141. edc_visit_tracking/urls.py +7 -0
  3142. edc_visit_tracking/utils.py +104 -0
  3143. edc_visit_tracking/view_utils/__init__.py +3 -0
  3144. edc_visit_tracking/view_utils/related_visit_button.py +102 -0
  3145. edc_visit_tracking/visit_sequence.py +116 -0
  3146. edc_visit_tracking/wsgi.py +7 -0
@@ -0,0 +1,33 @@
1
+ # Generated by Django 2.2.2 on 2019-06-28 19:36
2
+
3
+ from django.db import migrations, models
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+ dependencies = [("edc_action_item", "0021_auto_20190628_2113")]
8
+
9
+ operations = [
10
+ migrations.RemoveIndex(
11
+ model_name="actionitem", name="edc_action__action__fe58cb_idx"
12
+ ),
13
+ migrations.RemoveIndex(
14
+ model_name="actiontype", name="edc_action__name_f674a7_idx"
15
+ ),
16
+ migrations.AddIndex(
17
+ model_name="actionitem",
18
+ index=models.Index(
19
+ fields=[
20
+ "id",
21
+ "action_identifier",
22
+ "action_type",
23
+ "status",
24
+ "report_datetime",
25
+ ],
26
+ name="edc_action__id_6cb4e0_idx",
27
+ ),
28
+ ),
29
+ migrations.AddIndex(
30
+ model_name="actiontype",
31
+ index=models.Index(fields=["id", "name"], name="edc_action__id_4feab7_idx"),
32
+ ),
33
+ ]
@@ -0,0 +1,20 @@
1
+ # Generated by Django 2.2.5 on 2019-10-07 03:20
2
+
3
+ from django.db import migrations, models
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+ dependencies = [("edc_action_item", "0022_auto_20190628_2136")]
8
+
9
+ operations = [
10
+ migrations.AlterField(
11
+ model_name="actionitem",
12
+ name="subject_identifier",
13
+ field=models.CharField(max_length=50),
14
+ ),
15
+ migrations.AlterField(
16
+ model_name="historicalactionitem",
17
+ name="subject_identifier",
18
+ field=models.CharField(max_length=50),
19
+ ),
20
+ ]
@@ -0,0 +1,22 @@
1
+ # Generated by Django 2.2.6 on 2019-10-24 07:00
2
+
3
+ import django.db.models.deletion
4
+ from django.db import migrations, models
5
+
6
+
7
+ class Migration(migrations.Migration):
8
+ dependencies = [("edc_action_item", "0023_auto_20191007_0520")]
9
+
10
+ operations = [
11
+ migrations.AlterField(
12
+ model_name="actionitem",
13
+ name="site",
14
+ field=models.ForeignKey(
15
+ editable=False,
16
+ null=True,
17
+ on_delete=django.db.models.deletion.PROTECT,
18
+ related_name="+",
19
+ to="sites.Site",
20
+ ),
21
+ )
22
+ ]
@@ -0,0 +1,20 @@
1
+ # Generated by Django 3.0.6 on 2020-05-28 02:20
2
+
3
+ from django.db import migrations
4
+
5
+ import edc_action_item.models.action_type
6
+
7
+
8
+ class Migration(migrations.Migration):
9
+ dependencies = [
10
+ ("edc_action_item", "0024_auto_20191024_1000"),
11
+ ]
12
+
13
+ operations = [
14
+ migrations.AlterModelManagers(
15
+ name="actiontype",
16
+ managers=[
17
+ ("objects", edc_action_item.models.action_type.ActionTypeManager()),
18
+ ],
19
+ ),
20
+ ]
@@ -0,0 +1,43 @@
1
+ # Generated by Django 3.0.6 on 2020-07-29 19:40
2
+
3
+ from django.db import migrations
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+ dependencies = [
8
+ ("edc_action_item", "0025_auto_20200528_0520"),
9
+ ]
10
+
11
+ operations = [
12
+ migrations.AlterModelOptions(
13
+ name="actionitem",
14
+ options={
15
+ "default_permissions": (
16
+ "add",
17
+ "change",
18
+ "delete",
19
+ "view",
20
+ "export",
21
+ "import",
22
+ ),
23
+ "get_latest_by": "modified",
24
+ "ordering": ("-modified", "-created"),
25
+ "verbose_name": "Action Item",
26
+ "verbose_name_plural": "Action Items",
27
+ },
28
+ ),
29
+ migrations.AlterModelOptions(
30
+ name="actiontype",
31
+ options={
32
+ "default_permissions": (
33
+ "add",
34
+ "change",
35
+ "delete",
36
+ "view",
37
+ "export",
38
+ "import",
39
+ ),
40
+ "ordering": ["name"],
41
+ },
42
+ ),
43
+ ]
@@ -0,0 +1,42 @@
1
+ # Generated by Django 3.0.9 on 2021-01-19 21:05
2
+
3
+ from django.db import migrations
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+ dependencies = [
8
+ ("edc_action_item", "0026_auto_20200729_2240"),
9
+ ]
10
+
11
+ operations = [
12
+ migrations.AlterModelOptions(
13
+ name="actiontype",
14
+ options={
15
+ "default_permissions": (
16
+ "add",
17
+ "change",
18
+ "delete",
19
+ "view",
20
+ "export",
21
+ "import",
22
+ ),
23
+ "get_latest_by": "modified",
24
+ "ordering": ["name"],
25
+ },
26
+ ),
27
+ migrations.AlterModelOptions(
28
+ name="reference",
29
+ options={
30
+ "default_permissions": (
31
+ "add",
32
+ "change",
33
+ "delete",
34
+ "view",
35
+ "export",
36
+ "import",
37
+ ),
38
+ "get_latest_by": "modified",
39
+ "ordering": ("-modified", "-created"),
40
+ },
41
+ ),
42
+ ]
@@ -0,0 +1,85 @@
1
+ # Generated by Django 3.1.5 on 2021-02-03 04:06
2
+
3
+ import django.db.models.deletion
4
+ from django.db import migrations, models
5
+
6
+
7
+ class Migration(migrations.Migration):
8
+ dependencies = [
9
+ ("edc_action_item", "0027_auto_20210120_0005"),
10
+ ]
11
+
12
+ operations = [
13
+ migrations.AlterField(
14
+ model_name="historicalreference",
15
+ name="parent_action_identifier",
16
+ field=models.CharField(
17
+ blank=True,
18
+ help_text="action identifier that links to parent reference model instance.",
19
+ max_length=30,
20
+ null=True,
21
+ ),
22
+ ),
23
+ migrations.AlterField(
24
+ model_name="historicalreference",
25
+ name="related_action_identifier",
26
+ field=models.CharField(
27
+ blank=True,
28
+ help_text="action identifier that links to related reference model instance.",
29
+ max_length=30,
30
+ null=True,
31
+ ),
32
+ ),
33
+ migrations.AlterField(
34
+ model_name="reference",
35
+ name="action_item",
36
+ field=models.ForeignKey(
37
+ blank=True,
38
+ null=True,
39
+ on_delete=django.db.models.deletion.PROTECT,
40
+ to="edc_action_item.actionitem",
41
+ ),
42
+ ),
43
+ migrations.AlterField(
44
+ model_name="reference",
45
+ name="parent_action_identifier",
46
+ field=models.CharField(
47
+ blank=True,
48
+ help_text="action identifier that links to parent reference model instance.",
49
+ max_length=30,
50
+ null=True,
51
+ ),
52
+ ),
53
+ migrations.AlterField(
54
+ model_name="reference",
55
+ name="parent_action_item",
56
+ field=models.ForeignKey(
57
+ blank=True,
58
+ null=True,
59
+ on_delete=django.db.models.deletion.PROTECT,
60
+ related_name="+",
61
+ to="edc_action_item.actionitem",
62
+ ),
63
+ ),
64
+ migrations.AlterField(
65
+ model_name="reference",
66
+ name="related_action_identifier",
67
+ field=models.CharField(
68
+ blank=True,
69
+ help_text="action identifier that links to related reference model instance.",
70
+ max_length=30,
71
+ null=True,
72
+ ),
73
+ ),
74
+ migrations.AlterField(
75
+ model_name="reference",
76
+ name="related_action_item",
77
+ field=models.ForeignKey(
78
+ blank=True,
79
+ null=True,
80
+ on_delete=django.db.models.deletion.PROTECT,
81
+ related_name="+",
82
+ to="edc_action_item.actionitem",
83
+ ),
84
+ ),
85
+ ]
@@ -0,0 +1,40 @@
1
+ # Generated by Django 3.2.13 on 2022-07-04 15:41
2
+
3
+ from django.db import migrations, models
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+ dependencies = [
8
+ ("edc_action_item", "0028_auto_20210203_0706"),
9
+ ]
10
+
11
+ operations = [
12
+ migrations.AlterModelOptions(
13
+ name="historicalactionitem",
14
+ options={
15
+ "get_latest_by": ("history_date", "history_id"),
16
+ "ordering": ("-history_date", "-history_id"),
17
+ "verbose_name": "historical Action Item",
18
+ "verbose_name_plural": "historical Action Items",
19
+ },
20
+ ),
21
+ migrations.AlterModelOptions(
22
+ name="historicalreference",
23
+ options={
24
+ "get_latest_by": ("history_date", "history_id"),
25
+ "ordering": ("-history_date", "-history_id"),
26
+ "verbose_name": "historical reference",
27
+ "verbose_name_plural": "historical references",
28
+ },
29
+ ),
30
+ migrations.AlterField(
31
+ model_name="historicalactionitem",
32
+ name="history_date",
33
+ field=models.DateTimeField(db_index=True),
34
+ ),
35
+ migrations.AlterField(
36
+ model_name="historicalreference",
37
+ name="history_date",
38
+ field=models.DateTimeField(db_index=True),
39
+ ),
40
+ ]
@@ -0,0 +1,100 @@
1
+ # Generated by Django 3.2.13 on 2022-08-25 01:51
2
+
3
+ import _socket
4
+ from django.db import migrations, models
5
+ import django_audit_fields.fields.hostname_modification_field
6
+ import django_audit_fields.fields.userfield
7
+ import django_audit_fields.fields.uuid_auto_field
8
+ import django_audit_fields.models.audit_model_mixin
9
+ import django_revision.revision_field
10
+
11
+
12
+ class Migration(migrations.Migration):
13
+ dependencies = [
14
+ ("edc_action_item", "0029_auto_20220704_1841"),
15
+ ]
16
+
17
+ operations = [
18
+ migrations.CreateModel(
19
+ name="EdcPermissions",
20
+ fields=[
21
+ (
22
+ "revision",
23
+ django_revision.revision_field.RevisionField(
24
+ blank=True,
25
+ editable=False,
26
+ help_text="System field. Git repository tag:branch:commit.",
27
+ max_length=75,
28
+ null=True,
29
+ verbose_name="Revision",
30
+ ),
31
+ ),
32
+ (
33
+ "created",
34
+ models.DateTimeField(
35
+ blank=True,
36
+ default=django_audit_fields.models.audit_model_mixin.utcnow,
37
+ ),
38
+ ),
39
+ (
40
+ "modified",
41
+ models.DateTimeField(
42
+ blank=True,
43
+ default=django_audit_fields.models.audit_model_mixin.utcnow,
44
+ ),
45
+ ),
46
+ (
47
+ "user_created",
48
+ django_audit_fields.fields.userfield.UserField(
49
+ blank=True,
50
+ help_text="Updated by admin.save_model",
51
+ max_length=50,
52
+ verbose_name="user created",
53
+ ),
54
+ ),
55
+ (
56
+ "user_modified",
57
+ django_audit_fields.fields.userfield.UserField(
58
+ blank=True,
59
+ help_text="Updated by admin.save_model",
60
+ max_length=50,
61
+ verbose_name="user modified",
62
+ ),
63
+ ),
64
+ (
65
+ "hostname_created",
66
+ models.CharField(
67
+ blank=True,
68
+ default=_socket.gethostname,
69
+ help_text="System field. (modified on create only)",
70
+ max_length=60,
71
+ ),
72
+ ),
73
+ (
74
+ "hostname_modified",
75
+ django_audit_fields.fields.hostname_modification_field.HostnameModificationField(
76
+ blank=True,
77
+ help_text="System field. (modified on every save)",
78
+ max_length=50,
79
+ ),
80
+ ),
81
+ ("device_created", models.CharField(blank=True, max_length=10)),
82
+ ("device_modified", models.CharField(blank=True, max_length=10)),
83
+ (
84
+ "id",
85
+ django_audit_fields.fields.uuid_auto_field.UUIDAutoField(
86
+ blank=True,
87
+ editable=False,
88
+ help_text="System auto field. UUID primary key.",
89
+ primary_key=True,
90
+ serialize=False,
91
+ ),
92
+ ),
93
+ ],
94
+ options={
95
+ "verbose_name": "Edc Permissions",
96
+ "verbose_name_plural": "Edc Permissions",
97
+ "abstract": False,
98
+ },
99
+ ),
100
+ ]
@@ -0,0 +1,26 @@
1
+ # Generated by Django 3.2.13 on 2022-09-22 19:36
2
+
3
+ from django.db import migrations, models
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+ dependencies = [
8
+ ("edc_action_item", "0030_edcpermissions"),
9
+ ]
10
+
11
+ operations = [
12
+ migrations.AlterField(
13
+ model_name="actionitem",
14
+ name="reference_model",
15
+ field=models.CharField(
16
+ help_text="model name in label_lower format", max_length=50, null=True
17
+ ),
18
+ ),
19
+ migrations.AlterField(
20
+ model_name="historicalactionitem",
21
+ name="reference_model",
22
+ field=models.CharField(
23
+ help_text="model name in label_lower format", max_length=50, null=True
24
+ ),
25
+ ),
26
+ ]
@@ -0,0 +1,62 @@
1
+ # Generated by Django 4.2.1 on 2023-07-05 02:16
2
+
3
+ from django.db import migrations
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+ dependencies = [
8
+ ("edc_action_item", "0031_auto_20220922_2236"),
9
+ ]
10
+
11
+ operations = [
12
+ migrations.AlterModelOptions(
13
+ name="actionitem",
14
+ options={
15
+ "default_manager_name": "objects",
16
+ "default_permissions": (
17
+ "add",
18
+ "change",
19
+ "delete",
20
+ "view",
21
+ "export",
22
+ "import",
23
+ ),
24
+ "get_latest_by": "modified",
25
+ "ordering": ("-modified", "-created"),
26
+ "verbose_name": "Action Item",
27
+ "verbose_name_plural": "Action Items",
28
+ },
29
+ ),
30
+ migrations.AlterModelOptions(
31
+ name="actiontype",
32
+ options={
33
+ "default_manager_name": "objects",
34
+ "default_permissions": (
35
+ "add",
36
+ "change",
37
+ "delete",
38
+ "view",
39
+ "export",
40
+ "import",
41
+ ),
42
+ "get_latest_by": "modified",
43
+ "ordering": ["name"],
44
+ },
45
+ ),
46
+ migrations.AlterModelOptions(
47
+ name="reference",
48
+ options={
49
+ "default_manager_name": "objects",
50
+ "default_permissions": (
51
+ "add",
52
+ "change",
53
+ "delete",
54
+ "view",
55
+ "export",
56
+ "import",
57
+ ),
58
+ "get_latest_by": "modified",
59
+ "ordering": ("-modified", "-created"),
60
+ },
61
+ ),
62
+ ]
@@ -0,0 +1,23 @@
1
+ # Generated by Django 4.2.1 on 2023-07-07 19:25
2
+
3
+ from django.db import migrations
4
+ import edc_action_item.models.action_item
5
+
6
+
7
+ class Migration(migrations.Migration):
8
+ dependencies = [
9
+ (
10
+ "edc_action_item",
11
+ "0032_alter_actionitem_options_alter_actiontype_options_and_more",
12
+ ),
13
+ ]
14
+
15
+ operations = [
16
+ migrations.AlterModelManagers(
17
+ name="actionitem",
18
+ managers=[
19
+ ("objects", edc_action_item.models.action_item.ActionItemManager()),
20
+ ("on_site", edc_action_item.models.action_item.CurrentSiteManager()),
21
+ ],
22
+ ),
23
+ ]