From 793bb6a48880146dff5398eb0d4e81f15100db2b Mon Sep 17 00:00:00 2001 From: Claude Paroz Date: Mon, 3 Jun 2024 16:49:01 +0200 Subject: [PATCH] Initial commit --- .gitignore | 13 + INSTALL | 12 + LICENSE | 661 ++++ README.md | 51 + aemo/__init__.py | 0 aemo/admin.py | 197 ++ aemo/export.py | 212 ++ aemo/file_array_field.py | 131 + aemo/forms.py | 969 ++++++ aemo/management/commands/anonymize.py | 126 + aemo/management/commands/test.py | 10 + aemo/migrations/0001_initial.py | 382 +++ aemo/migrations/0002_unaccent_extension.py | 21 + aemo/migrations/__init__.py | 0 aemo/models.py | 1446 ++++++++ aemo/pdf.py | 636 ++++ aemo/static/css/autocomplete.min.css | 1 + aemo/static/css/main.css | 359 ++ aemo/static/css/tablesort.css | 33 + aemo/static/docs/sifp_agenda_hebdo.doc | Bin 0 -> 169472 bytes aemo/static/favicon.png | Bin 0 -> 592 bytes aemo/static/ficons/README | 2 + aemo/static/ficons/docx.svg | 1 + aemo/static/ficons/image.svg | 1 + aemo/static/ficons/master.svg | 1 + aemo/static/ficons/pdf.svg | 1 + aemo/static/ficons/xlsx.svg | 1 + aemo/static/img/SRK_DL_Portal.jpg | Bin 0 -> 138268 bytes aemo/static/img/bandeau_rouge.png | Bin 0 -> 466 bytes aemo/static/img/bandeau_vert.png | Bin 0 -> 255 bytes aemo/static/img/coordonnees.gif | Bin 0 -> 3558 bytes aemo/static/img/edit.svg | 8 + aemo/static/img/eduqua.png | Bin 0 -> 3224 bytes aemo/static/img/family.png | Bin 0 -> 23923 bytes aemo/static/img/filter_off.svg | 76 + aemo/static/img/formation.png | Bin 0 -> 5843 bytes aemo/static/img/help.png | Bin 0 -> 543 bytes aemo/static/img/icon_add.jpeg | Bin 0 -> 6288 bytes aemo/static/img/journal.jpg | Bin 0 -> 86649 bytes aemo/static/img/logo-cr.png | Bin 0 -> 42347 bytes aemo/static/img/logo-cr.svg | 219 ++ aemo/static/img/logo-zewo.png | Bin 0 -> 22599 bytes aemo/static/img/logo-zewo.svg | 1 + aemo/static/img/printer.png | Bin 0 -> 10723 bytes aemo/static/img/reseau.png | Bin 0 -> 3905 bytes aemo/static/img/stat.png | Bin 0 -> 2249 bytes aemo/static/img/telephone.png | Bin 0 -> 119559 bytes aemo/static/img/warning.svg | 3 + aemo/static/js/DateTimeShortcuts.js | 424 +++ aemo/static/js/autocomplete.min.js | 1 + aemo/static/js/autosize.min.js | 6 + aemo/static/js/main.js | 241 ++ aemo/static/js/sorts/tablesort.date.min.js | 6 + aemo/static/js/sorts/tablesort.number.min.js | 6 + aemo/static/js/tablesort.min.js | 6 + .../widgets/group_checkbox_option.html | 1 + aemo/templates/widgets/input_option.html | 2 + aemo/templates/widgets/prestation_radio.html | 2 + aemo/templatetags/__init__.py | 0 aemo/templatetags/my_tags.py | 351 ++ aemo/test.pdf | Bin 0 -> 12148 bytes aemo/tests.py | 2910 +++++++++++++++++ aemo/urls.py | 165 + aemo/utils.py | 207 ++ aemo/views.py | 1673 ++++++++++ aemo/views_stats.py | 909 +++++ archive/__init__.py | 0 archive/admin.py | 9 + archive/forms.py | 31 + archive/migrations/0001_Add_archive_model.py | 30 + archive/migrations/0002_longer_intervenant.py | 16 + archive/migrations/__init__.py | 0 archive/models.py | 19 + archive/pdf.py | 64 + archive/templates/archive/key_upload.html | 18 + archive/templates/archive/list.html | 37 + archive/templates/archive/list_partial.html | 28 + archive/tests/__init__.py | 0 archive/tests/crne_rsa | 51 + archive/tests/crne_rsa.pub | 1 + archive/tests/sample-2.msg | Bin 0 -> 9728 bytes archive/tests/sample.doc | Bin 0 -> 9216 bytes archive/tests/sample.docx | Bin 0 -> 4239 bytes archive/tests/sample.msg | Bin 0 -> 2045952 bytes archive/tests/sample.pdf | Bin 0 -> 8621 bytes archive/tests/tests.py | 204 ++ archive/urls.py | 9 + archive/views.py | 153 + common/__init__.py | 0 common/choices.py | 99 + common/fields.py | 26 + common/formats/fr/formats.py | 31 + common/middleware.py | 35 + common/urls.py | 42 + common/wsgi.py | 33 + docker-compose.override.yml | 25 + docker-compose.yml | 18 + docker-dev/.env-db | 8 + docker-dev/.env-web | 3 + docker-dev/Dockerfile | 26 + docker-dev/fabfile.py | 76 + manage.py | 15 + requirements.txt | 20 + requirements_dev.txt | 3 + ruff.toml | 4 + settings/README | 6 + settings/aemo.py | 189 ++ settings/aemo_tests.py | 14 + settings/dev_docker.py | 14 + templates/403.html | 19 + templates/404-public.html | 8 + templates/404.html | 8 + templates/500.html | 8 + templates/actions.html | 16 + templates/admin/menu_principal.html | 22 + templates/aemo/acces_famille.html | 12 + templates/aemo/agenda_suivi.html | 127 + templates/aemo/bilan.html | 42 + templates/aemo/cercle_scolaire_edit.html | 22 + templates/aemo/cercle_scolaire_list.html | 34 + templates/aemo/charge_utilisateurs.html | 39 + templates/aemo/contact_edit.html | 45 + templates/aemo/contact_list.html | 79 + templates/aemo/demande_edit.html | 47 + templates/aemo/document_upload.html | 24 + templates/aemo/export.html | 22 + templates/aemo/famille_adresse.html | 35 + templates/aemo/famille_boutons.html | 8 + templates/aemo/famille_edit.html | 165 + templates/aemo/famille_list.html | 156 + templates/aemo/form_in_popup.html | 36 + templates/aemo/formation_edit.html | 67 + templates/aemo/menu_principal.html | 15 + templates/aemo/niveau_change.html | 11 + templates/aemo/object_confirm_delete.html | 22 + templates/aemo/permissions.html | 29 + templates/aemo/personne_edit.html | 125 + templates/aemo/personne_reseau_list.html | 88 + templates/aemo/prestation_edit.html | 48 + templates/aemo/prestation_generale.html | 67 + templates/aemo/prestation_list.html | 74 + templates/aemo/prestation_menu.html | 59 + templates/aemo/prestation_personnelle.html | 92 + templates/aemo/rapport.html | 48 + templates/aemo/rapport_edit.html | 25 + templates/aemo/role_edit.html | 22 + templates/aemo/role_list.html | 40 + templates/aemo/service_edit.html | 19 + templates/aemo/service_list.html | 36 + templates/aemo/suivi_edit.html | 175 + templates/aemo/suivis_termines_list.html | 130 + templates/aemo/utilisateur_edit.html | 48 + templates/aemo/utilisateur_journal.html | 24 + templates/aemo/utilisateur_list.html | 65 + templates/base.html | 119 + templates/bootstrap_headers.html | 7 + templates/index.html | 31 + templates/login.html | 32 + templates/pagination.html | 13 + templates/partial_agenda_cloture.html | 6 + templates/partial_show_docs.html | 8 + templates/partial_table_documents.html | 31 + .../registration/password_change_form.html | 27 + .../registration/password_reset_complete.html | 10 + .../registration/password_reset_confirm.html | 35 + .../registration/password_reset_done.html | 12 + .../registration/password_reset_form.html | 14 + templates/statistiques/stat-form.html | 11 + templates/statistiques/stat-tabs.html | 41 + templates/statistiques/statistiques.html | 98 + templates/statistiques/stats-age.html | 43 + templates/statistiques/stats-duree.html | 33 + templates/statistiques/stats-interv.html | 45 + templates/statistiques/stats-localite.html | 45 + templates/statistiques/stats-motifs.html | 120 + templates/statistiques/stats-niveaux.html | 37 + templates/statistiques/stats-prestations.html | 78 + templates/statistiques/stats-region.html | 45 + templates/two_factor/_base.html | 1 + templates/two_factor/_wizard_forms.html | 13 + templates/two_factor/profile/profile.html | 41 + templates/user_bar.html | 13 + 182 files changed, 17153 insertions(+) create mode 100644 .gitignore create mode 100644 INSTALL create mode 100644 LICENSE create mode 100644 README.md create mode 100644 aemo/__init__.py create mode 100644 aemo/admin.py create mode 100644 aemo/export.py create mode 100644 aemo/file_array_field.py create mode 100644 aemo/forms.py create mode 100644 aemo/management/commands/anonymize.py create mode 100644 aemo/management/commands/test.py create mode 100644 aemo/migrations/0001_initial.py create mode 100644 aemo/migrations/0002_unaccent_extension.py create mode 100644 aemo/migrations/__init__.py create mode 100644 aemo/models.py create mode 100644 aemo/pdf.py create mode 100644 aemo/static/css/autocomplete.min.css create mode 100644 aemo/static/css/main.css create mode 100644 aemo/static/css/tablesort.css create mode 100644 aemo/static/docs/sifp_agenda_hebdo.doc create mode 100644 aemo/static/favicon.png create mode 100644 aemo/static/ficons/README create mode 100644 aemo/static/ficons/docx.svg create mode 100644 aemo/static/ficons/image.svg create mode 100644 aemo/static/ficons/master.svg create mode 100644 aemo/static/ficons/pdf.svg create mode 100644 aemo/static/ficons/xlsx.svg create mode 100644 aemo/static/img/SRK_DL_Portal.jpg create mode 100644 aemo/static/img/bandeau_rouge.png create mode 100644 aemo/static/img/bandeau_vert.png create mode 100644 aemo/static/img/coordonnees.gif create mode 100644 aemo/static/img/edit.svg create mode 100644 aemo/static/img/eduqua.png create mode 100644 aemo/static/img/family.png create mode 100644 aemo/static/img/filter_off.svg create mode 100644 aemo/static/img/formation.png create mode 100644 aemo/static/img/help.png create mode 100644 aemo/static/img/icon_add.jpeg create mode 100644 aemo/static/img/journal.jpg create mode 100644 aemo/static/img/logo-cr.png create mode 100644 aemo/static/img/logo-cr.svg create mode 100644 aemo/static/img/logo-zewo.png create mode 100644 aemo/static/img/logo-zewo.svg create mode 100644 aemo/static/img/printer.png create mode 100644 aemo/static/img/reseau.png create mode 100644 aemo/static/img/stat.png create mode 100644 aemo/static/img/telephone.png create mode 100644 aemo/static/img/warning.svg create mode 100644 aemo/static/js/DateTimeShortcuts.js create mode 100644 aemo/static/js/autocomplete.min.js create mode 100644 aemo/static/js/autosize.min.js create mode 100644 aemo/static/js/main.js create mode 100644 aemo/static/js/sorts/tablesort.date.min.js create mode 100644 aemo/static/js/sorts/tablesort.number.min.js create mode 100644 aemo/static/js/tablesort.min.js create mode 100644 aemo/templates/widgets/group_checkbox_option.html create mode 100644 aemo/templates/widgets/input_option.html create mode 100644 aemo/templates/widgets/prestation_radio.html create mode 100644 aemo/templatetags/__init__.py create mode 100644 aemo/templatetags/my_tags.py create mode 100644 aemo/test.pdf create mode 100644 aemo/tests.py create mode 100644 aemo/urls.py create mode 100644 aemo/utils.py create mode 100644 aemo/views.py create mode 100644 aemo/views_stats.py create mode 100644 archive/__init__.py create mode 100644 archive/admin.py create mode 100644 archive/forms.py create mode 100644 archive/migrations/0001_Add_archive_model.py create mode 100644 archive/migrations/0002_longer_intervenant.py create mode 100644 archive/migrations/__init__.py create mode 100644 archive/models.py create mode 100644 archive/pdf.py create mode 100644 archive/templates/archive/key_upload.html create mode 100644 archive/templates/archive/list.html create mode 100644 archive/templates/archive/list_partial.html create mode 100644 archive/tests/__init__.py create mode 100644 archive/tests/crne_rsa create mode 100644 archive/tests/crne_rsa.pub create mode 100644 archive/tests/sample-2.msg create mode 100644 archive/tests/sample.doc create mode 100644 archive/tests/sample.docx create mode 100644 archive/tests/sample.msg create mode 100644 archive/tests/sample.pdf create mode 100644 archive/tests/tests.py create mode 100644 archive/urls.py create mode 100644 archive/views.py create mode 100644 common/__init__.py create mode 100644 common/choices.py create mode 100644 common/fields.py create mode 100644 common/formats/fr/formats.py create mode 100644 common/middleware.py create mode 100644 common/urls.py create mode 100644 common/wsgi.py create mode 100644 docker-compose.override.yml create mode 100644 docker-compose.yml create mode 100644 docker-dev/.env-db create mode 100644 docker-dev/.env-web create mode 100644 docker-dev/Dockerfile create mode 100644 docker-dev/fabfile.py create mode 100755 manage.py create mode 100644 requirements.txt create mode 100644 requirements_dev.txt create mode 100644 ruff.toml create mode 100644 settings/README create mode 100644 settings/aemo.py create mode 100644 settings/aemo_tests.py create mode 100644 settings/dev_docker.py create mode 100644 templates/403.html create mode 100644 templates/404-public.html create mode 100644 templates/404.html create mode 100644 templates/500.html create mode 100644 templates/actions.html create mode 100644 templates/admin/menu_principal.html create mode 100644 templates/aemo/acces_famille.html create mode 100644 templates/aemo/agenda_suivi.html create mode 100644 templates/aemo/bilan.html create mode 100644 templates/aemo/cercle_scolaire_edit.html create mode 100644 templates/aemo/cercle_scolaire_list.html create mode 100644 templates/aemo/charge_utilisateurs.html create mode 100644 templates/aemo/contact_edit.html create mode 100644 templates/aemo/contact_list.html create mode 100644 templates/aemo/demande_edit.html create mode 100644 templates/aemo/document_upload.html create mode 100644 templates/aemo/export.html create mode 100644 templates/aemo/famille_adresse.html create mode 100644 templates/aemo/famille_boutons.html create mode 100644 templates/aemo/famille_edit.html create mode 100644 templates/aemo/famille_list.html create mode 100644 templates/aemo/form_in_popup.html create mode 100644 templates/aemo/formation_edit.html create mode 100644 templates/aemo/menu_principal.html create mode 100644 templates/aemo/niveau_change.html create mode 100644 templates/aemo/object_confirm_delete.html create mode 100644 templates/aemo/permissions.html create mode 100644 templates/aemo/personne_edit.html create mode 100644 templates/aemo/personne_reseau_list.html create mode 100644 templates/aemo/prestation_edit.html create mode 100644 templates/aemo/prestation_generale.html create mode 100644 templates/aemo/prestation_list.html create mode 100644 templates/aemo/prestation_menu.html create mode 100644 templates/aemo/prestation_personnelle.html create mode 100644 templates/aemo/rapport.html create mode 100644 templates/aemo/rapport_edit.html create mode 100644 templates/aemo/role_edit.html create mode 100644 templates/aemo/role_list.html create mode 100644 templates/aemo/service_edit.html create mode 100644 templates/aemo/service_list.html create mode 100644 templates/aemo/suivi_edit.html create mode 100644 templates/aemo/suivis_termines_list.html create mode 100644 templates/aemo/utilisateur_edit.html create mode 100644 templates/aemo/utilisateur_journal.html create mode 100644 templates/aemo/utilisateur_list.html create mode 100644 templates/base.html create mode 100644 templates/bootstrap_headers.html create mode 100644 templates/index.html create mode 100644 templates/login.html create mode 100644 templates/pagination.html create mode 100644 templates/partial_agenda_cloture.html create mode 100644 templates/partial_show_docs.html create mode 100644 templates/partial_table_documents.html create mode 100644 templates/registration/password_change_form.html create mode 100644 templates/registration/password_reset_complete.html create mode 100644 templates/registration/password_reset_confirm.html create mode 100644 templates/registration/password_reset_done.html create mode 100644 templates/registration/password_reset_form.html create mode 100644 templates/statistiques/stat-form.html create mode 100644 templates/statistiques/stat-tabs.html create mode 100644 templates/statistiques/statistiques.html create mode 100644 templates/statistiques/stats-age.html create mode 100644 templates/statistiques/stats-duree.html create mode 100644 templates/statistiques/stats-interv.html create mode 100644 templates/statistiques/stats-localite.html create mode 100644 templates/statistiques/stats-motifs.html create mode 100644 templates/statistiques/stats-niveaux.html create mode 100644 templates/statistiques/stats-prestations.html create mode 100644 templates/statistiques/stats-region.html create mode 100644 templates/two_factor/_base.html create mode 100644 templates/two_factor/_wizard_forms.html create mode 100644 templates/two_factor/profile/profile.html create mode 100644 templates/user_bar.html diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9eb5f12 --- /dev/null +++ b/.gitignore @@ -0,0 +1,13 @@ +*.pyc +*.sqlite3 +*.dump +settings/__init__.py +/media/ +/fixtures/ +scripts/* +/static/ +.idea/* +.git/* +info/* +stock +data/* diff --git a/INSTALL b/INSTALL new file mode 100644 index 0000000..2d4c775 --- /dev/null +++ b/INSTALL @@ -0,0 +1,12 @@ +Base de données pour la gestion de CRNE +======================================= + +Installation de la clé de chiffrement/déchiffrement +--------------------------------------------------- + + +Une clé RSA permet de chiffrer les données: elle est générée par la commande suivante: + +ssh-keygen -t rsa -b 4096 -m PEM -C"secretariat@fondation-transit.ch" + +La clé privée est conservée sur une clé USB propriété de la CRNE. diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..be3f7b2 --- /dev/null +++ b/LICENSE @@ -0,0 +1,661 @@ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +. diff --git a/README.md b/README.md new file mode 100644 index 0000000..8fd14b5 --- /dev/null +++ b/README.md @@ -0,0 +1,51 @@ +# AEMO - Fribourg + +## Description + +TODO + +## Dev environment with docker-compose + +Prerequisites: + +- Docker & docker-compose installed on your system +- "docker" group exists on your system (`sudo groupadd docker` will fail anyway if it exists) +- Your user in "docker" group (`sudo usermod -aG docker $USER` + restart your system) + +### Setup + +You first have to create the untracked file "settings/__init__.py" to be able to run the docker environment. +Use command line: `echo "from settings.dev_docker import *" > settings/__init__.py` + +Then, you have to add your POST API credentials in it. +settings/__init__.py should looks like: + +```python +from settings.dev_docker import * + + +POST_API_USER = 'your user' +POST_API_PASSWORD = 'your password' +``` + +### Quick start + +To run a dev environment: `docker-compose up -d` +Then you'll be able to reach your local environment on localhost:8000 + +To collect static: `docker-compose exec web /src/manage.py collectstatic` + +To restart & rebuild your environment: `docker-compose down --remove-orphans && docker-compose up -d --build` + +To use Python debugger (breakpoint): `docker attach $(docker-compose ps -q web)` + +### Clone production data in your dev environment + +There are three fabric tasks you can use to clone & prepare production data in your dev environment: + +- `fab -r docker-dev -H download-remote-data` dumps remote (production) DB, downloads it and synchronizes media +- `fab -r docker-dev import-db-in-dev` overwrites local DB with the production DB +- `fab -r docker-dev create-admin-in-dev` create a superuser with credentials admin/admin + +You can also proceed all tasks in the same command with: +`fab -r docker-dev -H download-remote-data import-db-in-dev create-admin-in-dev` diff --git a/aemo/__init__.py b/aemo/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/aemo/admin.py b/aemo/admin.py new file mode 100644 index 0000000..9395aaf --- /dev/null +++ b/aemo/admin.py @@ -0,0 +1,197 @@ +from django.contrib import admin +from django.contrib.auth.admin import GroupAdmin, UserAdmin +from django.contrib.auth.forms import UserChangeForm +from django.contrib.auth.models import Group, Permission + +from .models import ( + Bilan, CercleScolaire, Contact, Document, Famille, Formation, GroupInfo, + Intervenant, LibellePrestation, Personne, Prestation, Rapport, Region, Role, + Service, Suivi, Utilisateur +) + + +class TypePrestationFilter(admin.SimpleListFilter): + title = 'Prest. famil./générales' + parameter_name = 'prest' + default_value = None + + def lookups(self, request, model_admin): + return ( + ('fam', 'Familiales'), + ('gen', 'Générales'), + ) + + def queryset(self, request, queryset): + value = self.value() + if value == 'fam': + return queryset.filter(famille__isnull=False).order_by('famille__nom') + elif value == 'gen': + return queryset.filter(famille__isnull=True).order_by('-date_prestation') + return queryset + + +class RegionFilter(admin.SimpleListFilter): + title = 'Région' + parameter_name = 'region' + + def lookups(self, request, model_admin): + typ = model_admin.model._meta.app_label + kwargs = {f"{typ}": True} + return [(reg.pk, reg.nom) for reg in Region.objects.filter(**kwargs)] + + def queryset(self, request, queryset): + if self.value(): + return queryset.filter(region_id=self.value()) + return queryset + + +class DocumentInline(admin.TabularInline): + model = Document + extra = 1 + + +class PersonneInLine(admin.StackedInline): + model = Personne + exclude = ('reseaux', 'remarque') + extra = 1 + + +@admin.register(Personne) +class PersonneAdmin(admin.ModelAdmin): + list_display = ('nom_prenom', 'adresse') + search_fields = ('nom', 'prenom') + + +@admin.register(Contact) +class ContactAdmin(admin.ModelAdmin): + list_display = ('nom', 'prenom', 'service', 'roles_display', 'est_actif') + list_filter = ('service', 'est_actif') + search_fields = ('nom', 'prenom', 'service__sigle') + + def roles_display(self, contact): + return contact.roles_str(sep=' / ') + roles_display.short_description = 'Rôles' + + +@admin.register(Famille) +class FamilleAdmin(admin.ModelAdmin): + list_display = ('nom', 'npa', 'localite', 'get_region') + list_filter = (RegionFilter,) + inlines = [PersonneInLine, DocumentInline] + ordering = ('nom',) + search_fields = ('nom', 'localite') + + def get_region(self, obj): + return obj.region.nom if obj.region else None + get_region.short_description = 'Région' + + def formfield_for_foreignkey(self, db_field, request, **kwargs): + if db_field.name == 'region': + app_label = self.model._meta.app_label + param = {f"{app_label}": True} + kwargs['queryset'] = Region.objects.filter(**param) + kwargs['label'] = 'Région' + return super().formfield_for_foreignkey(db_field, request, **kwargs) + + +@admin.register(Formation) +class FormationAdmin(admin.ModelAdmin): + list_display = ('personne', 'statut') + search_fields = ('personne__nom',) + ordering = ('personne__nom',) + + +class UtilisateurChangeForm(UserChangeForm): + class Meta(UserChangeForm.Meta): + model = Utilisateur + + +@admin.register(Utilisateur) +class UtilisateurAdmin(UserAdmin): + form = UtilisateurChangeForm + list_display = [ + 'nom', 'prenom', 'sigle', 'tel_prof', 'tel_prive', 'email', + 'taux_activite', 'is_active', 'last_login' + ] + fieldsets = UserAdmin.fieldsets + ( + (None, {'fields': ( + 'sigle', 'prenom', 'nom', 'rue', 'npa', 'localite', + 'tel_prof', 'tel_prive', 'service', 'taux_activite' + )}), + ) + + +admin.site.unregister(Group) + + +class GroupInfoInline(admin.StackedInline): + model = GroupInfo + + +@admin.register(Group) +class GroupAdmin(GroupAdmin): + inlines = [GroupInfoInline] + + +@admin.register(Region) +class RegionAdmin(admin.ModelAdmin): + list_display = ['nom'] + + +@admin.register(Role) +class RoleAdmin(admin.ModelAdmin): + list_display = ['nom', 'est_famille', 'est_intervenant', 'est_editeur'] + + +@admin.register(Service) +class ServiceAdmin(admin.ModelAdmin): + list_display = ['sigle', 'nom_complet'] + + +@admin.register(LibellePrestation) +class LibellePrestationAdmin(admin.ModelAdmin): + list_display = ['code', 'nom'] + + +@admin.register(Permission) +class PermissionAdmin(admin.ModelAdmin): + search_fields = ['name', 'codename'] + + +@admin.register(Document) +class DocumentAdmin(admin.ModelAdmin): + list_display = ('famille', 'titre') + search_fields = ('famille__nom',) + ordering = ('famille__nom',) + + +@admin.register(Suivi) +class SuiviAdmin(admin.ModelAdmin): + list_display = ('famille', 'equipe', 'etape') + list_filter = ('equipe',) + ordering = ('famille__nom',) + search_fields = ('famille__nom',) + + +@admin.register(Intervenant) +class IntervenantAdmin(admin.ModelAdmin): + list_display = ('intervenant', 'famille', 'role', 'date_debut', 'date_fin', 'fin_suivi') + list_filter = ('role',) + + def famille(self, obj): + return obj.suivi.famille + + def fin_suivi(self, obj): + return obj.suivi.date_fin_suivi + + +@admin.register(Prestation) +class PrestationAdmin(admin.ModelAdmin): + list_display = ('lib_prestation', 'date_prestation', 'duree', 'auteur') + list_filter = (TypePrestationFilter,) + search_fields = ('famille__nom', 'texte') + + +admin.site.register(Bilan) +admin.site.register(Rapport) +admin.site.register(CercleScolaire) diff --git a/aemo/export.py b/aemo/export.py new file mode 100644 index 0000000..b65f1a5 --- /dev/null +++ b/aemo/export.py @@ -0,0 +1,212 @@ +from datetime import timedelta +from tempfile import NamedTemporaryFile + +from django.http import HttpResponse + +from openpyxl import Workbook +from openpyxl.styles import Font +from openpyxl.utils import get_column_letter + +from .utils import format_d_m_Y + +openxml_contenttype = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' + + +class OpenXMLExport: + def __init__(self, sheet_title=None): + self.wb = Workbook() + self.ws = self.wb.active + if sheet_title: + self.ws.title = sheet_title + self.bold = Font(name='Calibri', bold=True) + self.row_idx = 1 + + def write_line(self, values, bold=False, col_widths=()): + # A values item can be an object with a `value` attribute + for col_idx, value in enumerate(values, start=1): + cell = self.ws.cell(row=self.row_idx, column=col_idx) + if isinstance(value, timedelta): + cell.number_format = '[h]:mm;@' + elif hasattr(value, 'number_format'): + cell.number_format = value.number_format + cell.value = getattr(value, 'value', value) + if bold: + cell.font = self.bold + if col_widths and len(col_widths) >= col_idx: + self.ws.column_dimensions[get_column_letter(col_idx)].width = col_widths[col_idx - 1] + self.row_idx += 1 + + def add_sheet(self, title): + self.wb.create_sheet(title) + self.ws = self.wb[title] + self.row_idx = 1 + + def get_http_response(self, filename): + with NamedTemporaryFile() as tmp: + self.wb.save(tmp.name) + tmp.seek(0) + response = HttpResponse(tmp, content_type=openxml_contenttype) + response['Content-Disposition'] = 'attachment; filename="{}"'.format(filename) + return response + + +class ExportReporting(OpenXMLExport): + def __init__(self): + super().__init__('temp') + self.first_sheet = True + # Totaux pour vérification interne dans les tests. + self._total_spe = {'eval': timedelta(0), 'suivi': timedelta(0), 'gen': timedelta(0)} + + def setup_sheet(self, title): + if not self.first_sheet: + self.add_sheet(title) + else: + self.ws.title = title + self.first_sheet = False + + def produce_suivis(self, sheet_title, query, mois): + self.setup_sheet(sheet_title) + SuiviSheet(self, mois).produce(query) + + def produce_nouveaux(self, sheet_title, query): + self.setup_sheet(sheet_title) + NouveauxSheet(self).produce(query) + + def produce_termines(self, sheet_title, query): + self.setup_sheet(sheet_title) + TerminesSheet(self).produce(query) + + def produce_totaux(self, sheet_title): + self.setup_sheet(sheet_title) + self.write_line(['Évaluation', self._total_spe['eval']], col_widths=[25, 10]) + self.write_line(['Accompagnement', self._total_spe['suivi']]) + self.write_line(['Intervention générale', self._total_spe['gen']]) + self.write_line(['Total', self._total_spe['eval'] + self._total_spe['suivi'] + self._total_spe['gen']]) + + +class BaseFamilleSheet: + en_tetes = [ + ('Institution', 12), ('Prestation', 10), ('Nom', 25), ('Prenom', 15), ('Genre', 8), + ('Date de naissance', 17), ('Adresse', 20), ('NPA', 8), ('Localité', 20), ('Canton', 8), + ('OPE', 25), ('Nom mère', 20), ('Prénom mère', 20), ('Nom père', 20), ('Prénom père', 20), + ('Autorité parentale', 18), ('Statut marital', 15), ('Statut financier', 15), + ('Fam. monopar.', 15), ('Nbre enfants', 12), + ('Date demande', 15), ('Provenance', 15), ('Motif demande', 40), ('Début suivi', 15), + ] + + def __init__(self, exp): + self.exp = exp + + def _set_col_dimensions(self): + for col_idx, (_, size) in enumerate(self.en_tetes, start=1): + self.exp.ws.column_dimensions[get_column_letter(col_idx)].width = size + + def produce(self, query): + self._set_col_dimensions() + self.exp.write_line([et[0] for et in self.en_tetes], bold=True) + for famille in query: + self.produce_famille(famille) + self.exp.ws.freeze_panes = self.exp.ws['A2'] + + def produce_famille(self, famille): + membres_suivis = famille.membres_suivis() + if membres_suivis: + for pers in famille.membres_suivis(): + data = self.collect_pers_data(famille, pers) + self.exp.write_line(data) + else: + data = self.collect_pers_data(famille, None) + self.exp.write_line(data) + + def collect_pers_data(self, famille, pers): + parents = famille.parents() + mere = next((par for par in parents if par.role.nom == 'Mère'), None) + pere = next((par for par in parents if par.role.nom == 'Père'), None) + return [ + 'Fondation Transit', + 'AEMO', + pers.nom if pers else famille.nom, + pers.prenom if pers else "-", + pers.genre if pers else "-", + format_d_m_Y(pers.date_naissance) if pers else "-", + pers.rue if pers else famille.rue, + pers.npa if pers else famille.npa, + pers.localite if pers else famille.localite, + 'NE', + famille.suivi.ope_referent.nom_prenom if famille.suivi.ope_referent else '', + mere.nom if mere else '', + mere.prenom if mere else '', + pere.nom if pere else '', + pere.prenom if pere else '', + famille.get_autorite_parentale_display(), + famille.get_statut_marital_display(), + famille.get_statut_financier_display(), + {True: 'OUI', False: 'NON', None: ''}[famille.monoparentale], + len(famille.membres_suivis()) + len(famille.enfants_non_suivis()), + + format_d_m_Y(famille.suivi.date_demande), + famille.get_provenance_display(), + famille.suivi.get_motif_demande_display(), + format_d_m_Y(famille.suivi.date_debut_suivi), + ] + + +class SuiviSheet(BaseFamilleSheet): + en_tetes = BaseFamilleSheet.en_tetes + [('H. Évaluation', 12), ('H. Suivi', 12), ('H. Prest. gén.', 12)] + + def __init__(self, exp, date_debut_mois): + self.date_debut_mois = date_debut_mois + super().__init__(exp) + + def produce_famille(self, famille): + # Prepare some data common to famille + nb_membres_suivis = len(famille.membres_suivis()) or 1 + famille._h_evaluation_par_pers = famille.total_mensuel_evaluation(self.date_debut_mois) // nb_membres_suivis + famille._h_suivi_par_pers = famille.total_mensuel_suivi(self.date_debut_mois) // nb_membres_suivis + super().produce_famille(famille) + + def collect_pers_data(self, famille, pers): + data = super().collect_pers_data(famille, pers) + h_evaluation = famille._h_evaluation_par_pers + h_suivi = famille._h_suivi_par_pers + h_prest_gen = famille.prest_gen # Annotation from the view. + data.extend([h_evaluation, h_suivi, h_prest_gen]) + # Variables des totaux + self.exp._total_spe['eval'] += h_evaluation + self.exp._total_spe['suivi'] += h_suivi + self.exp._total_spe['gen'] += h_prest_gen + return data + + +class NouveauxSheet(BaseFamilleSheet): + pass + + +class TerminesSheet(BaseFamilleSheet): + en_tetes = BaseFamilleSheet.en_tetes + [ + ('Date fin suivi', 15), ('Motif fin suivi', 15), ('Destination', 15), ('Total heures', 12), + ] + + def collect_pers_data(self, famille, pers): + data = super().collect_pers_data(famille, pers) + suivi = famille.suivi + data.extend([ + format_d_m_Y(suivi.date_fin_suivi), + famille.suivi.get_motif_fin_suivi_display(), + famille.get_destination_display(), + famille.temps_total_prestations_reparti(), + ]) + return data + + +class ExportStatistique(OpenXMLExport): + def __init__(self, *args, col_widths=None, **kwargs): + self.col_widths = col_widths + super().__init__(*args, **kwargs) + + def fill_data(self, generator): + for row in generator: + if row and row[0] == 'BOLD': + self.write_line(row[1:], bold=True, col_widths=self.col_widths) + else: + self.write_line(row, col_widths=self.col_widths) diff --git a/aemo/file_array_field.py b/aemo/file_array_field.py new file mode 100644 index 0000000..48a898c --- /dev/null +++ b/aemo/file_array_field.py @@ -0,0 +1,131 @@ +"""Uploaded on https://code.djangoproject.com/ticket/25756 by Riccardo Di Virgilio""" + +from django import forms +from django.contrib.postgres.fields import ArrayField +from django.core.exceptions import ValidationError +from django.db.models.fields.files import FieldFile, File + + +class MultiFileInput(forms.FileInput): + + def render(self, name, value, attrs={}, renderer=None): + attrs['multiple'] = 'multiple' + return super().render(name, None, attrs=attrs) + + def value_from_datadict(self, data, files, name): + if hasattr(files, 'getlist'): + return files.getlist(name) + else: + return [files.get(name)] + + +class MultiFileField(forms.FileField): + widget = MultiFileInput + default_error_messages = { + 'min_num': "Ensure at least %(min_num)s files are uploaded (received %(num_files)s).", + 'max_num': "Ensure at most %(max_num)s files are uploaded (received %(num_files)s).", + 'file_size': "File: %(uploaded_file_name)s, exceeded maximum upload size." + } + + def __init__(self, *args, **kwargs): + self.min_num = kwargs.pop('min_num', 0) + self.max_num = kwargs.pop('max_num', None) + self.maximum_file_size = kwargs.pop('maximum_file_size', None) + super().__init__(*args, **kwargs) + + def to_python(self, data): + ret = [] + for item in data: + ret.append(super().to_python(item)) + return ret + + def validate(self, data): + super().validate(data) + num_files = len(data) + if len(data) and not data[0]: + num_files = 0 + if num_files < self.min_num: + raise ValidationError(self.error_messages['min_num'] % {'min_num': self.min_num, 'num_files': num_files}) + elif self.max_num and num_files > self.max_num: + raise ValidationError(self.error_messages['max_num'] % {'max_num': self.max_num, 'num_files': num_files}) + for uploaded_file in data: + if self.maximum_file_size and uploaded_file.size > self.maximum_file_size: + raise ValidationError(self.error_messages['file_size'] % {'uploaded_file_name': uploaded_file.name}) + + def clean(self, data, initial=None): + value = super().clean(data, initial=initial) + # Do not overwrite, but append to initial + if data and initial: + value = initial + value + return value + + +def to_file_object(field, instance, file): + if isinstance(file, str) or file is None: + return field.attr_class(instance, field, file) + elif isinstance(file, File) and not isinstance(file, FieldFile): + file_copy = field.attr_class(instance, field, file.name) + file_copy.file = file + file_copy._committed = False + return file_copy + elif isinstance(file, FieldFile) and not hasattr(file, 'field'): + file.instance = instance + file.field = field + file.storage = field.storage + return file + else: + return file + + +class ArrayFileDescriptor: + + def __init__(self, field): + self.field = field + + def __get__(self, instance=None, owner=None): + if instance is None: + raise AttributeError( + "The '%s' attribute can only be accessed from %s instances." + % (self.field.name, owner.__name__)) + + return [ + to_file_object(self.field.base_field, instance, file) + for file in (instance.__dict__[self.field.name] or []) + ] + + def __set__(self, instance, value): + instance.__dict__[self.field.name] = value + + +class ArrayFileField(ArrayField): + + descriptor_class = ArrayFileDescriptor + + def set_attributes_from_name(self, name): + super(ArrayField, self).set_attributes_from_name(name) + self.base_field.set_attributes_from_name("%s_array" % name) + + def contribute_to_class(self, cls, name, **kwargs): + super().contribute_to_class(cls, name, **kwargs) + setattr(cls, self.name, self.descriptor_class(self)) + + def pre_save(self, instance, add): + "Returns field's value just before saving." + files = [ + to_file_object(self.base_field, instance, file) + for file in super(ArrayField, self).pre_save(instance, add) + ] + + for file_copy in files: + if file_copy and not file_copy._committed: + file_copy.save(file_copy.name, file_copy, save=False) + + return files + + def formfield(self, **kwargs): + defaults = { + 'form_class': MultiFileField, + 'max_num': self.size + } + defaults.update(kwargs) + return super(ArrayField, self).formfield(**defaults) diff --git a/aemo/forms.py b/aemo/forms.py new file mode 100644 index 0000000..f7034be --- /dev/null +++ b/aemo/forms.py @@ -0,0 +1,969 @@ +from datetime import date, timedelta + +import nh3 +from dal import autocomplete +from dal.widgets import WidgetMixin +from tinymce.widgets import TinyMCE + +from django import forms +from django.contrib import messages +from django.contrib.postgres.search import SearchQuery, SearchVector +from django.core.exceptions import ObjectDoesNotExist +from django.db.models import Count, Q +from django.utils.dates import MONTHS + +from city_ch_autocomplete.forms import CityChField, CityChMixin + +from common.choices import PROVENANCE_DESTINATION_CHOICES +from .models import ( + Bilan, Contact, Document, EquipeChoices, Famille, Formation, Intervenant, + Niveau, Personne, Prestation, Region, Rapport, Role, Service, Suivi, Utilisateur, +) +from .utils import format_nom_prenom, ANTICIPATION_POUR_DEBUT_SUIVI + + +class BootstrapMixin: + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + for ffield in self.fields.values(): + if (isinstance(ffield.widget, (PickSplitDateTimeWidget, PickDateWidget, WidgetMixin)) or + getattr(ffield.widget, '_bs_enabled', False)): + continue + elif isinstance(ffield.widget, (forms.Select, forms.NullBooleanSelect)): + self.add_attr(ffield.widget, 'form-select') + elif isinstance(ffield.widget, (forms.CheckboxInput, forms.RadioSelect)): + self.add_attr(ffield.widget, 'form-check-input') + else: + self.add_attr(ffield.widget, 'form-control') + + @staticmethod + def add_attr(widget, class_name): + if 'class' in widget.attrs: + widget.attrs['class'] += f' {class_name}' + else: + widget.attrs.update({'class': class_name}) + + +class BootstrapChoiceMixin: + """ + Mixin to customize choice widgets to set 'form-check' on container and + 'form-check-input' on sub-options. + """ + _bs_enabled = True + + def get_context(self, *args, **kwargs): + context = super().get_context(*args, **kwargs) + if 'class' in context['widget']['attrs']: + context['widget']['attrs']['class'] += ' form-check' + else: + context['widget']['attrs']['class'] = 'form-check' + return context + + def create_option(self, *args, attrs=None, **kwargs): + attrs = attrs or {} + if 'class' in attrs: + attrs['class'] += ' form-check-input' + else: + attrs.update({'class': 'form-check-input'}) + return super().create_option(*args, attrs=attrs, **kwargs) + + +class BSRadioSelect(BootstrapChoiceMixin, forms.RadioSelect): + pass + + +class ReadOnlyableMixin: + def __init__(self, *args, readonly=False, **kwargs): + self.readonly = readonly + super().__init__(*args, **kwargs) + if self.readonly: + for field in self.fields.values(): + field.disabled = True + + +class BSCheckboxSelectMultiple(forms.CheckboxSelectMultiple): + """ + Custom widget to set 'form-check' on container and 'form-check-input' on sub-options. + """ + _bs_enabled = True + + def get_context(self, *args, **kwargs): + context = super().get_context(*args, **kwargs) + context['widget']['attrs']['class'] = 'form-check' + return context + + def create_option(self, *args, attrs=None, **kwargs): + attrs = attrs.copy() if attrs else {} + if 'class' in attrs: + attrs['class'] += ' form-check-input' + else: + attrs.update({'class': 'form-check-input'}) + return super().create_option(*args, attrs=attrs, **kwargs) + + +class RichTextField(forms.CharField): + widget = TinyMCE + + def __init__(self, *args, **kwargs): + kwargs['widget'] = self.widget + super().__init__(*args, **kwargs) + + def clean(self, value): + value = super().clean(value) + return nh3.clean( + value, tags={'p', 'br', 'b', 'strong', 'u', 'i', 'em', 'ul', 'li'} + ) + + +class HMDurationField(forms.DurationField): + """A duration field taking HH:MM as input.""" + widget = forms.TextInput(attrs={'placeholder': 'hh:mm'}) + + def to_python(self, value): + if value in self.empty_values or isinstance(value, timedelta): + return super().to_python(value) + value += ':00' # Simulate seconds + return super().to_python(value) + + def prepare_value(self, value): + if isinstance(value, timedelta): + seconds = value.days * 24 * 3600 + value.seconds + hours = seconds // 3600 + minutes = seconds % 3600 // 60 + value = '{:02d}:{:02d}'.format(hours, minutes) + return value + + +class PickDateWidget(forms.DateInput): + class Media: + js = [ + 'admin/js/core.js', + 'admin/js/calendar.js', + # Include the Django 3.2 version without today link. + 'js/DateTimeShortcuts.js', + ] + + def __init__(self, attrs=None, **kwargs): + attrs = {'class': 'vDateField vDateField-rounded', 'size': '10', **(attrs or {})} + super().__init__(attrs=attrs, **kwargs) + + +class PickSplitDateTimeWidget(forms.SplitDateTimeWidget): + def __init__(self, attrs=None): + widgets = [PickDateWidget, forms.TimeInput(attrs={'class': 'TimeField'}, format='%H:%M')] + forms.MultiWidget.__init__(self, widgets, attrs) + + +class ContactForm(CityChMixin, BootstrapMixin, forms.ModelForm): + service = forms.ModelChoiceField(queryset=Service.objects.exclude(sigle='CRNE'), required=False) + roles = forms.ModelMultipleChoiceField( + label='Rôles', + queryset=Role.objects.exclude(est_famille=True).order_by('nom'), + widget=BSCheckboxSelectMultiple, + required=False + ) + city_auto = CityChField(required=False) + postal_code_model_field = 'npa' + city_model_field = 'localite' + + class Meta: + model = Contact + fields = [ + 'nom', 'prenom', 'profession', 'service', 'roles', 'rue', 'city_auto', 'npa', 'localite', + 'tel_prof', 'tel_prive', 'email', 'remarque' + ] + + +class RoleForm(BootstrapMixin, forms.ModelForm): + class Meta: + model = Role + fields = '__all__' + + +class ServiceForm(BootstrapMixin, forms.ModelForm): + class Meta: + model = Service + fields = ['sigle', 'nom_complet'] + + def clean_sigle(self): + return self.cleaned_data['sigle'].upper() + + +class FormationForm(BootstrapMixin, ReadOnlyableMixin, forms.ModelForm): + class Meta: + model = Formation + exclude = ('personne',) + + +class GroupSelectMultiple(BSCheckboxSelectMultiple): + option_template_name = "widgets/group_checkbox_option.html" + + def create_option(self, name, value, *args, **kwargs): + try: + help_ = value.instance.groupinfo.description + except ObjectDoesNotExist: + help_= '' + return { + **super().create_option(name, value, *args, **kwargs), + 'help': help_, + } + + +class UtilisateurForm(BootstrapMixin, forms.ModelForm): + roles = forms.ModelMultipleChoiceField( + label="Rôles", + queryset=Role.objects.exclude( + Q(est_famille=True) | Q(nom__in=['Personne significative', 'Référent']) + ).order_by('nom'), + widget=BSCheckboxSelectMultiple, + required=False + ) + + class Meta: + model = Utilisateur + fields = [ + 'nom', 'prenom', 'sigle', 'profession', 'tel_prof', 'tel_prive', 'username', + 'taux_activite', 'decharge', 'email', 'equipe', 'roles', 'groups' + ] + widgets = {'groups': GroupSelectMultiple} + labels = {'profession': 'Titre'} + + def __init__(self, **kwargs): + super().__init__(**kwargs) + self.fields['groups'].queryset = self.fields['groups'].queryset.order_by('name') + + +class PersonneForm(CityChMixin, BootstrapMixin, ReadOnlyableMixin, forms.ModelForm): + role = forms.ModelChoiceField(label="Rôle", queryset=Role.objects.filter(est_famille=True), required=True) + + city_auto = CityChField(required=False) + postal_code_model_field = 'npa' + city_model_field = 'localite' + + class Meta: + model = Personne + fields = ( + 'role', 'nom', 'prenom', 'date_naissance', 'genre', 'filiation', + 'rue', 'npa', 'localite', 'telephone', + 'email', 'profession', 'pays_origine', 'decedee', + 'allergies', 'remarque', 'remarque_privee', + ) + widgets = { + 'date_naissance': PickDateWidget, + } + labels = { + 'remarque_privee': 'Remarque privée (pas imprimée)', + } + + def __init__(self, **kwargs): + self.famille = kwargs.pop('famille', None) + role_id = kwargs.pop('role', None) + + super().__init__(**kwargs) + if self.famille: + self.initial['nom'] = self.famille.nom + self.initial['rue'] = self.famille.rue + self.initial['npa'] = self.famille.npa + self.initial['localite'] = self.famille.localite + self.initial['telephone'] = self.famille.telephone + + if role_id: + if role_id == 'ps': # personne significative + excl = Role.ROLES_PARENTS + ['Enfant suivi', 'Enfant non-suivi'] + self.fields['role'].queryset = Role.objects.filter( + famille=True + ).exclude(nom__in=excl) + elif role_id == 'parent': + self.fields['role'].queryset = Role.objects.filter(nom__in=Role.ROLES_PARENTS) + else: + self.role = Role.objects.get(pk=role_id) + + if self.role.nom in Role.ROLES_PARENTS: + self.fields['role'].queryset = Role.objects.filter(nom=self.role.nom) + self.initial['genre'] = 'M' if self.role.nom == 'Père' else 'F' + elif self.role.nom in ['Enfant suivi', 'Enfant non-suivi']: + self.fields['role'].queryset = Role.objects.filter(nom__in=['Enfant suivi', 'Enfant non-suivi']) + self.fields['profession'].label = 'Profession/École' + self.initial['role'] = self.role.pk + else: + if self.instance.pk: + famille = self.instance.famille + # Cloisonnement des choix pour les rôles en fonction du rôle existant + if self.instance.role.nom in Role.ROLES_PARENTS: + self.fields['role'].queryset = Role.objects.filter(nom__in=Role.ROLES_PARENTS) + elif self.instance.role.nom in ['Enfant suivi', 'Enfant non-suivi']: + self.fields['role'].queryset = Role.objects.filter(nom__in=['Enfant suivi', 'Enfant non-suivi']) + else: + excl = ['Enfant suivi', 'Enfant non-suivi'] + if len(famille.parents()) == 2: + excl.extend(Role.ROLES_PARENTS) + self.fields['role'].queryset = Role.objects.filter( + famille=True + ).exclude(nom__in=excl) + + def clean_nom(self): + return format_nom_prenom(self.cleaned_data['nom']) + + def clean_prenom(self): + return format_nom_prenom(self.cleaned_data['prenom']) + + def clean_localite(self): + localite = self.cleaned_data.get('localite') + if localite and localite[0].islower(): + localite = localite[0].upper() + localite[1:] + return localite + + def clean(self): + cleaned_data = super().clean() + if cleaned_data['decedee'] and cleaned_data['role'] == 'Enfant suivi': + raise forms.ValidationError('Un enfant décédé ne peut pas être «Enfant suivi»') + return cleaned_data + + def save(self, **kwargs): + if self.instance.pk is None: + self.instance.famille = self.famille + pers = Personne.objects.create_personne(**self.instance.__dict__) + else: + pers = super().save(**kwargs) + pers = Personne.objects.add_formation(pers) + return pers + + +class AgendaFormBase(BootstrapMixin, forms.ModelForm): + destination = forms.ChoiceField(choices=PROVENANCE_DESTINATION_CHOICES, required=False) + + class Meta: + fields = ( + 'date_demande', 'date_debut_evaluation', 'date_fin_evaluation', + 'date_debut_suivi', 'date_fin_suivi', 'motif_fin_suivi', 'destination' + ) + widgets = {field: PickDateWidget for field in fields[:-2]} + + def __init__(self, *args, **kwargs): + destination = kwargs.pop('destination', '') + self.request = kwargs.pop('request', None) + super().__init__(*args, **kwargs) + if self.instance.date_debut_suivi is not None or self.instance.motif_fin_suivi: + for fname in ('date_demande', 'date_debut_evaluation', 'date_fin_evaluation'): + self.fields[fname].disabled = True + if self.instance.motif_fin_suivi: + self.fields['date_debut_suivi'].disabled = True + else: + # Choix 'Autres' obsolète (#435), pourrait être supprimé quand plus référencé + self.fields['motif_fin_suivi'].choices = [ + ch for ch in self.fields['motif_fin_suivi'].choices if ch[0] != 'autres' + ] + + self.fields['destination'].choices = [('', '------')] + [ + ch for ch in PROVENANCE_DESTINATION_CHOICES if (ch[0] != 'autre' or destination == 'autre') + ] + self.initial['destination'] = destination + + def clean(self): + cleaned_data = super().clean() + + # Check date chronology + date_preced = None + for field_name in self._meta.fields[:-2]: + dt = cleaned_data.get(field_name) + if not dt: + continue + if date_preced and dt < date_preced: + raise forms.ValidationError( + "La date «{}» ne respecte pas l’ordre chronologique!".format(self.fields[field_name].label) + ) + date_preced = dt + + # Check mandatory dates + workflow = self._meta.model.WORKFLOW + for field, etape in reversed((workflow.items())): + if field == 'archivage': + continue + date_etape = cleaned_data.get(etape.date_nom()) + etape_courante = etape + etape_preced_oblig = workflow[etape.preced_oblig] + date_preced_oblig = cleaned_data.get(etape_preced_oblig.date_nom()) + while True: + etape_preced = workflow[etape_courante.precedente] + date_preced = cleaned_data.get(etape_preced.date_nom()) + if date_preced is None and etape_courante.num > 1: + etape_courante = etape_preced + else: + break + if date_etape and date_preced_oblig is None: + raise forms.ValidationError("La date «{}» est obligatoire".format(etape_preced_oblig.nom)) + + # Check dates out of range + for field_name in self.changed_data: + value = self.cleaned_data.get(field_name) + if isinstance(value, date): + if value > date.today(): + if field_name in ['date_debut_suivi', 'date_debut_evaluation', 'date_fin_evaluation']: + if value > date.today() + timedelta(days=ANTICIPATION_POUR_DEBUT_SUIVI): + self.add_error( + field_name, + forms.ValidationError( + "La saisie de cette date ne peut être " + f"anticipée de plus de {ANTICIPATION_POUR_DEBUT_SUIVI} jours !") + ) + else: + self.add_error(field_name, forms.ValidationError("La saisie anticipée est impossible !")) + elif not Prestation.check_date_allowed(self.request.user, value): + if self.request and self.request.user.has_perm('aemo.change_famille'): + messages.warning( + self.request, + 'Les dates saisies peuvent affecter les statistiques déjà communiquées !' + ) + else: + self.add_error( + field_name, + forms.ValidationError("La saisie de dates pour le mois précédent n’est pas permise !") + ) + + ddebut = cleaned_data.get('date_debut_suivi') + dfin = cleaned_data.get('date_fin_suivi') + motif = cleaned_data.get('motif_fin_suivi') + dest = cleaned_data.get('destination') + + if ddebut and dfin and motif and dest: # dossier terminé + return cleaned_data + elif ddebut and (dfin is None or motif == '' or dest == ''): # suivi en cours + if any([dfin, motif, dest]): + raise forms.ValidationError( + "Les champs «Fin de l'accompagnement», «Motif de fin» et «Destination» " + "sont obligatoires pour fermer le dossier." + ) + elif ddebut is None and dfin is None: # evaluation + if motif != '': # abandon + cleaned_data['date_fin_suivi'] = date.today() + return cleaned_data + + def save(self): + instance = super().save() + if instance.date_fin_suivi: + instance.famille.destination = self.cleaned_data['destination'] + instance.famille.save() + return instance + + +class PrestationRadioSelect(BSRadioSelect): + option_template_name = 'widgets/prestation_radio.html' + + +class PrestationForm(BootstrapMixin, forms.ModelForm): + class Meta: + model = Prestation + fields = ['date_prestation', 'duree', 'texte', 'manque', 'fichier', 'intervenants'] + widgets = { + 'date_prestation': PickDateWidget, + 'intervenants': BSCheckboxSelectMultiple, + 'lib_prestation': PrestationRadioSelect, + } + labels = { + 'lib_prestation': 'Prestation', + } + field_classes = { + 'duree': HMDurationField, + 'texte': RichTextField, + } + + def __init__(self, *args, famille=None, user, **kwargs): + self.user = user + self.famille = famille + super().__init__(*args, **kwargs) + self.fields['intervenants'].queryset = self.defaults_intervenants() + if famille: + intervenants = list(famille.suivi.intervenants.all()) + if len(intervenants): + if self.user not in intervenants: + intervenants.insert(0, self.user) + self.fields['intervenants'].choices = [(i.pk, i.nom_prenom) for i in intervenants] + + def defaults_intervenants(self): + return Utilisateur.intervenants() + + def clean_date_prestation(self): + date_prestation = self.cleaned_data['date_prestation'] + today = date.today() + if date_prestation > today: + raise forms.ValidationError("La saisie anticipée est impossible !") + + if not Prestation.check_date_allowed(self.user, date_prestation): + raise forms.ValidationError( + "La saisie des prestations des mois précédents est close !" + ) + return date_prestation + + def clean_texte(self): + texte = self.cleaned_data['texte'] + for snip in ('

', '


', '

'): + while texte.startswith(snip): + texte = texte[len(snip):].strip() + for snip in ('

', '


', '

'): + while texte.endswith(snip): + texte = texte[:-len(snip)].strip() + return texte + + +class DocumentUploadForm(BootstrapMixin, forms.ModelForm): + class Meta: + model = Document + fields = '__all__' + widgets = {'famille': forms.HiddenInput} + labels = {'fichier': ''} + + +class RapportEditForm(BootstrapMixin, forms.ModelForm): + class Meta: + model = Rapport + exclude = ['famille', 'auteur'] + widgets = { + 'famille': forms.HiddenInput, + 'date': PickDateWidget, + 'pres_interv': BSCheckboxSelectMultiple, + 'sig_interv': BSCheckboxSelectMultiple, + } + field_classes = { + 'situation': RichTextField, + 'projet': RichTextField, + 'observations': RichTextField, + } + field_order = [ + 'date', 'pres_interv', 'situation', 'observations', 'projet', 'sig_interv', + ] + + def __init__(self, user=None, **kwargs): + super().__init__(**kwargs) + if 'sig_interv' in self.fields: + interv_qs = Utilisateur.objects.filter( + pk__in=kwargs['initial']['famille'].suivi.intervenant_set.actifs( + self.instance.date or date.today() + ).values_list('intervenant', flat=True) + ) + self.fields['pres_interv'].queryset = interv_qs + self.fields['sig_interv'].queryset = interv_qs + + +class MonthSelectionForm(BootstrapMixin, forms.Form): + mois = forms.ChoiceField(choices=((mois_idx, MONTHS[mois_idx]) for mois_idx in range(1, 13))) + annee = forms.ChoiceField( + label='Année', + choices=((2019, 2019), + (2020, 2020), + (2021, 2021), + (2022, 2022), + (2023, 2023), + (2024, 2024)) + ) + + +class DateYearForm(forms.Form): + year = forms.ChoiceField(choices=[(str(y), str(y)) for y in range(2020, date.today().year + 1)]) + + def __init__(self, data=None, **kwargs): + if not data: + data = {'year': date.today().year} + super().__init__(data, **kwargs) + + +class ContactExterneAutocompleteForm(forms.ModelForm): + + class Meta: + model = Personne + fields = ('reseaux',) + widgets = {'reseaux': autocomplete.ModelSelect2Multiple(url='contact-externe-autocomplete')} + labels = {'reseaux': 'Contacts'} + + +class ContactFilterForm(forms.Form): + service = forms.ModelChoiceField(label="Service", queryset=Service.objects.all(), required=False) + role = forms.ModelChoiceField(label="Rôle", queryset=Role.objects.exclude(est_famille=True), required=False) + texte = forms.CharField( + widget=forms.TextInput(attrs={'placeholder': 'Recherche…', 'autocomplete': 'off'}), + required=False + ) + sort_by = forms.CharField(widget=forms.HiddenInput(), required=False) + + sort_by_mapping = { + 'nom': ['nom', 'prenom'], + 'service': ['service'], + 'role': ['roles__nom'], + 'activite': ['profession'], + } + + def filter(self, contacts): + if self.cleaned_data['service']: + contacts = contacts.filter(service=self.cleaned_data['service']) + if self.cleaned_data['role']: + contacts = contacts.filter(roles=self.cleaned_data['role']) + if self.cleaned_data['texte']: + contacts = contacts.filter(nom__icontains=self.cleaned_data['texte']) + if self.cleaned_data['sort_by']: + order_desc = self.cleaned_data['sort_by'].startswith('-') + contacts = contacts.order_by(*([ + ('-' if order_desc else '') + key + for key in self.sort_by_mapping.get(self.cleaned_data['sort_by'].strip('-'), []) + ])) + return contacts + + +class FamilleAdresseForm(CityChMixin, BootstrapMixin, forms.ModelForm): + city_auto = CityChField(required=False) + postal_code_model_field = 'npa' + city_model_field = 'localite' + + class Meta: + model = Famille + fields = ('rue', 'npa', 'localite') + + def __init__(self, **kwargs): + self.famille = kwargs.pop('famille', None) + super().__init__(**kwargs) + + membres = [ + (m.pk, f"{m.nom_prenom} ({m.role}), {m.adresse}") + for m in self.famille.membres.all() + ] + self.fields['membres'] = forms.MultipleChoiceField( + widget=BSCheckboxSelectMultiple, + choices=membres, + required=False + ) + + +class FamilleForm(BootstrapMixin, ReadOnlyableMixin, forms.ModelForm): + equipe = forms.ChoiceField(label="Équipe", choices=[('', '------')] + Suivi.EQUIPES_CHOICES[:2]) + + # Concernant 'npa' & 'location', ils sont en lecture seule ici => pas besoin de faire de l'autocomplete + class Meta: + model = Famille + fields = ['nom', 'rue', 'npa', 'localite', 'telephone', 'region', 'autorite_parentale', + 'monoparentale', 'statut_marital', 'connue', 'accueil', 'garde', + 'provenance', 'statut_financier'] + + def __init__(self, **kwargs): + super().__init__(**kwargs) + if self.instance and self.instance.pk: + self.fields['rue'].widget.attrs['readonly'] = True + self.fields['npa'].widget.attrs['readonly'] = True + self.fields['localite'].widget.attrs['readonly'] = True + self.initial['equipe'] = kwargs['instance'].suivi.equipe + self.fields['region'] = forms.ModelChoiceField( + label='Région', + queryset=Region.objects.order_by('nom'), + required=False, + disabled=self.fields['region'].disabled, + widget=forms.Select(attrs={'class': 'form-select'}) + ) + self.fields['provenance'].choices = [ + ch for ch in self.fields['provenance'].choices + if (ch[0] != 'autre' or self.instance.provenance == 'autre') + ] + + def save(self, **kwargs): + famille = super().save(**kwargs) + if famille.suivi.equipe != self.cleaned_data['equipe']: + famille.suivi.equipe = self.cleaned_data['equipe'] + famille.suivi.save() + return famille + + def clean_nom(self): + return format_nom_prenom(self.cleaned_data['nom']) + + def clean_localite(self): + localite = self.cleaned_data.get('localite') + if localite and localite[0].islower(): + localite = localite[0].upper() + localite[1:] + return localite + + +class FamilleCreateForm(CityChMixin, FamilleForm): + motif_detail = forms.CharField( + label="Motif de la demande", widget=forms.Textarea(), required=False + ) + city_auto = CityChField(required=False) + postal_code_model_field = 'npa' + city_model_field = 'localite' + field_order = ['nom', 'rue', 'city_auto'] + + class Meta(FamilleForm.Meta): + exclude = ['typ', 'destination'] + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.fields['provenance'].choices = [ + ch for ch in self.fields['provenance'].choices if ch[0] != 'autre' + ] + + def save(self, **kwargs): + famille = self._meta.model.objects.create_famille( + equipe=self.cleaned_data['equipe'], **self.instance.__dict__ + ) + famille.suivi.motif_detail = self.cleaned_data['motif_detail'] + famille.suivi.save() + return famille + + +class SuiviForm(ReadOnlyableMixin, forms.ModelForm): + equipe = forms.TypedChoiceField( + choices=[('', '-------')] + Suivi.EQUIPES_CHOICES[:2], required=False + ) + + class Meta: + model = Suivi + fields = [ + 'equipe', 'heure_coord', 'ope_referent', 'ope_referent_2', + 'mandat_ope', 'service_orienteur', 'service_annonceur', 'motif_demande', + 'motif_detail', 'demande_prioritaire', 'demarche', 'collaboration', + 'ressource', 'crise', 'remarque', 'remarque_privee', + ] + widgets = { + 'mandat_ope': BSCheckboxSelectMultiple, + 'motif_demande': BSCheckboxSelectMultiple, + } + + def __init__(self, **kwargs): + super().__init__(**kwargs) + self.fields['ope_referent'].queryset = Contact.membres_ope() + self.fields['ope_referent_2'].queryset = Contact.membres_ope() + + +class IntervenantForm(BootstrapMixin, forms.ModelForm): + intervenant = forms.ModelChoiceField( + queryset=Utilisateur.objects.filter(groups__name__startswith='aemo').distinct().order_by('nom') + ) + date_debut = forms.DateField( + label='Date de début', initial=date.today(), widget=PickDateWidget() + ) + + class Meta: + model = Intervenant + fields = ['intervenant', 'role', 'date_debut'] + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.fields['role'].queryset = Role.objects.filter(est_intervenant=True) + + +class IntervenantEditForm(BootstrapMixin, forms.ModelForm): + + class Meta: + model = Intervenant + fields = ['intervenant', 'role', 'date_debut', 'date_fin'] + widgets = { + 'date_debut': PickDateWidget(), + 'date_fin': PickDateWidget(), + } + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.fields['intervenant'].disabled = True + self.fields['role'].disabled = True + + +class DemandeForm(BootstrapMixin, ReadOnlyableMixin, forms.ModelForm): + class Meta: + model = Suivi + fields = ( + 'dates_demande', 'ref_presents', 'pers_famille_presentes', 'autres_pers_presentes', + 'difficultes', 'aides', 'competences', 'disponibilites', 'autres_contacts', 'remarque' + ) + field_classes = { + 'difficultes': RichTextField, + 'aides': RichTextField, + 'disponibilites': RichTextField, + 'competences': RichTextField, + } + widgets = { + 'autres_contacts': forms.Textarea(attrs={'cols': 120, 'rows': 4}), + 'remarque': forms.Textarea(attrs={'cols': 120, 'rows': 4}), + } + + +class AgendaForm(ReadOnlyableMixin, AgendaFormBase): + ope_referent = forms.ModelChoiceField( + queryset=Contact.membres_ope(), required=False + ) + + class Meta(AgendaFormBase.Meta): + model = Suivi + + +class BilanForm(BootstrapMixin, forms.ModelForm): + class Meta: + model = Bilan + exclude = ['famille', 'auteur'] + field_classes = { + 'objectifs': RichTextField, + 'rythme': RichTextField, + } + widgets = { + 'famille': forms.HiddenInput, + 'date': PickDateWidget, + 'sig_interv': BSCheckboxSelectMultiple, + } + labels = {'fichier': ''} + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.fields['sig_interv'].queryset = Utilisateur.objects.filter( + pk__in=kwargs['initial']['famille'].suivi.intervenant_set.actifs( + self.instance.date or date.today() + ).values_list('intervenant', flat=True) + ) + + +class NiveauForm(BootstrapMixin, forms.ModelForm): + class Meta: + model = Niveau + fields = ['niveau_interv', 'date_debut', 'date_fin'] + widgets = { + 'date_debut': PickDateWidget(), + 'date_fin': PickDateWidget(), + } + + def __init__(self, *args, **kwargs): + self.famille = kwargs.pop('famille') + super().__init__(*args, **kwargs) + if self.instance.pk is None: + self.fields.pop('date_fin') + if self.famille.niveaux.count() > 0: + self.fields['date_debut'].required = True + + def clean_niveau_interv(self): + niv = self.cleaned_data['niveau_interv'] + if self.instance.pk is None: + der_niv = self.famille.niveaux.last() if self.famille.niveaux.count() > 0 else None + if der_niv and der_niv.niveau_interv == niv: + raise forms.ValidationError(f"Le niveau {niv} est déjà actif.") + return niv + + +class EquipeFilterForm(forms.Form): + equipe = forms.ChoiceField( + label="Équipe", choices=[('', 'Toutes')] + EquipeChoices.choices, required=False, + widget=forms.Select(attrs={'class': 'form-select form-select-sm immediate-submit'}), + ) + + def filter(self, familles): + if self.cleaned_data['equipe']: + familles = familles.filter(suivi__equipe=self.cleaned_data['equipe']) + return familles + + +class FamilleFilterForm(EquipeFilterForm): + ressource = forms.ChoiceField( + label='Ressources', + required=False, + widget=forms.Select(attrs={'class': 'form-select form-select-sm immediate-submit'}) + ) + niveau = forms.ChoiceField( + label="Niv. d'interv.", + required=False, + widget=forms.Select(attrs={'class': 'form-select form-select-sm immediate-submit'}) + ) + interv = forms.ChoiceField( + label="Intervenant-e", + required=False, + widget=forms.Select(attrs={'class': 'form-select form-select-sm immediate-submit'}) + ) + nom = forms.CharField( + widget=forms.TextInput( + attrs={'placeholder': 'Nom de famille…', 'autocomplete': 'off', + 'class': 'form-control form-control-sm inline'}), + required=False + ) + duos = forms.ChoiceField( + label="Duos Educ/Psy", + required=False, + widget=forms.Select(attrs={'class': 'form-select form-select-sm immediate-submit'}) + ) + + def __init__(self, **kwargs): + super().__init__(**kwargs) + intervenants = Utilisateur.objects.filter(is_active=True, groups__name='aemo') + self.fields['interv'].choices = [ + ('', 'Tout-e-s'), ('0', 'Aucun')] + [ + (user.id, user.nom_prenom) for user in intervenants + ] + self.fields['niveau'].choices = [ + ('', 'Tous') + ] + [(key, val) for key, val in Niveau.INTERV_CHOICES] + + self.fields['ressource'].choices = [ + ('', 'Toutes') + ] + [(el.pk, el.nom) for el in Role.objects.filter( + nom__in=['ASE', 'IPE', 'Coach APA', 'Assistant-e social-e'] + )] + self.fields['duos'].choices = [ + ('', 'Tous') + ] + [ + (duo, duo) for duo in Famille.objects.exclude( + suivi__date_fin_suivi__isnull=False + ).with_duos().exclude(duo='').values_list('duo', flat=True).distinct().order_by('duo') + ] + + def filter(self, familles): + if self.cleaned_data['interv']: + if self.cleaned_data['interv'] == '0': + familles = familles.annotate( + num_interv=Count('suivi__intervenants', filter=( + Q(suivi__intervenant__date_fin__isnull=True) | + Q(suivi__intervenant__date_fin__gt=date.today()) + )) + ).filter(num_interv=0) + else: + familles = familles.filter( + Q(suivi__intervenant__intervenant=self.cleaned_data['interv']) & ( + Q(suivi__intervenant__date_fin__isnull=True) | + Q(suivi__intervenant__date_fin__gt=date.today()) + ) + ) + + if self.cleaned_data['nom']: + familles = familles.filter(nom__istartswith=self.cleaned_data['nom']) + + familles = super().filter(familles) + + if self.cleaned_data['niveau']: + familles = familles.with_niveau_interv().filter(niveau_interv=self.cleaned_data['niveau']) + + if self.cleaned_data['ressource']: + ress = Intervenant.objects.actifs().filter( + role=self.cleaned_data['ressource'], + ).values_list('intervenant', flat=True) + familles = familles.filter(suivi__intervenants__in=ress).distinct() + + if self.cleaned_data['duos']: + familles = familles.with_duos().filter(duo=self.cleaned_data['duos']) + return familles + + +class JournalAuteurFilterForm(forms.Form): + recherche = forms.CharField( + widget=forms.TextInput(attrs={ + 'class': 'search-form-fields form-control d-inline-block', + 'placeholder': 'recherche', + }), + required=False, + ) + auteur = forms.ModelChoiceField( + queryset=Utilisateur.objects.all(), + widget=forms.Select(attrs={'class': 'search-form-fields form-select d-inline-block immediate-submit'}), + required=False, + ) + + def __init__(self, famille=None, **kwargs): + super().__init__(**kwargs) + self.fields['auteur'].queryset = Utilisateur.objects.filter(prestations__famille=famille).distinct() + + def filter(self, prestations): + if self.cleaned_data['auteur']: + prestations = prestations.filter(auteur=self.cleaned_data['auteur']) + if self.cleaned_data['recherche']: + prestations = prestations.annotate( + search=SearchVector("texte", config="french_unaccent") + ).filter( + search=SearchQuery(self.cleaned_data['recherche'], config="french_unaccent") + ) + return prestations diff --git a/aemo/management/commands/anonymize.py b/aemo/management/commands/anonymize.py new file mode 100644 index 0000000..317d869 --- /dev/null +++ b/aemo/management/commands/anonymize.py @@ -0,0 +1,126 @@ +""" +Anonymiser les données de l'application AEMO +""" +import sys +from datetime import date, timedelta + +from django.core.management.base import BaseCommand + +from django_otp.plugins.otp_static.models import StaticDevice +from django_otp.plugins.otp_totp.models import TOTPDevice + +from aemo.models import Bilan, Contact, Famille, Personne, Prestation, Rapport, Suivi, Utilisateur + +try: + from faker import Faker +except ImportError: + print("La commande anonymize exige la présence du paquet Python Faker (pip install faker)") + sys.exit(1) + + +class Command(BaseCommand): + def handle(self, *args, **options): + fake = Faker('fr_CH') + + StaticDevice.objects.all().delete() + TOTPDevice.objects.all().delete() + + # Contacts et Utilisateurs + Contact.objects.filter(utilisateur__isnull=True, est_actif=False).delete() + for contact in Contact.objects.all().select_related('utilisateur'): + nom, prenom, service = fake.last_name(), fake.first_name(), contact.service + while Contact.objects.filter(nom=nom, prenom=prenom, service=service).exists(): + nom, prenom, service = fake.last_name(), fake.first_name(), contact.service + contact.prenom = prenom + contact.nom = nom + contact.rue = fake.street_address()[:30] + contact.npa = fake.postcode() + contact.localite = fake.city() + if contact.tel_prive: + contact.tel_prive = fake.phone_number() + if contact.tel_prof: + contact.tel_prof = fake.phone_number() + if contact.email: + contact.email = fake.email() + try: + util = contact.utilisateur + util.first_name = contact.prenom + util.last_name = contact.nom + username = f'{util.last_name}{util.first_name[0]}' + while Utilisateur.objects.filter(username=username).exists(): + username += '0' + util.username = username + util.set_password(fake.password()) + util.save() + except Utilisateur.DoesNotExist: + pass + contact.save() + + # Familles et Personnes + Famille.objects.filter(archived_at__date__gt=date.today() - timedelta(days=360)).delete() + for famille in Famille.objects.all(): + famille.nom = fake.last_name() + famille.rue = fake.street_address() + famille.npa = fake.postcode() + famille.localite = fake.city() + famille.telephone = fake.phone_number() + if famille.remarques: + famille.remarques = fake.text(max_nb_chars=100) + famille.save() + + for personne in Personne.objects.all().select_related('famille'): + personne.nom = personne.famille.nom + personne.prenom = fake.first_name() + if personne.date_naissance: + personne.date_naissance = fake.date_between( + personne.date_naissance - timedelta(days=100), + personne.date_naissance + timedelta(days=100), + ) + personne.rue = personne.famille.rue + personne.npa = personne.famille.npa + personne.localite = personne.famille.localite + if personne.telephone: + personne.telephone = fake.phone_number() + if personne.email: + personne.email = fake.email() + if personne.remarque: + personne.remarque = fake.text(max_nb_chars=100) + if personne.remarque_privee: + personne.remarque_privee = fake.text(max_nb_chars=100) + personne.save() + + # Suivi + for suivi in Suivi.objects.all(): + for text_field in [ + 'difficultes', 'aides', 'competences', 'disponibilites', 'collaboration', + 'ressource', 'crise', 'remarque', 'remarque_privee' + ]: + if getattr(suivi, text_field): + setattr(suivi, text_field, fake.text(max_nb_chars=200)) + for pres_field in ['pers_famille_presentes', 'ref_presents', 'autres_pers_presentes']: + if getattr(suivi, pres_field): + mots = getattr(suivi, pres_field).split(" ") + mots_rempl = " ".join([ + fake.first_name() if (len(mot) and mot[0].isupper()) else mot for mot in mots + ]) + setattr(suivi, pres_field, mots_rempl[:100]) + suivi.save() + + # Rapports/Bilans + for rapport in Rapport.objects.all(): + for text_field in [ + 'situation', 'evolutions', 'evaluation', 'projet', + ]: + if getattr(rapport, text_field): + setattr(rapport, text_field, fake.text(max_nb_chars=200)) + rapport.save() + for bilan in Bilan.objects.all(): + for text_field in ['objectifs', 'rythme']: + if getattr(bilan, text_field): + setattr(bilan, text_field, fake.text(max_nb_chars=200)) + bilan.save() + + # Prestations + for prest in Prestation.objects.all(): + prest.texte = fake.text(max_nb_chars=200) + prest.save(update_fields=['texte']) diff --git a/aemo/management/commands/test.py b/aemo/management/commands/test.py new file mode 100644 index 0000000..f85a7fd --- /dev/null +++ b/aemo/management/commands/test.py @@ -0,0 +1,10 @@ +from django.core.management.commands.test import Command as TestCommand +from django.test.utils import override_settings + + +class Command(TestCommand): + def handle(self, *args, **options): + with override_settings( + PASSWORD_HASHERS=['django.contrib.auth.hashers.MD5PasswordHasher'], + ): + return super().handle(*args, **options) diff --git a/aemo/migrations/0001_initial.py b/aemo/migrations/0001_initial.py new file mode 100644 index 0000000..1ced9bc --- /dev/null +++ b/aemo/migrations/0001_initial.py @@ -0,0 +1,382 @@ +# Generated by Django 5.0.4 on 2024-06-03 09:59 + +import common.fields +import django.contrib.auth.models +import django.contrib.auth.validators +import django.core.validators +import django.db.models.deletion +import django.utils.timezone +import django_countries.fields +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('auth', '0012_alter_user_first_name_max_length'), + ] + + operations = [ + migrations.CreateModel( + name='Contact', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('prenom', models.CharField(max_length=30, verbose_name='Prénom')), + ('nom', models.CharField(max_length=30, verbose_name='Nom')), + ('rue', models.CharField(blank=True, max_length=30, verbose_name='Rue')), + ('npa', models.CharField(blank=True, max_length=4, verbose_name='NPA')), + ('localite', models.CharField(blank=True, max_length=30, verbose_name='Localité')), + ('tel_prive', models.CharField(blank=True, max_length=30, verbose_name='Tél. privé')), + ('tel_prof', models.CharField(blank=True, max_length=30, verbose_name='Tél. prof.')), + ('email', models.EmailField(blank=True, max_length=100)), + ('profession', models.CharField(blank=True, max_length=100, verbose_name='Activité/prof.')), + ('remarque', models.TextField(blank=True, verbose_name='Remarque')), + ('est_actif', models.BooleanField(default=True, verbose_name='actif')), + ], + options={ + 'verbose_name': 'Contact', + 'ordering': ('nom', 'prenom'), + }, + ), + migrations.CreateModel( + name='CercleScolaire', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('nom', models.CharField(max_length=50, unique=True)), + ('telephone', models.CharField(blank=True, max_length=35, verbose_name='tél.')), + ], + options={ + 'verbose_name': 'Cercle scolaire', + 'verbose_name_plural': 'Cercles scolaires', + 'ordering': ('nom',), + }, + ), + migrations.CreateModel( + name='Famille', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('created_at', models.DateTimeField(auto_now_add=True)), + ('archived_at', models.DateTimeField(blank=True, null=True, verbose_name='Archivée le')), + ('nom', models.CharField(max_length=40, verbose_name='Nom de famille')), + ('rue', models.CharField(blank=True, max_length=60, verbose_name='Rue')), + ('npa', models.CharField(blank=True, max_length=4, verbose_name='NPA')), + ('localite', models.CharField(blank=True, max_length=30, verbose_name='Localité')), + ('telephone', models.CharField(blank=True, max_length=60, verbose_name='Tél.')), + ('autorite_parentale', models.CharField(blank=True, choices=[('conjointe', 'Conjointe'), ('pere', 'Père'), ('mere', 'Mère'), ('tutelle', 'Tutelle')], max_length=20, verbose_name='Autorité parentale')), + ('monoparentale', models.BooleanField(blank=True, default=None, null=True, verbose_name='Famille monoparent.')), + ('statut_marital', models.CharField(blank=True, choices=[('celibat', 'Célibataire'), ('mariage', 'Marié'), ('pacs', 'PACS'), ('concubin', 'Concubin'), ('veuf', 'Veuf'), ('separe', 'Séparé'), ('divorce', 'Divorcé')], max_length=20, verbose_name='Statut marital')), + ('connue', models.BooleanField(default=False, verbose_name='famille déjà suivie')), + ('accueil', models.BooleanField(default=False, verbose_name="famille d'accueil")), + ('besoins_part', models.BooleanField(default=False, verbose_name='famille à besoins particuliers')), + ('sap', models.BooleanField(default=False, verbose_name='famille s@p')), + ('garde', models.CharField(blank=True, choices=[('partage', 'garde partagée'), ('droit', 'droit de garde'), ('visite', 'droit de visite')], max_length=20, verbose_name='Type de garde')), + ('provenance', models.CharField(blank=True, choices=[('famille', 'Famille'), ('ies-ne', 'IES-NE'), ('ies-hc', 'IES-HC'), ('aemo', 'SAEMO'), ('fah', "Famille d'accueil"), ('refug', 'Centre d’accueil réfugiés'), ('hopital', 'Hôpital'), ('autre', 'Autre')], max_length=30, verbose_name='Provenance')), + ('destination', models.CharField(blank=True, choices=[('famille', 'Famille'), ('ies-ne', 'IES-NE'), ('ies-hc', 'IES-HC'), ('aemo', 'SAEMO'), ('fah', "Famille d'accueil"), ('refug', 'Centre d’accueil réfugiés'), ('hopital', 'Hôpital'), ('autre', 'Autre')], max_length=30, verbose_name='Destination')), + ('statut_financier', models.CharField(blank=True, choices=[('ai', 'AI PC'), ('gsr', 'GSR'), ('osas', 'OSAS'), ('revenu', 'Revenu')], max_length=30, verbose_name='Statut financier')), + ('remarques', models.TextField(blank=True)), + ], + options={ + 'ordering': ('nom', 'npa'), + 'permissions': ( + ('can_manage_waiting_list', "Gérer la liste d'attente"), + ('can_archive', 'Archiver les dossiers AEMO'), + ('export_stats', 'Exporter les statistiques') + ), + }, + ), + migrations.CreateModel( + name='LibellePrestation', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('code', models.CharField(max_length=6, unique=True, verbose_name='Code')), + ('nom', models.CharField(max_length=30, verbose_name='Nom')), + ('actes', models.TextField(blank=True, verbose_name='Actes à prester')), + ], + options={ + 'ordering': ('code',), + }, + ), + migrations.CreateModel( + name='Region', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('nom', models.CharField(max_length=30, unique=True)), + ('rue', models.CharField(blank=True, max_length=100, verbose_name='Rue')), + ], + ), + migrations.CreateModel( + name='Role', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('nom', models.CharField(max_length=50, unique=True, verbose_name='Nom')), + ('est_famille', models.BooleanField(default=False, verbose_name='Famille')), + ('est_intervenant', models.BooleanField(default=False, verbose_name='Intervenant')), + ('est_editeur', models.BooleanField(default=False, help_text='Un rôle éditeur donne le droit de modification des dossiers familles si la personne est intervenante.', verbose_name='Éditeur')), + ], + options={ + 'ordering': ('nom',), + }, + ), + migrations.CreateModel( + name='Service', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('sigle', models.CharField(max_length=20, unique=True, verbose_name='Sigle')), + ('nom_complet', models.CharField(blank=True, max_length=80, verbose_name='Nom complet')), + ], + options={ + 'ordering': ('sigle',), + }, + ), + migrations.CreateModel( + name='Utilisateur', + fields=[ + ('contact_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='aemo.contact')), + ('password', models.CharField(max_length=128, verbose_name='password')), + ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')), + ('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')), + ('username', models.CharField(error_messages={'unique': 'A user with that username already exists.'}, help_text='Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.', max_length=150, unique=True, validators=[django.contrib.auth.validators.UnicodeUsernameValidator()], verbose_name='username')), + ('first_name', models.CharField(blank=True, max_length=150, verbose_name='first name')), + ('last_name', models.CharField(blank=True, max_length=150, verbose_name='last name')), + ('is_staff', models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status')), + ('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')), + ('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')), + ('sigle', models.CharField(blank=True, max_length=5)), + ('equipe', models.CharField(blank=True, choices=[('montagnes', 'Montagnes et V-d-T'), ('littoral', 'Littoral et V-d-R')], max_length=10, verbose_name='Équipe')), + ('date_desactivation', models.DateField(blank=True, null=True, verbose_name='Date désactivation')), + ('taux_activite', models.PositiveSmallIntegerField(blank=True, default=0, validators=[django.core.validators.MaxValueValidator(100)], verbose_name='Taux d’activité (en %)')), + ('decharge', models.PositiveSmallIntegerField(blank=True, null=True, verbose_name='Heures de décharge')), + ('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.group', verbose_name='groups')), + ('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.permission', verbose_name='user permissions')), + ], + options={ + 'verbose_name': 'user', + 'verbose_name_plural': 'users', + 'abstract': False, + }, + bases=('aemo.contact', models.Model), + managers=[ + ('objects', django.contrib.auth.models.UserManager()), + ], + ), + migrations.CreateModel( + name='GroupInfo', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('description', models.TextField(blank=True)), + ('group', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='auth.group')), + ], + ), + migrations.CreateModel( + name='Niveau', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('niveau_interv', models.PositiveSmallIntegerField(choices=[(0, '0'), (1, '1'), (2, '2'), (3, '3')], verbose_name='Niveau d’intervention')), + ('date_debut', models.DateField(blank=True, null=True, verbose_name='Date début')), + ('date_fin', models.DateField(blank=True, null=True, verbose_name='Date fin')), + ('famille', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='niveaux', to='aemo.famille', verbose_name='Famille')), + ], + ), + migrations.CreateModel( + name='Personne', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('created_at', models.DateTimeField(auto_now_add=True, null=True)), + ('nom', models.CharField(max_length=30, verbose_name='Nom')), + ('prenom', models.CharField(blank=True, max_length=30, verbose_name='Prénom')), + ('date_naissance', models.DateField(blank=True, null=True, verbose_name='Date de naissance')), + ('genre', models.CharField(choices=[('M', 'M'), ('F', 'F')], default='M', max_length=1, verbose_name='Genre')), + ('rue', models.CharField(blank=True, max_length=60, verbose_name='Rue')), + ('npa', models.CharField(blank=True, max_length=4, verbose_name='NPA')), + ('localite', models.CharField(blank=True, max_length=30, verbose_name='Localité')), + ('telephone', models.CharField(blank=True, max_length=60, verbose_name='Tél.')), + ('email', models.EmailField(blank=True, max_length=254, verbose_name='Courriel')), + ('pays_origine', django_countries.fields.CountryField(blank=True, max_length=2, verbose_name='Nationalité')), + ('remarque', models.TextField(blank=True)), + ('remarque_privee', models.TextField(blank=True, verbose_name='Remarque privée')), + ('profession', models.CharField(blank=True, max_length=50, verbose_name='Profession')), + ('filiation', models.CharField(blank=True, max_length=80, verbose_name='Filiation')), + ('decedee', models.BooleanField(default=False, verbose_name='Cette personne est décédée')), + ('allergies', models.TextField(blank=True, verbose_name='Allergies')), + ('employeur', models.CharField(blank=True, max_length=50, verbose_name='Adresse empl.')), + ('permis', models.CharField(blank=True, max_length=30, verbose_name='Permis/séjour')), + ('validite', models.DateField(blank=True, null=True, verbose_name='Date validité')), + ('animaux', models.BooleanField(default=None, null=True, verbose_name='Animaux')), + ('famille', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='membres', to='aemo.famille')), + ('reseaux', models.ManyToManyField(blank=True, to='aemo.contact')), + ('role', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='aemo.role')), + ], + options={ + 'verbose_name': 'Personne', + 'ordering': ('nom', 'prenom'), + }, + ), + migrations.CreateModel( + name='Formation', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('statut', models.CharField(blank=True, choices=[('pre_scol', 'Pré-scolaire'), ('cycle1', 'Cycle 1'), ('cycle2', 'Cycle 2'), ('cycle3', 'Cycle 3'), ('apprenti', 'Apprentissage'), ('etudiant', 'Etudiant'), ('en_emploi', 'En emploi'), ('sans_emploi', 'Sans emploi'), ('sans_occupation', 'Sans occupation')], max_length=20, verbose_name='Scolarité')), + ('college', models.CharField(blank=True, max_length=50, verbose_name='Collège')), + ('classe', models.CharField(blank=True, max_length=50, verbose_name='Classe')), + ('enseignant', models.CharField(blank=True, max_length=50, verbose_name='Enseignant')), + ('creche', models.CharField(blank=True, max_length=50, verbose_name='Crèche')), + ('creche_resp', models.CharField(blank=True, max_length=50, verbose_name='Resp.crèche')), + ('entreprise', models.CharField(blank=True, max_length=50, verbose_name='Entreprise')), + ('maitre_apprentissage', models.CharField(blank=True, max_length=50, verbose_name="Maître d'appr.")), + ('remarque', models.TextField(blank=True)), + ('cercle_scolaire', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='aemo.cerclescolaire', verbose_name='Cercle scolaire')), + ('personne', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='aemo.personne')), + ], + options={ + 'verbose_name': 'Scolarité', + }, + ), + migrations.AddField( + model_name='famille', + name='region', + field=models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.SET_NULL, to='aemo.region'), + ), + migrations.AddField( + model_name='contact', + name='roles', + field=models.ManyToManyField(blank=True, related_name='contacts', to='aemo.role', verbose_name='Rôles'), + ), + migrations.AddField( + model_name='contact', + name='service', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='aemo.service'), + ), + migrations.CreateModel( + name='Suivi', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('equipe', models.CharField(choices=[('montagnes', 'Montagnes et V-d-T'), ('littoral', 'Littoral et V-d-R'), ('neuch_ville', 'Neuchâtel-ville (archives)'), ('litt_est', 'Littoral Est (archives)'), ('litt_ouest', 'Littoral Ouest (archives)')], max_length=15, verbose_name='Équipe')), + ('heure_coord', models.BooleanField(default=False, verbose_name='Heure de coordination')), + ('difficultes', models.TextField(blank=True, verbose_name='Difficultés')), + ('aides', models.TextField(blank=True, verbose_name='Aides souhaitées')), + ('competences', models.TextField(blank=True, verbose_name='Ressources/Compétences')), + ('dates_demande', models.CharField(blank=True, max_length=128, verbose_name='Dates')), + ('autres_contacts', models.TextField(blank=True, verbose_name='Autres services contactés')), + ('disponibilites', models.TextField(blank=True, verbose_name='Disponibilités')), + ('remarque', models.TextField(blank=True)), + ('remarque_privee', models.TextField(blank=True, verbose_name='Remarque privée')), + ('service_orienteur', models.CharField(blank=True, choices=[('famille', 'Famille'), ('ope', 'OPE'), ('aemo', 'AEMO'), ('cnpea', 'CNPea'), ('ecole', 'École'), ('res_prim', 'Réseau primaire'), ('res_sec', 'Réseau secondaire'), ('pediatre', 'Pédiatre'), ('autre', 'Autre')], max_length=15, verbose_name='Orienté vers l’AEMO par')), + ('service_annonceur', models.CharField(blank=True, max_length=60, verbose_name='Service annonceur')), + ('motif_demande', common.fields.ChoiceArrayField(base_field=models.CharField(choices=[('accompagnement', 'Accompagnement psycho-éducatif'), ('integration', 'Aide à l’intégration'), ('demande', 'Elaboration d’une demande (contrainte)'), ('crise', 'Travail sur la crise'), ('post-placement', 'Post-placement'), ('pre-placement', 'Pré-placement'), ('violence', 'Violence / maltraitances')], max_length=60), blank=True, null=True, size=None, verbose_name='Motif de la demande')), + ('motif_detail', models.TextField(blank=True, verbose_name='Motif')), + ('mandat_ope', common.fields.ChoiceArrayField(base_field=models.CharField(blank=True, choices=[('volontaire', 'Mandat volontaire'), ('curatelle', 'Curatelle 308'), ('referent', 'Référent'), ('enquete', 'Enquête'), ('tutelle', 'Curatelle de portée générale')], max_length=65), blank=True, null=True, size=None, verbose_name='Mandat OPE')), + ('referent_note', models.TextField(blank=True, verbose_name='Autres contacts')), + ('collaboration', models.TextField(blank=True, verbose_name='Collaboration')), + ('ressource', models.TextField(blank=True, verbose_name='Ressource')), + ('crise', models.TextField(blank=True, verbose_name='Gestion de crise')), + ('date_demande', models.DateField(blank=True, default=None, null=True, verbose_name='Demande déposée le')), + ('date_debut_evaluation', models.DateField(blank=True, default=None, null=True, verbose_name='Début de l’évaluation le')), + ('date_fin_evaluation', models.DateField(blank=True, default=None, null=True, verbose_name='Fin de l’évaluation le')), + ('date_debut_suivi', models.DateField(blank=True, default=None, null=True, verbose_name='Début du suivi le')), + ('date_fin_suivi', models.DateField(blank=True, default=None, null=True, verbose_name='Fin du suivi le')), + ('demande_prioritaire', models.BooleanField(default=False, verbose_name='Demande prioritaire')), + ('demarche', common.fields.ChoiceArrayField(base_field=models.CharField(blank=True, choices=[('volontaire', 'Volontaire'), ('contrainte', 'Contrainte'), ('post_placement', 'Post placement'), ('non_placement', 'Eviter placement')], max_length=60), blank=True, null=True, size=None, verbose_name='Démarche')), + ('pers_famille_presentes', models.CharField(blank=True, max_length=200, verbose_name='Membres famille présents')), + ('ref_presents', models.CharField(blank=True, max_length=250, verbose_name='Intervenants présents')), + ('autres_pers_presentes', models.CharField(blank=True, max_length=100, verbose_name='Autres pers. présentes')), + ('motif_fin_suivi', models.CharField(blank=True, choices=[('desengagement', 'Désengagement'), ('evol_positive', 'Autonomie familiale'), ('relai_amb', 'Relai vers ambulatoire'), ('relai', 'Relai vers autre service'), ('placement', 'Placement'), ('non_aboutie', 'Demande non aboutie'), ('non_dispo', 'Pas de disponibilités/place'), ('erreur', 'Erreur de saisie'), ('autres', 'Autres')], max_length=20, verbose_name='Motif de fin de suivi')), + ('famille', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='aemo.famille')), + ('ope_referent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='aemo.contact', verbose_name='as. OPE')), + ('ope_referent_2', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='aemo.contact', verbose_name='as. OPE 2')), + ('sse_referent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='aemo.contact', verbose_name='SSE')), + ], + ), + migrations.CreateModel( + name='Intervenant', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('date_debut', models.DateField(default=django.utils.timezone.now, verbose_name='Date début')), + ('date_fin', models.DateField(blank=True, null=True, verbose_name='Date fin')), + ('role', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='aemo.role')), + ('suivi', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='aemo.suivi')), + ('intervenant', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.AddField( + model_name='suivi', + name='intervenants', + field=models.ManyToManyField(blank=True, related_name='interventions', through='aemo.Intervenant', to=settings.AUTH_USER_MODEL), + ), + migrations.CreateModel( + name='Rapport', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('date', models.DateField(verbose_name='Date du résumé')), + ('situation', models.TextField(blank=True, verbose_name='Situation / contexte familial')), + ('observations', models.TextField(blank=True, verbose_name='Observations, évolution et hypothèses')), + ('projet', models.TextField(blank=True, verbose_name='Perspectives d’avenir')), + ('famille', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='rapports', to='aemo.famille')), + ('auteur', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL)), + ('pres_interv', models.ManyToManyField(blank=True, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Intervenants cités dans le résumé')), + ('sig_interv', models.ManyToManyField(blank=True, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Signature des intervenants')), + ], + ), + migrations.CreateModel( + name='Prestation', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('date_prestation', models.DateField(verbose_name='date de l’intervention')), + ('duree', models.DurationField(verbose_name='durée')), + ('familles_actives', models.PositiveSmallIntegerField(blank=True, default=0)), + ('texte', models.TextField(blank=True, verbose_name='Contenu')), + ('manque', models.BooleanField(default=False, verbose_name='Rendez-vous manqué')), + ('fichier', models.FileField(blank=True, upload_to='prestations', verbose_name='Fichier/image')), + ('famille', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='prestations', to='aemo.famille', verbose_name='Famille')), + ('lib_prestation', models.ForeignKey(default=None, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='prestations_%(app_label)s', to='aemo.libelleprestation')), + ('auteur', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL, verbose_name='auteur')), + ('intervenants', models.ManyToManyField(related_name='prestations', to=settings.AUTH_USER_MODEL)), + ], + options={ + 'ordering': ('-date_prestation',), + 'permissions': (('edit_prest_prev_month', 'Modifier prestations du mois précédent'),), + }, + ), + migrations.CreateModel( + name='JournalAcces', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('ordinaire', models.BooleanField(default=True)), + ('quand', models.DateTimeField(auto_now_add=True)), + ('famille', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to='aemo.famille')), + ('utilisateur', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.CreateModel( + name='Bilan', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('date', models.DateField(verbose_name='Date du bilan')), + ('objectifs', models.TextField(verbose_name='Objectifs')), + ('rythme', models.TextField(verbose_name='Rythme et fréquence')), + ('sig_famille', models.BooleanField(default=True, verbose_name='Apposer signature de la famille')), + ('fichier', models.FileField(blank=True, upload_to='bilans', verbose_name='Fichier/image')), + ('famille', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='bilans', to='aemo.famille')), + ('auteur', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='bilans', to=settings.AUTH_USER_MODEL)), + ('sig_interv', models.ManyToManyField(blank=True, to=settings.AUTH_USER_MODEL, verbose_name='Signature des intervenants')), + ], + ), + migrations.CreateModel( + name='Document', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('fichier', models.FileField(upload_to='doc', verbose_name='Nouveau fichier')), + ('titre', models.CharField(max_length=100)), + ('famille', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='documents', to='aemo.famille')), + ], + options={ + 'unique_together': {('famille', 'titre')}, + }, + ), + migrations.AlterUniqueTogether( + name='contact', + unique_together={('nom', 'prenom', 'service')}, + ), + ] diff --git a/aemo/migrations/0002_unaccent_extension.py b/aemo/migrations/0002_unaccent_extension.py new file mode 100644 index 0000000..3d721cb --- /dev/null +++ b/aemo/migrations/0002_unaccent_extension.py @@ -0,0 +1,21 @@ +from django.db import migrations +from django.contrib.postgres.operations import UnaccentExtension + +# ref for this migration: https://stackoverflow.com/questions/47230566 + + +class Migration(migrations.Migration): + + dependencies = [ + ('aemo', '0001_initial'), + ] + + operations = [ + UnaccentExtension(), + migrations.RunSQL("CREATE TEXT SEARCH CONFIGURATION french_unaccent(COPY = french);"), + migrations.RunSQL( + "ALTER TEXT SEARCH CONFIGURATION french_unaccent " + "ALTER MAPPING FOR hword, hword_part, word " + "WITH unaccent, french_stem;" + ), + ] diff --git a/aemo/migrations/__init__.py b/aemo/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/aemo/models.py b/aemo/models.py new file mode 100644 index 0000000..8865da3 --- /dev/null +++ b/aemo/models.py @@ -0,0 +1,1446 @@ +from collections import OrderedDict, namedtuple +from datetime import date, timedelta +from operator import attrgetter +from pathlib import Path + +from django.contrib.auth.models import AbstractUser, Group, UserManager +from django.contrib.postgres.aggregates import StringAgg +from django.core.validators import MaxValueValidator +from django.db import models +from django.db.models import Count, F, OuterRef, Q, Subquery, Sum +from django.db.models.functions import Coalesce, ExtractMonth, ExtractYear +from django.db.utils import IntegrityError +from django.urls import reverse +from django.utils import timezone +from django.utils.functional import cached_property + +from django_countries.fields import CountryField + +from common import choices +from common.fields import ChoiceArrayField + +from .utils import format_adresse, format_contact, format_d_m_Y, random_string_generator + + +class CercleScolaire(models.Model): + """ Les 7 cercles scolaires du canton""" + + nom = models.CharField(max_length=50, unique=True) + telephone = models.CharField('tél.', max_length=35, blank=True) + + class Meta: + verbose_name = 'Cercle scolaire' + verbose_name_plural = 'Cercles scolaires' + ordering = ('nom',) + + def __str__(self): + return self.nom + + +class Service(models.Model): + """ Services sociaux en lien avec la Fondation Transit """ + + sigle = models.CharField('Sigle', max_length=20, unique=True) + nom_complet = models.CharField('Nom complet', max_length=80, blank=True) + + class Meta: + ordering = ('sigle',) + + def __str__(self): + return self.sigle + + def save(self, *args, **kwargs): + self.sigle = self.sigle.upper() + super().save(*args, **kwargs) + + +class RoleManager(models.Manager): + def get_by_natural_key(self, nom): + return self.get(nom=nom) + + +class Role(models.Model): + NON_EDITABLE = ['Père', 'Mère', 'Enfant suivi', 'Enfant non-suivi'] + ROLES_PARENTS = ['Père', 'Mère'] + + nom = models.CharField("Nom", max_length=50, unique=True) + est_famille = models.BooleanField("Famille", default=False) + est_intervenant = models.BooleanField("Intervenant", default=False) + est_editeur = models.BooleanField("Éditeur", default=False, help_text=( + "Un rôle éditeur donne le droit de modification des dossiers familles si " + "la personne est intervenante." + )) + + objects = RoleManager() + + class Meta: + ordering = ('nom',) + + def __str__(self): + return self.nom + + @property + def editable(self): + return self.nom not in self.NON_EDITABLE + + def natural_key(self): + return (self.nom,) + + +class Contact(models.Model): + prenom = models.CharField('Prénom', max_length=30) + nom = models.CharField('Nom', max_length=30) + rue = models.CharField('Rue', max_length=30, blank=True) + npa = models.CharField('NPA', max_length=4, blank=True) + localite = models.CharField('Localité', max_length=30, blank=True) + tel_prive = models.CharField('Tél. privé', max_length=30, blank=True) + tel_prof = models.CharField('Tél. prof.', max_length=30, blank=True) + email = models.EmailField(max_length=100, blank=True) + service = models.ForeignKey(Service, null=True, blank=True, on_delete=models.PROTECT) + roles = models.ManyToManyField(Role, related_name='contacts', blank=True, verbose_name='Rôles') + profession = models.CharField('Activité/prof.', max_length=100, blank=True) + remarque = models.TextField("Remarque", blank=True) + est_actif = models.BooleanField('actif', default=True) + + class Meta: + verbose_name = 'Contact' + ordering = ('nom', 'prenom') + unique_together = ('nom', 'prenom', 'service') + + def __str__(self): + sigle = self.service.sigle if self.service else '' + return '{} ({})'.format(self.nom_prenom, sigle) if self.service else self.nom_prenom + + @property + def nom_prenom(self): + return '{} {}'.format(self.nom, self.prenom) + + @property + def adresse(self): + return format_adresse(self.rue, self.npa, self.localite) + + @cached_property + def all_roles(self): + return self.roles.all() + + def has_role(self, roles=()): + """Return True if user has at least one of the `roles` name.""" + return bool(set(r.nom for r in self.all_roles).intersection(set(roles))) + + def roles_str(self, sep=', '): + return sep.join([role.nom for role in self.all_roles]) + + @property + def contact(self): + return format_contact(self.tel_prof, self.email) + + @classmethod + def membres_ope(cls): + return cls.objects.filter(service__sigle__startswith='OPE', est_actif=True).select_related('service') + + +class EquipeChoices(models.TextChoices): + MONTAGNES = 'montagnes', 'Montagnes et V-d-T' + LITTORAL = 'littoral', 'Littoral et V-d-R' + + +class Utilisateur(Contact, AbstractUser): + sigle = models.CharField(max_length=5, blank=True) + equipe = models.CharField("Équipe", max_length=10, choices=EquipeChoices.choices, blank=True) + date_desactivation = models.DateField('Date désactivation', null=True, blank=True) + taux_activite = models.PositiveSmallIntegerField( + "Taux d’activité (en %)", blank=True, default=0, validators=[MaxValueValidator(100)] + ) + decharge = models.PositiveSmallIntegerField("Heures de décharge", blank=True, null=True) + + objects = UserManager() + + def __str__(self): + return self.nom_prenom + + @property + def groupes(self): + return [item.name for item in self.groups.all()] + + @property + def is_psy_or_educ(self): + return self.has_role({'Psy', 'Educ'}) + + @property + def is_responsable(self): + return self.has_role({'Responsable/coordinateur'}) + + @property + def is_admin_ipe(self): + return 'admin ipe' in self.groupes + + @property + def initiales(self): + return self.sigle if self.sigle else f'{self.prenom[0]}{self.nom[0]}' + + @property + def charge_max(self): + """ + Renvoie la charge maximale d'heures hebodmadaires de charge dossier en + fonction du taux d'activité. + """ + charge_map = { + 100: 32, 90: 28, 80: 24, 75: 22, 70: 20, 60: 16, 0: 0, + } + charge = charge_map.get(self.taux_activite, int(32 * self.taux_activite / 100)) + if self.decharge: + charge -= self.decharge + return charge + + def prestations_gen(self): + """Renvoie les prestations générales de l’utilisateur.""" + return self.prestations.filter(famille__isnull=True) + + def temps_total_prestations(self, unite): + return self.prestations.model.temps_total(self.prestations, tous_utilisateurs=False) + + def total_mensuel(self, unite, month, year): + prestations = self.prestations.filter( + date_prestation__year=year, date_prestation__month=month + ) + return self.prestations.model.temps_total(prestations, tous_utilisateurs=False) + + def totaux_mensuels(self, unite, year): + return [self.total_mensuel(unite, m, year) for m in range(1, 13)] + + def total_annuel(self, unite, year): + prestations = self.prestations.filter(date_prestation__year=year) + return self.prestations.model.temps_total(prestations, tous_utilisateurs=False) + + @classmethod + def _intervenants(cls, groupes=(), annee=None): + if annee is None: + # Utilisateurs actuellement actifs + utils = Utilisateur.objects.filter(date_desactivation__isnull=True) + else: + utils = Utilisateur.objects.filter( + Q(date_desactivation__isnull=True) | Q(date_desactivation__year__gte=annee) + ) + return utils.filter( + groups__name__in=groupes, + is_superuser=False + ).exclude( + groups__name__in=['direction'] + ).distinct() + + @classmethod + def intervenants(cls, annee=None): + return cls._intervenants( + groupes=['aemo'], + annee=annee + ) + + +class GroupInfo(models.Model): + group = models.OneToOneField(Group, on_delete=models.CASCADE) + description = models.TextField(blank=True) + + def __str__(self): + return f"Description of group {self.group.name}" + + +class Region(models.Model): + nom = models.CharField(max_length=30, unique=True) + rue = models.CharField("Rue", max_length=100, blank=True) + + def __str__(self): + return self.nom + + def __lt__(self, other): + return self.nom < (other.nom if other else '') + + +class FamilleQuerySet(models.QuerySet): + def with_duos(self): + """ + Renvoie une liste des groupes Psy/Educ différents, sous forme de chaînes + de sigles séparées par "/". + Peut aussi renvoyer 1 ou 3 intervenants, le cas échéant. + """ + return self.annotate( + duo=StringAgg( + F('suivi__intervenant__intervenant__sigle'), + delimiter='/', + filter=( + Q(suivi__intervenant__date_fin__isnull=True) & + Q(suivi__intervenant__role__nom__in=['Educ', 'Psy']) + ), + ordering='suivi__intervenant__intervenant__sigle', + ) + ) + + def with_niveau_interv(self): + """ + Annote les familles avec le niveau d’intervention le plus récent. + """ + return self.annotate( + niveau_interv=Subquery( + Niveau.objects.filter( + famille=OuterRef('pk') + ).order_by('-date_debut').values('niveau_interv')[:1] + ) + ) + + +class FamilleManager(models.Manager): + def get_queryset(self): + return FamilleQuerySet(self.model, using=self._db).filter( + suivi__isnull=False + ).prefetch_related( + models.Prefetch('membres', queryset=Personne.objects.select_related('role')) + ) + + def create_famille(self, equipe='', **kwargs): + kwargs.pop('_state', None) + famille = self.create(**kwargs) + Suivi.objects.create( + famille=famille, + equipe=equipe + ) + famille.suivi.date_demande = date.today() + famille.suivi.save() + return famille + + +class Famille(models.Model): + created_at = models.DateTimeField(auto_now_add=True, editable=False) + archived_at = models.DateTimeField('Archivée le', blank=True, null=True) + nom = models.CharField('Nom de famille', max_length=40) + rue = models.CharField('Rue', max_length=60, blank=True) + npa = models.CharField('NPA', max_length=4, blank=True) + localite = models.CharField('Localité', max_length=30, blank=True) + region = models.ForeignKey(to=Region, null=True, blank=True, default=None, on_delete=models.SET_NULL) + telephone = models.CharField('Tél.', max_length=60, blank=True) + autorite_parentale = models.CharField("Autorité parentale", max_length=20, + choices=choices.AUTORITE_PARENTALE_CHOICES, blank=True) + monoparentale = models.BooleanField('Famille monoparent.', default=None, blank=True, null=True) + statut_marital = models.CharField("Statut marital", max_length=20, choices=choices.STATUT_MARITAL_CHOICES, + blank=True) + connue = models.BooleanField("famille déjà suivie", default=False) + accueil = models.BooleanField("famille d'accueil", default=False) + # Pour CIPE + besoins_part = models.BooleanField("famille à besoins particuliers", default=False) + sap = models.BooleanField(default=False, verbose_name="famille s@p") + garde = models.CharField( + 'Type de garde', max_length=20, choices=choices.TYPE_GARDE_CHOICES, blank=True + ) + provenance = models.CharField( + 'Provenance', max_length=30, choices=choices.PROVENANCE_DESTINATION_CHOICES, blank=True) + destination = models.CharField( + 'Destination', max_length=30, choices=choices.PROVENANCE_DESTINATION_CHOICES, blank=True) + statut_financier = models.CharField( + 'Statut financier', max_length=30, choices=choices.STATUT_FINANCIER_CHOICES, blank=True) + remarques = models.TextField(blank=True) + + objects = FamilleManager() + + class Meta: + ordering = ('nom', 'npa') + permissions = ( + ("can_manage_waiting_list", "Gérer la liste d'attente"), + ("can_archive", "Archiver les dossiers AEMO"), + ('export_stats', 'Exporter les statistiques'), + ) + + def __str__(self): + return '{} - {}'.format(self.nom, self.adresse) + + @property + def adresse(self): + return format_adresse(self.rue, self.npa, self.localite) + + @property + def suivi(self): + return getattr(self, self.suivi_name) if self.suivi_name else None + + @property + def suivi_url(self): + return reverse('famille-suivi', args=[self.pk]) + + @property + def edit_url(self): + return reverse('famille-edit', args=[self.pk]) + + @property + def add_person_url(self): + return reverse('personne-add', args=[self.pk]) + + def redirect_after_personne_creation(self, personne): + return self.edit_url + + @property + def print_coords_url(self): + return reverse('print-coord-famille', args=[self.pk]) + + @classmethod + def actives(cls, date=None): + qs = Famille.objects.filter(suivi__isnull=False).order_by('nom', 'npa') + if date is not None: + return qs.filter(suivi__date_demande__lte=date).filter( + models.Q(suivi__date_fin_suivi__isnull=True) | + models.Q(suivi__date_fin_suivi__gte=date) + ) + else: + return qs.filter(suivi__date_fin_suivi__isnull=True) + + def interventions_actives(self, dt=None): + dt = dt or date.today() + return self.suivi.intervenant_set.filter( + Q(date_debut__lte=dt) & ( + Q(date_fin__isnull=True) | Q(date_fin__gte=dt) + ) + ).select_related('intervenant', 'role') + + def niveau_actuel(self): + try: + return [ + niv.niveau_interv for niv in sorted( + self.niveaux.all(), key=attrgetter('date_debut') + ) + ][-1] + except IndexError: + return None + + def membres_suivis(self): + if 'membres' in getattr(self, '_prefetched_objects_cache', {}): + return sorted([ + pers for pers in self._prefetched_objects_cache['membres'] if pers.role.nom == "Enfant suivi" + ], key=lambda p: p.date_naissance or date(1950, 1, 1)) + else: + return self.membres.filter(role__nom="Enfant suivi").order_by('date_naissance') + + def enfants_non_suivis(self): + if 'membres' in getattr(self, '_prefetched_objects_cache', {}): + return sorted([ + pers for pers in self._prefetched_objects_cache['membres'] if pers.role.nom == "Enfant non-suivi" + ], key=lambda p: p.date_naissance or date(1950, 1, 1)) + else: + return self.membres.filter(role__nom='Enfant non-suivi').order_by('date_naissance') + + def parents(self): + if 'membres' in getattr(self, '_prefetched_objects_cache', {}): + parents = [ + pers for pers in self._prefetched_objects_cache['membres'] + if pers.role.nom in Role.ROLES_PARENTS + ] + else: + parents = [ + pers for pers in self.membres.filter(role__nom__in=Role.ROLES_PARENTS) + ] + return sorted(parents, key=lambda p: p.role.nom) # Mère avant Père + + def autres_parents(self): + excluded_roles = Role.ROLES_PARENTS + ['Enfant suivi', 'Enfant non-suivi'] + if 'membres' in getattr(self, '_prefetched_objects_cache', {}): + return [ + pers for pers in self._prefetched_objects_cache['membres'] + if pers.role.nom not in excluded_roles + ] + else: + return self.membres.exclude(role__nom__in=excluded_roles) + + def access_ok(self, user): + if user.has_perm('aemo.change_famille') or user.is_responsable: + return True + intervs = self.interventions_actives() + return not intervs or user in [interv.intervenant for interv in intervs] + + def can_view(self, user): + return user.has_perm('aemo.view_famille') + + def can_edit(self, user): + if user.has_perm('aemo.change_famille') or user.is_responsable: + return True + if not self.suivi.date_fin_suivi or self.suivi.date_fin_suivi >= date.today(): + intervs = self.interventions_actives() + if ( + self.can_view(user) and + (not intervs or user in [ + interv.intervenant for interv in intervs if interv.role.est_editeur + ]) + ): + return True + return False + + def can_be_deleted(self, user): + if not user.has_perm('aemo.change_famille'): + return False + if self.suivi.motif_fin_suivi == 'erreur': + return True + return False + + def can_be_archived(self, user): + if self.archived_at: + return False + closed_since = date.today() - self.suivi.date_fin_suivi + return ( + user.has_perm('aemo.can_archive') and + self.suivi.date_fin_suivi is not None and + closed_since.days > 180 and + self.suivi.date_fin_suivi.year < date.today().year and + (date.today().month > 1 or closed_since.days > 400) + ) + + def temps_total_prestations(self, interv=None): + """ + Temps total des prestations liées à la famille, quel que soit le nombre + de membres suivis. + Filtré facultativement par intervenant. + """ + prest = self.prestations if interv is None else self.prestations.filter(intervenant=interv) + return prest.annotate(num_util=Count('intervenants')).aggregate( + total=Sum(F('duree') * F('num_util'), output_field=models.DurationField()) + )['total'] or timedelta() + + def temps_total_prestations_reparti(self): + """ + Temps total des prestations liées à la famille, divisé par le nombre d'enfants suivis. + """ + duree = self.temps_total_prestations() + duree //= (len(self.membres_suivis()) or 1) + return duree + + def total_mensuel(self, date_debut_mois): + """ + Temps total de prestations sur un mois donné + """ + return self.prestations.filter( + date_prestation__month=date_debut_mois.month, + date_prestation__year=date_debut_mois.year + ).aggregate(total=Sum('duree'))['total'] or timedelta() + + def total_mensuel_par_prestation(self, prest_codes, date_debut_mois): + """ + Temps total d'évaluation sur un mois donné par prestation. + """ + return self.prestations.annotate( + num_util=Count('intervenants') + ).filter( + lib_prestation__code__in=prest_codes, + date_prestation__month=date_debut_mois.month, + date_prestation__year=date_debut_mois.year + ).aggregate( + total=Sum(F('duree') * F('num_util'), output_field=models.DurationField()) + )['total'] or timedelta() + + def total_mensuel_evaluation(self, date_debut_mois): + return self.total_mensuel_par_prestation(['aemo01'], date_debut_mois) + + def total_mensuel_suivi(self, date_debut_mois): + return self.total_mensuel_par_prestation(['aemo02', 'aemo04', 'aemo05', 'aemo06', 'aemo07'], date_debut_mois) + + def prestations_historiques(self): + return Prestation.prestations_historiques(self.prestations.all()) + + def prestations_du_mois(self): + """ + Retourne le détail des prestations pour cette famille + à partir du mois courant + """ + date_ref = date(date.today().year, date.today().month, 1) + return self.prestations.filter(date_prestation__gte=date_ref) + + @classmethod + def suivis_en_cours(cls, debut, fin): + base = cls.objects.annotate( + date_deb=Coalesce( + 'suivi__date_demande', + 'suivi__date_debut_evaluation', 'suivi__date_debut_suivi' + ), + ).prefetch_related('membres') + return base.filter( + date_deb__lte=fin + ).filter( + Q(**{'suivi__date_fin_suivi__isnull': True}) | + Q(**{'suivi__date_fin_suivi__gte': debut}) + ).exclude(**{'suivi__motif_fin_suivi': 'erreur'}) + + @classmethod + def suivis_nouveaux(cls, annee, mois): + base = cls.objects.annotate( + date_dem=F('suivi__date_demande') + ).prefetch_related('membres') + return base.filter(**{ + 'date_dem__year': annee, 'date_dem__month': mois, + }).exclude(**{'suivi__motif_fin_suivi': 'erreur'}) + + @classmethod + def suivis_termines(cls, annee, mois): + base = cls.objects.all().prefetch_related('membres') + return base.filter(**{ + 'suivi__date_fin_suivi__year': annee, + 'suivi__date_fin_suivi__month': mois, + }).exclude(**{'suivi__motif_fin_suivi': 'erreur'}) + + def can_be_reactivated(self, user): + return user.has_perm("aemo.change_famille") and self.suivi.date_fin_suivi is not None + + def anonymiser(self): + # Famille + self.nom = random_string_generator() + self.rue = '' + self.telephone = '' + self.remarques = '' + self.archived_at = timezone.now() + self.save() + + # Personne + for personne in self.membres.all().select_related('role'): + if personne.role.nom == 'Enfant suivi': + personne.nom = random_string_generator() + personne.prenom = random_string_generator() + personne.validite = None + personne.contractant = False + fields = ['rue', 'npa', 'localite', 'telephone', 'email', 'remarque', 'remarque_privee', + 'profession', 'filiation', 'allergies', 'employeur', 'permis', 'animaux'] + [setattr(personne, field, '') for field in fields] + personne.save() + personne.reseaux.clear() + if hasattr(personne, 'formation'): + personne.formation.cercle_scolaire = None + fields = ['college', 'classe', 'enseignant', 'creche', 'creche_resp', 'entreprise', + 'maitre_apprentissage', 'remarque'] + [setattr(personne.formation, field, '') for field in fields] + personne.formation.save() + else: + personne.delete() + # Suivi + fields = ['difficultes', 'aides', 'competences', 'autres_contacts', 'disponibilites', 'remarque', + 'remarque_privee', 'motif_detail', 'referent_note', 'collaboration', 'ressources', 'crise', + 'pers_famille_presentes', 'ref_presents', 'autres_pers_presentes'] + [setattr(self.suivi, field, '') for field in fields] + self.suivi.save() + + # Related + for doc in self.documents.all(): + doc.delete() + for bilan in self.bilans.all(): + bilan.delete() + for rapport in self.rapports.all(): + rapport.delete() + self.prestations.all().update(texte='') + for prestation in self.prestations.exclude(fichier=''): + prestation.fichier.delete() + prestation.save() + + +class PersonneManager(models.Manager): + + def create_personne(self, **kwargs): + kwargs.pop('_state', None) + pers = self.create(**kwargs) + return self.add_formation(pers) + + def add_formation(self, pers): + if pers.role.nom == 'Enfant suivi' and not hasattr(pers, 'formation'): + moins_de_4ans = bool(pers.age and pers.age < 4) + Formation.objects.create( + personne=pers, statut='pre_scol' if moins_de_4ans else '' + ) + if moins_de_4ans: + try: + pers.famille.suivi.demande_prioritaire = True + pers.famille.suivi.save() + except AttributeError: + pass + return pers + + +class Personne(models.Model): + """ Classe de base des personnes """ + created_at = models.DateTimeField(auto_now_add=True, editable=False, null=True) + + nom = models.CharField('Nom', max_length=30) + prenom = models.CharField('Prénom', max_length=30, blank=True) + date_naissance = models.DateField('Date de naissance', null=True, blank=True) + genre = models.CharField('Genre', max_length=1, choices=(('M', 'M'), ('F', 'F')), default='M') + rue = models.CharField('Rue', max_length=60, blank=True) + npa = models.CharField('NPA', max_length=4, blank=True) + localite = models.CharField('Localité', max_length=30, blank=True) + telephone = models.CharField('Tél.', max_length=60, blank=True) + email = models.EmailField('Courriel', blank=True) + pays_origine = CountryField('Nationalité', blank=True) + remarque = models.TextField(blank=True) + remarque_privee = models.TextField('Remarque privée', blank=True) + famille = models.ForeignKey(Famille, on_delete=models.CASCADE, related_name='membres') + role = models.ForeignKey('Role', on_delete=models.PROTECT) + profession = models.CharField('Profession', max_length=50, blank=True) + filiation = models.CharField('Filiation', max_length=80, blank=True) + decedee = models.BooleanField('Cette personne est décédée', default=False) + reseaux = models.ManyToManyField(Contact, blank=True) + allergies = models.TextField('Allergies', blank=True) + # Champs spécifiques SIFP + employeur = models.CharField('Adresse empl.', max_length=50, blank=True) + permis = models.CharField('Permis/séjour', max_length=30, blank=True) + validite = models.DateField('Date validité', blank=True, null=True) + animaux = models.BooleanField('Animaux', default=None, null=True) + + objects = PersonneManager() + + class Meta: + verbose_name = 'Personne' + ordering = ('nom', 'prenom') + + def __str__(self): + return '{} {}'.format(self.nom, self.prenom) + + @property + def nom_prenom(self): + return str(self) + + @property + def adresse(self): + return format_adresse(self.rue, self.npa, self.localite) + + @property + def age(self): + return self.age_a(date.today()) + + def age_str(self, date_=None, format_='auto'): + """Renvoie '2 ans, 4 mois', '5 ans', '8 mois'. + Param: + 'auto': application du format + - 'jour' si l'âge < 30 jours + - 'sem_jour' si l'âge < 77 jours (11 semaines) + - 'mois_sem' si l'âge < 690 jours (23 mois) + - 'an_mois': autres cas + 'jour': âge en jours + 'sem_jour': âge en semaines et jours + 'mois_sem': âge en mois et semaines + """ + if not self.date_naissance: + # Pourrait disparaître si date_naissance devient non null + return '' + if format_ not in ['auto', 'jour', 'sem_jour', 'mois_sem', 'an_mois']: + raise ValueError('Paramètre erroné') + age_jours = self.age_jours(date_) + + if (age_jours < 30 and format_ == 'auto') or format_ == 'jour': + age_str = f"{age_jours} jour{'s' if age_jours > 1 else ''}" + elif (age_jours < 77 and format_ == 'auto') or format_ == 'sem_jour': + sem, jours = age_jours // 7, age_jours % 7 + age_str = f"{sem} sem." + age_str += f" {jours} jour{'s' if jours > 1 else ''}" if jours > 0 else '' + elif (age_jours < 690 and format_ == 'auto') or format_ == 'mois_sem': + mois, sem = age_jours // 30, int((age_jours % 30)/7) + age_str = f"{mois} mois" + age_str += f" {sem} sem." if sem > 0 else '' + else: + ans, mois = int(age_jours / 365.25), int((age_jours % 365.25) / 30) + age_str = f"{ans} an{'s' if ans > 1 else ''}" + age_str += " %d mois" % mois if mois > 0 else '' + return age_str + + def age_a(self, date_): + if not self.date_naissance: + # Pourrait disparaître si date_naissance devient non null + return None + age = (date_ - self.date_naissance).days / 365.25 + return int(age * 10) / 10 # 1 décimale arrondi vers le bas + + def age_jours(self, date_=None): + if date_ is None: + date_ = date.today() + return (date_ - self.date_naissance).days + + def age_mois(self, date_=None): + """Âge en mois à la date_""" + if date_ is None: + date_ = date.today() + if not self.date_naissance or date_ < self.date_naissance: + return None + return self.age_jours(date_) / (365 / 12) + + @property + def localite_display(self): + return '{} {}'.format(self.npa, self.localite) + + @property + def edit_url(self): + return reverse('personne-edit', args=[self.famille_id, self.pk]) + + def can_edit(self, user): + return self.famille.can_edit(user) + + def can_be_deleted(self, user): + return self.famille.can_be_deleted(user) + + +class Formation(models.Model): + + FORMATION_CHOICES = ( + ('pre_scol', 'Pré-scolaire'), + ('cycle1', 'Cycle 1'), + ('cycle2', 'Cycle 2'), + ('cycle3', 'Cycle 3'), + ('apprenti', 'Apprentissage'), + ('etudiant', 'Etudiant'), + ('en_emploi', 'En emploi'), + ('sans_emploi', 'Sans emploi'), + ('sans_occupation', 'Sans occupation'), + ) + + personne = models.OneToOneField(Personne, on_delete=models.CASCADE) + + statut = models.CharField('Scolarité', max_length=20, choices=FORMATION_CHOICES, blank=True) + cercle_scolaire = models.ForeignKey( + CercleScolaire, blank=True, null=True, on_delete=models.SET_NULL, + related_name='+', verbose_name='Cercle scolaire' + ) + college = models.CharField('Collège', max_length=50, blank=True) + classe = models.CharField('Classe', max_length=50, blank=True) + enseignant = models.CharField('Enseignant', max_length=50, blank=True) + + creche = models.CharField('Crèche', max_length=50, blank=True) + creche_resp = models.CharField('Resp.crèche', max_length=50, blank=True) + + entreprise = models.CharField('Entreprise', max_length=50, blank=True) + maitre_apprentissage = models.CharField("Maître d'appr.", max_length=50, blank=True) + + remarque = models.TextField(blank=True) + + class Meta: + verbose_name = 'Scolarité' + + def __str__(self): + return 'Scolarité de {}'.format(self.personne) + + def can_edit(self, user): + return self.personne.famille.can_edit(user) + + def delete(self, **kwargs): + if self.personne: + raise IntegrityError + else: + super().delete(**kwargs) + + @property + def sse(self): + return "Champ à définir" + + def pdf_data(self): + if self.personne.formation.statut == 'pre_scol': + data = [ + ['Crèche: {}'.format(self.creche), 'responsable: {}'.format(self.creche_resp)], + ] + elif self.personne.formation.statut in ['cycle1', 'cycle2', 'cycle3', 'etudiant']: + data = [ + ['Cercle: {}'.format(self.cercle_scolaire), 'collège: {}'.format(self.college)], + ['Classe: {}'.format(self.classe), 'Enseignant-e: {}'.format(self.enseignant)] + ] + + elif self.personne.formation.statut == 'apprenti': + data = [ + ['Employeur: {}'.format(self.entreprise), 'resp. apprenti-e: {}'.format(self.maitre_apprentissage)], + ] + else: + data = [self.personne.formation.statut] + return data + + def info_scol(self): + if self.statut == 'pre_scol': + creche = f"Crèche: {self.creche}" if self.creche else '' + resp = f" - resp.: {self.creche_resp}" if self.creche_resp else '' + data = ''.join([creche, resp]) + elif self.statut in ['cycle1', 'cycle2', 'cycle3', 'etudiant']: + college = f"Collège: {self.college}" if self.college else '' + classe = f" - classe: {self.classe}" if self.classe else '' + ens = f" - ens.: {self.enseignant}" if self.enseignant else '' + data = ''.join([college, classe, ens]) + elif self.statut == 'apprenti': + emp = f"Employeur: {self.entreprise}" if self.entreprise else '' + resp = f" - resp.: {self.maitre_apprentissage}" if self.maitre_apprentissage else '' + data = ''.join([emp, resp]) + elif self.statut: + data = self.get_statut_display() if self.statut else '' + else: + data = "Formation: aucune info. saisie" + return data + + +class Document(models.Model): + famille = models.ForeignKey(Famille, related_name='documents', on_delete=models.CASCADE) + fichier = models.FileField("Nouveau fichier", upload_to='doc') + titre = models.CharField(max_length=100) + + class Meta: + unique_together = ('famille', 'titre') + + def __str__(self): + return self.titre + + def delete(self): + Path(self.fichier.path).unlink(missing_ok=True) + return super().delete() + + def can_edit(self, user): + return self.famille.can_edit(user) + + def can_be_deleted(self, user): + return self.famille.can_be_deleted(user) + + +class Bilan(models.Model): + famille = models.ForeignKey(Famille, related_name='bilans', on_delete=models.CASCADE) + date = models.DateField("Date du bilan") + auteur = models.ForeignKey( + Utilisateur, related_name='bilans', on_delete=models.PROTECT, null=True, + ) + objectifs = models.TextField("Objectifs") + rythme = models.TextField("Rythme et fréquence") + sig_famille = models.BooleanField("Apposer signature de la famille", default=True) + sig_interv = models.ManyToManyField(Utilisateur, blank=True, verbose_name="Signature des intervenants") + fichier = models.FileField("Fichier/image", blank=True, upload_to='bilans') + + delete_urlname = 'famille-bilan-delete' + + def __str__(self): + return "Bilan du {} pour la famille {}".format(self.date, self.famille) + + def get_absolute_url(self): + return reverse('famille-bilan-view', args=[self.famille_id, self.pk]) + + def get_print_url(self): + return reverse('print-bilan', args=[self.pk]) + + def edit_url(self): + return reverse('famille-bilan-edit', args=[self.famille_id, self.pk]) + + def can_edit(self, user): + return self.famille.can_edit(user) or user in self.famille.suivi.intervenants.all() + + def title(self): + return f"Bilan du {format_d_m_Y(self.date)}" + + +class Rapport(models.Model): + """ + Rapport est l'appellation historique, Résumé étant l'appellation moderne (dès février 2023). + Les champs «techniques» n'ont pas été renommés. + """ + famille = models.ForeignKey(Famille, related_name='rapports', on_delete=models.CASCADE) + date = models.DateField("Date du résumé") + auteur = models.ForeignKey(Utilisateur, on_delete=models.PROTECT) + pres_interv = models.ManyToManyField( + Utilisateur, blank=True, verbose_name="Intervenants cités dans le résumé", related_name='+' + ) + sig_interv = models.ManyToManyField( + Utilisateur, blank=True, verbose_name="Signature des intervenants", related_name='+' + ) + situation = models.TextField("Situation / contexte familial", blank=True) + observations = models.TextField("Observations, évolution et hypothèses", blank=True) + projet = models.TextField("Perspectives d’avenir", blank=True) + + def __str__(self): + return "Résumé du {} pour la famille {}".format(format_d_m_Y(self.date), self.famille) + + def get_absolute_url(self): + return reverse('famille-rapport-view', args=[self.famille.pk, self.pk]) + + def edit_url(self): + return reverse('famille-rapport-edit', args=[self.famille.pk, self.pk]) + + def get_print_url(self): + return reverse('famille-rapport-print', args=[self.famille.pk, self.pk]) + + def can_edit(self, user): + return self.famille.can_edit(user) or user in self.famille.suivi.intervenants.all() + + def can_delete(self, user): + return self.famille.can_edit(user) + + def title(self): + return f"Résumé du {format_d_m_Y(self.date)}" + + def intervenants(self): + return [i.intervenant for i in self.famille.interventions_actives(self.date)] + + +class Niveau(models.Model): + INTERV_CHOICES = [(0, '0'), (1, '1'), (2, '2'), (3, '3')] + famille = models.ForeignKey( + Famille, related_name='niveaux', on_delete=models.CASCADE, verbose_name="Famille" + ) + niveau_interv = models.PositiveSmallIntegerField("Niveau d’intervention", choices=INTERV_CHOICES) + date_debut = models.DateField('Date début', blank=True, null=True) + date_fin = models.DateField('Date fin', blank=True, null=True) + + def __str__(self): + return ( + f"{self.famille.nom} - {self.niveau_interv} - du {format_d_m_Y(self.date_debut)} au " + f"{format_d_m_Y(self.date_fin)}" + ) + + +class LibellePrestation(models.Model): + code = models.CharField('Code', max_length=6, unique=True) + nom = models.CharField('Nom', max_length=30) + actes = models.TextField('Actes à prester', blank=True) + + class Meta: + ordering = ('code',) + + def __str__(self): + return self.nom + + +class Prestation(models.Model): + famille = models.ForeignKey(Famille, related_name='prestations', null=True, blank=True, + on_delete=models.SET_NULL, verbose_name="Famille") + auteur = models.ForeignKey(Utilisateur, on_delete=models.PROTECT, verbose_name='auteur') + intervenants = models.ManyToManyField(Utilisateur, related_name='prestations') + date_prestation = models.DateField("date de l’intervention") + duree = models.DurationField("durée") + lib_prestation = models.ForeignKey( + LibellePrestation, on_delete=models.SET_NULL, null=True, default=None, + related_name='prestations_%(app_label)s' + ) + # Nombre de familles actives au moment de la prestation, utilisé pour ventiler les heures + # dans les statistiques. + familles_actives = models.PositiveSmallIntegerField(blank=True, default=0) + texte = models.TextField('Contenu', blank=True) + manque = models.BooleanField('Rendez-vous manqué', default=False) + fichier = models.FileField('Fichier/image', upload_to='prestations', blank=True) + + # Nbre de jours maximum après fin d'un mois où il est encore possible de saisir + # des données du mois précédent. + DELAI_SAISIE_SUPPL = 14 + + class Meta: + ordering = ('-date_prestation',) + permissions = ( + ('edit_prest_prev_month', 'Modifier prestations du mois précédent'), + ) + + def __str__(self): + if self.famille: + return f'Prestation pour la famille {self.famille} le {self.date_prestation} : {self.duree}' + return f'Prestation générale le {self.date_prestation} : {self.duree}' + + def can_edit(self, user): + return ( + (user == self.auteur or user in self.intervenants.all() or + user.has_perm('aemo.edit_prest_prev_month') + ) and self.check_date_allowed(user, self.date_prestation) + ) + + def edit_url(self): + return reverse('prestation-edit', args=[self.famille.pk if self.famille else 0, self.pk]) + + def save(self, *args, **kwargs): + if self.famille is None: + self.familles_actives = Famille.actives(self.date_prestation).count() + super().save(*args, **kwargs) + + @classmethod + def check_date_allowed(cls, user, dt): + """Contrôle si la date `dt` est située dans le mois courant + DELAI_SAISIE_SUPPL.""" + today = date.today() + delai = cls.DELAI_SAISIE_SUPPL + if user.has_perm('aemo.edit_prest_prev_month'): + delai += 31 + if today.day <= delai: + return dt >= (today - timedelta(days=delai + 1)).replace(day=1) + else: + return dt.year == today.year and dt.month == today.month + + @classmethod + def prestations_historiques(cls, prestations): + """ + Renvoie un queryset avec toutes les prestations regroupées par annee/mois + et le total correspondant. + """ + return prestations.annotate( + annee=ExtractYear('date_prestation'), + mois=ExtractMonth('date_prestation') + ).values('annee', 'mois').order_by('-annee', '-mois').annotate(total=Sum('duree')) + + @classmethod + def temps_total(cls, prestations, tous_utilisateurs=False): + """ + Renvoie le temps total des `prestations` (QuerySet) sous forme de chaîne '12:30'. + Si tous_utilisateurs = True, multiplie le temps de chaque prestation par son + nombre d'intervenants. + """ + if prestations.count() > 0: + if tous_utilisateurs: + duree = prestations.annotate(num_util=Count('intervenants')).aggregate( + total=Sum(F('duree') * F('num_util'), output_field=models.DurationField()) + )['total'] or timedelta() + else: + duree = prestations.aggregate(total=Sum('duree'))['total'] or timedelta() + else: + duree = timedelta() + return duree + + @classmethod + def temps_total_general(cls, annee, familles=True): + """ + Renvoie le temps total des prestations (familiales ou générales selon + familles) pour l'année civile `annee`. + """ + prest_tot = cls.objects.filter( + famille__isnull=not familles, + date_prestation__year=annee + ).aggregate(total=Sum('duree'))['total'] or timedelta() + return prest_tot + + @classmethod + def temps_total_general_fam_gen(cls, annee): + """ + Renvoie le temps total des prestations familiales ET générales pour l'année civile `annee`. + """ + prest_tot = cls.objects.filter( + date_prestation__year=annee + ).aggregate(total=Sum('duree'))['total'] or timedelta() + return prest_tot + + @classmethod + def temps_totaux_mensuels(cls, annee): + """ + Renvoie une liste du total mensuel de toutes les prestations familiales + (sans prestations générales) pour l'année en cours (de janv. à déc.). + """ + data = [] + for month in range(1, 13): + tot = cls.objects.filter( + famille__isnull=False, + date_prestation__year=annee, date_prestation__month=month, + ).aggregate(total=Sum('duree'))['total'] or timedelta() + data.append(tot) + return data + + +class JournalAcces(models.Model): + """Journalisation des accès aux familles.""" + famille = models.ForeignKey(Famille, on_delete=models.CASCADE, related_name='+') + utilisateur = models.ForeignKey(Utilisateur, on_delete=models.CASCADE, related_name='+') + ordinaire = models.BooleanField(default=True) + quand = models.DateTimeField(auto_now_add=True) + + def __str__(self): + return f"Accès de «{self.utilisateur}» à la famille «{self.famille}», le {self.quand}" + + +class Etape: + """ + 1. Numéro d'ordre pour tri dans la vue + 2. Code + 3. Affichage dans tableau + 4. Nom visible de l'étape + 5. Code de l'étape suivante + 6. Délai jusqu'à l'échéance (en jours) + 7. Code de l'étape précédente + 8. Date obligatoire précédente + 9. Saisie obligatoire ou non (True / False) + """ + + def __init__(self, num, code, abrev, nom, suivante, delai, precedente, preced_oblig, oblig): + self.num = num + self.code = code + self.abrev = abrev + self.nom = nom + self.suivante = suivante + self.delai = delai + self.precedente = precedente + self.preced_oblig = preced_oblig + self.oblig = oblig + + def __str__(self): + return self.nom + + def __repr__(self): + return ''.format(self.num, self.code) + + def date(self, suivi): + return getattr(suivi, 'date_{}'.format(self.code)) + + def delai_depuis(self, suivi, date_base): + """Délai de cette étape à partir de la date date_base (en général date précédente étape).""" + if not date_base: + return None + return date_base + timedelta(days=self.delai) + + def date_nom(self): + return 'date_{}'.format(self.code) + + def etape_suivante(self, suivi): + return Suivi.WORKFLOW[self.suivante] if self.suivante else None + + def etape_precedente(self): + return Suivi.WORKFLOW[self.precedente] if self.precedente else None + + +class EtapeDebutSuivi(Etape): + def date(self, suivi): + return suivi.debut_suivi_selon_niveau + + +class EtapeBilan(Etape): + delai_standard = 3 * 30 # 3 mois + delai_niveau3 = 30 # 1 mois + + def date(self, suivi): + """Date du dernier bilan""" + if self.etape_suivante(suivi).code == 'bilan_suivant': + return None + return suivi.date_dernier_bilan() + + def etape_suivante(self, suivi): + # Soit bilan suivant, soit rapport + if suivi.date_dernier_rapport(): + return Suivi.WORKFLOW['resume'] + date_bilan = suivi.date_dernier_bilan() + prochain_rapport = suivi.date_prochain_rapport() + if date_bilan and prochain_rapport and (prochain_rapport - date_bilan) < timedelta(days=4 * 30): + return Suivi.WORKFLOW['resume'] + else: + return Suivi.WORKFLOW['bilan_suivant'] + + def delai_depuis(self, suivi, date_base): + """Délai de cette étape à partir de la date date_base (en général date précédente étape).""" + if not date_base: + return None + base = suivi.date_dernier_bilan() or date_base + delai = self.delai_niveau3 if suivi.famille.niveau_actuel() == 3 else self.delai_standard + return base + timedelta(days=delai) + + +class EtapeResume(Etape): + def date(self, suivi): + """Date du dernier rapport""" + return suivi.date_dernier_rapport() + + +class EtapeFin(Etape): + delai_standard = 365 + 180 # 18 mois + delai_niveau3 = 270 # 9 mois + + def delai_depuis(self, suivi, *args): + if not suivi.date_debut_suivi: + return None + debut_suivi = suivi.debut_suivi_selon_niveau + delai = self.delai_niveau3 if suivi.famille.niveau_actuel() == 3 else self.delai_standard + return debut_suivi + timedelta(days=delai) + + +Equipe = namedtuple("Equipe", ['code', 'nom', 'perm']) + +EQUIPES = [ + Equipe(code='montagnes', nom='Montagnes et V-d-T', perm=None), + Equipe(code='littoral', nom='Littoral et V-d-R', perm=None), + # Anciennes équipes, conservées pour anciens dossiers + Equipe(code='neuch_ville', nom='Neuchâtel-ville (archives)', perm=None), + Equipe(code='litt_est', nom='Littoral Est (archives)', perm=None), + Equipe(code='litt_ouest', nom='Littoral Ouest (archives)', perm=None), +] + + +class Suivi(models.Model): + WORKFLOW = OrderedDict([ + ('demande', Etape( + 1, 'demande', 'dem', 'Demande déposée', 'debut_evaluation', 0, 'demande', 'demande', True + )), + ('debut_evaluation', Etape( + 2, 'debut_evaluation', 'deb_eva', "Début de l’évaluation", 'fin_evaluation', 40, 'demande', 'demande', True + )), + ('fin_evaluation', Etape( + 3, 'fin_evaluation', "fin_eva", "Fin de l’évaluation", 'debut_suivi', 40, + 'debut_evaluation', 'debut_evaluation', True + )), + ('debut_suivi', EtapeDebutSuivi( + 4, 'debut_suivi', "dsuiv", 'Début du suivi', 'bilan_suivant', 40, 'fin_evaluation', 'fin_evaluation', False + )), + ('bilan_suivant', EtapeBilan( + 5, 'bilan_suivant', "bil", 'Bilan suivant', 'resume', 90, 'debut_suivi', 'fin_evaluation', False + )), + ('resume', EtapeResume( + 6, 'resume', 'rés', 'Résumé', 'fin_suivi', 90, 'bilan_suivant', 'fin_evaluation', False + )), + ('fin_suivi', EtapeFin( + 7, 'fin_suivi', "fsuiv", 'Fin du suivi', 'archivage', 365 + 180, 'resume', 'fin_evaluation', True + )), + ('archivage', Etape( + 8, 'arch_dossier', 'arch', 'Archivage du dossier', None, 0, 'fin_suivi', 'fin_suivi', False + )), + ]) + + EQUIPES_CHOICES = [(equ.code, equ.nom) for equ in EQUIPES] + + famille = models.OneToOneField(Famille, on_delete=models.CASCADE) + equipe = models.CharField('Équipe', max_length=15, choices=EQUIPES_CHOICES) + heure_coord = models.BooleanField("Heure de coordination", default=False) + difficultes = models.TextField("Difficultés", blank=True) + aides = models.TextField("Aides souhaitées", blank=True) + competences = models.TextField('Ressources/Compétences', blank=True) + dates_demande = models.CharField('Dates', max_length=128, blank=True) + autres_contacts = models.TextField("Autres services contactés", blank=True) + disponibilites = models.TextField('Disponibilités', blank=True) + remarque = models.TextField(blank=True) + remarque_privee = models.TextField('Remarque privée', blank=True) + service_orienteur = models.CharField( + "Orienté vers l’AEMO par", max_length=15, choices=choices.SERVICE_ORIENTEUR_CHOICES, blank=True + ) + service_annonceur = models.CharField('Service annonceur', max_length=60, blank=True) + motif_demande = ChoiceArrayField( + models.CharField(max_length=60, choices=choices.MOTIF_DEMANDE_CHOICES), + verbose_name="Motif de la demande", blank=True, null=True) + motif_detail = models.TextField('Motif', blank=True) + + # Référents + intervenants = models.ManyToManyField( + Utilisateur, through='Intervenant', related_name='interventions', blank=True + ) + ope_referent = models.ForeignKey(Contact, blank=True, null=True, related_name='+', + on_delete=models.SET_NULL, verbose_name='as. OPE') + ope_referent_2 = models.ForeignKey( + Contact, blank=True, null=True, related_name='+', on_delete=models.SET_NULL, + verbose_name='as. OPE 2' + ) + mandat_ope = ChoiceArrayField( + models.CharField(max_length=65, choices=choices.MANDATS_OPE_CHOICES, blank=True), + verbose_name="Mandat OPE", blank=True, null=True, + ) + sse_referent = models.ForeignKey(Contact, blank=True, null=True, related_name='+', + on_delete=models.SET_NULL, verbose_name='SSE') + referent_note = models.TextField('Autres contacts', blank=True) + collaboration = models.TextField('Collaboration', blank=True) + ressource = models.TextField('Ressource', blank=True) + crise = models.TextField('Gestion de crise', blank=True) + + date_demande = models.DateField("Demande déposée le", blank=True, null=True, default=None) + date_debut_evaluation = models.DateField("Début de l’évaluation le", blank=True, null=True, default=None) + date_fin_evaluation = models.DateField("Fin de l’évaluation le", blank=True, null=True, default=None) + date_debut_suivi = models.DateField("Début du suivi le", blank=True, null=True, default=None) + date_fin_suivi = models.DateField("Fin du suivi le", blank=True, null=True, default=None) + + demande_prioritaire = models.BooleanField("Demande prioritaire", default=False) + demarche = ChoiceArrayField(models.CharField(max_length=60, choices=choices.DEMARCHE_CHOICES, blank=True), + verbose_name="Démarche", blank=True, null=True) + + pers_famille_presentes = models.CharField('Membres famille présents', max_length=200, blank=True) + ref_presents = models.CharField('Intervenants présents', max_length=250, blank=True) + autres_pers_presentes = models.CharField('Autres pers. présentes', max_length=100, blank=True) + motif_fin_suivi = models.CharField('Motif de fin de suivi', max_length=20, + choices=choices.MOTIFS_FIN_SUIVI_CHOICES, blank=True) + + def __str__(self): + return 'Suivi pour la famille {} '.format(self.famille) + + @property + def date_fin_theorique(self): + if self.date_fin_suivi: + return self.date_fin_suivi + if self.date_debut_suivi is None: + return None + return self.debut_suivi_selon_niveau + timedelta(days=548) # env. 18 mois + + @cached_property + def debut_suivi_selon_niveau(self): + """ + Date de début de suivi tenant compte d'éventuel changement de niveau entre 2 et 3. + """ + debut = self.date_debut_suivi + if debut is None: + return debut + niv_prec = None + for niv in sorted(self.famille.niveaux.all(), key=lambda niv: niv.date_debut): + if ( + (niv_prec in [1, 2] and niv.niveau_interv == 3) or + (niv_prec == 3 and niv.niveau_interv in [1, 2]) + ): + debut = niv.date_debut + niv_prec = niv.niveau_interv + return debut + + def date_prochain_rapport(self): + if self.date_debut_suivi is None or self.date_fin_suivi is not None: + return None + date_dernier_rapport = self.date_dernier_rapport() + niveau = self.famille.niveau_actuel() + if date_dernier_rapport is None: + # Premier à 9 ou 18 mois, selon niveau + delai = 30 * 9 if niveau == 3 else 365 + 182 + return self.date_debut_suivi + timedelta(days=delai) + else: + # Suivants tous les 9 ou 12 mois, selon niveau + delai = 30 * 9 if niveau == 3 else 365 + return date_dernier_rapport + timedelta(days=delai) + + def date_dernier_rapport(self): + # Using rapports.all() to leverage prefetchs + debut_suivi = self.debut_suivi_selon_niveau + return max([ + rapp.date for rapp in self.famille.rapports.all() if rapp.date > debut_suivi + ], default=None) + + def date_dernier_bilan(self): + debut_suivi = self.debut_suivi_selon_niveau + # Using bilans.all() to leverage prefetchs + return max([ + bilan.date for bilan in self.famille.bilans.all() if bilan.date > debut_suivi + ], default=None) + + @property + def ope_referent_display(self): + return self.ope_referent.nom_prenom if self.ope_referent else '-' + + @cached_property + def etape(self): + """L’étape *terminée* du suivi.""" + for key, etape in reversed(self.WORKFLOW.items()): + if key != 'archivage': + if etape.date(self): + return etape + + @cached_property + def etape_suivante(self): + return self.etape.etape_suivante(self) if self.etape else None + + def date_suivante(self): + etape_date = self.etape.date(self) + if not self.etape_suivante or not etape_date: + return None + return self.etape_suivante.delai_depuis(self, etape_date) + + def get_mandat_ope_display(self): + dic = dict(choices.MANDATS_OPE_CHOICES) + return '; '.join([dic[value] for value in self.mandat_ope]) if self.mandat_ope else '-' + + def get_motif_demande_display(self): + dic = dict(choices.MOTIF_DEMANDE_CHOICES) + return '; '.join([dic[value] for value in self.motif_demande]) if self.motif_demande else '' + + @property + def ope_referents(self): + return [ope for ope in [self.ope_referent, self.ope_referent_2] if ope] + + +class IntervenantManager(models.Manager): + def actifs(self, _date=None): + return self.filter(Q(date_fin__isnull=True) | Q(date_fin__gt=_date or date.today())) + + +class Intervenant(models.Model): + """ + Modèle M2M entre Suivi et Utilisateur (utilisé par through de Suivi.intervenants). + """ + suivi = models.ForeignKey(Suivi, on_delete=models.CASCADE) + intervenant = models.ForeignKey(Utilisateur, on_delete=models.CASCADE) + role = models.ForeignKey(Role, on_delete=models.CASCADE) + date_debut = models.DateField('Date début', default=timezone.now) + # date_fin est utilisé pour les interventions s'arrêtant avant la fin du suivi. + date_fin = models.DateField('Date fin', null=True, blank=True) + + objects = IntervenantManager() + + def __str__(self): + return '{}, {} pour {}'.format(self.intervenant, self.role, self.suivi) + + def can_edit(self, user): + return self.suivi.famille.can_edit(user) diff --git a/aemo/pdf.py b/aemo/pdf.py new file mode 100644 index 0000000..31403f5 --- /dev/null +++ b/aemo/pdf.py @@ -0,0 +1,636 @@ +from io import BytesIO + +import extract_msg +import nh3 + +from bs4 import BeautifulSoup +from pypdf import PdfWriter + +from functools import partial +from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_JUSTIFY +from reportlab.lib.pagesizes import A4 +from reportlab.lib import colors +from reportlab.lib.styles import ParagraphStyle, getSampleStyleSheet +from reportlab.lib.units import cm +from reportlab.pdfgen import canvas +from reportlab.platypus import ( + PageBreak, Paragraph, Preformatted, SimpleDocTemplate, Spacer, Table, TableStyle +) + +from django.contrib.staticfiles.finders import find +from django.utils.text import slugify + +from .utils import format_d_m_Y, format_duree, format_Ymd + + +def format_booleen(val): + return '?' if val is None else ('oui' if val else 'non') + + +class PageNumCanvas(canvas.Canvas): + """A special canvas to be able to draw the total page number in the footer.""" + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self._pages = [] + + def showPage(self): + self._pages.append(dict(self.__dict__)) + self._startPage() + + def save(self): + page_count = len(self._pages) + for page in self._pages: + self.__dict__.update(page) + self.draw_page_number(page_count) + canvas.Canvas.showPage(self) + super().save() + + def draw_page_number(self, page_count): + self.setFont("Helvetica", 9) + self.drawRightString(self._pagesize[0] - 1.6*cm, 2.3*cm, "p. %s/%s" % (self._pageNumber, page_count)) + + +class CleanParagraph(Paragraph): + """If the (HTML) text cannot be parsed, try to clean it.""" + def __init__(self, text, *args, **kwargs): + if text: + text = text.replace('

', '


') + if '
    ' in text: + text = text.replace('
  • ', '  • ').replace('
','
').replace('', '
') + try: + super().__init__(text, *args, **kwargs) + except ValueError: + text = nh3.clean( + text, tags={'p', 'br', 'b', 'strong', 'u', 'i', 'em', 'ul', 'li'} + ).replace('
', '
') + super().__init__(text, *args, **kwargs) + + +class RawParagraph(Paragraph): + """Raw text, replace new lines by
.""" + def __init__(self, text='', *args, **kwargs): + if text: + text = text.replace('\r\n', '\n').replace('\n', '\n
') + super().__init__(text, *args, **kwargs) + + +class StyleMixin: + FONTSIZE = 9 + MAXLINELENGTH = 120 + + def __init__(self, base_font='Helvetica', **kwargs): + self.styles = getSampleStyleSheet() + self.style_title = ParagraphStyle( + name='title', fontName='Helvetica-Bold', fontSize=self.FONTSIZE + 4, + leading=self.FONTSIZE + 5, alignment=TA_CENTER + ) + self.style_normal = ParagraphStyle( + name='normal', fontName='Helvetica', fontSize=self.FONTSIZE, alignment=TA_LEFT, + leading=self.FONTSIZE + 1, spaceAfter=0 + ) + self.style_justifie = ParagraphStyle( + name='justifie', parent=self.style_normal, alignment=TA_JUSTIFY, spaceAfter=0.2 * cm + ) + self.style_sub_title = ParagraphStyle( + name='sous_titre', fontName='Helvetica-Bold', fontSize=self.FONTSIZE + 2, + alignment=TA_LEFT, spaceBefore=0.5 * cm, spaceAfter=0.1 * cm + ) + self.style_inter_title = ParagraphStyle( + name='inter_titre', fontName='Helvetica-Bold', fontSize=self.FONTSIZE + 1, + alignment=TA_LEFT, spaceBefore=0.3 * cm, spaceAfter=0 + ) + self.style_bold = ParagraphStyle( + name='bold', fontName='Helvetica-Bold', fontSize=self.FONTSIZE, leading=self.FONTSIZE + 1 + ) + self.style_italic = ParagraphStyle( + name='italic', fontName='Helvetica-Oblique', fontSize=self.FONTSIZE - 1, leading=self.FONTSIZE + ) + self.style_indent = ParagraphStyle( + name='indent', fontName='Helvetica', fontSize=self.FONTSIZE, alignment=TA_LEFT, + leftIndent=1 * cm + ) + super().__init__(**kwargs) + + +class HeaderFooterMixin: + LOGO = find('img/logo-cr.png') + EDUQUA = find('img/eduqua.png') + DON = find('img/logo-zewo.png') + + def draw_header(self, canvas, doc): + canvas.saveState() + canvas.drawImage( + self.LOGO, doc.leftMargin + 316, doc.height+60, 7 * cm, 1.6 * cm, preserveAspectRatio=True, mask='auto' + ) + canvas.restoreState() + + def draw_footer(self, canvas, doc): + canvas.saveState() + canvas.drawImage( + self.EDUQUA, doc.leftMargin, doc.height - 670, 1.8 * cm, 0.8 * cm, preserveAspectRatio=True + ) + canvas.drawImage( + self.DON, doc.leftMargin + 60, doc.height - 670, 2.5 * cm, 0.8 * cm, preserveAspectRatio=True, mask='auto' + ) + tab = [220, 365] + line = [658, 667, 676, 685] + + canvas.setFont("Helvetica", 8) + canvas.drawRightString(doc.leftMargin + tab[0], doc.height - line[2], "CCP ?") + canvas.drawRightString(doc.leftMargin + tab[0], doc.height - line[3], "IBAN ?") + canvas.setLineWidth(0.5) + canvas.line(doc.leftMargin + 230, 2.2 * cm, doc.leftMargin + 230, 1.0 * cm) + + canvas.drawRightString(doc.leftMargin + tab[1], doc.height - line[0], "Rte d’Englisberg 3") + canvas.setFont("Helvetica-Bold", 8) + canvas.drawRightString(doc.leftMargin + tab[1], doc.height - line[1], "1763 Granges-Paccot") + canvas.setFont("Helvetica", 8) + canvas.line(doc.leftMargin + 375, 2.2 * cm, doc.leftMargin + 375, 1.0 * cm) + canvas.drawRightString(doc.leftMargin + doc.width, doc.height - line[0], "+41 26 407 70 44") + canvas.drawRightString(doc.leftMargin + doc.width, doc.height - line[1], "secretariat@fondation-transit.ch") + canvas.drawRightString(doc.leftMargin + doc.width, doc.height - line[2], "fondation-transit.ch/aemo") + canvas.restoreState() + + +class BasePDF(HeaderFooterMixin, StyleMixin): + + def __init__(self, tampon, instance, **kwargs): + self.instance = instance + self.kwargs = kwargs + self.doc = SimpleDocTemplate( + tampon, title=self.title, pagesize=A4, + leftMargin=1.5 * cm, rightMargin=1.5 * cm, topMargin=2 * cm, bottomMargin=2.5 * cm + ) + self.story = [] + super().__init__(**kwargs) + + def draw_header_footer(self, canvas, doc): + self.draw_header(canvas, doc) + self.draw_footer(canvas, doc) + + def produce(self): + # subclass should call self.doc.build(self.story, onFirstPage=self.draw_header_footer) + raise NotImplementedError + + def get_filename(self): + raise NotImplementedError + + @staticmethod + def format_note(note, length=StyleMixin.MAXLINELENGTH): + return Preformatted(note.replace('\r\n', '\n'), maxLineLength=length) + + def set_title(self, title=''): + self.story.append(Spacer(0, 1 * cm)) + self.story.append(Paragraph(title, self.style_title)) + self.story.append(Spacer(0, 1.2 * cm)) + + def parent_data(self, person): + """Return parent data ready to be used in a 2-column table.""" + parents = person.parents() + par1 = parents[0] if len(parents) > 0 else None + par2 = parents[1] if len(parents) > 1 else None + data = [ + [('Parent 1 (%s)' % par1.role.nom) if par1 else '-', + ('Parent 2 (%s)' % par2.role.nom) if par2 else '-'], + [par1.contact.nom_prenom if par1 else '', par2.contact.nom_prenom if par2 else ''], + [par1.contact.adresse if par1 else '', par2.contact.adresse if par2 else ''], + [par1.contact.contact if par1 else '', par2.contact.contact if par2 else ''], + + ['Autorité parentale: {}'.format(format_booleen(par1.contact.autorite_parentale)) if par1 else '', + 'Autorité parentale: {}'.format(format_booleen(par2.contact.autorite_parentale)) if par2 else ''], + ] + return data + + def formate_persons(self, parents_list): + labels = ( + ("Nom", "nom"), ("Prénom", "prenom"), ("Adresse", "rue"), + ("Localité", 'localite_display'), ("Profession", 'profession'), ("Tél.", 'telephone'), + ("Courriel", 'email'), ('Remarque', 'remarque'), + ) + P = partial(Paragraph, style=self.style_normal) + Pbold = partial(Paragraph, style=self.style_bold) + data = [] + parents = [parent for parent in parents_list if parent is not None] + if len(parents) == 0: + pass + elif len(parents) == 1: + data.append([Pbold('Rôle:'), Pbold(parents[0].role.nom), '', '']) + for label in labels: + data.append([ + label[0], P(getattr(parents[0], label[1])), '', '' + ]) + elif len(parents) == 2: + data.append([ + Pbold('Rôle:'), Pbold(parents[0].role.nom), + Pbold('Rôle:'), Pbold(parents[1].role.nom) + ]) + for label in labels: + data.append([ + label[0], P(getattr(parents[0], label[1]) if parents[0] else ''), + label[0], P(getattr(parents[1], label[1]) if parents[1] else '') + ]) + return data + + def get_table(self, data, columns, before=0.0, after=0.0, inter=None): + """Prepare a Table instance with data and columns, with a common style.""" + if inter: + inter = inter * cm + cols = [c * cm for c in columns] + + t = Table( + data=data, colWidths=cols, hAlign=TA_LEFT, + spaceBefore=before * cm, spaceAfter=after * cm + ) + t.hAlign = 0 + t.setStyle(tblstyle=TableStyle([ + ('ALIGN', (0, 0), (-1, -1), 'LEFT'), + ('FONTSIZE', (0, 0), (-1, -1), self.FONTSIZE), + ('VALIGN', (0, 0), (-1, -1), "TOP"), + ('LEFTPADDING', (0, 0), (0, -1), 1), + ('LEADING', (0, 0), (-1, -1), 7), + ])) + return t + + def _add_subtitle(self, data): + t = Table( + data=[data], colWidths=[18 * cm / len(data)] * len(data), + hAlign=TA_LEFT, + spaceBefore=0.2 * cm, spaceAfter=0.5 * cm + ) + t.hAlign = 0 + t.setStyle(tblstyle=TableStyle([ + ('FONT', (0, 0), (-1, -1), "Helvetica-Bold"), + ('FONTSIZE', (0, 0), (-1, -1), self.FONTSIZE + 2), + ('LINEBELOW', (0, -1), (-1, -1), 0.25, colors.black), + ('ALIGN', (-1, -1), (-1, -1), 'RIGHT'), + ])) + self.story.append(t) + + def write_paragraph(self, title, text, html=False, justifie=False): + if title: + self.story.append(Paragraph(title, self.style_sub_title)) + style = self.style_justifie if justifie else self.style_normal + if html: + if text.startswith('

') and text.endswith('

'): + soup = BeautifulSoup(text, features="html5lib") + for tag in soup.find_all(['p', 'ul']): + self.story.append(CleanParagraph(str(tag), style)) + else: + self.story.append(CleanParagraph(text, style)) + else: + self.story.append(RawParagraph(text, style)) + + def enfant_data(self, enfant): + labels = [('Tél.', enfant.telephone)] + if hasattr(enfant, 'formation'): + labels.extend([ + ('Statut scol', enfant.formation.get_statut_display()), + ('Centre', enfant.formation.cercle_scolaire), + ('Collège', enfant.formation.college), + ('Classe', enfant.formation.classe), + ('Struct. extra-fam.', enfant.formation.creche), + ('Ens.', enfant.formation.enseignant), + ]) + labels.extend([ + ('Permis de séjour', enfant.permis), + ('Validité', enfant.validite), + ]) + row = [f"{enfant.nom_prenom} (*{format_d_m_Y(enfant.date_naissance)})"] + for label in labels: + if label[1]: + row.append(f"{label[0]}: {label[1]}") + return '; '.join(row) + + +class DemandeAccompagnement(BasePDF): + title = None + + def produce(self): + famille = self.instance + suivi = famille.suivi + self.set_title("Famille {} - {}".format(famille.nom, self.title)) + + self.story.append(Paragraph("Motif(s) de la demande: {}".format( + suivi.get_motif_demande_display()), self.style_normal + )) + self.story.append(Paragraph('_' * 90, self.style_normal)) + + self.write_paragraph("Dates", suivi.dates_demande) + self.write_paragraph( + "Difficultés", + "{}
{}

{}".format( + "Quelles sont les difficultés éducatives que vous rencontrez et depuis combien de " + "temps ?", + "Fonctionnement familial: règles, coucher, lever, repas, jeux, relations " + "parent-enfants, rapport au sein de la fratrie, … (exemple)", + suivi.difficultes + ), + html=True + ) + self.write_paragraph( + "Autres services", + "{}
{}".format( + "Avez-vous fait appel à d'autres services ? Si oui, avec quels vécus ?", + suivi.autres_contacts + ), + html=True + ) + self.write_paragraph("Aides souhaitées", suivi.aides, html=True) + self.write_paragraph("Ressources/Compétences", suivi.competences, html=True) + self.write_paragraph("Disponibilités", suivi.disponibilites, html=True) + self.write_paragraph("Remarques", suivi.remarque) + + self.doc.build(self.story, onFirstPage=self.draw_header_footer) + + +class JournalPdf(BasePDF): + title = "Journal de bord" + + def get_filename(self): + return '{}_journal.pdf'.format(slugify(self.instance.nom)) + + def get_title(self): + return 'Famille {} - {}'.format(self.instance.nom, self.title) + + def produce(self): + famille = self.instance + self.set_title(self.get_title()) + + self.style_bold.spaceAfter = 0.2*cm + self.style_italic.spaceBefore = 0.2 * cm + self.style_italic.spaceAfter = 0.7 * cm + for prest in famille.prestations.all().prefetch_related('intervenants'): + self.story.append(CleanParagraph(prest.texte, self.style_normal)) + self.story.append( + Paragraph('{} - {} ({})'.format( + '/'.join(interv.sigle for interv in prest.intervenants.all()), + format_d_m_Y(prest.date_prestation), + format_duree(prest.duree) + ), self.style_italic) + ) + + self.doc.build( + self.story, + onFirstPage=self.draw_header_footer, onLaterPages=self.draw_footer, + canvasmaker=PageNumCanvas + ) + + +class RapportPdf(BasePDF): + title = None + + def get_filename(self): + return "{}_resume_{}.pdf".format( + slugify(self.instance.famille.nom), + format_Ymd(self.instance.date) + ) + + def produce(self): + rapport = self.instance + self.style_normal.fontSize += 2 + self.style_normal.leading += 2 + self.style_justifie.fontSize += 2 + self.style_justifie.leading += 2 + self.doc.title = 'Résumé "AEMO"' + self.set_title('Famille {} - {}'.format(rapport.famille.nom, self.doc.title)) + self._add_subtitle([f"Date: {format_d_m_Y(rapport.date)}"]) + + data = [ + ("Enfant(s)", '
'.join( + [f"{enfant.nom_prenom} (*{format_d_m_Y(enfant.date_naissance)})" + for enfant in rapport.famille.membres_suivis()]), False), + ("Intervenant-e-s", ', '.join([i.nom_prenom for i in rapport.intervenants()]), False), + ("Début du suivi", format_d_m_Y(rapport.famille.suivi.date_debut_suivi), False), + ("Situation / contexte familial", rapport.situation, True), + ] + data.append(("Observations", rapport.observations, True)) + data.append(("Perspectives d'avenir", rapport.projet, True)) + + for title, text, html in data: + self.write_paragraph(title, text, html=html, justifie=True) + + if hasattr(rapport, 'sig_interv'): + self.story.append(Spacer(0, 0.5 * cm)) + + for idx, interv in enumerate(rapport.sig_interv.all()): + if idx == 0: + self.write_paragraph("Signature des intervenant-e-s :", '') + self.story.append(Spacer(0, 0.2 * cm)) + self.write_paragraph('', interv.nom_prenom + (f', {interv.profession}' if interv.profession else '')) + self.story.append(Spacer(0, 1 * cm)) + + secret_style = ParagraphStyle( + name='italic', fontName='Helvetica-Oblique', fontSize=self.FONTSIZE - 1, leading=self.FONTSIZE + 1, + backColor=colors.Color(0.96, 0.96, 0.96, 1), borderRadius=12, + ) + self.story.append(Paragraph( + "Le présent résumé comporte des éléments couverts par le secret professionnel au sens " + "de la LPSy et du Code pénal. Seuls les propriétaires des données, à savoir les membres " + "de la famille faisant l’objet du résumé, peuvent ensemble lever ce secret ou " + "accepter la divulgation des données. Si cette autorisation n’est pas donnée, l’autorité " + "compétente en matière de levée du secret professionnel doit impérativement être saisie.", + secret_style + )) + + self.doc.build(self.story, onFirstPage=self.draw_header_footer, onLaterPages=self.draw_footer) + + +class MessagePdf(BasePDF): + title = 'Message' + + def get_filename(self): + return '{}_message.pdf'.format(slugify(self.instance.subject)) + + def produce(self): + doc = self.instance + self.set_title('{} - Famille {}'.format(self.title, doc.famille.nom)) + with extract_msg.Message(doc.fichier.path) as msg: + P = partial(Paragraph, style=self.style_normal) + Pbold = partial(Paragraph, style=self.style_bold) + + msg_headers = [ + [Pbold('De:'), P(msg.sender)], + [Pbold('À:'), P(msg.to)], + ] + if msg.cc: + msg_headers.append([Pbold('CC:'), P(msg.cc)]) + if msg.date: + msg_headers.append([Pbold('Date:'), P(msg.date)]) + msg_headers.append([Pbold('Sujet:'), P(msg.subject)]) + self.story.append(self.get_table(msg_headers, [3, 15])) + self.story.append(Pbold('Message:')) + self.story.append(RawParagraph(msg.body, style=self.style_normal)) + return self.doc.build( + self.story, + onFirstPage=self.draw_header_footer, onLaterPages=self.draw_footer, + canvasmaker=PageNumCanvas + ) + + +class EvaluationPdf: + def __init__(self, tampon, famille): + self.tampon = tampon + self.famille = famille + self.merger = PdfWriter() + + def append_pdf(self, PDFClass): + tampon = BytesIO() + pdf = PDFClass(tampon, self.famille) + pdf.produce() + self.merger.append(tampon) + + def produce(self): + + self.append_pdf(CoordonneesPagePdf) + self.append_pdf(DemandeAccompagnementPagePdf) + self.merger.write(self.tampon) + + def get_filename(self): + return '{}_aemo_evaluation.pdf'.format(slugify(self.famille.nom)) + + +class CoordonneesFamillePdf(BasePDF): + title = "Informations" + + def get_filename(self): + return '{}_coordonnees.pdf'.format(slugify(self.instance.nom)) + + def produce(self): + famille = self.instance + suivi = famille.suivi + self.set_title('Famille {} - {}'.format(famille.nom, self.title)) + + # Parents + self.story.append(Paragraph('Parents', self.style_sub_title)) + data = self.formate_persons(famille.parents()) + if data: + self.story.append(self.get_table(data, columns=[2, 7, 2, 7], before=0, after=0)) + else: + self.story.append(Paragraph('-', self.style_normal)) + + # Situation matrimoniale + data = [ + ['Situation matrimoniale: {}'.format(famille.get_statut_marital_display()), + 'Autorité parentale: {}'.format(famille.get_autorite_parentale_display())], + ] + self.story.append(self.get_table(data, columns=[9, 9], before=0, after=0)) + + # Personnes significatives + autres_parents = list(famille.autres_parents()) + if autres_parents: + self.story.append(Paragraph('Personne-s significative-s', self.style_sub_title)) + data = self.formate_persons(autres_parents) + self.story.append(self.get_table(data, columns=[2, 7, 3, 6], before=0, after=0)) + if len(autres_parents) > 2: + self.story.append(PageBreak()) + + # Enfants suivis + self.write_paragraph( + "Enfant(s)", + '
'.join(self.enfant_data(enfant) for enfant in famille.membres_suivis()) + ) + # Réseau + self.story.append(Paragraph("Réseau", self.style_sub_title)) + data = [ + ['AS OPE', '{} - (Mandat: {})'.format( + ', '.join(ope.nom_prenom for ope in suivi.ope_referents), + suivi.get_mandat_ope_display() + )], + ['Interv. CRNE', '{}'.format( + ', '.join('{}'.format(i.nom_prenom) for i in suivi.intervenants.all().distinct()) + )] + ] + for enfant in famille.membres_suivis(): + for contact in enfant.reseaux.all(): + data.append([ + enfant.prenom, + '{} ({})'.format(contact, contact.contact) + ]) + self.story.append(self.get_table(data, columns=[2, 16], before=0, after=0)) + + self.write_paragraph("Motif de la demande", famille.suivi.motif_detail) + self.write_paragraph("Collaborations", famille.suivi.collaboration) + + # Historique + self.story.append(Paragraph('Historique', self.style_sub_title)) + P = partial(Paragraph, style=self.style_normal) + Pbold = partial(Paragraph, style=self.style_bold) + fields = ['date_demande', 'date_debut_evaluation', 'date_fin_evaluation', + 'date_debut_suivi', 'date_fin_suivi'] + data = [] + for field_name in fields: + field = famille.suivi._meta.get_field(field_name) + if getattr(famille.suivi, field_name): + data.append( + [Pbold(f"{field.verbose_name} :"), P(format_d_m_Y(getattr(famille.suivi, field_name)))] + ) + if famille.suivi.motif_fin_suivi: + data.append([Pbold("Motif de fin de suivi :"), famille.suivi.get_motif_fin_suivi_display()]) + if famille.destination: + data.append([Pbold("Destination :"), famille.get_destination_display()]) + if famille.archived_at: + data.append([Pbold("Date d'archivage :"), format_d_m_Y(famille.archived_at)]) + + self.story.append(self.get_table(data, [4, 5])) + self.doc.build(self.story, onFirstPage=self.draw_header_footer) + + +class DemandeAccompagnementPagePdf(DemandeAccompagnement): + title = "Évaluation AEMO" + + +class BilanPdf(BasePDF): + title = "Bilan AEMO" + + def get_filename(self): + return "{}_bilan_{}.pdf".format( + slugify(self.instance.famille.nom), + format_Ymd(self.instance.date) + ) + + def produce(self): + bilan = self.instance + self.style_normal.fontSize += 2 + self.style_normal.leading += 2 + self.style_justifie.fontSize += 2 + self.style_justifie.leading += 2 + self.set_title('Famille {} - {}'.format(bilan.famille.nom, self.title)) + self._add_subtitle([f"Date: {format_d_m_Y(bilan.date)}"]) + + for title, text, html in ( + ("Enfant(s)", '
'.join( + [f"{enfant.nom_prenom} (*{format_d_m_Y(enfant.date_naissance)})" + for enfant in bilan.famille.membres_suivis()]), False), + ("Intervenant-e-s", ', '.join( + [i.intervenant.nom_prenom for i in bilan.famille.interventions_actives(bilan.date)] + ), False), + ("Début du suivi", format_d_m_Y(bilan.famille.suivi.date_debut_suivi), False), + ("Besoins et objectifs", bilan.objectifs, True), + ("Rythme et fréquence", bilan.rythme, True), + ): + self.write_paragraph(title, text, html=html, justifie=True) + + self.story.append(Spacer(0, 0.5 * cm)) + + for idx, interv in enumerate(bilan.sig_interv.all()): + if idx == 0: + self.write_paragraph("Signature des intervenant-e-s AEMO :", '') + self.story.append(Spacer(0, 0.2 * cm)) + self.write_paragraph('', interv.nom_prenom + (f', {interv.profession}' if interv.profession else '')) + self.story.append(Spacer(0, 1 * cm)) + + if bilan.sig_famille: + self.write_paragraph("Signature de la famille :", '') + + self.doc.build(self.story, onFirstPage=self.draw_header_footer, onLaterPages=self.draw_footer) + + +class CoordonneesPagePdf(CoordonneesFamillePdf): + title = "Informations" + + def get_filename(self, famille): + return '{}_aemo_evaluation.pdf'.format(slugify(famille.nom)) + + +def str_or_empty(value): + return '' if not value else str(value) diff --git a/aemo/static/css/autocomplete.min.css b/aemo/static/css/autocomplete.min.css new file mode 100644 index 0000000..89884bd --- /dev/null +++ b/aemo/static/css/autocomplete.min.css @@ -0,0 +1 @@ +.autocomplete{background:#fff;z-index:1000;font:14px/22px "-apple-system",BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;overflow:auto;box-sizing:border-box;border:1px solid rgba(50,50,50,.6)}.autocomplete *{font:inherit}.autocomplete>div{padding:0 4px}.autocomplete .group{background:#eee}.autocomplete>div.selected,.autocomplete>div:hover:not(.group){background:#FFF3F3;cursor:pointer} diff --git a/aemo/static/css/main.css b/aemo/static/css/main.css new file mode 100644 index 0000000..c0d685c --- /dev/null +++ b/aemo/static/css/main.css @@ -0,0 +1,359 @@ +header { background-color: #fff3f3; } + +a { text-decoration: none; } +a:hover:not(.btn) {text-decoration: underline; } + +#logo-cr { display: block; height: 70px; margin: 4px; } +#bandeau-cr { display: block; width: 100%; height: 15px; } +#menu_crne { font-size: 80%; } + +/* This CSS allows the footer to be always at bottom */ +div.top-container { display: flex; min-height: 100vh; flex-direction: column; } +.main-content { flex: 1; } + +.hidden { display: none; } +.red { color: red; } +.green { color: green; } +.orange { color: orange; } +.footer { + font-size: 80%; + background-color: #f8f9fa; + color: #9a1629; + margin-top: 2rem; +} +.spaceabovetr > td { padding-top: 0.7em; } + +#bg_home { + background: url(../img/SRK_DL_Portal.jpg) no-repeat center fixed; + background-size: cover; +} +#home-app-line { position:absolute; bottom:112px; left:5%; } + +.small { font-size: 0.9rem; } +.nowrap { white-space: nowrap; } +.icon-ui { display: inline-block; width: 1rem; height: 1rem; } +img.ficon { height: 1.5em; width: 1.5em; vertical-align: bottom; } +input[readonly] { background-color: #eee; } +#search-button, #reset-button { height: 2rem; min-width: 2.7rem; } +#reset-button img { height: 18px; } + +td.zero { color: #ccc; } +#user-bar { position:absolute; top:40px; right:5vw; font-size:80%; } +#user-bar a, #user-bar button { color: #9c1717; font-weight: bold; } +#user-bar button { font-size: inherit; text-decoration: none; } +#user-bar button:hover { text-decoration: underline; } +#user-tools * { vertical-align: middle; } + +/* For usage inside bs modal */ +.select2-dropdown { z-index: 1100 !important; } + +ul.errorlist, ul.nobullets { list-style-type: none; padding-left: 0; } +ul.errorlist li { + background-color: #f8d7da; + color: #721c24; + font-weight: bold; + padding: .75rem 1.25rem; + margin-bottom: 1rem; + border: 1px solid #ebcccc; + border-radius: .25rem; +} +form.inline { display: inline-block; } +form label { font-weight: bold; } +.custom-file-label::after { content: 'Choisir'; } +form[name=LoginForm] input[type=text], form[name=LoginForm] input[type=password] { width: 20em; } +input[type=text], input[type=email] { width: 100%; } +#id_auth-username { width: auto; } +#id_mois, #id_annee { width: auto; display: inline-block; } +input:disabled + span.datetimeshortcuts { display: none; } +input:disabled + label { color: #999; font-style: italic } +input.card-text { width: 4em; } + +textarea { min-height: 3em; } +textarea#id_note { width: 35em; height: 2em; } +textarea#id_scolarite, textarea#id_loisirs, textarea#id_activite{ width: 100%; height: 4em; } +textarea#id_referent_note, textarea#id_allergies, textarea#id_remarque, textarea#id_remarque_privee, +textarea#id_remarques { + width: 100%; height: 2em; +} +textarea#id_projet, textarea#id_texte { width: 100%; height: 15em; } +select#id_motif_fin_suivi { width: 100%; } +#id_niveau_interv { width: 5em; } + +#id_equipe.immediate-submit { width: auto; display: inline-block; } + +form[name=DemandeForm] th { width: 25%; } +form[name=DemandeForm] input[type=text] { width: 100% } +form[name=DemandeForm] textarea#id_remarque { width: 100%; height: 2em; } +form[name=DemandeForm] textarea#id_autres_contacts { width: 100%; height:2em; } + +form[name=PrestationForm] textarea#id_texte { width: 100%; } +form[name=PrestationForm] th { width: 12em; } + +form[name=Suivi] input#id_service_annonceur { width: 80%; } +form[name=Suivi] textarea { width: 100%; height: 2em;} + +form[name=JournalForm] textarea#id_texte { width: 100%; } +form[name=FamilleForm] textarea#id_motif_detail { width: 100%; height: 5em; } +input.vDateField { width: 7em; display: inline-block; } +input.TimeField { width: 4em; margin-left: 0.5em; } +input#id_duree { width: 6em; } +input#id_username { width: none; } +input#id_npa, input#id_npa_actuelle { width: 4em; } +input#id_sigle { width: 8em; } +#id_groups label, .choicearray label, .filter-form label, #id_lib_prestation label, +#id_membres label, #id_sig_interv label, #id_pres_interv label, #id_roles label { font-weight: normal; } +#id_roles { column-count: 2; } + +tr.decedee td:first-child:before { + content: '† '; +} +tr.decedee td { + font-style: italic; + opacity: 0.8; +} +span.date_theorique { color:#FF8000; font-style: italic; } +span.hoverimage { visibility: hidden; } +span.hoverimage img { cursor: pointer; } +div:hover > span.hoverimage, summary:hover > span.hoverimage { visibility: visible; } + +#benef_table > tbody > tr > td { padding: 2px 0.3em; line-height: 1.2em; } + +table.statut_suivi td { + min-width: 35px; + padding: 0; + font-size: 10px; + background-color: #eee; + border: 1px solid #ccc; + text-align: center; +} +table.statut_suivi { margin-top: 4px;} +table.statut_suivi td.filled { background-color: #AACDAA; } +table.statut_suivi td.current { background-color: #FFDB78; } + +table.statut_suivi td div.filled { background-color: #AACDAA; } +table.statut_suivi td div.next { background-color: #F2F5A9; } +table.statut_suivi td div.urgent { background-color: #FF8000; } +table.statut_suivi td div.depasse { background-color: #FF0000; } + +.stat_table th { padding-top: 1.5em; text-align: right; } +.stat_table th.month { text-align: right; width: 90px; } +.stat_table th.total { text-align: right; width: 90px; } +.stat_table th.left { text-align: left; } +.stat_table .app_line { background-color: #eee; } +.stat_table td.num { text-align: right; } +.stat_table tr.first td { border-top: 1px solid #999; } +.stat_table .subdiv2 td { background-color: beige; font-style: italic; } + +p.app_line { background-color: #eee; padding: 0.2em 0 0.6em 0.2em; } + +#id_mandat_ope, #id_motif_demande, #id_demarche { + display: flex; flex-wrap: wrap; +} +#id_mandat_ope > div, #id_motif_demande > div, #id_demarche > div { + padding-right: 1.5em; +} +#id_mandat_ope label, #id_motif_demande label, #id_demarche label { + font-weight: normal; padding-right: 2em; +} +/* padding needed for bootstrap style */ +#id_motif_demande { padding-left: 2rem; } + +#id_demande_prioritaire label { padding-left: 2rem; } + +table-condensed td{ padding:1px; } + +.btn-mini { + line-height:14px; + font-weight:800; +} +.btn-xs { + padding: .2rem .2rem; + font-size: .750rem; + line-height: 1; + border-radius: .2rem; +} + +.modal-lg input[type=text] { margin-bottom: 1em; } +.modal-lg input[name=theme] { width: 160%; } +.modal-lg textarea { width: 160%; } +th { + vertical-align: top; +} + +a[role=button] { margin-left: 0.4em; } + +.topnav-right {font-size: 95%;} +.selection_form { display: flex; justify-content: flex-end; flex-wrap: wrap; } +.select-container { margin-left: 0.5em; } +select#id_interv { max-width: 12em; } +input#id_letter { width:10em; } + +ul.nav-prestations .nav-link.active { + font-weight: bold; + font-size: 110%; +} + +.left-label { width: 15em; } + +.icon { width:20px; height:20px; } +.icon-xs {width:15px; height:15px; } + +.table-absence { + display: block; + overflow-y: scroll; + max-height:300px; +} + +.table-fixed tbody { + height: 300px; + overflow-y: auto; + width: 100%; +} + + +.table-fixed thead, +.table-fixed tbody, +.table-fixed tr, +.table-fixed td, +.table-fixed th { + display: block; + background-color: white; +} + +.table-fixed tbody td, +.table-fixed tbody th, +.table-fixed thead > tr > th { + float: left; + position: relative; + + &::after { + content: ''; + clear: both; + display: block; + } +} + +.bg-success-2 { background-color: #d3ffd0;} +.bg-warning-2 { background-color: #FAF1B8; } +.bg-primary-2 { background-color: #B8C3FA; } +.bg-danger-2 { background-color: #F7E4E3 } + +.bg-danger-3 { background-color: #fff5f5; } +.bg-success-3 { background-color: #edfced; } + +.calendarbox { z-index:1100; background: white; } +/* Needed because of bootstrap reboot */ +.calendar caption { caption-side: top; background: #fff3f3; } + +.popup textarea#id_texte { width:100%; height:2em; } + +.table-ext-bordered { + border-width:1px; + border-style:solid; + border-color:lightgray; + padding:2px; +} + +.table-wrapper { display: block; position: relative; overflow: auto; } + +.prestation_titre { background-color: #fcf0c6; font-weight: bold; } +table.prestations th { position: sticky; top: 0; } +table.prestations td.total { font-weight: 600; background-color: #eee; text-align: center; } +table.prestations th.mesprest, table.prestations td.mesprest { text-align: right; } +table.prestations th.action, table.prestations td.action { text-align: right; } + +p.secret { + background-color: #eee; + border-radius: 0.5em; + padding: 0.5rem; + font-style: italic; +} + +/* Image modal styles */ +div.modal-image { + display: none; position: fixed; z-index: 100; padding-top: 100px; + left: 0; top: 0; width: 100%; height: 100%; overflow: auto; + background-color: rgba(0,0,0,0.6); +} +img.modal-content { + margin: auto; + display: block; + width: 80%; + max-width: 700px; +} +#modalClose { + position: absolute; + top: 15px; + right: 35px; + color: #f1f1f1; + font-size: 40px; + font-weight: bold; + transition: 0.3s; +} + +#modalClose:hover, #modalClose:focus { + color: #bbb; + text-decoration: none; + cursor: pointer; +} +/* End of Image modal styles */ + +#id_rythme { width: 100%; height:4em; } + +.red {color: red;} + +.table-sortable > thead > tr > th[data-col] { + cursor: pointer; + position: relative; +} + +.table-sortable > thead > tr > th[data-col]:after, +.table-sortable > thead > tr > th[data-col]:after, +.table-sortable > thead > tr > th[data-col]:after { + content: ' '; + position: absolute; + height: 0; + width: 0; + right: 10px; + top: 16px; +} + +.table-sortable > thead > tr > th[data-col]:after { + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 5px solid #ccc; + border-bottom: 0px solid transparent; +} + +.table-sortable > thead > tr > th[data-col]:hover:after { + border-top: 5px solid #888; +} + +.table-sortable > thead > tr > th.desc:after { + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 0px solid transparent; + border-bottom: 5px solid #333; +} +.table-sortable > thead > tr > th.desc:hover:after { + border-bottom: 5px solid #888; +} + +.table-sortable > thead > tr > th.asc:after { + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 5px solid #333; + border-bottom: 5px solid transparent; +} + +.vDateField-rounded { + padding: 0.375rem 0.75rem; + line-height: 1.5; + border-radius: 0.375rem; + border: 1px solid #ced4da; +} + +.search-form-fields { + width: 200px !important; + margin-bottom: 5px; +} diff --git a/aemo/static/css/tablesort.css b/aemo/static/css/tablesort.css new file mode 100644 index 0000000..632d28d --- /dev/null +++ b/aemo/static/css/tablesort.css @@ -0,0 +1,33 @@ +th[role=columnheader]:not(.no-sort) { + cursor: pointer; +} + +th[role=columnheader]:not(.no-sort):after { + content: ''; + float: right; + margin-top: 7px; + border-width: 0 4px 4px; + border-style: solid; + border-color: #404040 transparent; + visibility: hidden; + opacity: 0; + -ms-user-select: none; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +th[aria-sort=ascending]:not(.no-sort):after { + border-bottom: none; + border-width: 4px 4px 0; +} + +th[aria-sort]:not(.no-sort):after { + visibility: visible; + opacity: 0.4; +} + +th[role=columnheader]:not(.no-sort):hover:after { + visibility: visible; + opacity: 1; +} diff --git a/aemo/static/docs/sifp_agenda_hebdo.doc b/aemo/static/docs/sifp_agenda_hebdo.doc new file mode 100644 index 0000000000000000000000000000000000000000..035ad7d558c3e5e3a2b8c8fbcb9b27762746d09f GIT binary patch literal 169472 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%0Dl(Ob=$YlS0 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 z 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 \ No newline at end of file diff --git a/aemo/static/ficons/image.svg b/aemo/static/ficons/image.svg new file mode 100644 index 0000000..8d4cac8 --- /dev/null +++ b/aemo/static/ficons/image.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/aemo/static/ficons/master.svg b/aemo/static/ficons/master.svg new file mode 100644 index 0000000..2537cbe --- /dev/null +++ b/aemo/static/ficons/master.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/aemo/static/ficons/pdf.svg b/aemo/static/ficons/pdf.svg new file mode 100644 index 0000000..e6472df --- /dev/null +++ b/aemo/static/ficons/pdf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/aemo/static/ficons/xlsx.svg b/aemo/static/ficons/xlsx.svg new file mode 100644 index 0000000..ddf8038 --- /dev/null +++ b/aemo/static/ficons/xlsx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/aemo/static/img/SRK_DL_Portal.jpg b/aemo/static/img/SRK_DL_Portal.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2fd4c9c90c19d8aaabde9dbc86fd446699f9cd6b GIT binary patch literal 138268 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%0ApejD?TUmR-Fjcoo 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 D!EqH# literal 0 HcmV?d00001 diff --git a/aemo/static/img/bandeau_rouge.png b/aemo/static/img/bandeau_rouge.png new file mode 100644 index 0000000000000000000000000000000000000000..1ca70ca1764d04c354c8df5b78b3f1f91714c189 GIT binary patch literal 466 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 literal 0 HcmV?d00001 diff --git a/aemo/static/img/edit.svg b/aemo/static/img/edit.svg new file mode 100644 index 0000000..7556933 --- /dev/null +++ b/aemo/static/img/edit.svg @@ -0,0 +1,8 @@ + + + + + + + diff --git a/aemo/static/img/eduqua.png b/aemo/static/img/eduqua.png new file mode 100644 index 0000000000000000000000000000000000000000..b4b9b682813c2c904c7db38980c386525793cc1b GIT binary patch literal 3224 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 literal 0 HcmV?d00001 diff --git a/aemo/static/img/filter_off.svg b/aemo/static/img/filter_off.svg new file mode 100644 index 0000000..34bcdf8 --- /dev/null +++ b/aemo/static/img/filter_off.svg @@ -0,0 +1,76 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/aemo/static/img/formation.png b/aemo/static/img/formation.png new file mode 100644 index 0000000000000000000000000000000000000000..9eb68376ae7b083ad021add7aa5c429cb59831cb GIT binary patch literal 5843 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 literal 0 HcmV?d00001 diff --git a/aemo/static/img/help.png b/aemo/static/img/help.png new file mode 100644 index 0000000000000000000000000000000000000000..23c9c7395efc5fb8f0bda790d36ba5a68cc01767 GIT binary patch literal 543 zcmV+)0^t3LP)e_u2`c^p8^KQS zM~Gce!GEAwxmrkAyr2jg&|FYKv=tVOAb3F%i!-a=9>4uu#YW#|*m-B>opW}+IsEGw z=!2icZfwDD_?Pe;4>60CKM~l0Q`l7SeGa?2;Cq2-JpCPk<2Z>yJi!e-!rS0$(#Z~^ zj%8fLm5PSDinq|jzCPloBDRI2zY4BnCK5Jg-1_KxE7oS*XynXbd#~aHxDcJ>ogcxi z;99te6Io0nxaq3yTR4~bC&GU@V)o*C_;zKn=fnT~6srp4RM=*gG#6dn#hdWG#<=un z7txG{_D5cqz~->CS<+WrE&Og^3~k)YVjpL<3>L_mH0SU2#t6>f3(n$0#xF&UkurgP za13j34KMpiCDn%Ca@xX$;;A&arUu zNm#%q?2+z!B077Aj}cP~@zc@JkaYT=)^*i`Q>iG#LLez5(RyWS2SbGp_&u002ovPDHLkV1n|91_}TG literal 0 HcmV?d00001 diff --git a/aemo/static/img/icon_add.jpeg b/aemo/static/img/icon_add.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..544eb20df8b878b6f4a44ef69b81aad3fc69ef81 GIT binary patch literal 6288 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 literal 0 HcmV?d00001 diff --git a/aemo/static/img/journal.jpg b/aemo/static/img/journal.jpg new file mode 100644 index 0000000000000000000000000000000000000000..11131926324b16090f95a00b9c9a076b5603a364 GIT binary patch literal 86649 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 literal 0 HcmV?d00001 diff --git a/aemo/static/img/logo-cr.png b/aemo/static/img/logo-cr.png new file mode 100644 index 0000000000000000000000000000000000000000..4dee4dd1fff7341e6a3d5eeec145d2c3cd598a66 GIT binary patch literal 42347 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 +image/svg+xml \ No newline at end of file diff --git a/aemo/static/img/logo-zewo.png b/aemo/static/img/logo-zewo.png new file mode 100644 index 0000000000000000000000000000000000000000..9499189a00e48b5aa80302290a4a7ccd874d8df4 GIT binary patch literal 22599 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 \ No newline at end of file diff --git a/aemo/static/img/printer.png b/aemo/static/img/printer.png new file mode 100644 index 0000000000000000000000000000000000000000..0397b7ff4a8ab7f8cd5253f22406b8170529c1f9 GIT binary patch literal 10723 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 literal 0 HcmV?d00001 diff --git a/aemo/static/img/reseau.png b/aemo/static/img/reseau.png new file mode 100644 index 0000000000000000000000000000000000000000..a21d8dbe3c36734dbc4835bc3d4c038bcfdff7a1 GIT binary patch literal 3905 zcmbVPXHZk^whkcjN%f;D1o@;(Zz7_AG=WGLklsOhOXwY>W26^BT4+iMNbjA{A@q*Y z15y-_5(szenLBfw`{$nX4HDXGX4t=%A^U}Q1BK~x9=k$+K=lh*Q@-}~UJ zOg(cCg|gZuXp~F(>p_U=M>YCN?dr;c3OxsDmSp3H@mwO~#l>}sgXTWm8Ri225NpTG zaz@pfh8cgXolQS?Zvtl@Dq+}xTtrU}N@mT`>p?2(*Kq2?}Z91tCD~8X$##M>zh!>OT-n2>M(9>4fXm5yV7ACP2TAWA>%jy>17wmT1r-4! zYePdr`T49;Qc{x~V0R9l!TqHsPZhJ4Cd$$w&4A1AsO_8W8mH>&>N)e@d83j>H<1G) zBhSgYG`7$f*pD8ANbAa{6>BJ_z}VPWIY$EmsG1JiMkJrm>P}&yaB*OOzO*zR7x+Mf z=!=*WX1pMbOhU%`ed6t$DLajGmq|(5n2mx|3}tpv%K|OP6Rbue zif`3--?zG*^)MFZA(*MjEP5y@8Aey zmzS4`DDEvbc_K?n><>+P-!g0+99(yj@Q*>Y>dMMg+*Eo#^GMM2eg0-jCFOqsJ2bhO z;q_y^--&6VVOZmX>dfq{u91=dw&t~IWANx@b+(x@sfBr3UX5@vWMjPGMQCWKeCaA2 z4uAIX@%+*fZ#jZJ5mS^MFm6{PTUSNegbJ~`lVUcGXii8-FgG`+<<(zL@iY41E0i&e zf-}a9l)4;CS@&E7{OIT4N`@ru@Nsj;D03&LAQpQlJ!={fnG(Jpr~6B)U>OH4h^mT; z`*%&+Ei3|z`Z%@oBylzKc9L0IXZXFgdd641JYvvIQUb5Bxw!{^h5BWp0s>?FP7%-| zON21@zH;=-k}2TN%RJH7);_^PW0u_Nh9*5d9wb8&`&ligxT%TzAB#`6(R~{%*Ww~b zwKtSvZYr$6g{#4|wUb@og@uK!_15ngN)Q#f5oCH%bX*dFuU?O2n#t-ko`wh0&3sc* zQu-nKAMmgbtQ! z*U-TsEIc6r-+?u*ud;tNC$EghBQ{^+xyBT#AKX(dt7}`9GS{;yCqqe zo&C8CoRYUJ(lhU{auAMK&C*ogJDbkM%aM(&DOWVG9k#B5a)<4AmRop$Y5X;s^7G%Q z4***#Z~q!1GseO|7x#pd`2yqE1fO$D3J=SsY0&4;VfRW%NnyXGuo8IfFY^EjR)C2n zanw?@&bz^YcXxl7n`B{OkxJyD&bR%eo!pJd$IX5Bc0)tMh?t#d29ak-^hkdq zM?YI@;B~+NBb$Eb8tUD|VQd87$%5EjGxuv7V9LIa;Pv?E#HQfj;Jn3v(Id7CfSqnb zGC$etQUR>@>l^j3Cj7nX9JFLt4 zw6^uC-0*&CJ)~g3;I2$=4$xk2FD2b#1X1mp(LqC*;$3L_`Ehx{U_)R{>`HI)?a$?x=@bD7O^x@x%4f#x@BJy(mb#>F)A3LqI8ui6XdRAHL@M~w-@zZv0WHYm0Ay=}Uk0&Dra|LY45Oz0@GeeJsnVA*c zt;49IsF<^bw>gx~0%;8h2$-6hk~j%FP=#JI-nWgvTI@;ailB(03BYWmniLjArSckV zRv={V-KbIVNlLB1S_4Q9fwn0hREvR)CK*~+tEu^$y?7B*{~E8krKQT;|ADO)!{6vK zamXlUd2&*VJ~~(PqrSerpHos`cGVC@Ze$br-tRPfYvco!X>=CF@s0a+f49s`FTo26 z3h=XEGsa_<-1&^j74ch)R~8rjfTo71YIRyt2`{l_b<5FkxbbJpTVc{kytFS$kY|Cs zD)RlJDZCDkAzcJu<*3^ZstYu+&)0w+vL*fPDs`!ed+J@+*wwO>7jCRaI?PvNLiy$4 zh}YPMmRoScx6fJjz3IAL=)NF#rDs>?U}^QF95J)QCDak!0hNm-JNHV{Zx9v&W^L7KF=@6tLNSluj+BYT~>15HH-su13Gl_vlV|I(njg>tXk!^2iQTFA=PSS#;LjJ?Q@8<2*f^ znt3&;tK(v0p;uc43f>zV8}Z~_KQ=R*iD^q?uWe?7XCH}wPz}QNk27QWOqfHj^tRNxt~7)dtOsOhL%SWYO%t&>CA^ zUB#W-QqllI^3oA^bu0uYsHWL6h!r)p>~` zl3G#l2Q!n?t52_x#wsE)AtCrvaAzZBR*w5Q`T5-#BS?8K3E&8Rab5a_|Hx-vgW5Rw zgq=|OY+UjXC)-&7FNWAsuNHW>f$e+do1o_Ar*uT#<>KPUccd;4WdZJF(rd#Vo^*H1 zb%+)Lf_U0%kB9~&o}25 zq{QNBXm4+?#wE;6Qi7tgJW!L9TG)EXdfLSSJ+lO=Fhg?*wUl!$Pd(BkbeC-R--MPF1@J79f*;b(oZ@kye~4sz`({`6_S z&Y6jgZdk|qL7n4*=xUr#J>WVVmm0N?3HVsX^^VftzMSpKSrmoZ>6+%pvyG*0AZrATv6esc&MGEM?$PKb8X_eP;5B}+}6e9CXTC4Xy+EmIDoZf4D z<^+8Y`+Bs*$;-P@1(73gZvNiuqEP3w#FcB5tbwt@UzC&_5V%7svbf!m2=pe)&}11} zP*h7{=gyjuMZO1SW@D4rCp3PkD|N=6AeeX0$o)NFq*{zAj=b_FFvY~y-HDf%e&J@8 zJcIMCm67^yno|sRz+x`XqI;G-F5mZ<$7|4xj@)ORk^1}ZsMheCZ6F~AS9&%<@}NME zcv#UkFa)7-j=3l|>`zBd8@jx|gO#8sJKE{gP2;jK4-XmXrl($q&l`nbQn9cPZl zUR+SFt(9GA<*FNsS9i#UtO3CZrybTgueP?fHhO&Wmhp*B^gCK=Y7uKwQ;-Q&kh27k z!ho3fJB9tmf5pBpoPXjUG4Ow5;eQwd|E)XvGYZs}t~YPfE|7jfASHQKxpEoPkpBUT Ct8W(o literal 0 HcmV?d00001 diff --git a/aemo/static/img/stat.png b/aemo/static/img/stat.png new file mode 100644 index 0000000000000000000000000000000000000000..1f1a349bf0f99ab009fc40fefd03fa47932ba5e9 GIT binary patch literal 2249 zcmZ8j3p5i98=jC64dwFlVKa9kMY*%(UN&j26KVN~T=pp;;b$z(Erk-YLWvPZ%6%Cn zmqp~Rx!;B{w}t&W-}j&Yod2Bna?X3+bKd7U=Y7xfCfXycgao7n004lHjkUSMVW$6f zAopS950JM80JxOwFQF_r9L~zh3WLGm1OXaMWH|?ig?$(zezDyglF5Q*t}lLuFMfvY z2Lbkecdp5#%}FPX9W0Gxe_31J*m>EzP5HSq(`Gr-W-;9xbuifpv%_z%O>j7~91e43 zd5sZTc@+9zb)u0=ZW?DG9!t)ot?as5`Z?Dv*u4f>((=3^9?{dbPX2X;iKYncVcQi-%*CX{S(6-Y> zS;Nyy`K2A*-=EVF#muaP-%F3CWRC5YA+O*}S|7I$~8RlPVT_kNR_dUw@JniXiz`X~v^GK8hCW+GYS5&WW_Be^T{2&Ord8=j_%l=%Ev5iV!)Hw|cBQ z9mnndhgG6OSvW8zwt{EA*|;zk9Gqm2Bi7fD$t;<+ZBw&!j~Y2Al1Umda%X-mxG~D5 zTu#%3ec3auu)&|u0m(ph#T8Q7dyx$u_=%oCAHzJ@__IxN7~7^qQgncT43xKyfGRR8v!&H}u9)2B8ERU)vh3+uO^F zSg{v&Hc;OJ_@Eb5uGIqrT*HLlxsuxd>5DU{am`4<-PN~~)Cr;c`V&;a8K|RWx78FcyQ(!3#n4)l~Bi#f)IZz`*{$D8tF+0^6F&?@ewPpOU@YtET7t zmES)Aj;6DEwDiS2 zhkSOPO&BQ17j9FhylH6J)DfqPE{n|%}Fr2-TLX+mQIR@LuNW2A?&sSVcb-? zmQ6Q zw7k~XUAJU^Y4ItS?&t{}yckF0&5rqOuVR`c8iV@v>`Xx)+5~gE_?b+7{RC-QN?^i5 zDF|K)g`B%C3>s4|jXXp!O;`R&{Dpf`xODGbcL#(`)=eSXO=nP zs2Ul1aZiBt2nrW_6y`hs6 zDcL5rP%-lwegUZVqh451k(?Tq`%?2K4I>h^fZshyH?EuKl$E7w!)>(mD;sSWjlOfX z&qzTvXAopt{({ca0)n)zshZ89xsJ=C6odliGwQNnq*f%)F5Yn}xBX>}8!fSLE|JI& zsRM(iROYPDqVo7&sxN!{*{U7HyYS2)U zm{QYK>yX4?2)uc;C4zMU4Gn#f=ue5u-E%pk05LUuQ{7|!_Fp@IUy}<&49-q|?NkfSg^U9)%g5^#TCt^LqVOC2QRH$3oBA((H zlH?Wpp6-EjJeVOJ)@fWvPf4y33gWVG!_U^wR*#I&-Pk3oUFrqtIqzS;WUKo^|5;|X z+BF-Wu@<0={r}YIw@B3i`LbE>V22WBSzLKhAx6kgx3M}K`2SLu7|do!Lg^eS6!I!P TC2Z^PMFH4YAk53)*JA$z9XM~L literal 0 HcmV?d00001 diff --git a/aemo/static/img/telephone.png b/aemo/static/img/telephone.png new file mode 100644 index 0000000000000000000000000000000000000000..c28e4a10ead08420f247d4394ca6af34a21624d7 GIT binary patch literal 119559 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⪻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Ú_ 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 KMNUMnLSTaZGkK%{ literal 0 HcmV?d00001 diff --git a/aemo/static/img/warning.svg b/aemo/static/img/warning.svg new file mode 100644 index 0000000..e29e041 --- /dev/null +++ b/aemo/static/img/warning.svg @@ -0,0 +1,3 @@ + + + diff --git a/aemo/static/js/DateTimeShortcuts.js b/aemo/static/js/DateTimeShortcuts.js new file mode 100644 index 0000000..6f4a70a --- /dev/null +++ b/aemo/static/js/DateTimeShortcuts.js @@ -0,0 +1,424 @@ +/*global Calendar, findPosX, findPosY, get_format, gettext, gettext_noop, interpolate, ngettext, quickElement*/ +// Inserts shortcut buttons after all of the following: +// +// +'use strict'; +{ + const DateTimeShortcuts = { + calendars: [], + calendarInputs: [], + clockInputs: [], + clockHours: { + default_: [ + [gettext_noop('Now'), -1], + [gettext_noop('Midnight'), 0], + [gettext_noop('6 a.m.'), 6], + [gettext_noop('Noon'), 12], + [gettext_noop('6 p.m.'), 18] + ] + }, + dismissClockFunc: [], + dismissCalendarFunc: [], + calendarDivName1: 'calendarbox', // name of calendar

that gets toggled + calendarDivName2: 'calendarin', // name of
that contains calendar + calendarLinkName: 'calendarlink', // name of the link that is used to toggle + clockDivName: 'clockbox', // name of clock
that gets toggled + clockLinkName: 'clocklink', // name of the link that is used to toggle + shortCutsClass: 'datetimeshortcuts', // class of the clock and cal shortcuts + timezoneWarningClass: 'timezonewarning', // class of the warning for timezone mismatch + timezoneOffset: 0, + init: function(selector) { + selector = selector || document; + const serverOffset = document.body.dataset.adminUtcOffset; + if (serverOffset) { + const localOffset = new Date().getTimezoneOffset() * -60; + DateTimeShortcuts.timezoneOffset = localOffset - serverOffset; + } + + for (const inp of selector.getElementsByTagName('input')) { + if (inp.type === 'text' && inp.classList.contains('vTimeField')) { + DateTimeShortcuts.addClock(inp); + DateTimeShortcuts.addTimezoneWarning(inp); + } + else if (inp.type === 'text' && inp.classList.contains('vDateField')) { + DateTimeShortcuts.addCalendar(inp); + DateTimeShortcuts.addTimezoneWarning(inp); + } + } + }, + // Return the current time while accounting for the server timezone. + now: function() { + const serverOffset = document.body.dataset.adminUtcOffset; + if (serverOffset) { + const localNow = new Date(); + const localOffset = localNow.getTimezoneOffset() * -60; + localNow.setTime(localNow.getTime() + 1000 * (serverOffset - localOffset)); + return localNow; + } else { + return new Date(); + } + }, + // Add a warning when the time zone in the browser and backend do not match. + addTimezoneWarning: function(inp) { + const warningClass = DateTimeShortcuts.timezoneWarningClass; + let timezoneOffset = DateTimeShortcuts.timezoneOffset / 3600; + + // Only warn if there is a time zone mismatch. + if (!timezoneOffset) { + return; + } + + // Check if warning is already there. + if (inp.parentNode.querySelectorAll('.' + warningClass).length) { + return; + } + + let message; + if (timezoneOffset > 0) { + message = ngettext( + 'Note: You are %s hour ahead of server time.', + 'Note: You are %s hours ahead of server time.', + timezoneOffset + ); + } + else { + timezoneOffset *= -1; + message = ngettext( + 'Note: You are %s hour behind server time.', + 'Note: You are %s hours behind server time.', + timezoneOffset + ); + } + message = interpolate(message, [timezoneOffset]); + + const warning = document.createElement('span'); + warning.className = warningClass; + warning.textContent = message; + inp.parentNode.appendChild(document.createElement('br')); + inp.parentNode.appendChild(warning); + }, + // Add clock widget to a given field + addClock: function(inp) { + const num = DateTimeShortcuts.clockInputs.length; + DateTimeShortcuts.clockInputs[num] = inp; + DateTimeShortcuts.dismissClockFunc[num] = function() { DateTimeShortcuts.dismissClock(num); return true; }; + + // Shortcut links (clock icon and "Now" link) + const shortcuts_span = document.createElement('span'); + shortcuts_span.className = DateTimeShortcuts.shortCutsClass; + inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling); + const now_link = document.createElement('a'); + now_link.href = "#"; + now_link.textContent = gettext('Now'); + now_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.handleClockQuicklink(num, -1); + }); + const clock_link = document.createElement('a'); + clock_link.href = '#'; + clock_link.id = DateTimeShortcuts.clockLinkName + num; + clock_link.addEventListener('click', function(e) { + e.preventDefault(); + // avoid triggering the document click handler to dismiss the clock + e.stopPropagation(); + DateTimeShortcuts.openClock(num); + }); + + quickElement( + 'span', clock_link, '', + 'class', 'clock-icon', + 'title', gettext('Choose a Time') + ); + shortcuts_span.appendChild(document.createTextNode('\u00A0')); + shortcuts_span.appendChild(now_link); + shortcuts_span.appendChild(document.createTextNode('\u00A0|\u00A0')); + shortcuts_span.appendChild(clock_link); + + // Create clock link div + // + // Markup looks like: + // + + const clock_box = document.createElement('div'); + clock_box.style.display = 'none'; + clock_box.className = 'clockbox module'; + clock_box.id = DateTimeShortcuts.clockDivName + num; + document.body.appendChild(clock_box); + // cpa: Make it work with bootstrap + clock_box.style.position = clock_box.closest('body').classList.contains('modal-open') ? 'fixed' : 'absolute'; + clock_box.addEventListener('click', function(e) { e.stopPropagation(); }); + + quickElement('h2', clock_box, gettext('Choose a time')); + const time_list = quickElement('ul', clock_box); + time_list.className = 'timelist'; + // The list of choices can be overridden in JavaScript like this: + // DateTimeShortcuts.clockHours.name = [['3 a.m.', 3]]; + // where name is the name attribute of the . + const name = typeof DateTimeShortcuts.clockHours[inp.name] === 'undefined' ? 'default_' : inp.name; + DateTimeShortcuts.clockHours[name].forEach(function(element) { + const time_link = quickElement('a', quickElement('li', time_list), gettext(element[0]), 'href', '#'); + time_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.handleClockQuicklink(num, element[1]); + }); + }); + + const cancel_p = quickElement('p', clock_box); + cancel_p.className = 'calendar-cancel'; + const cancel_link = quickElement('a', cancel_p, gettext('Cancel'), 'href', '#'); + cancel_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.dismissClock(num); + }); + + document.addEventListener('keyup', function(event) { + if (event.which === 27) { + // ESC key closes popup + DateTimeShortcuts.dismissClock(num); + event.preventDefault(); + } + }); + }, + openClock: function(num) { + const clock_box = document.getElementById(DateTimeShortcuts.clockDivName + num); + const clock_link = document.getElementById(DateTimeShortcuts.clockLinkName + num); + + // Recalculate the clockbox position + // is it left-to-right or right-to-left layout ? + if (window.getComputedStyle(document.body).direction !== 'rtl') { + clock_box.style.left = findPosX(clock_link) + 17 + 'px'; + } + else { + // since style's width is in em, it'd be tough to calculate + // px value of it. let's use an estimated px for now + clock_box.style.left = findPosX(clock_link) - 110 + 'px'; + } + clock_box.style.top = Math.max(0, findPosY(clock_link) - 30) + 'px'; + + // Show the clock box + clock_box.style.display = 'block'; + document.addEventListener('click', DateTimeShortcuts.dismissClockFunc[num]); + }, + dismissClock: function(num) { + document.getElementById(DateTimeShortcuts.clockDivName + num).style.display = 'none'; + document.removeEventListener('click', DateTimeShortcuts.dismissClockFunc[num]); + }, + handleClockQuicklink: function(num, val) { + let d; + if (val === -1) { + d = DateTimeShortcuts.now(); + } + else { + d = new Date(1970, 1, 1, val, 0, 0, 0); + } + DateTimeShortcuts.clockInputs[num].value = d.strftime(get_format('TIME_INPUT_FORMATS')[0]); + DateTimeShortcuts.clockInputs[num].focus(); + DateTimeShortcuts.dismissClock(num); + // Added by cpa: + DateTimeShortcuts.clockInputs[num].dispatchEvent(new Event('change')); + }, + // Add calendar widget to a given field. + addCalendar: function(inp) { + const num = DateTimeShortcuts.calendars.length; + + DateTimeShortcuts.calendarInputs[num] = inp; + DateTimeShortcuts.dismissCalendarFunc[num] = function() { DateTimeShortcuts.dismissCalendar(num); return true; }; + + // Shortcut links (calendar icon and "Today" link) + const shortcuts_span = document.createElement('span'); + shortcuts_span.className = DateTimeShortcuts.shortCutsClass; + inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling); + const today_link = document.createElement('a'); + today_link.href = '#'; + today_link.appendChild(document.createTextNode(gettext('Today'))); + today_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.handleCalendarQuickLink(num, 0); + }); + const cal_link = document.createElement('a'); + cal_link.href = '#'; + cal_link.id = DateTimeShortcuts.calendarLinkName + num; + cal_link.addEventListener('click', function(e) { + e.preventDefault(); + // avoid triggering the document click handler to dismiss the calendar + e.stopPropagation(); + DateTimeShortcuts.openCalendar(num); + }); + quickElement( + 'span', cal_link, '', + 'class', 'date-icon', + 'title', gettext('Choose a Date') + ); + shortcuts_span.appendChild(document.createTextNode('\u00A0')); + // CUSTOMIZED: Today link removed. + //shortcuts_span.appendChild(today_link); + //shortcuts_span.appendChild(document.createTextNode('\u00A0|\u00A0')); + shortcuts_span.appendChild(cal_link); + + // Create calendarbox div. + // + // Markup looks like: + // + //
+ //

+ // + // February 2003 + //

+ //
+ // + //
+ //
+ // Yesterday | Today | Tomorrow + //
+ //

Cancel

+ //
+ const cal_box = document.createElement('div'); + cal_box.style.display = 'none'; + cal_box.className = 'calendarbox module'; + cal_box.id = DateTimeShortcuts.calendarDivName1 + num; + document.body.appendChild(cal_box); + // cpa: Make it work with bootstrap + cal_box.style.position = cal_box.closest('body').classList.contains('modal-open') ? 'fixed' : 'absolute'; + cal_box.addEventListener('click', function(e) { e.stopPropagation(); }); + + // next-prev links + const cal_nav = quickElement('div', cal_box); + const cal_nav_prev = quickElement('a', cal_nav, '<', 'href', '#'); + cal_nav_prev.className = 'calendarnav-previous'; + cal_nav_prev.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.drawPrev(num); + }); + + const cal_nav_next = quickElement('a', cal_nav, '>', 'href', '#'); + cal_nav_next.className = 'calendarnav-next'; + cal_nav_next.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.drawNext(num); + }); + + // main box + const cal_main = quickElement('div', cal_box, '', 'id', DateTimeShortcuts.calendarDivName2 + num); + cal_main.className = 'calendar'; + DateTimeShortcuts.calendars[num] = new Calendar(DateTimeShortcuts.calendarDivName2 + num, DateTimeShortcuts.handleCalendarCallback(num)); + DateTimeShortcuts.calendars[num].drawCurrent(); + + // calendar shortcuts + const shortcuts = quickElement('div', cal_box); + shortcuts.className = 'calendar-shortcuts'; + let day_link = quickElement('a', shortcuts, gettext('Yesterday'), 'href', '#'); + day_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.handleCalendarQuickLink(num, -1); + }); + shortcuts.appendChild(document.createTextNode('\u00A0|\u00A0')); + day_link = quickElement('a', shortcuts, gettext('Today'), 'href', '#'); + day_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.handleCalendarQuickLink(num, 0); + }); + shortcuts.appendChild(document.createTextNode('\u00A0|\u00A0')); + day_link = quickElement('a', shortcuts, gettext('Tomorrow'), 'href', '#'); + day_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.handleCalendarQuickLink(num, +1); + }); + + // cancel bar + const cancel_p = quickElement('p', cal_box); + cancel_p.className = 'calendar-cancel'; + const cancel_link = quickElement('a', cancel_p, gettext('Cancel'), 'href', '#'); + cancel_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.dismissCalendar(num); + }); + document.addEventListener('keyup', function(event) { + if (event.which === 27) { + // ESC key closes popup + DateTimeShortcuts.dismissCalendar(num); + event.preventDefault(); + } + }); + }, + openCalendar: function(num) { + const cal_box = document.getElementById(DateTimeShortcuts.calendarDivName1 + num); + const cal_link = document.getElementById(DateTimeShortcuts.calendarLinkName + num); + const inp = DateTimeShortcuts.calendarInputs[num]; + + // Determine if the current value in the input has a valid date. + // If so, draw the calendar with that date's year and month. + if (inp.value) { + const format = get_format('DATE_INPUT_FORMATS')[0]; + const selected = inp.value.strptime(format); + const year = selected.getUTCFullYear(); + const month = selected.getUTCMonth() + 1; + const re = /\d{4}/; + if (re.test(year.toString()) && month >= 1 && month <= 12) { + DateTimeShortcuts.calendars[num].drawDate(month, year, selected); + } + } + + // Recalculate the clockbox position + // is it left-to-right or right-to-left layout ? + if (window.getComputedStyle(document.body).direction !== 'rtl') { + cal_box.style.left = findPosX(cal_link) + 17 + 'px'; + } + else { + // since style's width is in em, it'd be tough to calculate + // px value of it. let's use an estimated px for now + cal_box.style.left = findPosX(cal_link) - 180 + 'px'; + } + cal_box.style.top = Math.max(0, findPosY(cal_link) - 75) + 'px'; + + cal_box.style.display = 'block'; + document.addEventListener('click', DateTimeShortcuts.dismissCalendarFunc[num]); + }, + dismissCalendar: function(num) { + document.getElementById(DateTimeShortcuts.calendarDivName1 + num).style.display = 'none'; + document.removeEventListener('click', DateTimeShortcuts.dismissCalendarFunc[num]); + }, + drawPrev: function(num) { + DateTimeShortcuts.calendars[num].drawPreviousMonth(); + }, + drawNext: function(num) { + DateTimeShortcuts.calendars[num].drawNextMonth(); + }, + handleCalendarCallback: function(num) { + let format = get_format('DATE_INPUT_FORMATS')[0]; + // the format needs to be escaped a little + format = format.replace('\\', '\\\\') + .replace('\r', '\\r') + .replace('\n', '\\n') + .replace('\t', '\\t') + .replace("'", "\\'"); + return function(y, m, d) { + DateTimeShortcuts.calendarInputs[num].value = new Date(y, m - 1, d).strftime(format); + DateTimeShortcuts.calendarInputs[num].focus(); + document.getElementById(DateTimeShortcuts.calendarDivName1 + num).style.display = 'none'; + // Added by cpa: + DateTimeShortcuts.calendarInputs[num].dispatchEvent(new Event('change')); + }; + }, + handleCalendarQuickLink: function(num, offset) { + const d = DateTimeShortcuts.now(); + d.setDate(d.getDate() + offset); + DateTimeShortcuts.calendarInputs[num].value = d.strftime(get_format('DATE_INPUT_FORMATS')[0]); + DateTimeShortcuts.calendarInputs[num].focus(); + DateTimeShortcuts.dismissCalendar(num); + } + }; + + // CUSTOMIZED: We call it ourselves. + //window.addEventListener('load', DateTimeShortcuts.init); + window.DateTimeShortcuts = DateTimeShortcuts; +} diff --git a/aemo/static/js/autocomplete.min.js b/aemo/static/js/autocomplete.min.js new file mode 100644 index 0000000..5969978 --- /dev/null +++ b/aemo/static/js/autocomplete.min.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).autocomplete=t()}(this,(function(){"use strict";return function(e){var t,n,o=document,i=o.createElement("div"),r=i.style,f=navigator.userAgent,l=-1!==f.indexOf("Firefox")&&-1!==f.indexOf("Mobile"),u=e.debounceWaitMs||0,a=e.preventSubmit||!1,s=e.disableAutoSelect||!1,d=l?"input":"keyup",c=[],p="",v=2,m=e.showOnFocus,g=0;if(void 0!==e.minLength&&(v=e.minLength),!e.input)throw new Error("input undefined");var h=e.input;function E(){n&&window.clearTimeout(n)}function w(){return!!i.parentNode}function L(){var e;g++,c=[],p="",t=void 0,(e=i.parentNode)&&e.removeChild(i)}function b(){for(;i.firstChild;)i.removeChild(i.firstChild);var n=function(e,t){var n=o.createElement("div");return n.textContent=e.label||"",n};e.render&&(n=e.render);var f=function(e,t){var n=o.createElement("div");return n.textContent=e,n};e.renderGroup&&(f=e.renderGroup);var l=o.createDocumentFragment(),u="#9?$";if(c.forEach((function(o){if(o.group&&o.group!==u){u=o.group;var i=f(o.group,p);i&&(i.className+=" group",l.appendChild(i))}var r=n(o,p);r&&(r.addEventListener("click",(function(t){e.onSelect(o,h),L(),t.preventDefault(),t.stopPropagation()})),o===t&&(r.className+=" selected"),l.appendChild(r))})),i.appendChild(l),c.length<1){if(!e.emptyMsg)return void L();var a=o.createElement("div");a.className="empty",a.textContent=e.emptyMsg,i.appendChild(a)}i.parentNode||o.body.appendChild(i),function(){if(w()){r.height="auto",r.width=h.offsetWidth+"px";var t,n=0;f(),f(),e.customize&&t&&e.customize(h,t,i,n)}function f(){var e=o.documentElement,i=e.clientTop||o.body.clientTop||0,f=e.clientLeft||o.body.clientLeft||0,l=window.pageYOffset||e.scrollTop,u=window.pageXOffset||e.scrollLeft,a=(t=h.getBoundingClientRect()).top+h.offsetHeight+l-i,s=t.left+u-f;r.top=a+"px",r.left=s+"px",(n=window.innerHeight-(t.top+h.offsetHeight))<0&&(n=0),r.top=a+"px",r.bottom="",r.left=s+"px",r.maxHeight=n+"px"}}(),function(){var e=i.getElementsByClassName("selected");if(e.length>0){var t=e[0],n=t.previousElementSibling;if(n&&-1!==n.className.indexOf("group")&&!n.previousElementSibling&&(t=n),t.offsetTopr&&(i.scrollTop+=o-r)}}}()}function y(){w()&&b()}function x(){y()}function C(e){e.target!==i?y():e.preventDefault()}function T(e){for(var t=e.which||e.keyCode||0,n=0,o=[38,13,27,39,37,16,17,18,20,91,9];n=112&&t<=123||40===t&&w()||D(0)}function N(n){var o=n.which||n.keyCode||0;if(38===o||40===o||27===o){var i=w();if(27===o)L();else{if(!i||c.length<1)return;38===o?function(){if(c.length<1)t=void 0;else if(t===c[0])t=c[c.length-1];else for(var e=c.length-1;e>0;e--)if(t===c[e]||1===e){t=c[e-1];break}}():function(){if(c.length<1&&(t=void 0),t&&t!==c[c.length-1]){for(var e=0;e=v||1===o?(E(),n=window.setTimeout((function(){e.fetch(r,(function(e){g===i&&e&&(p=r,t=(c=e).length<1||s?void 0:c[0],b())}),o)}),0===o?u:0)):L()}function H(){setTimeout((function(){o.activeElement!==h&&L()}),200)}return i.className="autocomplete "+(e.className||""),r.position="absolute",i.addEventListener("mousedown",(function(e){e.stopPropagation(),e.preventDefault()})),i.addEventListener("focus",(function(){return h.focus()})),h.addEventListener("keydown",N),h.addEventListener(d,T),h.addEventListener("blur",H),h.addEventListener("focus",k),window.addEventListener("resize",x),o.addEventListener("scroll",C,!0),{destroy:function(){h.removeEventListener("focus",k),h.removeEventListener("keydown",N),h.removeEventListener(d,T),h.removeEventListener("blur",H),window.removeEventListener("resize",x),o.removeEventListener("scroll",C,!0),E(),L()}}}})); diff --git a/aemo/static/js/autosize.min.js b/aemo/static/js/autosize.min.js new file mode 100644 index 0000000..4d9b4e9 --- /dev/null +++ b/aemo/static/js/autosize.min.js @@ -0,0 +1,6 @@ +/*! + autosize 4.0.2 + license: MIT + http://www.jacklmoore.com/autosize +*/ +!function(e,t){if("function"==typeof define&&define.amd)define(["module","exports"],t);else if("undefined"!=typeof exports)t(module,exports);else{var n={exports:{}};t(n,n.exports),e.autosize=n.exports}}(this,function(e,t){"use strict";var n,o,p="function"==typeof Map?new Map:(n=[],o=[],{has:function(e){return-1 { + button.addEventListener('click', ev => { + if (button.dataset.confirm) { + ev.preventDefault(); + if (!confirm(button.dataset.confirm)) { + return false; + } else { + if (button.getAttribute('formaction')) button.form.action = button.formAction; + button.form.submit(); + } + } + }); + }); +} + +function openFormInModal(url) { + const popup = document.querySelector('#popup0'); + + function setupForm() { + DateTimeShortcuts.init(popup); + setConfirmHandlers(popup); + document.querySelectorAll("#popup0 form").forEach((form) => { + form.addEventListener('submit', (ev) => { + ev.preventDefault(); + const form = ev.target; + const formData = new FormData(form); + // GET/POST with fetch + let url = form.action; + let params = {method: form.method}; + if (form.method == 'post') { + params['body'] = formData; + } + fetch(url, params).then(res => { + if (res.redirected) { + window.location.reload(true); + return ''; + } + return res.text(); + }).then(html => { + if (html) { + // Redisplay form with errors or display confirm page + popup.querySelector('.modal-body').innerHTML = html; + setupForm(); + } + }).catch((err) => { + console.log(err); + alert("Désolé, une erreur s'est produite"); + }); + }); + }); + } + + return fetch(url).then(res => res.text()).then(html => { + const modal = new bootstrap.Modal(popup); + popup.querySelector('.modal-body').innerHTML = html; + modal.show(); + setupForm(); + return popup; + }); +} + +function resetForm(ev) { + const form = ev.target.closest('form'); + Array.from(form.elements).forEach(el => { el.value = ''; }); + form.submit(); +} + +function submitFilterForm(form) { + let action = form.action || '.'; + const formData = new FormData(form); + action += '?' + new URLSearchParams(formData).toString(); + fetch(action, { + method: 'get', + headers: {'X-Requested-With': 'Fetch'} + }).then(response => { return response.text(); }).then(output => { + const parser = new DOMParser(); + const doc = parser.parseFromString(output, "text/html"); + const tableBody = doc.querySelector('.table-sortable tbody'); + document.querySelector('.table-sortable tbody').replaceWith(tableBody); + const pagination = doc.querySelector('#pagination'); + document.querySelector('#pagination').replaceWith(pagination); + }); +} + +function sortColumn(ev) { + const header = ev.target; + const form = document.querySelector('.selection_form'); + const desc = header.classList.contains('asc'); + form.elements['sort_by'].value = (desc ? '-' : '') + header.dataset.col; + submitFilterForm(form); + // Reset colums classes + Array.from(header.parentNode.children).forEach(head => { + head.classList.remove('desc'); + head.classList.remove('asc'); + }); + header.classList.add(desc ? 'desc': 'asc'); +} + +document.addEventListener("DOMContentLoaded", () => { + if (typeof DateTimeShortcuts !== 'undefined') { + DateTimeShortcuts.init(); + } + autosize(document.querySelectorAll('textarea')); + $("form").not(".selection_form").not("[method='get']").change(function() { + changed = true; + }); + $("#menu_crne, #aemo_buttons, #aemo_print_buttons").click + (check_changed); + setConfirmHandlers(); + $("table.sortable").each(function(idx) { + new Tablesort(this); + }); + $(".table-sortable th").click(sortColumn); + $('a.read_more').click(toggle_read_more); + + // Attachment images + $('a.image').click(showImage); + $('#modalClose').click(function(ev) {$(this).closest('div').hide(); }); + + $('input[name=dh_debut_1]').change(function(){ + var dateFin = $('input[name=dh_fin_0]'); + if (dateFin.val() == '') { + // Copier date de début vers date de fin + dateFin.val($('input[name=dh_debut_0]').val()); + } + var heureFin = $('input[name=dh_fin_1]'); + if (heureFin.val() == '') { + // Mettre heure de fin 1 heure après heure de début + var dh = $('input[name=dh_debut_1]').val().split(":"); + h = parseInt(dh[0]) + 1; + heureFin.val(h.toString() + ":" + dh[1]); + } + }); + + document.querySelectorAll('.immediate-submit').forEach(immediate => { + //immediate.addEventListener('click', immediateSubmit); + // With screen readers, users don't click but change the radio value + immediate.addEventListener('change', (ev) => { + ev.target.form.submit() + }); + }); + + $(".js-add, .js-edit").click(function(e) { + const url = this.dataset.url || this.href; + e.preventDefault(); + openFormInModal(url); + return false; + }); + + // Activation des tooltips + const tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')) + tooltipTriggerList.map((el) => new bootstrap.Tooltip(el)); + + $('#reset-button').click(resetForm); +}); + +function debounce(func, timeout=300) { + let timer; + return (...args) => { + if (timeout <= 0) func.apply(this, args); + else { + clearTimeout(timer); + timer = setTimeout(() => { func.apply(this, args); }, timeout); + } + }; +} + +async function archiveFamilies(ev) { + const btn = ev.target; + const archiveUrl = btn.dataset.archiveurl; + const counterSpan = document.querySelector('#archive-counter'); + const totalSpan = document.querySelector('#archive-total'); + + bootstrap.Modal.getInstance(document.getElementById('archiveModal')).hide(); + document.getElementById('archive-message').removeAttribute('hidden'); + const resp = await fetch(btn.dataset.getarchivableurl); + const data = await resp.json(); + let compteur = 0; + totalSpan.textContent = data.length; + const formData = new FormData(); + formData.append('csrfmiddlewaretoken', document.querySelector('[name=csrfmiddlewaretoken]').value); + for (let i = 0; i < data.length; i++) { + const archResp = await fetch( + archiveUrl.replace('999', data[i]), + {method: 'POST', headers: {'X-Requested-With': 'Fetch'}, body: formData} + ); + const jsonResp = await archResp.json(); + compteur += 1; + counterSpan.textContent = compteur; + } + const messageP = document.querySelector("#archive-message p"); + messageP.textContent = `${compteur} dossiers ont été archivés avec succès.`; + messageP.classList.remove('alert-danger'); + messageP.classList.add('alert-success'); +} diff --git a/aemo/static/js/sorts/tablesort.date.min.js b/aemo/static/js/sorts/tablesort.date.min.js new file mode 100644 index 0000000..33fe187 --- /dev/null +++ b/aemo/static/js/sorts/tablesort.date.min.js @@ -0,0 +1,6 @@ +/*! + * tablesort v5.1.0 (2020-01-22) + * http://tristen.ca/tablesort/demo/ + * Copyright (c) 2020 ; Licensed MIT +*/ +!function(){var a=function(a){return a=a.replace(/\-/g,"/"),a=a.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{2,4})/,"$3-$2-$1"),new Date(a).getTime()||-1};Tablesort.extend("date",function(b){return(-1!==b.search(/(Mon|Tue|Wed|Thu|Fri|Sat|Sun)\.?\,?\s*/i)||-1!==b.search(/\d{1,2}[\/\-]\d{1,2}[\/\-]\d{2,4}/)||-1!==b.search(/(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)/i))&&!isNaN(a(b))},function(b,c){return b=b.toLowerCase(),c=c.toLowerCase(),a(c)-a(b)})}(); \ No newline at end of file diff --git a/aemo/static/js/sorts/tablesort.number.min.js b/aemo/static/js/sorts/tablesort.number.min.js new file mode 100644 index 0000000..06a376c --- /dev/null +++ b/aemo/static/js/sorts/tablesort.number.min.js @@ -0,0 +1,6 @@ +/*! + * tablesort v5.1.0 (2020-01-22) + * http://tristen.ca/tablesort/demo/ + * Copyright (c) 2020 ; Licensed MIT +*/ +!function(){var a=function(a){return a.replace(/[^\-?0-9.]/g,"")},b=function(a,b){return a=parseFloat(a),b=parseFloat(b),a=isNaN(a)?0:a,b=isNaN(b)?0:b,a-b};Tablesort.extend("number",function(a){return a.match(/^[-+]?[£\x24Û¢´€]?\d+\s*([,\.]\d{0,2})/)||a.match(/^[-+]?\d+\s*([,\.]\d{0,2})?[£\x24Û¢´€]/)||a.match(/^[-+]?(\d)*-?([,\.]){0,1}-?(\d)+([E,e][\-+][\d]+)?%?$/)},function(c,d){return c=a(c),d=a(d),b(d,c)})}(); \ No newline at end of file diff --git a/aemo/static/js/tablesort.min.js b/aemo/static/js/tablesort.min.js new file mode 100644 index 0000000..e9982c6 --- /dev/null +++ b/aemo/static/js/tablesort.min.js @@ -0,0 +1,6 @@ +/*! + * tablesort v5.1.0 (2020-01-22) + * http://tristen.ca/tablesort/demo/ + * Copyright (c) 2020 ; Licensed MIT +*/ +!function(){function a(b,c){if(!(this instanceof a))return new a(b,c);if(!b||"TABLE"!==b.tagName)throw new Error("Element must be a table");this.init(b,c||{})}var b=[],c=function(a){var b;return window.CustomEvent&&"function"==typeof window.CustomEvent?b=new CustomEvent(a):(b=document.createEvent("CustomEvent"),b.initCustomEvent(a,!1,!1,void 0)),b},d=function(a){return a.getAttribute("data-sort")||a.textContent||a.innerText||""},e=function(a,b){return a=a.trim().toLowerCase(),b=b.trim().toLowerCase(),a===b?0:a0)if(a.tHead&&a.tHead.rows.length>0){for(e=0;e0&&n.push(m),o++;if(!n)return}for(o=0;o{% endif %}{% include "django/forms/widgets/input.html" %}{% if widget.wrap_label %} {{ widget.label }} {% if widget.help %}{% help_tooltip widget.help %}{% endif %}{% endif %} diff --git a/aemo/templates/widgets/input_option.html b/aemo/templates/widgets/input_option.html new file mode 100644 index 0000000..8b8cd31 --- /dev/null +++ b/aemo/templates/widgets/input_option.html @@ -0,0 +1,2 @@ +{# input before label (CSSable) #} +{% include "django/forms/widgets/input.html" %} {% if widget.wrap_label %}{% endif %} diff --git a/aemo/templates/widgets/prestation_radio.html b/aemo/templates/widgets/prestation_radio.html new file mode 100644 index 0000000..8574b4b --- /dev/null +++ b/aemo/templates/widgets/prestation_radio.html @@ -0,0 +1,2 @@ +{% load my_tags static %} +{% if widget.wrap_label %}{% endif %}{% include "django/forms/widgets/input.html" %}{% if widget.wrap_label %} {{ widget.label }} {% help_tooltip widget.value.instance.actes %}{% endif %} diff --git a/aemo/templatetags/__init__.py b/aemo/templatetags/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/aemo/templatetags/my_tags.py b/aemo/templatetags/my_tags.py new file mode 100644 index 0000000..2c6d5fc --- /dev/null +++ b/aemo/templatetags/my_tags.py @@ -0,0 +1,351 @@ +import os +from datetime import date, timedelta +from operator import itemgetter + +from django import template +from django.contrib.admin.templatetags.admin_list import _boolean_icon +from django.template.defaultfilters import linebreaksbr +from django.templatetags.static import static +from django.utils.dates import MONTHS +from django.utils.html import escape, format_html_join, format_html +from django.utils.safestring import SafeString, mark_safe +from django.utils.text import Truncator + +from aemo.utils import format_d_m_Y, format_duree as _format_duree, format_adresse + +register = template.Library() + +IMAGE_EXTS = ['.jpg', '.jpeg', '.png', '.tif', '.tiff', '.gif'] + + +@register.simple_tag +def relative_url(value, field_name, urlencode=None): + url = '?{}={}'.format(field_name, value) + if urlencode: + querystring = urlencode.split('&') + filtered_querystring = filter(lambda p: p.split('=')[0] != field_name, querystring) + encoded_querystring = '&'.join(filtered_querystring) + url = '{}&{}'.format(url, encoded_querystring) + return url + + +@register.simple_tag +def get_verbose_field_name(instance, field_name): + """ + Returns verbose_name for a field. + """ + return instance._meta.get_field(field_name).verbose_name.capitalize() + + +@register.simple_tag +def get_field_value(instance, field_name): + value = getattr(instance, field_name) + if isinstance(value, str): + return mark_safe(value) + elif hasattr(value, 'all'): + return mark_safe("
".join([str(v) for v in value.all()])) + return value + + +@register.simple_tag +def help_tooltip(text): + template = ( + '' + ) + return format_html(template, text=linebreaksbr(escape(text)), icon=static("img/help.png")) + + +@register.filter +def boolean_icon(val): + return _boolean_icon(val) + + +@register.filter +def get_item(obj, key): + try: + return obj.get(key) if obj is not None else obj + except Exception: + raise TypeError(f"Unable to get key '{key}' from obj '{obj}'") + + +@register.filter +def get_field(form, field_name): + return form[field_name] + + +@register.filter +def as_field_group(ffield): + # Waiting for Django 5.0 + if (ffield): + return SafeString(" ".join([ffield.label_tag(), ffield.errors.as_ul(), str(ffield)])) + return '' + + +@register.filter +def can_edit(obj, user): + return obj.can_edit(user) + + +@register.filter +def can_delete(obj, user): + return obj.can_delete(user) + + +@register.filter +def sigles_referents(suivi): + """ + Affichage d'abord duo psy/educ, puis autres ressources. par ex: "Psy/Educ - Coach - ASE" + """ + interventions = [{ + 'nom': interv.intervenant.nom_prenom, + 'role': interv.role.nom, + 'sigle': interv.intervenant.sigle or interv.intervenant.nom + } for interv in suivi.intervenant_set.all() + ] + template = '{sigle}' + psyeduc = sorted([i for i in interventions if i['role'] in ['Psy', 'Educ']], key=itemgetter('sigle')) + autres = sorted([i for i in interventions if i['role'] not in ['Psy', 'Educ']], key=itemgetter('sigle')) + return SafeString(" - ".join([res for res in [ + "/".join([format_html(template, **i) for i in psyeduc]), + " - ".join([format_html(template, **i) for i in autres]), + ] if res])) + + +@register.filter +def noms_referents_ope(suivi): + return ' / '.join(ope.nom for ope in suivi.ope_referents) + + +@register.filter +def referents_pk_data(suivi): + return ':'.join([str(ref.pk) for ref in suivi.intervenants.all()]) + + +@register.filter +def join_qs(queryset, sep='/'): + return sep.join([str(q) for q in queryset]) + + +@register.filter +def in_parens(value): + """Enclose value in parentheses only if it's not empty.""" + return '' if value in (None, '', []) else '({})'.format(value) + + +@register.filter +def etape_cellule(suivi, code_etape): + """Produit le contenu d'une cellule du tableau de suivi des étapes.""" + def _css_class(date_suiv, default='next'): + if date_suiv is None: + # Ne devrait pas se produire, mais le cas échéant, éviter un crash. + return default + delta = date_suiv - date.today() + if 19 > delta.days > 0: + return 'urgent' + if delta.days < 0: + return 'depasse' + return default + + etape = suivi.WORKFLOW[code_etape] + etape_suiv = suivi.etape_suivante + date_etape = etape.date(suivi) + date_formatted = '' + css_class = '' + if date_etape: + date_formatted = format_d_m_Y(date_etape) + css_class = 'filled' + elif etape_suiv and code_etape == etape_suiv.code: + date_suiv = suivi.date_suivante() + date_formatted = format_d_m_Y(date_suiv) + css_class = _css_class(date_suiv) + code_etape = etape_suiv.abrev + else: + # Certaines dates sont strictement liées au suivi + date_etape = etape.delai_depuis(suivi, None) + if date_etape: + date_formatted = format_d_m_Y(date_etape) + css_class = _css_class(date_etape, default='') + return format_html( + '
{}
', + code_etape, date_formatted, css_class, etape.abrev + ) + + +@register.filter +def default_if_zero(duree): + if isinstance(duree, timedelta): + duree = _format_duree(duree) + return '' if duree == '00:00' else duree + + +@register.filter +def strip_seconds(duree): + if duree is None: + return '' + if str(duree).count(':') > 1: + return ':'.join(format_duree(duree).split(':')[:2]) + + +@register.filter +def format_duree(duree): + return _format_duree(duree) + + +@register.filter +def strip_zeros(decimal): + return str(decimal).rstrip('0').rstrip('.') + + +@register.filter(is_safe=True) +def strip_colon(txt): + return txt.replace(' :', '') + + +@register.filter +def month_name(month_number): + return MONTHS[month_number] + + +@register.filter(name='has_group') +def has_group(user, group_name): + return user.groups.filter(name=group_name).exists() + + +@register.filter +def info_ope(ope): + if ope: + return format_html( + '{}', ope.tel_prof, ope.nom_prenom, + ) + else: + return '' + + +@register.filter +def age_a(personne, date_): + return personne.age_str(date_) + + +@register.filter +def is_passed(date_): + return date_ < date.today() + + +@register.filter +def nom_prenom_abreg(person): + return '{} {}.'.format(person.nom, person.prenom[0].upper() if person.prenom else '') + + +@register.simple_tag +def mes_totaux_mensuels(user, src, annee): + return user.totaux_mensuels(src, annee) + + +@register.simple_tag +def mon_total_annuel(user, src, annee): + return format_duree(user.total_annuel(src, annee)) + + +@register.filter +def sigles_intervenants(prestation): + return format_html_join( + '/', '{}', ((i.sigle or i.nom,) for i in prestation.intervenants.all()) + ) + + +@register.filter +def sigle_personne(pers): + if pers is None: + return '-' + return format_html( + '{}', pers.nom_prenom, pers.sigle or pers.nom + ) + + +@register.filter +def as_icon(fichier): + if not fichier: + return '' + ext = os.path.splitext(fichier.name)[1].lower() + if ext in IMAGE_EXTS: + icon = 'image' + elif ext in ('.xls', '.xlsx'): + icon = 'xlsx' + elif ext in ('.doc', '.docx'): + icon = 'docx' + elif ext == '.pdf': + icon = 'pdf' + else: + icon = 'master' + return format_html( + 'Télécharger', + klass=icon, url=fichier.url, ficon=static(f"ficons/{icon}.svg") + ) + + +@register.simple_tag(takes_context=True) +def param_replace(context, **kwargs): + d = context['request'].GET.copy() + for k, v in kwargs.items(): + d[k] = v + for k in [k for k, v in d.items() if not v]: + del d[k] + return d.urlencode() + + +@register.filter +def colorier_delai(value): + if value <= 0: + return "bg-danger-3" + return '' + + +@register.filter +def benef_nom_adresse(obj): + if obj: + return '{} - {}'.format(obj.nom_prenom(), + format_adresse(obj.rue_actuelle, obj.npa_actuelle, obj.localite_actuelle)) + return 'Nouveau bénéficiaire' + + +@register.filter +def role_profession(contact): + if contact.profession: + return f"{contact.roles_str()} / {contact.profession}" + return contact.roles_str() + + +@register.filter +def truncate_html_with_more(text, length): + template = ''' + +
{txt_short}
+ {read_more} + ''' + read_more = 'Afficher la suite' + text_trunc = Truncator(text).words(int(length), html=True) + return format_html( + template, + txt_long=mark_safe(text), + txt_short=mark_safe(text_trunc), + read_more=mark_safe(read_more) if text != text_trunc else '', + ) + + +@register.filter +def raw_or_html(value): + if value and '@8IiJ1gl*A=jfUID2y2|b1GjvV>JHXb^0$o4= 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 yRn6U?*D<', + '', + '', + '', + ], transform=repr) + p1 = Personne.objects.get(nom='Dupont') + self.assertEqual(p1.famille, famille) + self.assertEqual(p1.localite, 'Bevaix') + with self.assertRaises(Formation.DoesNotExist): + p1.formation + + # Personne < 4 ans + pers = Personne.objects.create_personne( + famille=famille, prenom='Gaston', nom='Lagaffe', + date_naissance=date.today() - timedelta(days=720), + role=Role.objects.get(nom='Enfant suivi') + ) + self.assertEqual(pers.formation.get_statut_display(), 'Pré-scolaire') + self.assertTrue(famille.suivi.demande_prioritaire) + + def test_label_profession_variable(self): + famille = Famille.objects.get(nom='Haddock') + response = self.client.get( + '{}?role={}'.format(reverse('personne-add', args=[famille.pk]), + Role.objects.get(nom='Enfant suivi').pk) + ) + self.assertContains(response, '', html=True) + + response = self.client.get( + '{}?role={}'.format(reverse('personne-add', args=[famille.pk]), + Role.objects.get(nom='Père').pk) + ) + self.assertContains(response, '', html=True) + + def test_get_membres(self): + # Obtention des différents membres avec 2 requêtes: la famille, les membres (prefetch_related) + with self.assertNumQueries(2): + famille = Famille.objects.get(nom='Haddock') + self.assertEqual(famille.membres_suivis()[0].prenom, 'Toto') + self.assertEqual(famille.enfants_non_suivis(), []) + self.assertEqual([p.nom_prenom for p in famille.parents()], ['Haddock Archibald']) + self.assertEqual(famille.autres_parents(), []) + + def test_personne_age(self): + with patch('aemo.models.date') as mock_date: + mock_date.today.return_value = date(2019, 1, 16) + self.assertEqual(Personne(date_naissance=date(1999, 11, 4)).age, 19.2) + self.assertEqual(Personne(date_naissance=date(2000, 1, 1)).age, 19.0) + self.assertEqual(Personne(date_naissance=date(2000, 1, 31)).age, 18.9) + + def test_personne_age_str(self): + pers = Personne(prenom='Toto') + pers.date_naissance = date.today() - timedelta(days=12) + self.assertEqual(pers.age_str(), '12 jours') + pers.date_naissance = date.today() - timedelta(days=33) + self.assertEqual(pers.age_str(), '4 sem. 5 jours') + pers.date_naissance = date.today() - timedelta(days=77) + self.assertEqual(pers.age_str(), '2 mois 2 sem.') + pers.date_naissance = date.today() - timedelta(days=689) + self.assertEqual(pers.age_str(), '22 mois 4 sem.') + pers.date_naissance = date.today() - timedelta(days=690) + self.assertEqual(pers.age_str(), '1 an 10 mois') + pers.date_naissance = date.today() - timedelta(days=691) + self.assertEqual(pers.age_str(format_='jour'), '691 jours') + + def test_personne_edition(self): + famille = Famille.objects.create_famille(nom='Dupont', equipe='montagnes') + pers_data = dict(self.personne_data, famille=famille.pk, role=Role.objects.get(nom='Père').pk) + form = PersonneForm(data=pers_data, famille=famille) + self.assertTrue(form.is_valid(), msg=form.errors) + pers = form.save() + edit_url = reverse('personne-edit', args=[famille.pk, pers.pk]) + new_data = dict(pers_data, rue='Rue du Parc 12') + response = self.client.post(edit_url, data=new_data) + self.assertEqual(response.status_code, 302) + pers.refresh_from_db() + self.assertEqual(pers.rue, 'Rue du Parc 12') + # Edition is refused if user is missing the permission + user = Utilisateur.objects.create_user( + 'joe', 'joe@example.org', 'pwd', first_name='Joe', last_name='Cook', + ) + self.client.force_login(user) + with self.assertLogs('django.request', level='WARNING'): + response = self.client.get(edit_url) + self.assertEqual(response.status_code, 403) + + def test_personne_formation(self): + famille = Famille.objects.get(nom='Haddock') + pers = Personne.objects.create_personne( + famille=famille, prenom='Gaston', nom='Lagaffe', + role=Role.objects.get(nom='Enfant suivi') + ) + self.assertTrue(famille.can_edit(self.user_aemo)) + form_url = reverse('formation', args=[pers.pk]) + response = self.client.get(form_url) + self.assertFalse(response.context['form'].readonly) + self.assertContains(response, "Enregistrer") + response = self.client.post(form_url, data={ + 'statut': 'cycle2', + 'cercle_scolaire': CercleScolaire.objects.first().pk, + 'college': 'École parfaite', + 'classe': '6H', + }) + self.assertRedirects(response, reverse('famille-edit', args=[famille.pk])) + pers.refresh_from_db() + self.assertEqual(pers.formation.classe, '6H') + + def test_delete_personne_formation_impossible(self): + pers = Personne.objects.create_personne( + famille=Famille.objects.first(), prenom='Gaston', nom='Lagaffe', + role=Role.objects.get(nom='Enfant suivi') + ) + self.assertRaises(IntegrityError, pers.formation.delete) + + def test_delete_personne(self): + famille = Famille.objects.first() + pers = Personne.objects.create_personne( + famille=famille, prenom='Gaston', nom='Lagaffe', + role=Role.objects.get(nom='Père') + ) + response = self.client.post( + reverse('personne-delete', args=[famille.pk, pers.pk]), follow=True + ) + self.assertRedirects(response, reverse('famille-edit', args=[famille.pk]), status_code=302) + + def test_famille_creation(self): + response = self.client.get(reverse('famille-add')) + self.assertContains(response, '', html=True) + self.assertContains( + response, + '', + html=True + ) + self.assertContains(response, "id_motif_detail") + response = self.client.post(reverse('famille-add'), data={ + **self.famille_data, 'motif_detail': "Un test parmi d'autres" + }) + famille = Famille.objects.get(nom='Dupont') + self.assertRedirects(response, reverse('famille-edit', args=[famille.pk])) + famille = Famille.objects.get(nom='Dupont') + self.assertEqual(famille.suivi.equipe, 'montagnes') + self.assertEqual(famille.suivi.date_demande, date.today()) + self.assertEqual(famille.suivi.motif_detail, "Un test parmi d'autres") + + def test_famille_edition(self): + famille = Famille.objects.get(nom='Haddock') + edit_url = reverse('famille-edit', args=[famille.pk]) + response = self.client.get(edit_url) + self.assertContains(response, ''.format(format_d_m_Y(date.today())), + html=True + ) + + def test_dates_obligatoires(self): + today = date.today() + form_data = { + field_name: today for field_name in AgendaForm._meta.fields + if field_name not in ['date_fin_suivi', 'motif_fin_suivi', 'destination'] + } + for field, etape in Suivi.WORKFLOW.items(): + data2 = dict(form_data) + if etape.oblig is True: + etape_preced_oblig = Suivi.WORKFLOW[etape.preced_oblig] + data2[etape_preced_oblig.date_nom()] = '' + if etape.code == 'fin_suivi': + data2['date_fin_suivi'] = today + data2['motif_fin_suivi'] = 'placement' + data2['destination'] = 'fah' + form = AgendaForm(data2, request=self.request) + self.assertFalse(form.is_valid()) + self.assertEqual(form.errors, {'__all__': ['La date «{}» est obligatoire'.format(etape_preced_oblig)]}) + else: + form = AgendaForm(data2, request=self.request) + self.assertTrue(form.is_valid()) + + def test_fin_suivi(self): + famille = Famille.objects.create_famille( + nom='Loiseau', rue='Château1', npa=2000, localite='Moulinsart', equipe='montagnes', + ) + today = date.today() + suivi = famille.suivi + form_data = {} + suivi.date_demande = form_data['date_demande'] = today - timedelta(days=360) + suivi.date_debut_evaluation = form_data['date_debut_evaluation'] = today - timedelta(days=290) + suivi.date_fin_evaluation = form_data['date_fin_evaluation'] = today - timedelta(days=250) + suivi.date_debut_suivi = form_data['date_debut_suivi'] = today - timedelta(days=120) + suivi.save() + form = AgendaForm( + data={**form_data, 'date_fin_suivi': today - timedelta(days=5), + 'motif_fin_suivi': 'evol_positive', 'destination': 'fah'}, + instance=suivi, + request=self.request, + ) + self.assertTrue(form.is_valid(), msg=form.errors) + suivi = form.save() + self.assertEqual(suivi.date_fin_suivi, today - timedelta(days=5)) + + def test_motif_fin_suivi_sans_date(self): + data = {'date_demande': date.today(), + 'date_debut_evaluation': date.today(), + 'date_fin_evaluation': date.today(), + 'date_debut_suivi': date.today(), + 'motif_fin_suivi': 'evol_positive'} + form = AgendaForm(data, request=self.request) + self.assertFalse(form.is_valid()) + self.assertEqual( + form.errors, + {'__all__': ["Les champs «Fin de l'accompagnement», «Motif de fin» et «Destination» " + "sont obligatoires pour fermer le dossier."]} + ) + # Test avec date_fin_suivi non valide + data['date_fin_suivi'] = '2019-01-32' + form = AgendaForm(data, request=self.request) + self.assertFalse(form.is_valid()) + self.assertEqual( + form.errors, + {'date_fin_suivi': ['Saisissez une date valide.'], + '__all__': ["Les champs «Fin de l'accompagnement», «Motif de fin» et «Destination» " + "sont obligatoires pour fermer le dossier."] + } + ) + + def test_dates_non_chronologiques(self): + data = { + field_name: '2019-01-15' for field_name in AgendaForm._meta.fields + if field_name not in ['date_fin_suivi', 'motif_fin_suivi', 'destination'] + } + date_field_preced = None + for field_name in AgendaForm._meta.fields: + if field_name in ['date_demande', 'motif_fin_suivi', 'destination']: + date_field_preced = field_name + continue + elif field_name == 'date_fin_suivi': + data = dict( + data, date_fin_suivi='2019-01-15', motif_fin_suivi='placement', destination='famille' + ) + form = AgendaForm(dict(data, **{date_field_preced: '2019-01-16'}), request=self.request) + self.assertFalse(form.is_valid()) + self.assertEqual( + form.errors, + {'__all__': + ["La date «{}» ne respecte pas l’ordre chronologique!".format(form.fields[field_name].label)]} + ) + date_field_preced = field_name + # Test avec trou dans les valeurs de dates + data = { + 'date_demande': '2019-01-15', + 'date_fin_evaluation': '2019-01-01', # Ordre chronologique non respecté + 'date_debut_suivi': '2019-02-01' + } + form = AgendaForm(data, request=self.request) + self.assertFalse(form.is_valid()) + self.assertEqual( + form.errors, + {'__all__': ["La date «Fin de l’évaluation le» ne respecte pas l’ordre chronologique!"]} + ) + + def test_saisie_date_invalide(self): + form = AgendaForm({ + 'date_demande': '20.8', + }, request=self.request) + self.assertFalse(form.is_valid()) + self.assertEqual(form.errors, {'date_demande': ['Saisissez une date valide.']}) + + def test_saisie_par_erreur_OK(self): + data = {'motif_fin_suivi': 'erreur'} + form = AgendaForm(data, request=self.request) + self.assertTrue(form.is_valid()) + self.assertEqual(form.cleaned_data['date_fin_suivi'], date.today()) + + def test_demande_non_aboutie(self): + data = {'motif_fin_suivi': 'non_aboutie'} + form = AgendaForm(data, request=self.request) + self.assertTrue(form.is_valid()) + self.assertEqual(form.cleaned_data['date_fin_suivi'], date.today()) + + def test_abandon_durant_evaluation_1(self): + data = {'date_demande': date.today(), 'motif_fin_suivi': 'placement', + 'destination': 'famille'} + form = AgendaForm(data, request=self.request) + self.assertTrue(form.is_valid(), form.errors) + + def test_abandon_durant_evaluation_2(self): + data = {'date_demande': date.today(), 'motif_fin_suivi': 'placement', 'destination': 'famille'} + form = AgendaForm(data, request=self.request) + self.assertTrue(form.is_valid()) + + def test_dates_tardives(self): + date_passee = date.today() - timedelta(days=31 + Prestation.DELAI_SAISIE_SUPPL) + form_data = {} + suivi = Suivi() + for date_field in AgendaForm._meta.fields: + if not date_field.startswith('date'): + continue + if date_field == 'date_fin_suivi': + form_data['motif_fin_suivi'] = 'placement' + form_data['destination'] = 'famille' + form_data[date_field] = date_passee + form = AgendaForm(data=form_data, instance=suivi, request=self.request) + self.assertFalse(form.is_valid()) + if date_field == 'date_fin_suivi': + self.assertEqual( + form.errors, + {date_field: ["La saisie de dates pour le mois précédent n’est pas permise !"], + '__all__': ["Les champs «Fin de l'accompagnement», «Motif de fin» et «Destination» " + "sont obligatoires pour fermer le dossier."]} + ) + else: + self.assertEqual( + form.errors, + {date_field: ["La saisie de dates pour le mois précédent n’est pas permise !"]} + ) + setattr(suivi, date_field, date.today() - timedelta(days=90)) + form_data[date_field] = date.today() - timedelta(days=90) + + def test_date_demande_anticipee(self): + date_demande = date.today() + timedelta(days=1) + data = {'date_demande': date_demande} + form = AgendaForm(data, request=self.request) + self.assertFalse(form.is_valid()) + self.assertEqual( + form.errors, + {'date_demande': ["La saisie anticipée est impossible !"]} + ) + + def test_sans_destination_erreur(self): + data = {'date_demande': date.today(), + 'date_debut_evaluation': date.today(), + 'date_fin_evaluation': date.today(), + 'date_debut_suivi': date.today(), + 'date_fin_suivi': date.today(), + 'motif_fin_suivi': 'evol_positive'} + form = AgendaForm(data, request=self.request) + self.assertFalse(form.is_valid()) + self.assertEqual( + form.errors, + {'__all__': ["Les champs «Fin de l'accompagnement», «Motif de fin» et «Destination» " + "sont obligatoires pour fermer le dossier."]} + ) + + data['destination'] = '' + form = AgendaForm(data, request=self.request) + self.assertFalse(form.is_valid()) + self.assertEqual( + form.errors, + {'__all__': ["Les champs «Fin de l'accompagnement», «Motif de fin» et «Destination» " + "sont obligatoires pour fermer le dossier."]} + ) + + def test_date_debut_suivi_anticipe_ok(self): + data = {'date_demande': date.today(), + 'date_debut_evaluation': date.today() + timedelta(days=ANTICIPATION_POUR_DEBUT_SUIVI), + 'date_fin_evaluation': date.today() + timedelta(days=ANTICIPATION_POUR_DEBUT_SUIVI), + 'date_debut_suivi': date.today() + timedelta(days=ANTICIPATION_POUR_DEBUT_SUIVI)} + form = AgendaForm(data, request=self.request) + self.assertTrue(form.is_valid()) + + def test_date_debut_suivi_anticipe_error(self): + data = {'date_demande': date.today(), + 'date_debut_evaluation': date.today() + timedelta(days=ANTICIPATION_POUR_DEBUT_SUIVI + 1), + 'date_fin_evaluation': date.today() + timedelta(days=ANTICIPATION_POUR_DEBUT_SUIVI + 1), + 'date_debut_suivi': date.today() + timedelta(days=ANTICIPATION_POUR_DEBUT_SUIVI + 1)} + form = AgendaForm(data, request=self.request) + self.assertFalse(form.is_valid()) + + def test_date_anticipee_pour_groupe_admin(self): + famille = Famille.objects.get(nom='Haddock') + self.client.force_login(self.user_admin) + response = self.client.post( + reverse('famille-agenda', args=[famille.pk]), + data={'date_demande': '2022-09-01'}, + follow=True + ) + self.assertContains( + response, + '
  • Les dates saisies peuvent affecter les statistiques ' + 'déjà communiquées !
  • ', + html=True + ) + self.assertContains( + response, + '
  • Les modifications ont été enregistrées avec succès
  • ', + html=True + ) + + def test_affichage_intervention_temporaire(self): + famille = Famille.objects.get(nom='Haddock') + intervenant = self.user_aemo + role = Role.objects.get(nom='Educ') + date_debut = date.today() + intervention = Intervenant.objects.create( + suivi=famille.suivi, intervenant=intervenant, role=role, date_debut=date_debut, date_fin=date.today() + ) + self.client.force_login(self.user_aemo) + suivi_url = reverse('famille-agenda', args=[famille.pk]) + response = self.client.get(suivi_url) + self.assertContains( + response, + ( + f"
    Aemo Prénom (Educ) ({format_d_m_Y(intervention.date_debut)} - " + f"{format_d_m_Y(intervention.date_fin)})
    " + ), + html=True + ) + + +class JournalisationTests(InitialDataMixin, TestCase): + def test_acces_famille_journalise(self): + famille = Famille.objects.get(nom='Haddock') + Intervenant.objects.create( + suivi=famille.suivi, intervenant=self.user_aemo, + role=Role.objects.get(nom='Educ'), + date_debut=date.today(), + ) + Intervenant.objects.create( + suivi=famille.suivi, intervenant=self.user_aemo2, + role=Role.objects.get(nom='Educ'), + date_debut=date.today() - timedelta(days=3), + date_fin=date.today() - timedelta(days=1), + ) + self.client.force_login(self.user_aemo) + suivi_url = reverse('famille-suivi', args=[famille.pk]) + response = self.client.get(suivi_url) + self.assertTemplateUsed(response, 'aemo/suivi_edit.html') + + self.client.force_login(self.user_aemo2) + response = self.client.get(suivi_url) + self.assertTemplateUsed(response, 'aemo/acces_famille.html') + response = self.client.get(suivi_url + '?confirm=1') + self.assertTemplateUsed(response, 'aemo/suivi_edit.html') + line = JournalAcces.objects.get(utilisateur=self.user_aemo) + self.assertTrue(line.ordinaire) + line = JournalAcces.objects.get(utilisateur=self.user_aemo2) + self.assertFalse(line.ordinaire) + + +@tag('pdf') +class PdfTests(InitialDataMixin, TestCase): + def setUp(self): + super().setUp() + self.client.force_login(self.user_aemo) + + def _test_print_pdf(self, url, filename): + self.client.force_login(self.user_aemo) + response = self.client.get(url) + self.assertEqual( + response['content-disposition'], + 'attachment; filename="{}"'.format(filename) + ) + self.assertEqual(response['content-type'], 'application/pdf') + self.assertGreater(len(response.getvalue()), 200) + + def test_print_evaluation(self): + fam = Famille.objects.get(nom='Haddock') + self._test_print_pdf( + reverse('print-evaluation', args=(fam.pk,)), + 'haddock_aemo_evaluation.pdf' + ) + # Avec genogramme en PDF + with (Path('.').parent / 'aemo' / 'test.pdf').open(mode='rb') as fh: + fam.genogramme = File(fh) + fam.save() + self._test_print_pdf( + reverse('print-evaluation', args=(fam.pk,)), + 'haddock_aemo_evaluation.pdf' + ) + + def test_print_bilan(self): + fam = Famille.objects.get(nom='Haddock') + bilan = Bilan.objects.create( + date=date(2020, 11, 3), + auteur=self.user_aemo, + famille=fam, + objectifs="

    Para 1

    Para 2

    ", + rythme="

    Para 1

    Para 2

    ", + ) + self._test_print_pdf( + reverse('print-bilan', args=(bilan.pk,)), + 'haddock_bilan_20201103.pdf' + ) + + def test_print_coord_famille_un_enfant_un_parent(self): + fam = Famille.objects.get(nom='Haddock') + Personne.objects.create_personne( + famille=fam, prenom='Gaston', nom='Lagaffe', + role=Role.objects.get(nom='Enfant suivi') + ) + self._test_print_pdf( + reverse('print-coord-famille', args=(fam.pk,)), + 'haddock_coordonnees.pdf' + ) + + def test_print_coord_un_enfant_deux_parents(self): + fam = Famille.objects.get(nom='Haddock') + Personne.objects.create_personne( + famille=fam, prenom='Gaston', nom='Lagaffe', + role=Role.objects.get(nom='Enfant suivi') + ) + Personne.objects.create_personne( + famille=fam, prenom='Maude', nom='Zarella', + role=Role.objects.get(nom='Mère') + ) + self._test_print_pdf( + reverse('print-coord-famille', args=(fam.pk,)), + 'haddock_coordonnees.pdf' + ) + + def test_print_coord_pere_mere_beaupere(self): + fam = Famille.objects.get(nom='Haddock') + Personne.objects.create_personne( + famille=fam, prenom='Gaston', nom='Lagaffe', + role=Role.objects.get(nom='Enfant suivi') + ) + Personne.objects.create_personne( + famille=fam, prenom='Maude', nom='Zarella', + role=Role.objects.get(nom='Mère') + ) + Personne.objects.create_personne( + famille=fam, prenom='Aloïs', nom='Silalune', + role=Role.objects.get(nom='Beau-père') + ) + self._test_print_pdf( + reverse('print-coord-famille', args=(fam.pk,)), + 'haddock_coordonnees.pdf' + ) + + def test_print_sans_famille(self): + famille = Famille.objects.create_famille( + nom='Haddock', rue='Château1', npa=2000, localite='Moulinsart', + equipe='montagnes', autorite_parentale='conjointe', statut_marital='divorce', + monoparentale=False + ) + Personne.objects.create_personne( + famille=famille, prenom='Gaston', nom='Lagaffe', + role=Role.objects.get(nom='Enfant suivi') + ) + self._test_print_pdf( + reverse('print-coord-famille', args=(famille.pk,)), + 'haddock_coordonnees.pdf' + ) + + +class PrestationTests(InitialDataMixin, TestCase): + + def setUp(self): + super().setUp() + self.famille = Famille.objects.get(nom='Haddock') + Personne.objects.create_personne( + famille=self.famille, role=Role.objects.get(nom='Enfant suivi'), + nom='Haddock', prenom='Paulet', genre='M', date_naissance=date(1956, 2, 16), + rue='Château1', npa=2000, localite='Moulinsart', + ) + self.famille.suivi.intervenants.add( + self.user_aemo, through_defaults={'role': Role.objects.get(nom='Educ')} + ) + self.prest_fam = LibellePrestation.objects.get(code='aemo01') # Évaluation + self.prest_gen = LibellePrestation.objects.get(code='aemo03') + + def create_prestation_fam(self, texte=""): + prest = Prestation.objects.create( + auteur=self.user_aemo, date_prestation=date.today(), duree=timedelta(hours=8), + famille=self.famille, lib_prestation=self.prest_fam, texte=texte + ) + prest.intervenants.add(self.user_aemo, self.user_aemo2) + return prest + + def create_prestation_gen(self): + data = dict( + auteur=self.user_aemo, date_prestation=date.today(), duree=timedelta(hours=8), + famille=None, lib_prestation=self.prest_gen + ) + prest = Prestation.objects.create(**data) + prest.intervenants.add(self.user_aemo) + return prest + + def test_prestation_texte_clean(self): + """Leading and trailing empty paragraphs are stripped.""" + texte = ( + '

    \n' + '

    Echanges mail fin de suivi, au revoir à la famille

    \n' + '

    ' + ) + data = dict( + duree='3:40', date_prestation=date.today(), lib_prestation=self.prest_fam.pk, + intervenants=[self.user_aemo.pk], texte=texte + ) + form = PrestationForm(famille=self.famille, user=self.user_aemo, data=data) + self.assertTrue(form.is_valid()) + self.assertEqual( + form.cleaned_data['texte'], + '

    Echanges mail fin de suivi, au revoir à la famille

    ' + ) + + def test_prestation_date_prestation_dans_mois_courant(self): + data = dict( + duree='3:40', date_prestation=date.today(), lib_prestation=self.prest_fam.pk, + intervenants=[self.user_aemo.pk] + ) + form = PrestationForm(famille=self.famille, user=self.user_aemo, data=data) + self.assertTrue(form.is_valid(), msg=form.errors) + + def test_prestation_saisie_anticipee(self): + data = dict( + duree='3:40', date_prestation=date.today() + timedelta(days=1), + lib_prestation=self.prest_fam.pk, intervenants=[self.user_aemo.pk] + ) + form = PrestationForm(famille=self.famille, user=self.user_aemo, data=data) + self.assertFalse(form.is_valid()) + self.assertEqual(form.errors, {'date_prestation': ['La saisie anticipée est impossible !']}) + + def test_prestation_saisie_tardive(self): + data = dict( + duree='3:40', date_prestation=date.today() - timedelta(days=31 + Prestation.DELAI_SAISIE_SUPPL), + lib_prestation=self.prest_fam.pk, intervenants=[self.user_aemo.pk] + ) + form = PrestationForm(famille=self.famille, user=self.user_aemo, data=data) + self.assertFalse(form.is_valid()) + self.assertEqual( + form.errors, + {'date_prestation': ['La saisie des prestations des mois précédents est close !']} + ) + + def test_prestation_edit_perm_speciale(self): + prest = self.create_prestation_fam() + prest.date_prestation = date.today() - timedelta(days=31 + Prestation.DELAI_SAISIE_SUPPL) + prest.save() + self.user_admin.user_permissions.add( + Permission.objects.get(codename='edit_prest_prev_month', content_type__app_label='aemo') + ) + self.client.force_login(self.user_admin) + self.client.post(reverse('prestation-edit', args=[self.famille.pk, prest.pk]), data={ + 'date_prestation': prest.date_prestation, + 'duree': '00:45', + 'intervenants': [self.user_aemo.pk], + 'texte': 'foo', + }) + prest.refresh_from_db() + self.assertEqual(prest.texte, 'foo') + + def test_add_prestation_fam(self): + add_url = reverse('prestation-famille-add', args=[self.famille.pk]) + data = dict( + duree='3:40', date_prestation=date.today() - timedelta(days=3), famille=self.famille.pk, + intervenants=[self.user_aemo.pk] + ) + self.client.force_login(self.user_aemo) + response = self.client.post(add_url, data) + if response.status_code == 200: + self.fail(response.context['form'].errors) + self.assertRedirects(response, reverse('journal-list', args=[self.famille.pk])) + prestation = self.famille.prestations.get(duree="3:40") + # Évaluation choisie auto car pas de date de début de suivi + self.assertEqual(prestation.lib_prestation.code, 'aemo01') + + # Le type de prestation dépend de la date exacte de début de suivi. + self.famille.suivi.date_debut_suivi = date.today() - timedelta(days=1) + self.famille.suivi.save() + data.update({'date_prestation': date.today(), 'duree': '1:00'}) + response = self.client.post(add_url, data) + prestation = self.famille.prestations.get(duree="1:00") + self.assertEqual(prestation.lib_prestation.code, 'aemo02') + data.update({'date_prestation': date.today() - timedelta(days=2), 'duree': '1:30'}) + response = self.client.post(add_url, data) + prestation = self.famille.prestations.get(duree="1:30") + self.assertEqual(prestation.lib_prestation.code, 'aemo01') + + def test_affichage_prestation_menu_fam(self): + self.create_prestation_fam() + menu_url = reverse('prestation-menu') + self.client.force_login(self.user_aemo) + response = self.client.get(menu_url) + self.assertContains( + response, + '16:00', + html=True + ) + self.assertContains( + response, + '08:00', + html=True + ) + + def test_add_prestation_gen(self): + add_url = reverse('prestation-gen-add') + data = dict( + duree='3:40', famille='', + date_prestation=date.today() - timedelta(days=360), # Too old! + intervenants=[self.user_aemo.pk] + ) + self.client.force_login(self.user_aemo) + response = self.client.post(add_url, data) + self.assertEqual( + response.context['form'].errors, + {'date_prestation': ['La saisie des prestations des mois précédents est close !']} + ) + data['date_prestation'] = date.today() + response = self.client.post(add_url, data) + self.assertRedirects(response, reverse('prestation-gen-list')) + self.assertEqual(self.user_aemo.prestations.first().lib_prestation.code, 'aemo03') + + def test_update_prestation_fam(self): + prest = self.create_prestation_fam() + url = reverse('prestation-edit', args=[self.famille.pk, prest.pk]) + self.client.force_login(self.user_aemo) + response = self.client.get(url) + self.assertEqual(response.status_code, 200) + data = model_to_dict(prest) + data['fichier'] = '' + data['intervenants'] = [str(interv.pk) for interv in data['intervenants']] + data['duree'] = '12:00' + response = self.client.post(url, data=data) + prest.refresh_from_db() + self.assertEqual(prest.duree, timedelta(hours=12)) + + def test_correction_prestation_debut_suivi_passe(self): + """ + Quand un début de suivi est saisi dans le passé, les prestations depuis + cette date sont passées en accompagnement. + """ + prest = self.create_prestation_fam() + self.assertEqual(prest.lib_prestation.code, 'aemo01') + self.assertIsNone(self.famille.suivi.date_debut_suivi) + self.famille.suivi.intervenants.add( + self.user_aemo, through_defaults={'role': Role.objects.get(nom='Educ')} + ) + self.client.force_login(self.user_aemo) + response = self.client.post( + reverse('famille-agenda', args=[self.famille.pk]), + data={ + 'date_demande': date.today() - timedelta(days=4), + 'date_debut_evaluation': date.today() - timedelta(days=4), + 'date_fin_evaluation': date.today() - timedelta(days=2), + 'date_debut_suivi': date.today() - timedelta(days=2), + }, + ) + self.assertEqual(response.status_code, 302) + self.famille.refresh_from_db() + self.assertIsNotNone(self.famille.suivi.date_debut_suivi) + prest.refresh_from_db() + self.assertEqual(prest.lib_prestation.code, 'aemo02') + + def test_droit_modification_prestation_familiale(self): + prest = Prestation.objects.create( + famille=self.famille, + auteur=self.user_admin, + lib_prestation=LibellePrestation.objects.get(code='aemo01'), + date_prestation=date.today(), + duree='1:10' + ) + prest.intervenants.set([self.user_aemo]) + + self.client.force_login(self.user_aemo2) + with self.assertLogs('django.request', level='WARNING'): + response = self.client.get(reverse('prestation-edit', args=[self.famille.pk, prest.pk])) + self.assertEqual(response.status_code, 403) + self.assertTrue(prest.can_edit(self.user_aemo)) + + self.client.force_login(self.user_admin) + response = self.client.get(reverse('prestation-edit', args=[self.famille.pk, prest.pk])) + self.assertEqual(response.status_code, 200) + + def test_affichage_prestation_personnelle(self): + self.create_prestation_fam() + self.create_prestation_gen() + self.client.force_login(self.user_aemo) + response = self.client.get(reverse('prestation-personnelle')) + self.assertContains( + response, + 'Total prestations aemo0108:00', + html=True + ) + self.assertContains( + response, + 'Total prestations aemo0308:00', + html=True + ) + self.assertContains( + response, + 'Total16:00', + html=True + ) + + def test_affichage_prestation_generale(self): + self.create_prestation_fam() + self.create_prestation_gen() + self.client.force_login(self.user_aemo) + response = self.client.get(reverse('prestation-generale')) + self.assertContains( + response, + '08:00', + html=True, + count=1 + ) + + def test_suppression_prestation_famille(self): + prest_fam = self.create_prestation_fam() + self.client.force_login(self.user_aemo) + response = self.client.post(reverse('prestation-delete', args=[prest_fam.famille_id, prest_fam.pk])) + self.assertRedirects(response, reverse('journal-list', args=[prest_fam.famille_id])) + self.assertFalse(Prestation.objects.filter(pk=prest_fam.pk).exists()) + + def test_recherche_prestations(self): + texte1 = "La famille Lucky va bien" + texte2 = "En été, Luke tire bien plus vite que son ombre!" + prest1 = self.create_prestation_fam(texte1) + prest2 = self.create_prestation_fam(texte2) + self.client.force_login(self.user_aemo) + url = reverse('journal-list', args=[self.famille.pk]) + + # Note: les chaînes à rechercher sont en majuscule pour s'assurer que + # la recherche n'est pas sensible à la casse + + # mot contenu dans les deux enregistrements + response = self.client.get(url, {"recherche": "BIEN"}) + self.assertQuerySetEqual(response.context["object_list"], [prest1, prest2]) + + # mot contenu dans le premier enregistrement + response = self.client.get(url, {"recherche": "FAMILLE"}) + self.assertQuerySetEqual(response.context["object_list"], [prest1]) + + # mot contenu dans le deuxième enregistrement + response = self.client.get(url, {"recherche": "OMBRE"}) + self.assertQuerySetEqual(response.context["object_list"], [prest2]) + + # mot contenu dans aucun enregistrement + response = self.client.get(url, {"recherche": "TINTIN"}) + self.assertQuerySetEqual(response.context["object_list"], []) + + # deux mots contenus chacun dans un enregistrement différent + response = self.client.get(url, {"recherche": "FAMILLE OMBRE"}) + self.assertQuerySetEqual(response.context["object_list"], []) + + # deux mots contenus dans le même enregistrement + response = self.client.get(url, {"recherche": "BIEN OMBRE"}) + self.assertQuerySetEqual(response.context["object_list"], [prest2]) + + # Recherche d'un mot avec accent (mot clé sans accent) + response = self.client.get(url, {"recherche": "ETE"}) + self.assertQuerySetEqual(response.context["object_list"], [prest2]) + + # Recherche d'un mot sans accent (mot clé avec accent) + response = self.client.get(url, {"recherche": "FÂMÌLLÉ"}) + self.assertQuerySetEqual(response.context["object_list"], [prest1]) + + def test_message_recherche_prestations_sans_resultat(self): + pas_de_prestation = "Aucune prestation saisie" + recherche_vide = "Pas de résultat pour votre recherche." + self.client.force_login(self.user_aemo) + + # Message pour contenu vide sans recherche + response = self.client.get(reverse('journal-list', args=[self.famille.pk])) + self.assertContains(response, pas_de_prestation) + self.assertNotContains(response, recherche_vide) + + # Message pour contenu vide lors d'une recherche + response = self.client.get(reverse('journal-list', args=[self.famille.pk]), {"recherche": "VIDE"}) + self.assertContains(response, recherche_vide) + self.assertNotContains(response, pas_de_prestation) + + +class RapportTests(InitialDataMixin, TestCase): + + @classmethod + def setUpTestData(cls): + super().setUpTestData() + cls.famille = Famille.objects.create_famille(nom='Doe') + cls.educ = Utilisateur.objects.create_user('Educ', 'educ@exemple.org', '123') + cls.educ.user_permissions.add(Permission.objects.get(codename='change_famille')) + + def setUp(self) -> None: + self.create_kwargs = { + 'famille': self.famille, + 'auteur': self.educ, + 'date': date.today(), + 'situation': 'Situation initiale', + 'observations': 'Observation' + } + + def test_create_model(self): + rapport = Rapport.objects.create(**self.create_kwargs) + self.assertIsInstance(rapport, Rapport) + self.assertEqual(str(rapport), f"Résumé du {format_d_m_Y(date.today())} pour la famille Doe - ") + + def test_create_view_with_observations(self): + self.client.force_login(self.educ) + response = self.client.get(reverse('famille-rapport-add', args=[self.famille.pk])) + self.assertContains( + response, + '', + html=True + ) + self.assertNotIn('Évaluation / Hypothèses', response) + self.assertNotIn('Évolutions et observations', response) + + def test_display_rapport_with_observations(self): + rapport = Rapport.objects.create(**self.create_kwargs) + self.client.force_login(self.educ) + response = self.client.get(reverse('famille-rapport-view', args=[self.famille.pk, rapport.pk])) + + self.assertContains(response, '

    Observations, évolution et hypothèses

    ', html=True) + + +class NiveauTests(InitialDataMixin, TestCase): + + def setUp(self) -> None: + self.famille = Famille.objects.get(nom='Haddock') + self.client.force_login(self.user_aemo) + + def test_niveau_model(self): + niv = Niveau.objects.create( + famille=self.famille, + niveau_interv=2, + date_debut=date.today() + ) + self.assertEqual(niv.famille, self.famille) + self.assertEqual(niv.niveau_interv, 2) + self.assertEqual(niv.date_debut, date.today()) + self.assertEqual(niv.date_fin, None) + + def test_niveau_add_view(self): + auj = date.today() + demain = auj + timedelta(days=1) + response = self.client.post( + path=reverse('niveau-add', args=[self.famille.pk]), + data={'niveau_interv': 3, 'date_debut': demain}, + follow=True + ) + self.assertContains(response, f"{format_d_m_Y(demain)}---3", html=True) + + def test_niveau_add_form(self): + auj = date.today() + demain = auj + timedelta(days=1) + form = NiveauForm(famille=self.famille, data={'niveau_interv': 3, 'date_debut': demain}) + self.assertTrue(form.is_valid()) + + def test_niveau_add_second_enregistrement(self): + auj = date.today() + demain = auj + timedelta(days=1) + niv = Niveau.objects.create(famille=self.famille, niveau_interv=2, date_debut=auj, date_fin=None) + self.client.post( + path=reverse('niveau-add', args=[self.famille.pk]), + data={'niveau_interv': 3, 'date_debut': demain}, + follow=True + ) + # Mise à jour dernier enreg. + niv.refresh_from_db() + self.assertEqual(niv.date_fin, auj) + + # Test nouvel enreg. + self.assertEqual(self.famille.niveaux.count(), 2) + der_niv = self.famille.niveaux.last() + self.assertEqual(der_niv.famille, self.famille) + self.assertEqual(der_niv.niveau_interv, 3) + self.assertEqual(der_niv.date_debut, demain) + self.assertEqual(der_niv.date_fin, None) + + def test_niveau_edit_view(self): + auj = date.today() + demain = auj + timedelta(days=1) + niv = Niveau.objects.create(famille=self.famille, niveau_interv=2, date_debut=auj, date_fin=None) + self.client.post( + path=reverse('niveau-edit', args=[self.famille.pk, niv.pk]), + data={'niveau_interv': 3, 'date_debut': demain}, + follow=True + ) + niv.refresh_from_db() + self.assertEqual(niv.niveau_interv, 3) + + def test_niveau_edit_form(self): + auj = date.today() + demain = auj + timedelta(days=1) + niv = Niveau.objects.create(famille=self.famille, niveau_interv=2, date_debut=auj, date_fin=None) + form = NiveauForm(famille=self.famille, instance=niv, data={'niveau_interv': 3, 'date_debut': demain}) + self.assertTrue(form.is_valid()) + form.save() + niv.refresh_from_db() + self.assertEqual(niv.niveau_interv, 3) + + def test_niveau_delete(self): + auj = date.today() + niv = Niveau.objects.create(famille=self.famille, niveau_interv=2, date_debut=auj, date_fin=None) + response = self.client.post( + path=reverse('niveau-delete', args=[self.famille.pk, niv.pk]), + follow=True + ) + self.assertEqual(len(response.context['niveaux']), 0) + + def test_niveau_affichage_dans_agenda(self): + auj = date.today() + Niveau.objects.create( + famille=self.famille, niveau_interv=2, date_debut=auj - timedelta(days=10), date_fin=None + ) + agenda_url = reverse('famille-agenda', args=[self.famille.pk]) + response = self.client.get(agenda_url) + self.assertContains(response, 'Niv. d’intervention 2', html=True) + # Fin niveau affiché au plus tard à fin du suivi. + self.famille.suivi.date_fin_suivi = auj + self.famille.suivi.save() + response = self.client.get(agenda_url) + self.assertEqual(response.context['niveaux'][0].date_fin_calc, auj) + + def test_debut_suivi_selon_niveau(self): + """Début du suivi peut varier selon changement de niveau 2/3.""" + auj = date.today() + self.famille.suivi.date_debut_suivi = auj - timedelta(days=20) + self.famille.suivi.save() + Niveau.objects.create( + famille=self.famille, niveau_interv=2, + date_debut=auj - timedelta(days=20), date_fin=auj - timedelta(days=10) + ) + Niveau.objects.create( + famille=self.famille, niveau_interv=3, + date_debut=auj - timedelta(days=10), date_fin=None + ) + self.assertEqual(self.famille.suivi.debut_suivi_selon_niveau, auj - timedelta(days=10)) + + +class UtilisateurTests(InitialDataMixin, TestCase): + + def test_utilisateur_list(self): + self.client.force_login(self.user_admin) + response = self.client.get(reverse('utilisateur-list')) + self.assertEqual(len(response.context['object_list']), Utilisateur.objects.count()) + + def test_create_utilisateur(self): + self.client.force_login(self.user_admin) + response = self.client.post(reverse('utilisateur-add'), data={ + 'nom': 'Muller', + 'prenom': 'Hans', + 'username': 'MullerH', + 'sigle': 'HM', + 'groups': [Group.objects.create(name='grp1').pk, Group.objects.create(name='grp2').pk], + 'taux_activite': 100, + 'decharge': 2, + }) + self.assertEqual(response.status_code, 302) + user = Utilisateur.objects.get(nom='Muller') + self.assertEqual(user.service.sigle, 'CRNE') + self.assertEqual(user.username, 'MullerH') + self.assertEqual(user.groups.count(), 2) + self.assertEqual(user.charge_max, 30) + + def test_taux_activite(self): + data = { + 'nom': 'Muller', + 'prenom': 'Hans', + 'username': 'MullerH', + 'sigle': 'HM', + 'taux_activite': 90, + } + form = UtilisateurForm(data=data) + self.assertTrue(form.is_valid()) + + form = UtilisateurForm(data={**data, 'taux_activite': 110}) + self.assertFalse(form.is_valid()) + self.assertEqual( + form.errors['taux_activite'], + ['Assurez-vous que cette valeur est inférieure ou égale à 100.'] + ) + + def test_delete_utilisateur(self): + user = Utilisateur.objects.create_user(username='user1', nom='Supprimer') + self.client.force_login(self.user_admin) + self.client.post(reverse('utilisateur-delete', args=[user.pk])) + user.refresh_from_db() + self.assertIsNotNone(user.date_desactivation) + self.assertFalse(user.is_active) + self.assertFalse(user.est_actif) + + response = self.client.get(reverse('utilisateur-autocomplete') + '?q=Sup') + self.assertEqual(response.json()['results'], []) + + @override_settings(PASSWORD_HASHERS=PASSWORD_HASHERS) + def test_reinit_password(self): + Utilisateur.objects.create_superuser( + 'somebody', 'somebody@example.org', 'somebodypassword', prenom='Jean', nom='Valjean', + ) + new_user = Utilisateur.objects.create_user(username='user') + self.assertTrue(new_user.password.startswith('!')) # Unusable password + self.client.login(username='somebody', password='somebodypassword') + self.client.post(reverse('utilisateur-password-reinit', args=[new_user.pk])) + new_user.refresh_from_db() + self.assertTrue(new_user.password.startswith('pbkdf2_sha256$')) # Usable password + + def test_reinit_mobile(self): + from django_otp.plugins.otp_totp.models import TOTPDevice + user = Utilisateur.objects.create_user(username='user', nom="Spontz") + TOTPDevice.objects.create(user=user, name='default') + self.client.force_login(self.user_admin) + response = self.client.post(reverse('utilisateur-otp-device-reinit', args=[user.pk]), follow=True) + self.assertEqual(str(list(response.context['messages'])[0]), 'Le mobile de «Spontz » a été réinitialisé.') + response = self.client.post(reverse('utilisateur-otp-device-reinit', args=[user.pk]), follow=True) + self.assertEqual( + str(list(response.context['messages'])[0]), + 'Aucune configuration mobile trouvée pour «Spontz »' + ) + + def test_liste_utilisateurs_actifs_inactifs(self): + user1 = Utilisateur.objects.create_user( + 'User1P', 'user1@exemple.org', 'user1_password', prenom='Paul', nom='User1', + ) + Utilisateur.objects.create_user( + 'User2M', 'user2@exemple.org', 'user2_password', prenom='Max', nom='User2', + ) + self.client.force_login(self.user_admin) + response = self.client.get(reverse('utilisateur-list')) + self.assertContains(response, 'User1 Paul') + self.assertContains(response, 'User2 Max') + self.client.post(reverse('utilisateur-delete', args=[user1.pk])) + response = self.client.get(reverse('utilisateur-list')) + self.assertNotContains(response, 'User1 Paul') + response = self.client.get(reverse('utilisateur-desactive-list')) + self.assertContains(response, 'User1 Paul') + + def test_reactivation_utilisateur(self): + user1 = Utilisateur.objects.create_user( + 'User1P', 'user1@exemple.org', 'user1_password', prenom='Paul', nom='User1', + ) + Utilisateur.objects.create_user( + 'User2M', 'user2@exemple.org', 'user2_password', prenom='Max', nom='User2', + ) + self.client.force_login(self.user_admin) + response = self.client.post(reverse('utilisateur-delete', args=[user1.pk]), follow=True) + self.assertNotContains(response, 'User1 Paul') + user1.refresh_from_db() + self.assertIsNotNone(user1.date_desactivation) + response = self.client.post(reverse('utilisateur-reactiver', args=[user1.pk]), follow=True) + self.assertContains(response, 'User1 Paul') + user1.refresh_from_db() + self.assertIsNone(user1.date_desactivation) + + +class OtherTests(InitialDataMixin, TestCase): + def setUp(self): + self.client.force_login(self.user_aemo) + + def test_contact_list(self): + response = self.client.get(reverse('contact-list')) + self.assertEqual(len(response.context['object_list']), 3) + response = self.client.get(reverse('contact-list') + '?service=%s' % Service.objects.get(sigle='OPEN').pk) + self.assertEqual(len(response.context['object_list']), 1) + response = self.client.get(reverse('contact-list') + '?role=%s' % Role.objects.get(nom='Médecin').pk) + self.assertEqual(len(response.context['object_list']), 1) + response = self.client.get(reverse('contact-list') + '?texte=barn') + self.assertEqual(len(response.context['object_list']), 1) + + def test_contact_autocomplete(self): + medecin = Role.objects.get(nom='Médecin') + ope_service = Service.objects.create(sigle="OPEC") + other_service = Service.objects.get(sigle="SSE") + contact_ope = Contact.objects.create( + nom="Duplain", prenom="Irma", service=ope_service + ) + contact_ope.roles.add(medecin) + contact_other = Contact.objects.create( + nom="Dupont", prenom="Paul", service=other_service + ) + contact_other.roles.add(medecin) + response = self.client.get(reverse('contact-autocomplete') + '?q=Dup') + self.assertEqual( + [res['text'] for res in response.json()['results']], + ['Duplain Irma (OPEC)', 'Dupont Paul (SSE)'] + ) + # The OPE version + response = self.client.get(reverse('contact-ope-autocomplete') + '?q=Dup') + self.assertEqual( + [res['text'] for res in response.json()['results']], + ['Duplain Irma (OPEC)'] + ) + + def test_supression_affichage_du_contact_desactive_dans_contact_autocomplete(self): + medecin = Role.objects.get(nom='Médecin') + ope_service = Service.objects.create(sigle="OPEC") + other_service = Service.objects.get(sigle="SSE") + contact_ope = Contact.objects.create( + nom="Duplain", prenom="Irma", service=ope_service, est_actif=False + ) + contact_ope.roles.add(medecin) + contact_other = Contact.objects.create( + nom="Dupont", prenom="Paul", service=other_service + ) + contact_other.roles.add(medecin) + response = self.client.get(reverse('contact-autocomplete') + '?q=Dup') + self.assertEqual( + [res['text'] for res in response.json()['results']], + ['Dupont Paul (SSE)'] + ) + + def test_suppression_affichage_contact_desactive_dans_list_contact(self): + medecin = Role.objects.get(nom='Médecin') + ope_service = Service.objects.create(sigle="OPEC") + other_service = Service.objects.get(sigle="SSE") + contact_ope = Contact.objects.create( + nom="Duplain", prenom="Irma", service=ope_service, est_actif=False + ) + contact_ope.roles.add(medecin) + contact_other = Contact.objects.create( + nom="Dupont", prenom="Paul", service=other_service + ) + contact_other.roles.add(medecin) + response = self.client.get(reverse('contact-list')) + self.assertNotContains(response, 'Duplain') + + def test_controler_doublon_contact(self): + medecin = Role.objects.get(nom='Médecin') + contact1 = Contact.objects.create( + nom="Duplain", prenom="Irma", est_actif=True + ) + contact1.roles.add(medecin) + doublon_url = reverse('contact-doublon') + response = self.client.post(doublon_url, data={'nom': "Duplain", 'prenom': "Irma"}) + self.assertEqual(response.json(), [{'nom': "Duplain", 'prenom': "Irma"}]) + response = self.client.post(doublon_url, data={'nom': "Nouveau", 'prenom': "Contact"}) + # Réponse vide signifie pas de doublon détecté. + self.assertEqual(response.json(), '') + + def test_service_creation(self): + s1 = Service.objects.create(sigle='lower') # transform code from lower to uppercase + self.assertEqual(s1.sigle, 'LOWER') + # By form + self.client.force_login(self.user_admin) + response = self.client.post( + reverse('service-add'), data={'sigle': 'SERVICE', 'nom_complet': 'Super service'} + ) + self.assertRedirects(response, reverse('service-list')) + self.assertEqual(Service.objects.filter(sigle='SERVICE').count(), 1) + + def test_service_list(self): + response = self.client.get(reverse('service-list')) + self.assertEqual(len(response.context['object_list']), 3) + + def test_raise_unique_constraint_school_center_creation(self): + sc = CercleScolaire(nom='EOREN-MAIL') + self.assertRaises(IntegrityError, sc.save) + + def test_cerclescolaire_list(self): + response = self.client.get(reverse('cercle-list')) + self.assertEqual(len(response.context['object_list']), 2) + + def test_role_create(self): + self.client.force_login(self.user_admin) + response = self.client.post(reverse('role-add'), data={'nom': 'ROLE1', 'famille': False}) + self.assertRedirects(response, reverse('role-list')) + self.assertEqual(Role.objects.filter(nom='ROLE1').count(), 1) + + def test_role_list(self): + response = self.client.get(reverse('role-list')) + self.assertGreater(len(response.context['object_list']), 10) + # Les rôles "protégés" ne sont pas éditables. + self.assertContains(response, 'Enfant suivi') + + def test_delete_used_role(self): + """A role with at least one attached Personne cannot be deleted.""" + role = Role.objects.get(nom="Père") + Personne.objects.create_personne( + famille=Famille.objects.create(nom='Schmurz'), role=role, + nom='Haddock', prenom='Archibald', genre='M', date_naissance=date(1956, 2, 16), + ) + self.assertGreater(role.personne_set.count(), 0) + self.client.force_login(self.user_admin) + response = self.client.post(reverse('role-delete', args=[role.pk]), follow=True) + self.assertContains(response, "Cannot delete") + + def test_truncate_with_more_ttag(self): + from aemo.templatetags.my_tags import truncate_html_with_more + txt = '

    Ceci est un très long texte HTML.
    Seconde ligne

    ' + self.assertHTMLEqual( + truncate_html_with_more(txt, 3), + '' + '

    Ceci est un…

    ' + 'Afficher la suite' + ) + + def test_info_ope_ttag(self): + from aemo.templatetags.my_tags import info_ope + self.assertEqual( + info_ope(Contact.objects.get(nom='Sybarnez')), + 'Sybarnez Tina' + ) + + def test_check_date_allowed(self): + with freeze_time("2021-01-20"): + self.assertFalse(Prestation.check_date_allowed(self.user_aemo, date(2020, 1, 20))) + with freeze_time("2021-01-04"): + self.assertFalse(Prestation.check_date_allowed(self.user_aemo, date(2020, 11, 30))) + self.assertTrue(Prestation.check_date_allowed(self.user_aemo, date(2020, 12, 2))) + self.assertTrue(Prestation.check_date_allowed(self.user_aemo, date(2021, 1, 2))) + + with freeze_time("2020-11-02"): + self.assertFalse(Prestation.check_date_allowed(self.user_aemo, date(2019, 10, 15))) + self.assertTrue(Prestation.check_date_allowed(self.user_aemo, date(2020, 10, 15))) + self.assertTrue(Prestation.check_date_allowed(self.user_aemo, date(2020, 11, 12))) + + def test_duration_field(self): + class SomeForm(Form): + duration = HMDurationField() + + form = SomeForm({'duration': timedelta(days=1, hours=2, minutes=21, seconds=4)}) + self.assertInHTML( + '', + form.as_div() + ) + + +class TestExporter(ExportReporting): + """A fake exporter class that just collect data in lists to be able to assert the contents.""" + def __init__(self): + super().__init__() + self.sheets = {} + self._current_sh = None + + def __call__(self): + # This allows to provide an instance to mock + return self + + def setup_sheet(self, title): + self.sheets[title] = [] + self._current_sh = self.sheets[title] + + def write_line(self, values, **kwargs): + self._current_sh.append(values) + + +class StatTests(TestCase): + @classmethod + def setUpTestData(cls): + group_aemo = Group.objects.create(name='aemo') + cls.user = Utilisateur.objects.create( + username='me', first_name='Jean', last_name='Valjean', + ) + cls.user_admin = Utilisateur.objects.create(username='admin') + cls.user_admin.user_permissions.add(Permission.objects.get(codename='export_stats')) + user_haut = Utilisateur.objects.create(username='ld', prenom='Lise', nom="Duhaut") + user_haut.groups.add(group_aemo) + user_bas = Utilisateur.objects.create(username='jd', prenom='Jean', nom="Dubas") + user_bas.groups.add(group_aemo) + + role_referent = Role.objects.create(nom='Référent', est_famille=False) + cls.enf_suivi = Role.objects.create(nom='Enfant suivi', est_famille=True) + cls.role_pere = Role.objects.create(nom='Père', est_famille=True) + cls.role_mere = Role.objects.create(nom='Mère', est_famille=True) + cls.famille_litt = Famille.objects.create_famille( + equipe='littoral', + nom='Haddock', rue='Château1', npa=2000, localite='Moulinsart', + ) + Personne.objects.create_personne( + famille=cls.famille_litt, role=cls.enf_suivi, + nom='Haddock', prenom='Archibald', genre='M', date_naissance=date(1996, 2, 16) + ) + Personne.objects.create_personne( + famille=cls.famille_litt, role=cls.enf_suivi, + nom='Haddock', prenom='Honorine', genre='F', date_naissance=date(1999, 11, 2) + ) + cls.famille_litt.suivi.date_demande = '2019-01-01' + cls.famille_litt.suivi.intervenants.add(user_bas, through_defaults={'role': role_referent}) + cls.famille_litt.suivi.save() + + cls.famille_mont = Famille.objects.create_famille( + equipe='montagnes', + nom='Tournesol', rue='Château1', npa=2000, localite='Moulinsart', + ) + Personne.objects.create_personne( + famille=cls.famille_mont, role=cls.enf_suivi, + nom='Tournesol', prenom='Tryphon', genre='M', date_naissance=date(1991, 1, 3) + ) + cls.famille_mont.suivi.date_demande = '2019-01-01' + cls.famille_mont.suivi.intervenants.add(user_haut, through_defaults={'role': role_referent}) + cls.famille_mont.suivi.save() + LibellePrestation.objects.bulk_create([ + LibellePrestation(code='aemo01', nom='Évaluation AEMO'), + LibellePrestation( code='aemo04', nom='Activités ASE'), + ]) + + def test_accueil_statistiques(self): + self.client.force_login(self.user_admin) + response = self.client.get(reverse('stats')) + self.assertContains(response, 'Statistiques du 1er') + + @freeze_time("2020-12-04") + def test_accueil_statistiques_decembre(self): + self.client.force_login(self.user_admin) + response = self.client.get(reverse('stats')) + self.assertEqual(response.context['date_form'].data['end_month'], 1) + self.assertEqual(response.context['date_form'].data['end_year'], 2021) + + def test_temps_total_prestations(self): + """ + Test Famille.temps_total_prestations()/temps_total_prestations_reparti(), + Test Utilisateur.temps_total_prestations() + """ + self.assertEqual(self.famille_litt.temps_total_prestations(), timedelta(0)) + auj = date.today() + mois_sui1 = date(auj.year, auj.month, 3) + mois_sui2 = date(auj.year, auj.month, 4) + user2 = Utilisateur.objects.create( + username='you', first_name='Hans', last_name='Zwei', + ) + user2.groups.add(Group.objects.get(name='aemo')) + p1 = Prestation.objects.create( + auteur=self.user, + famille=self.famille_litt, + date_prestation=auj, + duree='0:45' + ) + p1.intervenants.set([self.user]) + p2 = Prestation.objects.create( + auteur=self.user, + famille=self.famille_litt, + date_prestation=mois_sui1, + duree='1:0' + ) + # Chaque intervenant saisit ses propres prestations + p2.intervenants.set([self.user]) + p3 = Prestation.objects.create( + auteur=self.user, + famille=self.famille_litt, + date_prestation=mois_sui2, + duree='1:05' + ) + p3.intervenants.set([user2]) + + # Avec ce processus, la même prestation peut avoir des durées différentes!!! + + # p1 (00:45) + 2 interv. x p2 (1:00) >> p1(00:45) + p2(1:00) + p3(1:05) = 2:50 + self.assertEqual(self.famille_litt.temps_total_prestations(), timedelta(hours=2, minutes=50)) + self.assertEqual(self.famille_litt.temps_total_prestations_reparti(), timedelta(hours=1, minutes=25)) + # self.user = p1 (00:45) + p2 (1:00) = 1:45 + # user2 = p3(1:05) + self.assertEqual(format_duree(self.user.temps_total_prestations('aemo')), '01:45') + self.assertEqual(format_duree(user2.temps_total_prestations('aemo')), '01:05') + + def test_stats(self): + auj = date.today() + mois_sui1 = date(auj.year, auj.month, 3) + user_bas = Utilisateur.objects.get(nom='Dubas') + p = Prestation.objects.create( + auteur=self.user, + famille=self.famille_litt, + date_prestation=auj, + duree='0:45' + ) + p.intervenants.set([user_bas]) + p = Prestation.objects.create( + auteur=self.user, + famille=self.famille_litt, + date_prestation=mois_sui1, + duree='1:00' + ) + p.intervenants.set([user_bas]) + p = Prestation.objects.create( + auteur=self.user, + famille=self.famille_litt, + date_prestation=auj, + duree='0:00', manque=True, + ) + # Cette famille est du littoral, mais n'a pas Lise Dubas comme référente + Famille.objects.create_famille( + equipe='littoral', + nom='Tintin', rue='Château1', npa=2000, localite='Moulinsart', + ) + months = [Month(date.today().year, date.today().month)] + stats = StatistiquesView( + date_start=date.today().replace(day=1), + date_end=(date.today().replace(day=1) + timedelta(days=35)).replace(day=1), + ).get_stats(months) + self.assertEqual(stats['familles']['familles_evaluees']['total'], 3) + self.assertEqual(stats['familles']['enfants_evalues']['total'], 3) + self.assertEqual(stats['familles']['rdv_manques']['total'], 1) + + def test_total_mensuel(self): + """Test Famille.total_mensuel() method.""" + famille = Famille.objects.get(nom='Haddock') + auj = date.today() + mois_suiv = auj + timedelta(days=31) + self.assertEqual(famille.total_mensuel(auj), timedelta(0)) + Prestation.objects.bulk_create([ + Prestation( + auteur=self.user, famille=famille, date_prestation=date(auj.year, auj.month, 1), duree='1:30' + ), + Prestation( + auteur=self.user, famille=famille, date_prestation=date(auj.year, auj.month, 25), duree='0:15' + ), + # Not included in this month + Prestation( + auteur=self.user, famille=famille, date_prestation=date(mois_suiv.year, mois_suiv.month, 1), + duree='0:15' + ), + ]) + self.assertEqual(famille.total_mensuel(auj), timedelta(minutes=105)) + + def test_total_prestations(self): + famille = Famille.objects.get(nom='Haddock') + user = Utilisateur.objects.get(nom='Duhaut') + my_group = Group.objects.get(name='aemo') + my_group.user_set.add(user) + prestation_data = { + 'auteur': self.user, 'famille': famille, 'date_prestation': date(2019, 3, 1), + 'lib_prestation': LibellePrestation.objects.get(code='aemo01'), + } + Prestation.objects.bulk_create([ + Prestation(**{**prestation_data, 'duree': '3:40'}), + Prestation(**{**prestation_data, 'duree': '6:40'}), + # Not included in this month + Prestation(**{**prestation_data, 'date_prestation': date(2019, 4, 1), 'duree': '2:00'}), + ]) + for p in Prestation.objects.filter(famille=famille): + p.intervenants.set([user]) + + self.assertEqual(format_duree(user.total_mensuel('aemo', 3, 2019)), '10:20') + self.assertEqual(format_duree(user.totaux_mensuels('aemo', 2019)[3]), '02:00') + self.assertEqual(format_duree(user.total_annuel('aemo', 2019)), '12:20') + totaux_2019 = Prestation.temps_totaux_mensuels(2019) + self.assertEqual(totaux_2019[0], timedelta()) + self.assertEqual(format_duree(totaux_2019[2]), '10:20') + self.assertEqual(format_duree(totaux_2019[3]), '02:00') + self.assertEqual(format_duree(Prestation.temps_total_general(2019)), '12:20') + + user.user_permissions.add(Permission.objects.get(codename='export_stats')) + self.client.force_login(user) + exp = TestExporter() + with patch('aemo.views.ExportReporting', new=exp): + self.client.post(reverse('export-prestation'), {'mois': '3', 'annee': '2019'}) + self.assertEqual(format_duree(exp._total_spe['eval']), '10:20') + + def test_export_prestations_decembre(self): + self.client.force_login(self.user_admin) + response = self.client.post(reverse('export-prestation'), {'mois': '12', 'annee': '2019'}) + self.assertEqual(response.status_code, 200) + + @freeze_time("2020-12-14") + def test_affichage_prestation(self): + famille = Famille.objects.get(nom='Tournesol') + auj = date.today() + self.assertEqual(famille.total_mensuel(auj), timedelta(0)) + user_haut = Utilisateur.objects.get(nom='Duhaut') + user_haut.taux_activite = 100.0 + user_haut.save() + Prestation.objects.bulk_create([ + Prestation(auteur=user_haut, famille=famille, + date_prestation=date(auj.year, 3, 1), duree='1:45'), + Prestation(auteur=user_haut, famille=famille, + date_prestation=date(auj.year, 5, 25), duree='0:15'), + # Not included in this month + Prestation(auteur=user_haut, famille=famille, + date_prestation=date(auj.year, 7, 1), duree='0:15'), + ]) + for p in Prestation.objects.filter(famille=famille): + p.intervenants.set([user_haut]) + + self.user.user_permissions.add(Permission.objects.get(codename='export_stats')) + self.client.force_login(self.user) + response = self.client.get(reverse('stats-prestations')) + data = response.context['intervenants'][user_haut] + self.assertEqual(format_duree(data['heures_prestees'][2]), '01:45') + self.assertEqual(format_duree(data['heures_prestees'][4]), '00:15') + self.assertEqual(format_duree(data['heures_prestees'][6]), '00:15') + + self.assertEqual(format_duree(data['tot_prestees']), '02:15') + self.assertEqual(format_duree(response.context['totaux_prest_mensuels'][Month(auj.year, 3)]['total']), '01:45') + self.assertEqual(format_duree(response.context['total_gen']), '02:15') + + @skip("This statistic is currently deactivated") + def test_stats_interv(self): + last_year = date.today().year - 1 + famille = Famille.objects.get(nom='Haddock') + famille.suivi.date_debut_suivi = date(last_year, 2, 1) + famille.suivi.save() + user_bas = Utilisateur.objects.get(nom='Dubas') + self.client.force_login(self.user_admin) + params = '&'.join( + f'{key}={val}' for key, val in { + 'start_year': last_year, 'start_month': '3', 'end_year': last_year, 'end_month': '5' + }.items() + ) + response = self.client.get(reverse('stats-interv') + '?' + params) + self.assertEqual(response.context['interv_spe'][user_bas]['num_familles']['total'], 1) + + def test_stats_par_niveau(self): + auj = date.today() + Niveau.objects.create( + famille=self.famille_litt, niveau_interv=2, date_debut=auj - timedelta(days=1) + ) + # Niveau obsolète + Niveau.objects.create( + famille=self.famille_litt, niveau_interv=1, + date_debut=auj - timedelta(days=360), date_fin=auj - timedelta(days=100) + ) + Prestation.objects.create( + famille=self.famille_litt, auteur=self.user, date_prestation=auj, + lib_prestation=LibellePrestation.objects.get(code='aemo04'), + duree=timedelta(minutes=90) + ) + + ilya2mois = auj - timedelta(days=60) + params = '&'.join( + f'{key}={val}' for key, val in { + 'start_year': ilya2mois.year, 'start_month': ilya2mois.month, + 'end_year': auj.year, 'end_month': auj.month, + }.items() + ) + + self.client.force_login(self.user_admin) + response = self.client.get(reverse('stats-niveaux') + '?' + params) + self.assertEqual(response.status_code, 200) + self.assertEqual( + response.context['stats'][2]['aemo04'][Month.from_date(auj)], timedelta(minutes=90) + ) + self.assertEqual( + response.context['stats'][2]['aemo04']['total'], timedelta(minutes=90) + ) + + +class ExportTests(InitialDataMixin, TestCase): + + def setUp(self): + self.client.force_login(self.user_admin) + self.cfg_date = date(2019, 10, 3) + self.cfg_sheet = 'En_cours_{}.{}'.format(self.cfg_date.month, self.cfg_date.year) + self.cfg_export_month = {'mois': self.cfg_date.month, 'annee': self.cfg_date.year} + + self.entetes_communs = [ + 'Institution', 'Prestation', 'Nom', 'Prenom', 'Genre', 'Date de naissance', 'Adresse', 'NPA', 'Localité', + 'Canton', 'OPE', 'Nom mère', 'Prénom mère', 'Nom père', 'Prénom père', 'Autorité parentale', + 'Statut marital', 'Statut financier', 'Fam. monopar.', 'Nbre enfants', + 'Date demande', 'Provenance', 'Motif demande', 'Début suivi' + ] + + self.entetes_nouveaux = self.entetes_communs + self.entetes_en_cours = self.entetes_communs + ['H. Évaluation', 'H. Suivi', 'H. Prest. gén.'] + self.entetes_termines = (self.entetes_communs + + ['Date fin suivi', 'Motif fin suivi', 'Destination', 'Total heures']) + + self.enf_suivi = Role.objects.get(nom='Enfant suivi', est_famille=True) + self.role_pere = Role.objects.get(nom='Père', est_famille=True) + self.role_mere = Role.objects.get(nom='Mère', est_famille=True) + + def test_entete_nouveux_suivis(self): + exp = TestExporter() + with patch('aemo.views.ExportReporting', new=exp): + self.client.post(reverse('export-prestation'), {'mois': '10', 'annee': '2019'}) + sheet_name = 'Nouveaux_10.2019' + self.assertEqual(len(exp.sheets[sheet_name]), 1) + self.assertEqual(exp.sheets[sheet_name][0], self.entetes_nouveaux) + + def test_entete_suivis_en_cours(self): + exp = TestExporter() + with patch('aemo.views.ExportReporting', new=exp): + self.client.post(reverse('export-prestation'), {'mois': '10', 'annee': '2019'}) + sheet_name = 'En_cours_10.2019' + self.assertEqual(len(exp.sheets[sheet_name]), 1) + self.assertEqual(exp.sheets[sheet_name][0], self.entetes_en_cours) + + def test_entete_suivis_termines(self): + exp = TestExporter() + with patch('aemo.views.ExportReporting', new=exp): + self.client.post(reverse('export-prestation'), {'mois': '10', 'annee': '2019'}) + sheet_name = 'Terminés_10.2019' + self.assertEqual(len(exp.sheets[sheet_name]), 1) + self.assertEqual(exp.sheets[sheet_name][0], self.entetes_termines) + + def test_export_prestations_decembre(self): + self.client.force_login(self.user_admin) + response = self.client.post(reverse('export-prestation'), {'mois': '12', 'annee': '2019'}) + self.assertEqual(response.status_code, 200) + + def test_date_nouveau_suivi(self): + fam1 = self.create_famille(name='Haddock') + fam1.suivi.date_demande = '2019-09-20' + fam1.suivi.save() + + fam2 = self.create_famille(name='Tournesol') + fam2.suivi.date_demande = '2019-10-20' + fam2.suivi.save() + + fam3 = self.create_famille(name='Castafiore') + fam3.suivi.date_demande = '2019-11-20' + fam3.suivi.save() + + exp = TestExporter() + with patch('aemo.views.ExportReporting', new=exp): + self.client.post(reverse('export-prestation'), {'mois': '10', 'annee': '2019'}) + sheet_name = 'Nouveaux_10.2019' + self.assertEqual(len(exp.sheets[sheet_name]), 2) + self.assertEqual([line[2] for line in exp.sheets[sheet_name]], ['Nom', 'Tournesol']) + + def test_date_suivi_en_cours(self): + fam1 = self.create_famille(name='Haddock') + fam1.suivi.date_demande = '2019-09-20' + fam1.suivi.save() + + fam2 = self.create_famille(name='Tournesol') + fam2.suivi.date_demande = '2019-10-20' + fam2.suivi.save() + + fam3 = self.create_famille(name='Castafiore') + fam3.suivi.date_demande = '2019-11-20' + fam3.suivi.save() + + self.benef1 = dict(nom='Haddock', date_admission='2019-10-02') + self.benef2 = dict(nom='Tournesol', date_admission='2019-09-30') + + def test_date_suivi_termine(self): + fam1 = self.create_famille(name='Haddock') + fam1.suivi.date_demande = '2019-09-20' + fam1.suivi.date_fin_suivi = '2019-10-31' + fam1.suivi.save() + + fam2 = self.create_famille(name='Tournesol') + fam2.suivi.date_demande = '2019-10-20' + fam2.suivi.save() + + fam3 = self.create_famille(name='Castafiore') + fam3.suivi.date_demande = '2019-11-20' + fam3.suivi.date_fin_suivi = '2019-12-31' + fam3.suivi.save() + + exp = TestExporter() + with patch('aemo.views.ExportReporting', new=exp): + self.client.post(reverse('export-prestation'), {'mois': '10', 'annee': '2019'}) + sheet_name = 'Terminés_10.2019' + self.assertEqual(len(exp.sheets[sheet_name]), 2) + self.assertEqual([line[2] for line in exp.sheets[sheet_name]], ['Nom', 'Haddock']) + + def test_un_enfant_par_ligne(self): + fam = self.create_famille() + fam.suivi.date_demande = '2019-10-20' + fam.suivi.save() + Personne.objects.create_personne( + famille=fam, role=Role.objects.get(nom='Enfant suivi'), + nom='Haddock', prenom='Ursule', genre='M', date_naissance=date(2008, 11, 6), + ) + + exp = TestExporter() + with patch('aemo.views.ExportReporting', new=exp): + self.client.post(reverse('export-prestation'), {'mois': '10', 'annee': '2019'}) + sheet_name = 'Nouveaux_10.2019' + self.assertEqual(len(exp.sheets[sheet_name]), 3) + self.assertEqual( + [(line[2], line[3]) for line in exp.sheets['Nouveaux_10.2019']], + [('Nom', 'Prenom'), ('Haddock', 'Ursule'), ('Haddock', 'Toto')] + ) + + def test_repartition_temps_total_prestation_mensuel_entre_enfants(self): + fam = self.create_famille() + fam.suivi.date_demande = '2019-10-20' + fam.suivi.save() + Personne.objects.create_personne( + famille=fam, role=Role.objects.get(nom='Enfant suivi'), + nom='Haddock', prenom='Ursule', genre='M', date_naissance=date(2008, 11, 6), + ) + aemo01 = LibellePrestation.objects.get(code='aemo01') + Prestation.objects.bulk_create([ + Prestation( + auteur=self.user_aemo, famille=fam, date_prestation=date(2019, 10, 21), lib_prestation=aemo01, duree='3:40' + ), + Prestation( + auteur=self.user_aemo, famille=fam, date_prestation=date(2019, 10, 22), lib_prestation=aemo01, duree='6:40' + ), + Prestation( + auteur=self.user_aemo, famille=fam, date_prestation=date(2019, 10, 30), lib_prestation=aemo01, duree='2:00' + ), + ]) + for prest in Prestation.objects.all(): + prest.intervenants.add(self.user_aemo) + + exp = TestExporter() + with patch('aemo.views.ExportReporting', new=exp): + self.client.post(reverse('export-prestation'), {'mois': '10', 'annee': '2019'}) + sheet_name = 'En_cours_10.2019' + self.assertEqual(len(exp.sheets[sheet_name]), 3) + self.assertEqual( + [(line[2], line[3], line[24]) for line in exp.sheets[sheet_name]], + [('Nom', 'Prenom', 'H. Évaluation'), + ('Haddock', 'Ursule', timedelta(hours=6, minutes=10)), + ('Haddock', 'Toto', timedelta(hours=6, minutes=10)), + ] + ) + + def test_export_nouvelle_famille(self): + fam = self.create_famille() + fam.suivi.date_demande = '2019-10-20' + fam.suivi.date_debut_suivi = '2019-10-21' + fam.suivi.motif_demande = ['integration'] + fam.suivi.save() + Prestation.objects.bulk_create([ + Prestation(auteur=self.user_aemo, famille=fam, date_prestation=date(2019, 10, 21), duree='3:40'), + Prestation(auteur=self.user_aemo, famille=fam, date_prestation=date(2019, 10, 22), duree='6:40'), + # Not included in this month + Prestation(auteur=self.user_aemo, famille=fam, date_prestation=date(2019, 11, 1), duree='2:00'), + ]) + self.assertEqual(Prestation.objects.filter(famille=fam).count(), 3) + for p in Prestation.objects.filter(famille=fam): + p.intervenants.set([self.user_aemo]) + + exp = TestExporter() + with patch('aemo.views.ExportReporting', new=exp): + self.client.post(reverse('export-prestation'), {'mois': '10', 'annee': '2019'}) + sheet_name = 'Nouveaux_10.2019' + self.assertEqual(len(exp.sheets[sheet_name]), 2) + self.assertEqual( + exp.sheets[sheet_name][1], + ['Fondation Transit', 'AEMO', 'Haddock', 'Toto', 'M', '16.02.2010', 'Château1', '2000', 'Moulinsart', 'NE', + 'Sybarnez Tina', '', '', 'Haddock', 'Archibald', 'Conjointe', 'Divorcé', '', 'NON', 1, + '20.10.2019', '', 'Aide à l’intégration', '21.10.2019'] + ) + + def test_export_total_prestation_mois_courant(self): + fam = self.create_famille() + fam.suivi.date_demande = '2019-10-20' + fam.suivi.save() + aemo01 = LibellePrestation.objects.get(code='aemo01') + Prestation.objects.bulk_create([ + Prestation( + auteur=self.user_aemo, famille=fam, date_prestation=date(2019, 10, 21), lib_prestation=aemo01, duree='3:40' + ), + Prestation( + auteur=self.user_aemo, famille=fam, date_prestation=date(2019, 10, 22), lib_prestation=aemo01, duree='6:40' + ), + # Not included in this month + Prestation( + auteur=self.user_aemo, famille=fam, date_prestation=date(2019, 11, 1), lib_prestation=aemo01, duree='2:00' + ), + ]) + for p in Prestation.objects.filter(famille=fam): + p.intervenants.set([self.user_aemo]) + + exp = TestExporter() + with patch('aemo.views.ExportReporting', new=exp): + self.client.post(reverse('export-prestation'), {'mois': '10', 'annee': '2019'}) + self.assertEqual(len(exp.sheets['En_cours_10.2019']), 2) + self.assertEqual(exp.sheets['En_cours_10.2019'][1][24], timedelta(hours=10, minutes=20)) + + def test_export_prest_gen(self): + familles = [self.create_famille('Fam_{}'.format(i)) for i in range(5)] + for famille in familles: + famille.suivi.date_demande = date(2019, 10, 1) + famille.suivi.save() + prestation_data = { + 'auteur': self.user_aemo, 'famille': None, 'date_prestation': date(2019, 10, 21), + 'lib_prestation': LibellePrestation.objects.get(code='aemo03') + } + Prestation.objects.create(**{**prestation_data, 'duree': '6:50'}) + Prestation.objects.create(**{**prestation_data, 'duree': '3:50'}) + + for prest in Prestation.objects.all(): + prest.intervenants.add(self.user_aemo) + + exp = TestExporter() + with patch('aemo.views.ExportReporting', new=exp): + self.client.post(reverse('export-prestation'), self.cfg_export_month) + self.assertEqual(len(exp.sheets[self.cfg_sheet]), 6) + self.assertEqual(format_duree(exp._total_spe['gen']), '10:40') + # Les 10h40 sont divisées par le nombre d'enfants suivis (= 5 * 2h08): + self.assertEqual(exp.sheets[self.cfg_sheet][1][26], timedelta(hours=2, minutes=8)) + self.assertEqual(exp.sheets[self.cfg_sheet][2][26], timedelta(hours=2, minutes=8)) + self.assertEqual(exp.sheets[self.cfg_sheet][3][26], timedelta(hours=2, minutes=8)) + self.assertEqual(exp.sheets[self.cfg_sheet][4][26], timedelta(hours=2, minutes=8)) + self.assertEqual(exp.sheets[self.cfg_sheet][5][26], timedelta(hours=2, minutes=8)) + + def test_export_evaluation(self): + familles = [self.create_famille('Fam_{}'.format(i)) for i in range(3)] + for famille in familles: + famille.suivi.date_demande = date(2019, 10, 1) + famille.suivi.save() + prestation_data = { + 'auteur': self.user_aemo, 'date_prestation': date(2019, 10, 21), + 'lib_prestation': LibellePrestation.objects.get(code='aemo01'), + } + Prestation.objects.bulk_create([ + Prestation(**{**prestation_data, 'famille': familles[0], 'duree': '6:50'}), + Prestation(**{**prestation_data, 'famille': familles[0], 'duree': '1:00'}), + Prestation(**{**prestation_data, 'famille': familles[1], 'duree': '1:25'}), + Prestation(**{**prestation_data, 'famille': familles[2], 'duree': '4:40'}), + ]) + for prest in Prestation.objects.all(): + prest.intervenants.add(self.user_aemo) + exp = TestExporter() + with patch('aemo.views.ExportReporting', new=exp): + self.client.post(reverse('export-prestation'), self.cfg_export_month) + sheet_name = exp.sheets[self.cfg_sheet] + self.assertEqual(len(sheet_name), 4) + self.assertEqual(sheet_name[1][24], timedelta(hours=7, minutes=50)) + self.assertEqual(sheet_name[2][24], timedelta(hours=1, minutes=25)) + self.assertEqual(sheet_name[3][24], timedelta(hours=4, minutes=40)) + self.assertEqual(format_duree(exp._total_spe['eval']), '13:55') + + def test_export_suivi(self): + familles = [self.create_famille('Fam_{}'.format(i)) for i in range(3)] + for famille in familles: + famille.suivi.date_demande = date(2019, 10, 1) + famille.suivi.save() + prestation_data = dict( + {'auteur': self.user_aemo, 'date_prestation': date(2019, 10, 21), + 'lib_prestation': LibellePrestation.objects.get(code='aemo02')} + ) + Prestation.objects.bulk_create([ + Prestation(**{**prestation_data, 'famille': familles[0], 'duree': '1:10'}), + Prestation(**{**prestation_data, 'famille': familles[0], 'duree': '2:20'}), + Prestation(**{**prestation_data, 'famille': familles[1], 'duree': '3:30'}), + Prestation(**{**prestation_data, 'famille': familles[2], 'duree': '4:45'}), + ]) + for prest in Prestation.objects.all(): + prest.intervenants.add(self.user_aemo) + exp = TestExporter() + with patch('aemo.views.ExportReporting', new=exp): + self.client.post(reverse('export-prestation'), self.cfg_export_month) + sheet_name = exp.sheets[self.cfg_sheet] + self.assertEqual(len(sheet_name), 4) + self.assertEqual(sheet_name[1][25], timedelta(hours=3, minutes=30)) + self.assertEqual(sheet_name[2][25], timedelta(hours=3, minutes=30)) + self.assertEqual(sheet_name[3][25], timedelta(hours=4, minutes=45)) + self.assertEqual(format_duree(exp._total_spe['suivi']), '11:45') + + def test_export_authorization(self): + self.client.force_login(self.user_externe) + # Test denied access without export_stats permission + with self.assertLogs('django.request', level='WARNING'): + response = self.client.get(reverse('export-prestation')) + self.assertEqual(response.status_code, 403) + + self.user_externe.user_permissions.add(Permission.objects.get(codename='export_stats')) + # Test default selected options in export form + with patch('aemo.views.date') as mock_date: + mock_date.today.return_value = date(2019, 7, 3) + response = self.client.get(reverse('export-prestation')) + self.assertContains( + response, + '' + ) + self.assertContains( + response, + '' + ) + + mock_date.today.return_value = date(2020, 1, 30) + response = self.client.get(reverse('export-prestation')) + self.assertContains( + response, + '' + ) + self.assertContains( + response, + '' + ) + + response = self.client.post(reverse('export-prestation'), data={'mois': '2', 'annee': '2019'}) + self.assertEqual(response['Content-Type'], openxml_contenttype) + self.assertEqual( + response['Content-Disposition'], + 'attachment; filename="aemo_reporting_02_2019.xlsx"' + ) + + def test_openxml_export_sheets(self): + # "Nouvelle" famille + famille = Famille.objects.create_famille( + equipe='littoral', + nom='NouvelleFamille', rue='Château 4', npa=2000, localite='Moulinsart', + ) + famille.suivi.date_demande = '2019-02-10' + # famille.suivi.date_fin_suivi = '2019-05-30' + famille.suivi.save() + Personne.objects.create_personne( + famille=famille, role=Role.objects.get(nom='Enfant suivi'), + nom='NouvelleFamille', prenom='Hégésipe', genre='M', date_naissance=date(1996, 2, 16) + ) + + # Famille "en cours" + famille = Famille.objects.create_famille( + equipe='littoral', + nom='FamilleEnCours', rue='Château 5', npa=2000, localite='Moulinsart', + autorite_parentale='conjointe', statut_marital='divorce', monoparentale=False, + ) + famille.suivi.date_demande = '2019-01-01' + famille.suivi.date_debut_suivi = '2019-01-28' + ope_service = Service.objects.create(sigle="OPEC") + famille.suivi.ope_referent = Contact.objects.create( + nom="Duplain", prenom="Irma", service=ope_service + ) + famille.suivi.save() + Personne.objects.create_personne( + famille=famille, role=Role.objects.get(nom='Enfant suivi'), + nom='FamilleEnCours', prenom='Alain', genre='M', date_naissance=date(2003, 4, 23), + localite='Moulinsart', + ) + Personne.objects.create_personne( + famille=famille, role=self.role_mere, + nom='FamilleEnCours', prenom='Judith', genre='F', date_naissance=date(1974, 11, 2) + ) + Personne.objects.create_personne( + famille=famille, role=self.role_pere, + nom='NomDuPere', prenom='Hans', genre='M', date_naissance=date(1968, 3, 13) + ) + + # Famille "terminée" + famille = Famille.objects.create_famille( + nom='FamilleTerminée', rue='Château 6', npa=2000, localite='Moulinsart', + ) + famille.suivi.date_demande = '2018-10-02' + famille.suivi.date_debut_suivi = '2018-11-11' + famille.suivi.date_fin_suivi = '2019-02-20' + famille.suivi.motif_fin_suivi = 'relai' + famille.suivi.save() + Personne.objects.create_personne( + famille=famille, role=self.enf_suivi, + nom='FamilleTerminée', prenom='Jeanne', genre='F', date_naissance=date(1998, 12, 14) + ) + + self.client.force_login(self.user_admin) + exp = TestExporter() + with patch('aemo.views.ExportReporting', new=exp): + self.client.post(reverse('export-prestation'), {'mois': '2', 'annee': '2019'}) + + self.assertEqual(len(exp.sheets['En_cours_02.2019']), 4) + self.assertEqual(exp.sheets['En_cours_02.2019'][0], self.entetes_en_cours) + self.assertEqual( + exp.sheets['En_cours_02.2019'][1], + ['Fondation Transit', 'AEMO', 'FamilleEnCours', 'Alain', 'M', '23.04.2003', '', '', 'Moulinsart', 'NE', + 'Duplain Irma', 'FamilleEnCours', 'Judith', 'NomDuPere', 'Hans', 'Conjointe', 'Divorcé', '', 'NON', 1, + '01.01.2019', '', '', '28.01.2019', + timedelta(0), timedelta(0), timedelta(0)] + ) + self.assertEqual( + [(line[2], line[3]) for line in exp.sheets['En_cours_02.2019'][1:]], + [('FamilleEnCours', 'Alain'), ('FamilleTerminée', 'Jeanne'), ('NouvelleFamille', 'Hégésipe')] + ) + + self.assertEqual(len(exp.sheets['Nouveaux_02.2019']), 2) + self.assertEqual(exp.sheets['Nouveaux_02.2019'][0], self.entetes_nouveaux) + self.assertEqual( + exp.sheets['Nouveaux_02.2019'][1], + ['Fondation Transit', 'AEMO', 'NouvelleFamille', 'Hégésipe', 'M', '16.02.1996', '', '', '', 'NE', + '', '', '', '', '', '', '', '', '', 1, + '10.02.2019', '', '', '' + ] + ) + self.assertEqual(len(exp.sheets['Terminés_02.2019']), 2) + self.assertEqual(exp.sheets['Terminés_02.2019'][0], self.entetes_termines) + self.assertEqual( + exp.sheets['Terminés_02.2019'][1], + ['Fondation Transit', 'AEMO', 'FamilleTerminée', 'Jeanne', 'F', '14.12.1998', '', '', '', 'NE', + '', '', '', '', '', '', '', '', '', 1, + '02.10.2018', '', '', '11.11.2018', + '20.02.2019', 'Relai vers autre service', '', timedelta(0) + ] + ) + + famille = Famille.objects.get(nom='NouvelleFamille') + famille.suivi.motif_fin_suivi = 'erreur' + famille.suivi.date_fin_suivi = date(2019, 2, 17) + famille.suivi.save() + + famille = Famille.objects.get(nom='FamilleTerminée') + famille.suivi.motif_fin_suivi = 'erreur' + famille.suivi.date_fin_suivi = date(2019, 2, 17) + famille.suivi.save() + + exp = TestExporter() + with patch('aemo.views.ExportReporting', new=exp): + self.client.post(reverse('export-prestation'), {'mois': '2', 'annee': '2019'}) + # Plus de famille, puisque les motifs de fin de suivi "erreur" ne sont pas pris en compte + self.assertEqual(len(exp.sheets['Nouveaux_02.2019']), 1) + self.assertEqual(len(exp.sheets['Terminés_02.2019']), 1) + # 'NouvelleFamille' plus exportée + self.assertEqual(len(exp.sheets['En_cours_02.2019']), 2) diff --git a/aemo/urls.py b/aemo/urls.py new file mode 100644 index 0000000..c053201 --- /dev/null +++ b/aemo/urls.py @@ -0,0 +1,165 @@ +from django.apps import apps +from django.urls import include, path +from aemo import views, views_stats + +urlpatterns = [ + path('contact/add/', views.ContactCreateView.as_view(), name='contact-add'), + path('contact/list/', views.ContactListView.as_view(), name='contact-list'), + path('contact//edit/', views.ContactUpdateView.as_view(), name='contact-edit'), + path('contact//delete/', views.ContactDeleteView.as_view(), name='contact-delete'), + path('contact/dal/', views.ContactAutocompleteView.as_view(), name='contact-autocomplete'), + path('contact/dal-ope/', views.ContactAutocompleteView.as_view(ope=True), + name='contact-ope-autocomplete'), + path('contact/dal-externe/', views.ContactExterneAutocompleteView.as_view(), + name='contact-externe-autocomplete'), + path('contact/test/doublon/', views.ContactTestDoublon.as_view(), name='contact-doublon'), + + path('service/add/', views.ServiceCreateView.as_view(), name='service-add'), + path('service/list/', views.ServiceListView.as_view(), name='service-list'), + path('service//edit/', views.ServiceUpdateView.as_view(), name='service-edit'), + path('service//delete/', views.ServiceDeleteView.as_view(), name='service-delete'), + + path('famille/dal/', views.FamilleAutoCompleteView.as_view(), name="famille-autocomplete"), + # Famille + path('famille/list/', views.FamilleListView.as_view(), name='famille-list'), + path('famille/attente/', views.FamilleListView.as_view(mode='attente'), name='famille-attente'), + path('famille/add/', views.FamilleCreateView.as_view(), name='famille-add'), + path('famille//edit/', views.FamilleUpdateView.as_view(), name='famille-edit'), + path('famille//niveau/add/', views.NiveauCreateUpdateView.as_view(), name='niveau-add'), + path('famille//niveau//edit/', views.NiveauCreateUpdateView.as_view(), + name='niveau-edit' + ), + path('famille//niveau//delete/', views.NiveauDeleteView.as_view(), + name='niveau-delete'), + + # Personne + path('famille//personne/add/', views.PersonneCreateView.as_view(), + name="personne-add"), + path('famille//personne//edit/', + views.PersonneUpdateView.as_view(), name="personne-edit"), + path('famille//personne//delete/', + views.PersonneDeleteView.as_view(), name='personne-delete'), + + path('personne//formation/', views.FormationView.as_view(), name='formation'), + path('personne//contacts/', views.PersonneReseauView.as_view(), + name='personne-reseau-list'), + path('personne//contact/add/', views.PersonneReseauAdd.as_view(), + name='personne-reseau-add'), + path('personne//contact//remove/', views.PersonneReseauRemove.as_view(), + name='personne-reseau-remove'), + + # Prestations + path('prestation/menu/', views.PrestationMenu.as_view(), name='prestation-menu'), + path('famille//prestation/list/', views.PrestationListView.as_view(), name='journal-list'), + path('famille//prestation/add/', views.PrestationCreateView.as_view(), name='prestation-famille-add'), + path('famille//prestation//edit/', views.PrestationUpdateView.as_view(), + name='prestation-edit'), + path('famille//prestation//delete/', views.PrestationDeleteView.as_view(), + name='prestation-delete'), + path('prestation_gen/list/', views.PrestationListView.as_view(), name='prestation-gen-list'), + path('prestation_gen/add/', views.PrestationCreateView.as_view(), name='prestation-gen-add'), + + path('famille//upload/', views.DocumentUploadView.as_view(), + name='famille-doc-upload'), + path('famille//doc//delete/', views.DocumentDeleteView.as_view(), + name='famille-doc-delete'), + path('famille//reactivation/', views.FamilleReactivationView.as_view(), + name='famille-reactivation'), + + # Doc. à imprimer + path('famille//print-evaluation/', views.EvaluationPDFView.as_view(), name='print-evaluation'), + path('famille//print-info/', views.CoordonneesPDFView.as_view(), name='print-coord-famille'), + path('famille//print-journal', views.JournalPDFView.as_view(), name='print-journal'), + path('bilan//print/', views.BilanPDFView.as_view(), name='print-bilan'), + + # Rapport + path('famille//rapport/add/', views.RapportCreateView.as_view(), + name='famille-rapport-add'), + path('famille//rapport//', views.RapportDisplayView.as_view(), + name='famille-rapport-view'), + path('famille//rapport//edit/', views.RapportUpdateView.as_view(), + name='famille-rapport-edit'), + path('famille//rapport//delete/', views.RapportDeleteView.as_view(), + name='famille-rapport-delete'), + path('famille//rapport//print/', views.RapportPDFView.as_view(), + name='famille-rapport-print'), + path('famille//adresse/change/', views.FamilleAdresseChangeView.as_view(), + name='famille-adresse-change'), + + # Demande, suivi, agenda, suivis terminés + path('famille//demande/', views.DemandeView.as_view(), name='demande'), + path('famille//suivi/', views.SuiviView.as_view(), name='famille-suivi'), + path('famille//intervenant/add/', views.SuiviIntervenantCreate.as_view(), name='intervenant-add'), + path('famille//intervenant//edit/', views.SuiviIntervenantUpdateView.as_view(), + name='intervenant-edit'), + path('famille//agenda/', views.AgendaSuiviView.as_view(), name='famille-agenda'), + path('famille//bilan/add/', views.BilanEditView.as_view(is_create=True), + name='famille-bilan-add'), + path('famille//bilan//', views.BilanDetailView.as_view(), + name='famille-bilan-view'), + path('famille//bilan//edit/', views.BilanEditView.as_view(), + name='famille-bilan-edit'), + path('famille//bilan//delete/', views.BilanDeleteView.as_view(), + name='famille-bilan-delete'), + path('famille/archivable/list/', views.FamilleArchivableListe.as_view(), name='famille-archivable'), + + path('suivis_termines/', views.SuivisTerminesListView.as_view(), name='suivis-termines'), + + path('charge_utilisateurs/', views.UtilisateurChargeDossierView.as_view(), name='charge-utilisateurs'), + + path('utilisateur/', views.UtilisateurListView.as_view(), + name='utilisateur-list'), + path('utilisateur//edit/', views.UtilisateurUpdateView.as_view(), + name='utilisateur-edit'), + path('utilisateur/add/', views.UtilisateurCreateView.as_view(), + name='utilisateur-add'), + path('utilisateur//delete/', views.UtilisateurDeleteView.as_view(), + name='utilisateur-delete'), + path('utilisateur//password_reinit/', views.UtilisateurPasswordReinitView.as_view(), + name='utilisateur-password-reinit'), + path('utilisateur//otp_device/reinit/', views.UtilisateurOtpDeviceReinitView.as_view(), + name='utilisateur-otp-device-reinit'), + path('utilisateur//journalacces/', views.UtilisateurJournalAccesView.as_view(), + name='utilisateur-journalacces'), + path('utilisateur/dal/', views.UtilisateurAutocompleteView.as_view(), + name='utilisateur-autocomplete'), + path('utilisateur/desactive/list/', views.UtilisateurListView.as_view(is_active=False), + name='utilisateur-desactive-list'), + path('utilisateur//reactiver/', views.UtilisateurReactivateView.as_view(), + name='utilisateur-reactiver'), + + path('utilisateur/prestation/', views.PrestationPersonnelleListView.as_view(), + name='prestation-personnelle'), + path('prestation/generale/', views.PrestationGeneraleListView.as_view(), + name='prestation-generale'), + + path('cerclescolaire/', views.CercleScolaireListView.as_view(), + name='cercle-list'), + path('cerclescolaire//edit/', views.CercleScolaireUpdateView.as_view(), + name='cercle-edit'), + path('cerclescolaire/add/', views.CercleScolaireCreateView.as_view(), + name='cercle-add'), + path('cerclescolaire//delete/', views.CercleScolaireDeleteView.as_view(), + name='cercle-delete'), + + path('role/', views.RoleListView.as_view(), name='role-list'), + path('role//edit/', views.RoleUpdateView.as_view(), name='role-edit'), + path('role/add/', views.RoleCreateView.as_view(), name='role-add'), + path('role//delete/', views.RoleDeleteView.as_view(), name='role-delete'), + + path('permissions/', views.PermissionOverview.as_view(), name='permissions'), + + path('export/prestation/', views.ExportPrestationView.as_view(), name='export-prestation'), + + path('statistiques/', views_stats.StatistiquesView.as_view(), name='stats'), + path('statistiques/localite/', views_stats.StatistiquesParLocaliteView.as_view(), name='stats-localite'), + path('statistiques/region/', views_stats.StatistiquesParRegionView.as_view(), name='stats-region'), + path('statistiques/duree/', views_stats.StatistiquesParDureeView.as_view(), name='stats-duree'), + path('statistiques/age/', views_stats.StatistiquesParAgeView.as_view(), name='stats-age'), + path('statistiques/motifs/', views_stats.StatistiquesMotifsView.as_view(), name='stats-motifs'), + path('statistiques/prestations/', views_stats.StatistiquesPrestationView.as_view(), name='stats-prestations'), + path('statistiques/niveaux/', views_stats.StatistiquesNiveauxView.as_view(), name='stats-niveaux'), +] + +if apps.is_installed('debug_toolbar'): + urlpatterns.append(path('__debug__/', include('debug_toolbar.urls'))) diff --git a/aemo/utils.py b/aemo/utils.py new file mode 100644 index 0000000..b6957e2 --- /dev/null +++ b/aemo/utils.py @@ -0,0 +1,207 @@ +import random +import string +import unicodedata + +import requests + +from django.conf import settings +from django.core.mail import EmailMessage, mail_admins +from django.utils.dateformat import format as django_format +from django.utils.html import Urlizer + +ANTICIPATION_POUR_DEBUT_SUIVI = 90 + + +def format_d_m_Y(date): + return django_format(date, 'd.m.Y') if date else '' + + +def format_d_m_Y_HM(date): + return django_format(date, 'l d.m.Y - G:i') if date else '' + + +def format_duree(duree, centiemes=False): + if duree is None: + return '00:00' + elif isinstance(duree, str): + return duree + secondes = duree.total_seconds() + heures = secondes // 3600 + if centiemes: + # Arrondi, cf. #455 + minutes = round((secondes % 3600) / 36) + return '{:02}.{:02}'.format(int(heures), minutes) + else: + minutes = (secondes % 3600) // 60 + return '{:02}:{:02}'.format(int(heures), int(minutes)) + + +def format_Ymd(date): + return django_format(date, 'Ymd') if date else '' + + +def format_adresse(rue, npa, localite): + """ Formate the complete adress """ + + if rue and npa and localite: + return f"{rue}, {npa} {localite}" + if npa and localite: + return f"{npa} {localite}" + return f"{localite}" + + +def format_contact(telephone, email): + """ Formate the contact data (phone and email) """ + return '{} {} {}'.format(telephone, '-' if telephone != '' and email != '' else '', email) + + +def unaccent(text): + if isinstance(text, list): + text = ' '.join(text) + text = text.replace('-', ' ') + text = text.lower() + t = unicodedata.normalize('NFD', text).encode('ascii', 'ignore') + return t.decode('utf-8') + + +def is_ajax(request): + return request.META.get('HTTP_X_REQUESTED_WITH') in ['XMLHttpRequest', 'Fetch'] + + +def format_nom_prenom(nom): + if nom is None or nom == '': + return '' + if nom.startswith('de ') and len(nom) > 3: + return f"de {nom[3].upper()}{nom[4:]}" + return f"{nom[0].upper()}{nom[1:]}" + + +def is_valid_for_sms(phone): + return phone and phone[:2] == '07' + + +class SMSUrlizer(Urlizer): + """ + Replace links with short links: "<-short->" -> take 19 chars + See https://doc.smsup.ch/en/api/sms/send/short-url + """ + + url_template = '<-short->' + + def __init__(self): + self.links = [] + + def trim_url(self, url, **kwargs): + self.links.append(url) + return super().trim_url(url, **kwargs) + + +def send_sms(text, to, err): + # Try to remain below 160 chars + # https://pypi.org/project/smsutil/ if we want to check against GSM-7 + url = settings.SMSUP_SEND_URL + urlizer = SMSUrlizer() + if 'https://' in text: + text = urlizer(text) + + headers = { + "Authorization": f"Bearer {settings.SMSUP_API_TOKEN}", + "Accept": "application/json", + } + if urlizer.links: + # Presence of links requires usage of the POST API. + params = { + 'sms': { + 'message': { + 'text': text, + 'pushtype': 'alert', + 'sender': 'F.Transit', # Max 11 chars + 'links': urlizer.links, + }, + 'recipients': { + 'gsm': [{'gsmsmsid': '', 'value': to.replace(' ', '')}], + }, + }, + } + response = requests.post(url, json=params, headers=headers) + else: + params = { + 'text': text, + 'to': to.replace(' ', ''), + 'sender': 'F.Transit', # Max 11 chars + } + response = requests.get(url, params=params, headers=headers) + + result = response.json() + if not result or result.get('message') != 'OK': + mail_admins( + "[AEMO-FR] Erreur SMS", + f"{err}\n\nParams: {params}\n\n{result}", + ) + return False + return True + + +def send_email(subject, message, to): + email = EmailMessage( + subject, + message, + to=[to], + reply_to=['secretariat@fondation-transit.ch'], + ) + try: + email.send() + return True + except OSError: + return False + + +CONTINENTS = { + 'NA': [ + 'AI', 'AG', 'AW', 'BS', 'BB', 'BQ', 'BZ', 'BM', 'CA', 'KY', 'CR', 'CU', + 'CW', 'DM', 'DO', 'SV', 'GL', 'GD', 'GP', 'GT', 'HT', 'HN', 'JM', 'MQ', + 'MX', 'PM', 'MS', 'CW', 'KN', 'NI', 'PA', 'PR', 'KN', 'LC', 'PM', + 'SX', 'TT', 'TC', 'VI', 'US', 'VC', 'VG', + ], + 'SA': [ + 'AR', 'BO', 'BR', 'CL', 'CO', 'EC', 'FK', 'GF', 'GY', 'PY', 'PE', 'SR', + 'UY', 'VE', + ], + 'EU': [ + 'AL', 'AD', 'AT', 'BY', 'BE', 'BA', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', + 'FO', 'FI', 'FR', 'DE', 'GI', 'GR', 'HU', 'IS', 'IE', 'IT', 'LV', 'LI', + 'LT', 'LU', 'MK', 'MT', 'MD', 'MC', 'NL', 'NO', 'PL', 'PT', 'RO', 'RU', + 'SM', 'RS', 'SK', 'SI', 'ES', 'SE', 'CH', 'UA', 'GB', 'VA', 'RS', 'IM', + 'RS', 'ME', + ], + 'AF': [ + 'AO', 'DZ', 'BJ', 'BW', 'BF', 'BI', 'CD', 'CI', 'CM', 'CV', 'CF', 'KM', + 'CG', 'DJ', 'EG', 'GQ', 'ER', 'ET', 'GA', 'GH', 'GM', 'GW', 'GN', 'KE', + 'LS', 'LR', 'LY', 'MG', 'MW', 'ML', 'MR', 'MU', 'YT', 'MA', 'MZ', 'NA', + 'NE', 'NG', 'ST', 'RE', 'RW', 'SH', 'ST', 'SN', 'SC', 'SL', 'SO', 'SH', + 'SD', 'SZ', 'TD', 'TG', 'TN', 'TZ', 'UG', 'ZM', 'TZ', 'ZW', 'SS', 'ZA', + ], + 'AS': [ + 'AF', 'AM', 'AZ', 'BH', 'BD', 'BT', 'BN', 'KH', 'CN', 'CX', 'CC', 'IO', + 'GE', 'HK', 'IN', 'ID', 'IR', 'IQ', 'IL', 'JP', 'JO', 'KZ', 'KP', 'KR', + 'KW', 'KG', 'LA', 'LB', 'MO', 'MY', 'MV', 'MN', 'MM', 'NP', 'OM', 'PK', + 'PH', 'QA', 'SA', 'SG', 'LK', 'SY', 'TW', 'TJ', 'TH', 'TR', 'TM', 'AE', + 'UZ', 'VN', 'YE', 'PS', + ], + 'OC': [ + 'AS', 'AU', 'NZ', 'CK', 'FJ', 'PF', 'GU', 'KI', 'MP', 'MH', 'FM', 'UM', + 'NR', 'NC', 'NZ', 'NU', 'NF', 'PW', 'PG', 'MP', 'SB', 'TK', 'TO', 'TV', + 'VU', 'UM', 'WF', 'WS', 'TL', + ], + 'AN': ['AQ'], +} + + +def continent_from_country_code(code): + for cont_code, country_codes in CONTINENTS.items(): + if code in country_codes: + return cont_code + + +def random_string_generator(size=10, chars=string.ascii_lowercase + string.digits): + return ''.join(random.choice(chars) for _ in range(size)) diff --git a/aemo/views.py b/aemo/views.py new file mode 100644 index 0000000..a15a531 --- /dev/null +++ b/aemo/views.py @@ -0,0 +1,1673 @@ +import io +import calendar +import logging +from collections import OrderedDict +from datetime import date, timedelta +from operator import attrgetter + +from dal import autocomplete +from two_factor.views import SetupView as TwoFactSetupView + +from django.contrib import messages +from django.contrib.auth.mixins import PermissionRequiredMixin +from django.contrib.auth.models import Group, Permission +from django.contrib.auth.views import PasswordChangeView as AuthPasswordChangeView +from django.contrib.messages.views import SuccessMessageMixin +from django.contrib.postgres.aggregates import ArrayAgg +from django.core.exceptions import PermissionDenied +from django.db.models import ( + Case, Count, DurationField, F, OuterRef, Prefetch, Q, Subquery, Sum, Value, When +) +from django.db.models.deletion import ProtectedError +from django.db.models.functions import Coalesce +from django.forms import HiddenInput, modelform_factory +from django.http import FileResponse, HttpResponseRedirect, JsonResponse +from django.shortcuts import get_object_or_404, render +from django.urls import reverse, reverse_lazy +from django.utils.crypto import get_random_string +from django.views.defaults import page_not_found as django_page_not_found +from django.views.generic import ( + CreateView, DeleteView as DjangoDeleteView, DetailView, FormView, ListView, TemplateView, + UpdateView, View +) + +from .export import ExportReporting +from . import forms +from .models import ( + Bilan, CercleScolaire, Contact, Document, Famille, Formation, Intervenant, JournalAcces, + LibellePrestation, Niveau, Personne, Prestation, Rapport, Role, Service, Suivi, + Utilisateur +) +from .pdf import BilanPdf, CoordonneesFamillePdf, EvaluationPdf, JournalPdf, RapportPdf +from .utils import format_d_m_Y, is_ajax + +logger = logging.getLogger('django') + +MSG_READ_ONLY = "Vous n'avez pas les droits nécessaires pour modifier cette page" +MSG_ACCESS_DENIED = "Vous n’avez pas la permission d’accéder à cette page." + + +class CreateUpdateView(UpdateView): + """Mix generic Create and Update views.""" + is_create = False + + def get_object(self): + return None if self.is_create else super().get_object() + + +class DeleteView(DjangoDeleteView): + """ + Nous ne suivons pas la méthode Django d'afficher une page de confirmation + avant de supprimer un objet, mais nous avertissons avec un message JS avant + de POSTer directement la suppression. Pour cela, nous autorisons uniquement + la méthode POST. + """ + http_method_names = ['post'] + + +class JournalAccesMixin: + """ + Classe Mixin pour journaliser les accès aux familles. + """ + def get(self, *args, **kwargs): + acces_ordinaire = self.famille.access_ok(self.request.user) + if not acces_ordinaire and not self.request.GET.get('confirm') == '1': + return render( + self.request, 'aemo/acces_famille.html', + {'url': self.request.path, 'famille': self.famille} + ) + JournalAcces.objects.create( + famille=self.famille, + utilisateur=self.request.user, + ordinaire=acces_ordinaire + ) + return super().get(*args, **kwargs) + + +class BasePDFView(View): + obj_class = None + pdf_class = None + produce_kwargs = {} + + def get_object(self): + return get_object_or_404(self.obj_class, pk=self.kwargs[getattr(self, 'pk_url_kwarg', 'pk')]) + + def get(self, request, *args, **kwargs): + instance = self.get_object() + temp = io.BytesIO() + pdf = self.pdf_class(temp, instance, **self.produce_kwargs) + pdf.produce() + filename = pdf.get_filename() + temp.seek(0) + return FileResponse(temp, as_attachment=True, filename=filename) + + +class EquipeRequiredMixin: + def dispatch(self, request, *args, **kwargs): + self.famille = get_object_or_404(Famille, pk=kwargs['pk']) + self.check_access(request) + return super().dispatch(request, *args, **kwargs) + + def check_access(self, request): + if not self.famille.can_view(request.user): + raise PermissionDenied(MSG_ACCESS_DENIED) + self.readonly = not self.famille.can_edit(request.user) + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + if self.readonly: + messages.info(self.request, MSG_READ_ONLY) + context['can_edit'] = not self.readonly + context['famille'] = self.famille + return context + + +class CheckCanEditMixin: + def dispatch(self, request, *args, **kwargs): + if not self.get_object().can_edit(request.user): + raise PermissionDenied(MSG_ACCESS_DENIED) + return super().dispatch(request, *args, **kwargs) + + +class HomeView(TemplateView): + template_name = 'index.html' + + +class SetupView(TwoFactSetupView): + def get(self, request, *args, **kwargs): + # The original view is short-circuiting to complete is a device exists. + # We want to allow adding a second device if needed. + return super(TwoFactSetupView, self).get(request, *args, **kwargs) + + +class PasswordChangeView(AuthPasswordChangeView): + success_url = reverse_lazy('home') + + def form_valid(self, form): + response = super().form_valid(form) + messages.success(self.request, "Votre mot de passe a bien été modifié.") + return response + + +class ContactCreateView(CreateView): + template_name = 'aemo/contact_edit.html' + model = Contact + form_class = forms.ContactForm + success_url = reverse_lazy('contact-list') + action = 'Création' + + def form_valid(self, form): + contact = form.save() + for_pers = self.request.GET.get('forpers') + if for_pers: + pers = get_object_or_404(Personne, pk=for_pers) + pers.reseaux.add(contact) + return HttpResponseRedirect(reverse('personne-reseau-list', args=[pers.pk])) + return HttpResponseRedirect(self.success_url) + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context.update({ + 'role_form': forms.RoleForm(), + 'service_form': forms.ServiceForm(), + }) + return context + + +class ContactListView(ListView): + template_name = 'aemo/contact_list.html' + model = Contact + paginate_by = 20 + + def get(self, request, *args, **kwargs): + self.filter_form = forms.ContactFilterForm(data=self.request.GET or None) + return super().get(request, *args, **kwargs) + + def get_queryset(self): + contacts = Contact.objects.filter(est_actif=True).exclude(utilisateur__isnull=False).prefetch_related('roles') + + if self.filter_form.is_bound and self.filter_form.is_valid(): + contacts = self.filter_form.filter(contacts) + return contacts + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context.update({ + 'form': self.filter_form + }) + return context + + +class ContactUpdateView(PermissionRequiredMixin, SuccessMessageMixin, UpdateView): + permission_required = 'aemo.change_contact' + template_name = 'aemo/contact_edit.html' + model = Contact + form_class = forms.ContactForm + success_url = reverse_lazy('contact-list') + success_message = 'Le contact %(nom)s %(prenom)s a bien été modifié' + action = 'Modification' + + def delete_url(self): + return reverse('contact-delete', args=[self.object.pk]) + + +class ContactDeleteView(PermissionRequiredMixin, DeleteView): + permission_required = 'aemo.delete_contact' + model = Contact + success_url = reverse_lazy('contact-list') + + def form_valid(self, form): + self.object.est_actif = False + self.object.save() + messages.success(self.request, "Le contact %s a bien été archivé." % self.object) + return HttpResponseRedirect(self.success_url) + + +class ContactAutocompleteView(autocomplete.Select2QuerySetView): + ope = False + + def get_queryset(self): + qs = Contact.membres_ope() if self.ope else Contact.objects.filter(est_actif=True) + if self.q: + qs = qs.filter(nom__istartswith=self.q) + return qs + + +class ContactExterneAutocompleteView(autocomplete.Select2QuerySetView): + + def get_queryset(self): + qs = Contact.objects.\ + filter(est_actif=True).\ + exclude(service__sigle__startswith='OPE').\ + exclude(service__sigle='CRNE') + if self.q: + qs = qs.filter(nom__istartswith=self.q) + return qs + + +class ContactTestDoublon(View): + def post(self, request, *args, **kwargs): + nom = request.POST.get('nom') + prenom = request.POST.get('prenom') + contacts = Contact.objects.filter(nom=nom, prenom=prenom) + data = '' + if contacts.exists(): + data = [{'nom': c.nom, 'prenom': c.prenom} for c in contacts] + return JsonResponse(data, safe=False) + + +class ServiceCreateView(PermissionRequiredMixin, CreateView): + permission_required = 'aemo.add_service' + template_name = 'aemo/service_edit.html' + model = Service + form_class = forms.ServiceForm + success_url = reverse_lazy('service-list') + action = 'Création' + + def form_valid(self, form): + if is_ajax(self.request): + service = form.save() + return JsonResponse({'pk': service.pk, 'sigle': service.sigle}) + return super().form_valid(form) + + def form_invalid(self, form): + if is_ajax(self.request): + return JsonResponse({'error': form.errors.as_text()}) + return super().form_invalid(form) + + +class ServiceListView(ListView): + template_name = 'aemo/service_list.html' + model = Service + + def get_queryset(self): + return Service.objects.exclude(sigle='FAMILLE') + + +class ServiceUpdateView(PermissionRequiredMixin, UpdateView): + permission_required = 'aemo.change_service' + template_name = 'aemo/service_edit.html' + model = Service + form_class = forms.ServiceForm + success_url = reverse_lazy('service-list') + action = 'Modification' + + def delete_url(self): + return reverse('service-delete', args=[self.object.pk]) + + +class ServiceDeleteView(PermissionRequiredMixin, DeleteView): + permission_required = 'aemo.delete_service' + model = Service + success_url = reverse_lazy('service-list') + + +class FormationView(SuccessMessageMixin, UpdateView): + template_name = 'aemo/formation_edit.html' + model = Formation + form_class = forms.FormationForm + success_message = 'Les modifications ont été enregistrées avec succès' + + def get_object(self, queryset=None): + personne = get_object_or_404(Personne, pk=self.kwargs['pk']) + self.famille = get_object_or_404(Famille, pk=personne.famille_id) + return personne.formation + + def get_form_kwargs(self): + return { + **super().get_form_kwargs(), + 'readonly': not self.famille.can_edit(self.request.user) + } + + def get_success_url(self): + return self.famille.edit_url + + def get_context_data(self, **kwargs): + return {**super().get_context_data(**kwargs), 'famille': self.famille} + + +class PersonneBaseMixin: + template_name = 'aemo/personne_edit.html' + model = Personne + form_class = forms.PersonneForm + require_edit = False + + def dispatch(self, request, *args, **kwargs): + self.famille = get_object_or_404(Famille, pk=kwargs['pk']) + if not self.famille.can_view(request.user): + raise PermissionDenied("Vous n’avez pas la permission d’accéder à cette page.") + elif self.require_edit and not self.famille.can_edit(request.user): + raise PermissionDenied("Vous n’avez pas la permission d’accéder à cette page.") + return super().dispatch(request, *args, **kwargs) + + def get_context_data(self, **kwargs): + context = {**super().get_context_data(**kwargs), 'famille': self.famille} + if self.object and self.object.role.nom == 'Enfant suivi': + context['enfant'] = self.object + return context + + def get_success_url(self): + return self.famille.edit_url + + +class PersonneCreateView(PersonneBaseMixin, CreateView): + action = 'Membre de la famille ' + require_edit = True + + def get_form_kwargs(self): + kwargs = super().get_form_kwargs() + kwargs['famille'] = self.famille + kwargs['role'] = self.request.GET.get('role', None) + return kwargs + + def form_valid(self, form): + response = super().form_valid(form) + if self.object.famille.archived_at: + self.object.famille.archived_at = None + self.object.famille.save() + messages.info(self.request, "La famille a été sortie des archives") + return response + + def get_success_url(self): + return self.famille.redirect_after_personne_creation(self.object) + + +class PersonneUpdateView(SuccessMessageMixin, PersonneBaseMixin, UpdateView): + pk_url_kwarg = 'obj_pk' + action = 'Modification' + success_message = 'Les modifications ont été enregistrées avec succès' + + def get_form_kwargs(self): + return {**super().get_form_kwargs(), 'readonly': not self.famille.can_edit(self.request.user)} + + def delete_url(self): + return reverse('personne-delete', args=[self.famille.pk, self.object.pk]) + + +class PersonneDeleteView(PersonneBaseMixin, DeleteView): + require_edit = True + form_class = DeleteView.form_class + + def get_object(self, *args, **kwargs): + pers = get_object_or_404(Personne, pk=self.kwargs['obj_pk']) + if pers.role.nom == "Enfant suivi": + raise PermissionDenied( + "Un enfant suivi ne peut pas être directement supprimé. Si c’est " + "vraiment ce que vous voulez, mettez-le d’abord comme Enfant non suivi." + ) + return pers + + +class PersonneReseauView(DetailView): + template_name = 'aemo/personne_reseau_list.html' + model = Personne + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + famille = get_object_or_404(Famille, pk=self.object.famille_id) + context.update({ + 'famille': famille, + 'form': forms.ContactExterneAutocompleteForm(), + 'reseau': list(self.object.reseaux.all().order_by('nom')), + }) + try: + pediatre = self.object.suivienfant.pediatre + except AttributeError: + pass + else: + if pediatre: + context['reseau'].append(pediatre) + return context + + +class PersonneReseauAdd(View): + def post(self, request, *args, **kwargs): + pers = get_object_or_404(Personne, pk=kwargs['pk']) + obj_pk = request.POST.getlist('contacts[]') + for obj in obj_pk: + contact = get_object_or_404(Contact, pk=obj) + pers.reseaux.add(contact) + return JsonResponse({'is_valid': True}) + + +class PersonneReseauRemove(View): + def post(self, request, *args, **kwargs): + pers = get_object_or_404(Personne, pk=kwargs['pk']) + contact = get_object_or_404(Contact, pk=kwargs['obj_pk']) + pers.reseaux.remove(contact) + return HttpResponseRedirect(reverse('personne-reseau-list', args=[pers.pk])) + + +class UtilisateurListView(ListView): + template_name = 'aemo/utilisateur_list.html' + model = Utilisateur + is_active = True + paginate_by = 50 + + def get_queryset(self): + return Utilisateur.objects.filter(date_desactivation__isnull=self.is_active) + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context.update({ + 'active_users': self.is_active, + }) + return context + + +class UtilisateurReactivateView(PermissionRequiredMixin, View): + permission_required = 'aemo.delete_utilisateur' + + def post(self, request, *args, **kwargs): + utilisateur = get_object_or_404(Utilisateur, pk=self.kwargs['pk']) + utilisateur.is_active = True + utilisateur.est_actif = True + utilisateur.date_desactivation = None + utilisateur.save() + return HttpResponseRedirect(reverse('utilisateur-list')) + + +class UtilisateurCreateView(SuccessMessageMixin, PermissionRequiredMixin, CreateView): + permission_required = 'aemo.add_utilisateur' + + template_name = 'aemo/utilisateur_edit.html' + model = Utilisateur + form_class = forms.UtilisateurForm + success_url = reverse_lazy('utilisateur-list') + success_message = "L’utilisateur «%(username)s» a été créé avec le mot de passe «%(password)s»." + + def form_valid(self, form): + form.instance.first_name = form.cleaned_data['prenom'] + form.instance.last_name = form.cleaned_data['nom'] + form.instance.service, _ = Service.objects.get_or_create(sigle='CRNE', defaults={'sigle': 'CRNE'}) + pwd = get_random_string(length=10) + form.instance.set_password(pwd) + form.cleaned_data['password'] = pwd # for success message + return super().form_valid(form) + + +class UtilisateurUpdateView(PermissionRequiredMixin, UpdateView): + permission_required = 'aemo.change_utilisateur' + + template_name = 'aemo/utilisateur_edit.html' + model = Utilisateur + form_class = forms.UtilisateurForm + success_url = reverse_lazy('utilisateur-list') + + def delete_url(self): + return reverse('utilisateur-delete', args=[self.object.pk]) + + +class UtilisateurPasswordReinitView(PermissionRequiredMixin, View): + permission_required = 'aemo.change_utilisateur' + + def post(self, request, *args, **kwargs): + utilisateur = get_object_or_404(Utilisateur, pk=self.kwargs['pk']) + pwd = get_random_string(length=10) + utilisateur.set_password(pwd) + utilisateur.save() + messages.success(request, 'Le nouveau mot de passe de «%s» est «%s».' % (utilisateur, pwd)) + return HttpResponseRedirect(reverse('utilisateur-edit', kwargs=self.kwargs)) + + +class UtilisateurOtpDeviceReinitView(PermissionRequiredMixin, View): + permission_required = 'aemo.change_utilisateur' + + def post(self, request, *args, **kwargs): + utilisateur = get_object_or_404(Utilisateur, pk=self.kwargs['pk']) + if utilisateur.totpdevice_set.exists(): + utilisateur.totpdevice_set.all().delete() + messages.success(request, 'Le mobile de «%s» a été réinitialisé.' % utilisateur) + else: + messages.error(request, 'Aucune configuration mobile trouvée pour «%s»' % utilisateur) + return HttpResponseRedirect(reverse('utilisateur-edit', kwargs=self.kwargs)) + + +class UtilisateurJournalAccesView(PermissionRequiredMixin, ListView): + permission_required = 'aemo.change_utilisateur' + template_name = 'aemo/utilisateur_journal.html' + paginate_by = 50 + model = JournalAcces + + def get_queryset(self): + return self.model.objects.filter(utilisateur_id=self.kwargs['pk']).order_by('-quand') + + def get_context_data(self, **kwargs): + return { + **super().get_context_data(**kwargs), + 'utilisateur': get_object_or_404(Utilisateur, pk=self.kwargs['pk']), + } + + +class UtilisateurChargeDossierView(PermissionRequiredMixin, TemplateView): + template_name = 'aemo/charge_utilisateurs.html' + permission_required = 'aemo.change_utilisateur' + + def get_queryset(self): + self.filter_form = forms.EquipeFilterForm(data=self.request.GET or None) + + qs_utilisateurs = Utilisateur.objects.filter( + roles__nom__in=['Educ', 'Psy'], date_desactivation__isnull=True + ).exclude( + roles__nom__in=['Responsable/coordinateur'] + ).order_by('nom', 'prenom').distinct() + if self.filter_form.is_bound and self.filter_form.is_valid(): + qs_utilisateurs = qs_utilisateurs.filter(equipe=self.filter_form.cleaned_data['equipe']) + + # cf requete similaire dans FamilleListView + intervs = Intervenant.objects.filter( + Q(suivi__date_fin_suivi__isnull=True) & ( + Q(date_fin__isnull=True) | Q(date_fin__gt=date.today()) + ) + ).values('intervenant').annotate( + familles=ArrayAgg( + "suivi__famille_id", + distinct=True + ), + nbre_coord=Count( + 'id', filter=Q(suivi__heure_coord=True), + distinct=True + ), + nbre_eval=Count('id', filter=( + Q(suivi__date_debut_suivi__isnull=True) + ), distinct=True), + nbre_suivi=Count('id', filter=( + Q(suivi__date_debut_suivi__isnull=False) + ), distinct=True), + ).order_by('intervenant__id').values( + 'intervenant__id', 'familles', 'nbre_coord', 'nbre_eval', 'nbre_suivi' + ) + intervs_dict = {line['intervenant__id']: line for line in intervs} + + familles = dict(Famille.objects.filter( + suivi__date_fin_suivi__isnull=True + ).with_niveau_interv().values_list('pk', 'niveau_interv')) + + utilisateurs = [] + charge_map = {None: 0, 0: 0, 1: 1, 2: 2, 3: 5} + for util in qs_utilisateurs: + for key in 'familles', 'nbre_coord', 'nbre_eval', 'nbre_suivi': + setattr(util, key, intervs_dict.get(util.pk, {}).get(key, [] if key == 'familles' else 0)) + util.charge = sum([charge_map[familles[fam_pk]] for fam_pk in util.familles]) + if util.taux_activite == 0 and util.charge is None: + continue + util.heures = util.charge + util.nbre_coord if util.charge is not None else 0 + util.charge_diff = util.charge_max - util.heures + utilisateurs.append(util) + return utilisateurs + + def get_context_data(self, **kwargs): + return { + **super().get_context_data(**kwargs), + 'utilisateurs': self.get_queryset(), + 'filter_form': self.filter_form, + } + + +class UtilisateurDeleteView(PermissionRequiredMixin, DeleteView): + """Archive, ne supprime pas réellement.""" + permission_required = 'aemo.change_utilisateur' + + model = Utilisateur + success_url = reverse_lazy('utilisateur-list') + + def form_valid(self, form): + self.object.is_active = False # C'est ce flag qui empêche la connexion au système + self.object.est_actif = False + self.object.date_desactivation = date.today() + self.object.save() + return HttpResponseRedirect(self.success_url) + + +class UtilisateurAutocompleteView(autocomplete.Select2QuerySetView): + def get_queryset(self): + qs = Utilisateur.objects.filter(service__sigle='CRNE', date_desactivation__isnull=True) + + if self.q: + qs = qs.filter(nom__istartswith=self.q) + return qs + + +class CercleScolaireListView(ListView): + template_name = 'aemo/cercle_scolaire_list.html' + model = CercleScolaire + + +class CercleScolaireUpdateView(PermissionRequiredMixin, UpdateView): + permission_required = 'aemo.change_cerclescolaire' + template_name = 'aemo/cercle_scolaire_edit.html' + model = CercleScolaire + fields = '__all__' + success_url = reverse_lazy('cercle-list') + + def delete_url(self): + return reverse('cercle-delete', args=[self.object.pk]) + + +class CercleScolaireCreateView(PermissionRequiredMixin, CreateView): + permission_required = 'aemo.add_cerclescolaire' + template_name = 'aemo/cercle_scolaire_edit.html' + model = CercleScolaire + fields = '__all__' + success_url = reverse_lazy('cercle-list') + + +class CercleScolaireDeleteView(PermissionRequiredMixin, DeleteView): + permission_required = 'aemo.delete_cerclescolaire' + model = CercleScolaire + success_url = reverse_lazy('cercle-list') + + +class RoleListView(ListView): + template_name = 'aemo/role_list.html' + model = Role + + def get_context_data(self, **kwargs): + return { + **super().get_context_data(**kwargs), + 'editeur_help': self.model._meta.get_field('est_editeur').help_text, + } + + +class RoleUpdateView(PermissionRequiredMixin, UpdateView): + permission_required = 'aemo.change_role' + template_name = 'aemo/role_edit.html' + model = Role + fields = '__all__' + success_url = reverse_lazy('role-list') + + def delete_url(self): + if self.object.personne_set.count() == 0: + return reverse('role-delete', args=[self.object.pk]) + + +class RoleCreateView(PermissionRequiredMixin, CreateView): + permission_required = 'aemo.add_role' + template_name = 'aemo/role_edit.html' + model = Role + fields = '__all__' + success_url = reverse_lazy('role-list') + + def form_valid(self, form): + if is_ajax(self.request): + role = form.save() + return JsonResponse({'pk': role.pk, 'nom': role.nom}) + return super().form_valid(form) + + def form_invalid(self, form): + if is_ajax(self.request): + return JsonResponse({'error': form.errors.as_text()}) + return super().form_invalid(form) + + +class RoleDeleteView(PermissionRequiredMixin, DeleteView): + permission_required = 'aemo.delete_role' + model = Role + success_url = reverse_lazy('role-list') + + def form_valid(self, form): + try: + return super().form_valid(form) + except ProtectedError as e: + # TODO: Il y a certainement mieux... + messages.add_message(self.request, messages.ERROR, str(e), "Suppression impossible") + return HttpResponseRedirect(reverse('role-list')) + + +class FamilleCreateView(CreateView): + template_name = 'aemo/famille_edit.html' + model = Famille + form_class = forms.FamilleCreateForm + action = 'Nouvelle famille' + + def dispatch(self, request, *args, **kwargs): + if not request.user.has_perm('aemo.add_famille'): + raise PermissionDenied(MSG_ACCESS_DENIED) + return super().dispatch(request, *args, **kwargs) + + def form_valid(self, form): + famille = form.save() + return HttpResponseRedirect(reverse('famille-edit', args=[famille.pk])) + + +class FamilleUpdateView(EquipeRequiredMixin, SuccessMessageMixin, UpdateView): + template_name = 'aemo/famille_edit.html' + model = Famille + famille_model = Famille + form_class = forms.FamilleForm + context_object_name = 'famille' + title = 'Modification' + archive_url = None + success_message = 'La famille %(nom)s a bien été modifiée.' + + def get_success_url(self): + return self.success_url or reverse('famille-edit', args=[self.object.pk]) + + def get_form_kwargs(self): + return {**super().get_form_kwargs(), 'readonly': self.readonly} + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context.update({ + 'enfant_suivi': Role.objects.get(nom='Enfant suivi'), + 'enfant_non_suivi': Role.objects.get(nom='Enfant non-suivi'), + }) + return context + + +class FamilleListView(ListView): + template_name = 'aemo/famille_list.html' + model = Famille + paginate_by = 20 + mode = 'normal' + normal_cols = [ + ('Nom', 'nom'), ('Adresse', 'localite'), ('Réf. AEMO', 'referents'), + ('Réf. OPE', 'referents_ope'), ('Statut', 'suivi'), ('Prior.', 'prioritaire'), + ('Niveau', 'niveau_interv'), + ] + attente_cols = [ + ('Nom', 'nom'), ('Adresse', 'localite'), ('Région', 'region'), + ('Réf. AEMO', 'referents'), ('Réf. OPE', 'referents_ope'), ('Prior.', 'prioritaire'), + ('Demande', 'date_demande'), ('Évaluation', 'evaluation'), + ] + + def get(self, request, *args, **kwargs): + if self.mode == 'attente': + self.paginate_by = None + form_class = forms.EquipeFilterForm + else: + form_class = forms.FamilleFilterForm + self.filter_form = form_class(data=self.request.GET or None) + return super().get(request, *args, **kwargs) + + def get_queryset(self): + familles = super().get_queryset().with_niveau_interv().filter( + suivi__isnull=False, suivi__date_fin_suivi__isnull=True + ).select_related( + 'suivi__ope_referent', 'suivi__ope_referent_2' + ).prefetch_related( + Prefetch( + 'suivi__intervenant_set', + queryset=Intervenant.objects.actifs().select_related('intervenant', 'role') + ), + Prefetch( + 'niveaux', queryset=Niveau.objects.order_by('-date_debut') + ), + 'suivi__intervenants', 'bilans', 'rapports' + ).order_by('nom', 'npa') + + if self.mode == 'attente': + familles = familles.filter( + suivi__date_debut_suivi__isnull=True + ).order_by( + '-suivi__demande_prioritaire', 'suivi__date_demande', + ) + if self.filter_form.is_bound and self.filter_form.is_valid(): + familles = self.filter_form.filter(familles) + return familles + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + if self.mode == 'attente': + cols = self.attente_cols + else: + cols = self.normal_cols + # cf requete similaire dans UtilisateurChargeDossierView + current_user = self.request.user + ma_charge = current_user.interventions.filter( + Q(intervenant__date_fin__isnull=True) | Q(intervenant__date_fin__gt=date.today()) + ).annotate( + niveau_interv=Subquery( + Niveau.objects.filter( + famille=OuterRef('famille_id') + ).order_by('-date_debut').values('niveau_interv')[:1] + ), + ).aggregate( + charge=Sum(Case( + When(niveau_interv__lt=3, then='niveau_interv'), + When(niveau_interv=3, then=5), + ), filter=Q(date_fin_suivi__isnull=True)), + nbre_coord=Count('heure_coord', filter=Q(heure_coord=True, date_fin_suivi__isnull=True)), + nbre_eval=Count('id', filter=( + Q(date_fin_suivi__isnull=True) & Q(date_debut_suivi__isnull=True) + )), + nbre_suivi=Count('id', filter=( + Q(date_fin_suivi__isnull=True) & Q(date_debut_suivi__isnull=False) + )), + ) + + context.update({ + 'labels': [c[0] for c in cols], + 'col_keys': [c[1] for c in cols], + 'form': self.filter_form, + 'ma_charge': { + 'heures': ma_charge['charge'] + ma_charge['nbre_coord'], + 'nbre_eval': ma_charge['nbre_eval'], + 'nbre_suivi': ma_charge['nbre_suivi'], + 'charge_diff': current_user.charge_max - (ma_charge['charge'] + ma_charge['nbre_coord']), + } if ma_charge['charge'] is not None else '', + }) + return context + + +class FamilleArchivableListe(View): + """Return all family ids which are archivable by the current user.""" + + def get(self, request, *args, **kwargs): + data = [ + famille.pk for famille in Famille.objects.filter( + archived_at__isnull=True, suivi__date_fin_suivi__isnull=False + ) + if famille.can_be_archived(request.user) + ] + return JsonResponse(data, safe=False) + + +class SuiviView(EquipeRequiredMixin, SuccessMessageMixin, JournalAccesMixin, UpdateView): + template_name = 'aemo/suivi_edit.html' + model = Suivi + famille_model = Famille + form_class = forms.SuiviForm + success_message = 'Les modifications ont été enregistrées avec succès' + + def get_object(self, queryset=None): + return get_object_or_404(self.model, famille__pk=self.kwargs['pk']) + + def get_form_kwargs(self): + return {**super().get_form_kwargs(), 'readonly': self.readonly} + + def get_success_url(self): + return self.object.famille.suivi_url + + def get_context_data(self, **kwargs): + return { + **super().get_context_data(**kwargs), + 'famille': self.object.famille, + 'intervenants': self.object.famille.interventions_actives().order_by('role'), + 'niveaux': self.object.famille.niveaux.all().annotate( + date_fin_calc=Coalesce('date_fin', self.object.date_fin_suivi) + ).order_by('pk'), + } + + +class SuiviIntervenantCreate(EquipeRequiredMixin, CreateView): + model = Intervenant + form_class = forms.IntervenantForm + template_name = 'aemo/form_in_popup.html' + titre_page = "Ajout d’un intervenant" + titre_formulaire = "Intervenant" + + def form_valid(self, form): + form.instance.suivi = Suivi.objects.get(famille__pk=self.kwargs['pk']) + return super().form_valid(form) + + def get_success_url(self): + return reverse('famille-suivi', args=[self.kwargs['pk']]) + + +class SuiviIntervenantUpdateView(EquipeRequiredMixin, UpdateView): + model = Intervenant + form_class = forms.IntervenantEditForm + template_name = 'aemo/form_in_popup.html' + titre_page = "Modification d’une intervention" + titre_formulaire = "Intervenant" + + pk_url_kwarg = 'obj_pk' + + def get_success_url(self): + return reverse('famille-suivi', args=[self.kwargs['pk']]) + + +class SuivisTerminesListView(FamilleListView): + template_name = 'aemo/suivis_termines_list.html' + + def get_queryset(self): + familles = self.model.objects.filter(**{ + 'suivi__date_fin_suivi__isnull': False, + 'archived_at__isnull': True + }).select_related('suivi') + + if self.filter_form.is_bound and self.filter_form.is_valid(): + familles = self.filter_form.filter(familles) + return familles + + +class AgendaSuiviView(EquipeRequiredMixin, SuccessMessageMixin, UpdateView): + template_name = 'aemo/agenda_suivi.html' + model = Suivi + famille_model = Famille + form_class = forms.AgendaForm + success_message = 'Les modifications ont été enregistrées avec succès' + + def get_object(self, queryset=None): + return get_object_or_404(self.model, famille__pk=self.kwargs['pk']) + + def get_form_kwargs(self): + return {**super().get_form_kwargs(), + 'readonly': self.readonly, + 'destination': self.get_object().famille.destination, + 'request': self.request} + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + dfin = self.object.date_fin_suivi + ddebut = self.object.date_debut_suivi + context.update({ + 'bilans_et_rapports': sorted( + list(self.famille.bilans.all()) + list(self.famille.rapports.all()), + key=attrgetter('date'), + ), + 'mode': 'reactivation' if dfin else ('evaluation' if ddebut is None else 'suivi'), + 'interv_temporaires': self.object.intervenant_set.filter(date_fin__isnull=False), + 'niveaux': self.object.famille.niveaux.all().annotate( + date_fin_calc=Coalesce('date_fin', self.object.date_fin_suivi) + ).order_by('pk'), + }) + return context + + def form_valid(self, form): + response = super().form_valid(form) + if ( + 'date_debut_suivi' in form.changed_data and form.cleaned_data['date_debut_suivi'] and + form.cleaned_data['date_debut_suivi'] < date.today() + ): + # Contrôle attribution des prestations (accompagnement) depuis début suivi. + self.famille.prestations.filter( + date_prestation__gte=form.cleaned_data['date_debut_suivi'], lib_prestation__code='aemo01' + ).update(lib_prestation=LibellePrestation.objects.get(code='aemo02')) + return response + + def get_success_url(self): + if self.object.date_fin_suivi: + return reverse('famille-list') + return reverse('famille-agenda', args=[self.object.famille.pk]) + + +class DemandeView(EquipeRequiredMixin, SuccessMessageMixin, UpdateView): + template_name = 'aemo/demande_edit.html' + model = Suivi + famille_model = Famille + form_class = forms.DemandeForm + success_message = 'Les modifications ont été enregistrées avec succès' + + def get_form_kwargs(self): + return {**super().get_form_kwargs(), 'readonly': self.readonly} + + def get_object(self, queryset=None): + suivi = self.famille.suivi + items = [ + "Selon le professionnel", + "Selon les parents", + "Selon l'enfant", + ] + if suivi.difficultes == '': + suivi.difficultes = ''.join( + ['

    {}

    '.format(item) for item in items if suivi.difficultes == ''] + ) + if suivi.aides == '': + suivi.aides = ''.join( + ['{}

    '.format(item) for item in items if suivi.aides == ''] + ) + if suivi.disponibilites == '': + suivi.disponibilites = ''.join( + ['{}

    '.format(item) for item in ['Parents', 'Enfants'] + if suivi.disponibilites == ''] + ) + return suivi + + def get_success_url(self): + return reverse('demande', args=[self.object.famille.pk]) + + +class EvaluationPDFView(BasePDFView): + obj_class = Famille + pdf_class = EvaluationPdf + + +class CoordonneesPDFView(BasePDFView): + obj_class = Famille + pdf_class = CoordonneesFamillePdf + + +class JournalPDFView(BasePDFView): + obj_class = Famille + pdf_class = JournalPdf + + +class BilanPDFView(BasePDFView): + obj_class = Bilan + pdf_class = BilanPdf + + +class PrestationMenu(ListView): + template_name = 'aemo/prestation_menu.html' + model = Prestation + paginate_by = 15 + context_object_name = 'familles' + + def get_queryset(self): + user = self.request.user + rdv_manques = dict( + Famille.actives().annotate( + rdv_manques=ArrayAgg( + 'prestations__date_prestation', + filter=Q(prestations__manque=True), + ordering='prestations__date_prestation', + default=Value([]) + ) + ).values_list('pk', 'rdv_manques') + ) + familles = Famille.actives( + ).annotate( + user_prest=Sum('prestations__duree', + filter=Q(**{'prestations__intervenants': user})) + ).annotate( + aemo1=Sum('prestations__duree', + filter=(Q(**{'prestations__lib_prestation__code': 'aemo01'})) + ) or None + ).annotate( + aemo2=Sum('prestations__duree', + filter=(Q(**{'prestations__lib_prestation__code': 'aemo02'})) + ) or None + ) + for famille in familles: + famille.rdv_manques = [format_d_m_Y(rdv) for rdv in rdv_manques[famille.pk]] + return familles + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context.update({ + 'annee': date.today().year + }) + return context + + +class PrestationBaseView: + model = Prestation + famille_model = Famille + form_class = forms.PrestationForm + template_name = 'aemo/prestation_edit.html' + + def dispatch(self, *args, **kwargs): + self.famille = get_object_or_404(self.famille_model, pk=self.kwargs['pk']) if self.kwargs.get('pk') else None + return super().dispatch(*args, **kwargs) + + def get_context_data(self, **kwargs): + return {**super().get_context_data(**kwargs), 'famille': self.famille} + + def get_success_url(self): + if self.famille: + return reverse('journal-list', args=[self.famille.pk]) + return reverse('prestation-gen-list') + + +class PrestationListView(PrestationBaseView, ListView): + template_name = 'aemo/prestation_list.html' + model = Prestation + paginate_by = 15 + context_object_name = 'prestations' + + def get(self, request, **kwargs): + self.filter_form = forms.JournalAuteurFilterForm(famille=self.famille, data=request.GET or None) + return super().get(request, **kwargs) + + def get_queryset(self): + if self.famille: + prestations = self.famille.prestations.all().order_by('-date_prestation') + if self.filter_form.is_bound and self.filter_form.is_valid(): + prestations = self.filter_form.filter(prestations) + return prestations + return self.request.user.prestations.filter(famille=None) + + def get_context_data(self, **kwargs): + return super().get_context_data(**kwargs, filter_form=self.filter_form) + + +class PrestationCreateView(PrestationBaseView, CreateView): + def dispatch(self, request, *args, **kwargs): + if not request.user.has_perm('aemo.add_prestation'): + raise PermissionDenied("Vous n'avez pas les droits pour ajouter une prestation.") + return super().dispatch(request, *args, **kwargs) + + def get_initial(self): + initial_text = ( + "

    Observations:\n" + "(relations et interactions dans la famille / disponibilité des parents / " + "réponses données aux besoins des enfants / …)

    " + "

    Discussion (thème-s abordé-s) / activités:

    " + "

    Particularités en termes de ressources et/ou de limites:

    " + "

    Ressentis de l’intervenant-e:

    " + "

    Objectif-s traité-s:

    " + "

    Objectif-s à suivre:

    " + ) + initial = { + **super().get_initial(), + 'intervenants': [self.request.user.pk], + 'texte': initial_text if self.famille else '', + } + return initial + + def get_form_kwargs(self): + return {**super().get_form_kwargs(), 'famille': self.famille, 'user': self.request.user} + + def get_lib_prestation(self, date_prest): + """ + Renvoie la prestation en fonction de la famille et du rôle de l'utilisateur connecté. + """ + if self.famille is None: + code = 'aemo03' # Prestation générale + elif self.famille.suivi.date_debut_suivi and date_prest >= self.famille.suivi.date_debut_suivi: + code = 'aemo02' # Accompagnement + else: + code = 'aemo01' # Évaluation + return LibellePrestation.objects.get(code=code) + + def form_valid(self, form): + if self.famille: + form.instance.famille = self.famille + form.instance.auteur = self.request.user + form.instance.lib_prestation = self.get_lib_prestation(form.cleaned_data['date_prestation']) + if 'duree' not in form.cleaned_data: + form.instance.duree = timedelta() + return super().form_valid(form) + + +class PrestationUpdateView(CheckCanEditMixin, PrestationBaseView, UpdateView): + pk_url_kwarg = 'obj_pk' + + def get_form_kwargs(self): + return {**super().get_form_kwargs(), 'famille': self.famille, 'user': self.request.user} + + def delete_url(self): + fam_id = self.famille.pk if self.famille else 0 + return reverse('prestation-delete', args=[fam_id, self.object.pk]) + + +class PrestationDeleteView(PrestationBaseView, DeleteView): + template_name = 'aemo/object_confirm_delete.html' + pk_url_kwarg = 'obj_pk' + form_class = DeleteView.form_class + + +class NiveauCreateUpdateView(CreateUpdateView): + model = Niveau + form_class = forms.NiveauForm + template_name = 'aemo/form_in_popup.html' + + def dispatch(self, request, *args, **kwargs): + self.is_create = 'pk' not in kwargs + self.famille = get_object_or_404(Famille, pk=kwargs['obj_pk']) + self.titre_page = f"Famille: {self.famille.nom}" + self.titre_formulaire = "Nouveau niveau d'intervention" if self.is_create \ + else "Modification de l'enregistrement" + return super().dispatch(request, *args, **kwargs) + + def get_form_kwargs(self): + kwargs = super().get_form_kwargs() + kwargs['famille'] = self.famille + return kwargs + + def form_valid(self, form): + if self.is_create: + der_niv = self.famille.niveaux.last() if self.famille.niveaux.count() > 0 else None + if der_niv: + der_niv.date_fin = form.cleaned_data['date_debut'] - timedelta(days=1) + der_niv.save() + + form.instance.famille = self.famille + form.instance.date_fin = None + return super().form_valid(form) + + def get_success_url(self): + return reverse('famille-suivi', args=[self.famille.pk]) + + def delete_url(self): + return reverse('niveau-delete', args=[self.famille.pk, self.object.pk]) + + +class NiveauDeleteView(DeleteView): + template_name = 'aemo/object_confirm_delete.html' + form_class = DeleteView.form_class + model = Niveau + + def get_success_url(self): + return reverse('famille-suivi', args=[self.kwargs['obj_pk']]) + + +class DocumentBaseView: + template_name = 'aemo/document_upload.html' + titre_page = '' + titre_formulaire = '' + + def dispatch(self, request, *args, **kwargs): + self.famille = get_object_or_404(Famille, pk=kwargs['pk']) + self.titre_page = self.titre_page.format(famille=self.famille.nom) + return super().dispatch(request, *args, **kwargs) + + def get_success_url(self): + return self.famille.suivi_url + + +class DocumentUploadView(DocumentBaseView, CreateView): + form_class = forms.DocumentUploadForm + titre_page = 'Documents externes de la famille {famille}' + titre_formulaire = 'Nouveau document' + + def get_initial(self): + initial = super().get_initial() + initial['famille'] = self.famille + return initial + + def form_valid(self, form): + form.instance.famille = self.famille + form.instance.auteur = self.request.user + return super().form_valid(form) + + +class DocumentDeleteView(DeleteView): + model = Document + pk_url_kwarg = 'doc_pk' + + def form_valid(self, form): + response = super().form_valid(form) + messages.success(self.request, "Le document a été supprimé avec succès") + return response + + def get_success_url(self): + return self.request.META.get('HTTP_REFERER') or self.object.famille.suivi_url + + + +class BilanEditView(DocumentUploadView, CreateUpdateView): + pk_url_kwarg = 'obj_pk' + titre_page = 'Bilan pour la famille {famille}' + titre_formulaire = 'Nouveau bilan' + model = Bilan + form_class = forms.BilanForm + + def get_form_class(self): + if self.form_class: + return self.form_class + return modelform_factory( + model=self.model, + exclude=['famille', 'auteur'], + field_classes={ + 'objectifs': forms.RichTextField, + 'rythme': forms.RichTextField, + }, + widgets={ + 'famille': HiddenInput, + 'date': forms.PickDateWidget, + }, + labels={'fichier': ''}, + ) + + def get_initial(self): + initial = super().get_initial() + if self.is_create: + initial['objectifs'] = ( + "

    Besoin de l’enfant

    \n" + "

    Objectifs de la famille

    \n" + "

    Moyens

    \n" + "

    Critères

    " + ) + return initial + + def get_success_url(self): + return reverse('famille-agenda', args=[self.famille.pk]) + + +class BilanDetailView(DetailView): + model = Bilan + pk_url_kwarg = 'obj_pk' + template_name = 'aemo/bilan.html' + + def get_context_data(self, **kwargs): + meta = self.model._meta + data_fields = [ + f.name for f in meta.get_fields() + if f.name not in ['id', 'date', 'famille', 'auteur', 'fichier', 'phase', 'sig_famille', 'sig_interv'] + ] + return { + **super().get_context_data(**kwargs), + 'famille': self.object.famille, + 'data': [(meta.get_field(f).verbose_name, getattr(self.object, f)) for f in data_fields] + } + + +class BilanDeleteView(DeleteView): + model = Bilan + pk_url_kwarg = 'obj_pk' + + def dispatch(self, request, *args, **kwargs): + self.famille = get_object_or_404(Famille, pk=kwargs['pk']) + if not self.get_object().can_edit(request.user): + raise PermissionDenied("Vous n'avez pas les droits de supprimer ce bilan.") + return super().dispatch(request, *args, **kwargs) + + def get_success_url(self): + return reverse('famille-agenda', args=[self.famille.pk]) + + +class BaseRapportView: + model = Rapport + + def dispatch(self, request, *args, **kwargs): + self.famille = get_object_or_404(Famille, pk=kwargs['pk']) + return super().dispatch(request, *args, **kwargs) + + +class RapportCreateView(DocumentUploadView, BaseRapportView, CreateView): + form_class = forms.RapportEditForm + template_name = 'aemo/rapport_edit.html' + + def get_form_class(self): + return modelform_factory(self.model, form=self.form_class) + + def get_success_url(self): + return reverse('famille-agenda', args=[self.famille.pk]) + + +class RapportDisplayView(BaseRapportView, DetailView): + pk_url_kwarg = 'obj_pk' + template_name = 'aemo/rapport.html' + + def get_context_data(self, **kwargs): + meta = self.model._meta + fields = ['situation', 'observations', 'projet'] + return { + **super().get_context_data(**kwargs), + 'famille': self.object.famille, + 'rapport': self.object, + 'intervenants': ', '.join([i.nom_prenom for i in self.object.intervenants()]), + 'enfants': '\n'.join( + [f"{enfant.nom_prenom} (*{format_d_m_Y(enfant.date_naissance)})" + for enfant in self.object.famille.membres_suivis()] + ), + 'data': [ + (meta.get_field(f).verbose_name, getattr(self.object, f)) for f in fields + if getattr(self.object, f) or f in ['situation', 'projet'] + ] + } + + +class RapportUpdateView(DocumentUploadView, BaseRapportView, CreateUpdateView): + pk_url_kwarg = 'obj_pk' + form_class = forms.RapportEditForm + template_name = 'aemo/rapport_edit.html' + + def get_form_class(self): + return modelform_factory(self.model, form=self.form_class) + + def get_form_kwargs(self): + return { + **super().get_form_kwargs(), + 'user': self.request.user, + } + + def get_success_url(self): + return reverse('famille-agenda', args=[self.famille.pk]) + + +class RapportDeleteView(BaseRapportView, DeleteView): + model = Rapport + pk_url_kwarg = 'obj_pk' + + def form_valid(self, form): + if not self.object.can_edit(self.request.user): + raise PermissionDenied("Vous n'avez pas le droit de supprimer ce résumé.") + return super().form_valid(form) + + def get_success_url(self): + return reverse('famille-agenda', args=[self.famille.pk]) + + +class RapportPDFView(BaseRapportView, BasePDFView): + pdf_class = RapportPdf + pk_url_kwarg = 'obj_pk' + + @property + def obj_class(self): + return self.model + + +class FamilleAdresseChangeView(UpdateView): + template_name = 'aemo/famille_adresse.html' + form_class = forms.FamilleAdresseForm + context_object_name = 'famille' + + def dispatch(self, request, *args, **kwargs): + if not self.get_object().can_edit(request.user): + raise PermissionDenied("Vous n’avez pas la permission d’accéder à cette page.") + return super().dispatch(request, *args, **kwargs) + + def get_object(self): + return get_object_or_404(Famille, pk=self.kwargs['pk']) + + def get_form_kwargs(self): + kwargs = super().get_form_kwargs() + kwargs['famille'] = self.get_object() + return kwargs + + def form_valid(self, form): + famille = form.save() + for membre_id in form.cleaned_data['membres']: + membre = get_object_or_404(Personne, pk=membre_id) + membre.rue = famille.rue + membre.npa = famille.npa + membre.localite = famille.localite + membre.save() + return HttpResponseRedirect(famille.edit_url) + + +class FamilleAutoCompleteView(autocomplete.Select2QuerySetView): + def get_queryset(self): + qs = Famille.objects.filter(archived_at__isnull=True) + if self.q: + qs = qs.filter(nom__icontains=self.q) + return qs.prefetch_related('membres') + + def get_result_label(self, result): + enfants = ", ".join(enf.prenom for enf in result.membres_suivis()) + label = f'{result.nom}, {result.npa} {result.localite}' + if enfants: + label += f" ({enfants})" + return label + + +class PermissionOverview(TemplateView): + template_name = 'aemo/permissions.html' + perm_map = {'add': 'création', 'change': 'modification', 'delete': 'suppression', 'view': 'affichage'} + + def get_context_data(self, **kwargs): + def verbose(perm): + return self.perm_map.get(perm.codename.split('_')[0], perm.codename) + + context = super().get_context_data(**kwargs) + groups = Group.objects.all().prefetch_related('permissions') + grp_perms = {gr.name: [perm.codename for perm in gr.permissions.all()] for gr in groups} + objects = [CercleScolaire, Contact, Role, Service, Utilisateur] + all_perms = Permission.objects.filter( + content_type__app_label__in=['aemo'], + content_type__model__in=[o.__name__.lower() for o in objects] + ) + + def perms_for_model(model): + return [ + (perm.codename, verbose(perm)) for perm in all_perms + if perm.content_type.model == model.__name__.lower() + ] + + perm_groups = OrderedDict() + # {'Contact': [('view_contact', 'affichage), ('change_contact', 'modification'), ...]} + for obj in objects: + perm_groups[obj._meta.verbose_name] = perms_for_model(obj) + perm_groups['AEMO'] = list(Suivi._meta.permissions) + perm_groups['AEMO'].extend([('delete_famille', 'Supprimer une famille')]) + context.update({ + 'groups': groups, + 'grp_perms': grp_perms, + 'perms_by_categ': perm_groups, + }) + return context + + +class ExportPrestationView(PermissionRequiredMixin, FormView): + permission_required = 'aemo.export_stats' + template_name = 'aemo/export.html' + form_class = forms.MonthSelectionForm + filename = 'aemo_reporting_{}'.format(date.strftime(date.today(), '%Y-%m-%d')) + + def _prepare_query(self, query, prest_gen): + """Return a list of families, sorted by prest and name.""" + return query.annotate( + prest_gen=Value(prest_gen, output_field=DurationField()) + ).order_by('nom') + + def get_initial(self): + initial = super().get_initial() + initial.update({ + 'mois': date.today().month - 1 if date.today().month > 1 else 12, + 'annee': date.today().year if date.today().month > 1 else date.today().year - 1, + }) + return initial + + def form_valid(self, form): + mois = int(form.cleaned_data['mois']) + annee = int(form.cleaned_data['annee']) + debut_mois = date(annee, mois, 1) + fin_mois = date(annee, mois, calendar.monthrange(annee, mois)[1]) + + export = ExportReporting() + familles_en_cours = Famille.suivis_en_cours(debut_mois, fin_mois) + # Considérer au min. 1 enfant par famille, car les familles sans enfant + # suivi occupent aussi une ligne de la stat des familles en cours. + num_enfants = sum( + [len(fam.membres_suivis()) or 1 for fam in familles_en_cours] + ) + # Calcul des prestations générales réparties sur chaque enfant suivi + # Renvoie une durée (timedelta()) par enfant suivi + prest_gen = Prestation.objects.filter( + date_prestation__month=mois, + date_prestation__year=annee, + famille=None + ).annotate( + num_util=Count('intervenants') + ).aggregate( + total=Sum(F('duree') * F('num_util'), output_field=DurationField()) + )['total'] or timedelta() + logger.info("Total heures prest. gén. du mois: %s", prest_gen.total_seconds() / 3600) + prest_gen_par_enfant = prest_gen / (num_enfants or 1) + + # Demandes en cours + export.produce_suivis( + 'En_cours_{}'.format(debut_mois.strftime("%m.%Y")), + self._prepare_query(familles_en_cours, prest_gen_par_enfant), + debut_mois + ) + + # Nouvelles demandes + familles_nouvelles = Famille.suivis_nouveaux(annee, mois) + export.produce_nouveaux( + "Nouveaux_{}".format(debut_mois.strftime("%m.%Y")), + self._prepare_query(familles_nouvelles, prest_gen_par_enfant), + ) + + # Fins de suivis + familles_terminees = Famille.suivis_termines(annee, mois) + export.produce_termines( + "Terminés_{}".format(debut_mois.strftime("%m.%Y")), + self._prepare_query(familles_terminees, prest_gen_par_enfant), + ) + export.produce_totaux("Totaux heures du mois") + + return export.get_http_response( + 'aemo_reporting_{}.xlsx'.format(date.strftime(debut_mois, '%m_%Y')) + ) + + +class BasePrestationGeneraleEtPersonnelle(ListView): + + def dispatch(self, request, *args, **kwargs): + str_curdate = request.GET.get('date', None) + if str_curdate: + cur_year = int(str_curdate[-4:]) + cur_month = int(str_curdate[:2]) + else: + today = date.today() + cur_year = today.year + cur_month = today.month + self.dfrom = date(cur_year, cur_month, 1) + self.dto = self.dfrom + timedelta(days=-1 + calendar.monthrange(self.dfrom.year, self.dfrom.month)[1]) + return super().dispatch(request, *args, **kwargs) + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + prev_month = self.dfrom - timedelta(days=2) + next_month = self.dfrom + timedelta(days=33) + + context.update({ + 'current_date': self.dfrom, + 'prev_month': prev_month if prev_month.year > 2019 else None, + 'next_month': next_month if next_month.month <= date.today().month else None, + }) + return context + + +class PrestationPersonnelleListView(BasePrestationGeneraleEtPersonnelle): + template_name = 'aemo/prestation_personnelle.html' + + def get_queryset(self): + return self.request.user.prestations.filter( + date_prestation__gte=self.dfrom, date_prestation__lte=self.dto + ) + + def get_context_data(self, *args, **kwargs): + context = super().get_context_data(*args, **kwargs) + context.update({ + 'totaux': [(pp.code, self.get_queryset().filter( + lib_prestation__code=f"{pp.code}" + ).aggregate( + tot=Sum('duree') + )['tot']) for pp in LibellePrestation.objects.all()], + 'total_final': self.get_queryset().aggregate(tot=Sum('duree'))['tot'], + }) + return context + + +class PrestationGeneraleListView(BasePrestationGeneraleEtPersonnelle): + model = Prestation + template_name = 'aemo/prestation_generale.html' + + def get_queryset(self): + return super().get_queryset().filter( + famille=None, + date_prestation__gte=self.dfrom, + date_prestation__lte=self.dto + ) + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context.update({ + 'prestations': self.get_queryset(), + }) + return context + + +class FamilleReactivationView(View): + + def post(self, request, *args, **kwargs): + famille = get_object_or_404(Famille, pk=kwargs['pk']) + if famille.can_be_reactivated(request.user): + famille.suivi.date_fin_suivi = None + famille.suivi.motif_fin_suivi = "" + famille.suivi.save() + famille.destination = '' + famille.save() + return HttpResponseRedirect(reverse('famille-list')) + + +def page_not_found(request, *args, **kwargs): + if not request.user.is_authenticated: + kwargs['template_name'] = '404-public.html' + return django_page_not_found(request, *args, **kwargs) diff --git a/aemo/views_stats.py b/aemo/views_stats.py new file mode 100644 index 0000000..0eb2fee --- /dev/null +++ b/aemo/views_stats.py @@ -0,0 +1,909 @@ +import calendar +from dataclasses import dataclass +from datetime import date, timedelta +from operator import attrgetter + +from django import forms +from django.contrib.auth.mixins import PermissionRequiredMixin +from django.db.models import ( + Case, Count, DurationField, ExpressionWrapper, F, IntegerField, OuterRef, Q, + Subquery, Sum, When +) +from django.db.models.functions import Coalesce, TruncMonth +from django.utils.dates import MONTHS +from django.views.generic import TemplateView + +from .forms import DateYearForm +from .models import Intervenant, LibellePrestation, Niveau, Personne, Prestation, Suivi, Utilisateur +from .utils import format_d_m_Y, format_duree +from common.choices import ( + MOTIF_DEMANDE_CHOICES, MOTIFS_FIN_SUIVI_CHOICES, PROVENANCE_DESTINATION_CHOICES, + SERVICE_ORIENTEUR_CHOICES, +) +from .export import ExportStatistique + + +class DateLimitForm(forms.Form): + YEAR_CHOICES = tuple( + (str(y), str(y)) + for y in range(2020, date.today().year + (1 if date.today().month < 12 else 2)) + ) + start_month = forms.ChoiceField(choices=[(str(m), MONTHS[m]) for m in range(1, 13)]) + start_year = forms.ChoiceField(choices=YEAR_CHOICES) + end_month = forms.ChoiceField(choices=[(str(m), MONTHS[m]) for m in range(1, 13)]) + end_year = forms.ChoiceField(choices=YEAR_CHOICES) + + def __init__(self, data, **kwargs): + if not data: + today = date.today() + data = { + 'start_year': today.year, 'start_month': today.month, + 'end_year': today.year if today.month < 12 else today.year + 1, + 'end_month': (today.month + 1) if today.month < 12 else 1, + } + super().__init__(data, **kwargs) + + def clean(self): + cleaned_data = super().clean() + if not self.errors and self.start > self.end: + raise forms.ValidationError("Les dates ne sont pas dans l’ordre.") + return cleaned_data + + @property + def start(self): + return date(int(self.cleaned_data['start_year']), int(self.cleaned_data['start_month']), 1) + + @property + def end(self): + return date( + int(self.cleaned_data['end_year']), + int(self.cleaned_data['end_month']), + calendar.monthrange(int(self.cleaned_data['end_year']), int(self.cleaned_data['end_month']))[1] + ) + + +@dataclass +class Month: + year: int + month: int + + def __str__(self): + return f'{self.month:0>2}.{self.year}' + + def __lt__(self, other): + return (self.year, self.month) < (other.year, other.month) + + def __hash__(self): + return hash((self.year, self.month)) + + def next(self): + if self.month == 12: + return Month(self.year + 1, 1) + else: + return Month(self.year, self.month + 1) + + @classmethod + def from_date(cls, dt): + return Month(dt.year, dt.month) + + def is_future(self): + return date(self.year, self.month, 1) > date.today() + + +class StatsMixin: + permission_required = 'aemo.export_stats' + + def get_months(self): + """Return a list of tuples [(year, month), ...] from date_start to date_end.""" + months = [Month(self.date_start.year, self.date_start.month)] + while True: + next_m = months[-1].next() + if next_m > Month(self.date_end.year, self.date_end.month): + break + months.append(next_m) + return months + + def month_limits(self, month): + """From (2020, 4), return (date(2020, 4, 1), date(2020, 5, 1)).""" + next_m = month.next() + return ( + date(month.year, month.month, 1), + date(next_m.year, next_m.month, 1) + ) + + @staticmethod + def init_counters(names, months, default=0, total=0): + """ + Create stat counters: + {: {(2020, 3): 0, (2020, 4): 0, …, 'total': 0}, …} + """ + counters = {} + for count_name in names: + counters[count_name] = {} + for month in months: + counters[count_name][month] = '-' if month.is_future() else default + counters[count_name]['total'] = total + return counters + + def get_stats(self, months): + # Here subclasses produce stats to be merged in view context + return {} + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + get_params = self.request.GET.copy() + self.export_flag = get_params.pop('export', None) + date_form = DateLimitForm(get_params) + context['date_form'] = date_form + if not date_form.is_valid(): + return context + self.date_start = date_form.start + self.date_end = date_form.end + months = self.get_months() + context.update({ + 'date_form': date_form, + 'months': months, + }) + context.update(self.get_stats(months)) + return context + + def export_as_openxml(self, context): + export = ExportStatistique(col_widths=[50]) + export.fill_data(self.export_lines(context)) + return export.get_http_response(self.__class__.__name__.replace('View', '') + '.xlsx') + + def render_to_response(self, context, **response_kwargs): + if self.export_flag: + return self.export_as_openxml(context) + else: + return super().render_to_response(context, **response_kwargs) + + +class StatistiquesView(StatsMixin, PermissionRequiredMixin, TemplateView): + template_name = 'statistiques/statistiques.html' + labels = { + 'familles_total': 'Total familles (évaluation et/ou accomp.)', + 'enfants_total': 'Total enfants suivis (évaluation et/ou accomp.)', + 'familles_evaluees': 'Familles évaluées', + 'enfants_evalues': 'Enfants évalués', + 'enfants_evalues_non_suivis': 'Enfants non suivis de familles évaluées', + 'familles_eval_sans_suivi': 'Familles évaluées sans aboutir à un suivi', + 'familles_suivies': 'Familles suivies', + 'enfants_suivis': 'Enfants suivis', + 'enfants_suivis_non_suivis': 'Enfants non suivis de familles suivies', + 'familles_accueil': 'dont Familles d’accueil', + 'familles_connues': 'dont Familles déjà suivies', + 'prioritaires': 'Demandes prioritaires', + 'rdv_manques': 'Rendez-vous manqués', + 'duree_attente': 'Durée moyenne entre demande et début de suivi', + } + + def suivi_stats(self, model, months): + suivis_base = model.objects.annotate( + date_fin=Coalesce('date_fin_suivi', date.today()), + date_debut=Coalesce('date_demande', 'date_debut_evaluation', 'date_debut_suivi') + ).filter( + date_debut__lte=self.date_end, + date_fin__gte=self.date_start + ).exclude(motif_fin_suivi='erreur') + + # Annotations pour Count("Enfant suivi"), Count("Enfant non-suivi"), duree_attente + suivis = suivis_base.annotate(enf_suivis=Count(Case( + When(famille__membres__role__nom="Enfant suivi", then=1), + output_field=IntegerField(), + )), enf_nonsuivis=Count(Case( + When(famille__membres__role__nom="Enfant non-suivi", then=1), + output_field=IntegerField(), + )), duree_attente=F('date_debut_suivi') - F('date_demande'), + ).select_related('famille') + + count_keys = [ + 'familles_total', 'enfants_total', + 'familles_evaluees', 'enfants_evalues', 'enfants_evalues_non_suivis', + 'familles_eval_sans_suivi', 'familles_suivies', 'enfants_suivis', + 'enfants_suivis_non_suivis', 'familles_accueil', 'familles_connues', + 'prioritaires', 'rdv_manques', + ] + if not getattr(model, 'demande_prioritaire', False): + count_keys.remove('prioritaires') + self.counters = self.init_counters(count_keys, months) + self.counters['duree_attente'] = {'familles': 0, 'total': timedelta(), 'moyenne': timedelta()} + count_keys.append('duree_attente') + for suivi in suivis: + self.update_counters(suivi, months) + if self.counters['duree_attente']['familles'] > 0: + self.counters['duree_attente']['moyenne'] = ( + self.counters['duree_attente']['total'] / self.counters['duree_attente']['familles'] + ) + + # Rendez-vous manqués + rdv_manques = suivis_base.annotate( + month=TruncMonth('famille__prestations__date_prestation'), + ).values('month').annotate( + rdv_manques=Count( + 'famille__prestations', + filter=Q(**{'famille__prestations__manque': True}) + ) + ) + for line in rdv_manques: + if not line['month']: + continue + month = Month.from_date(line['month']) + if month not in self.counters['rdv_manques']: + continue + self.counters['rdv_manques'][month] = line['rdv_manques'] + self.counters['rdv_manques']['total'] += line['rdv_manques'] + data = {key: self.counters[key] for key in count_keys} + data['total_familles'] = len(suivis) + return data + + def update_counters(self, suivi, months): + def suivi_entre(date_deb, date_fin): + return ( + suivi.date_debut_suivi and suivi.date_debut_suivi < date_fin and + (not suivi.date_fin_suivi or suivi.date_fin_suivi > date_deb) + ) + + def evaluation_entre(date_deb, date_fin): + # Dès la demande éventuelle, on considère la famille en cours d'évaluation + # pour les stats, même sans date de debut d'évaluation + debut_eval = suivi.date_demande or suivi.date_debut_evaluation + fin_eval = suivi.date_fin_evaluation or suivi.date_fin_suivi + return ( + debut_eval and debut_eval < date_fin + and (not fin_eval or fin_eval > date_deb) + ) + + # Pour chaque mois: + for month in months: + if month.is_future(): + continue + month_start, month_end = self.month_limits(month) + month_evalue = evaluation_entre(month_start, month_end) + month_suivi = suivi_entre(month_start, month_end) + if month_evalue: + self.counters['familles_evaluees'][month] += 1 + self.counters['enfants_evalues'][month] += suivi.enf_suivis + self.counters['enfants_evalues_non_suivis'][month] += suivi.enf_nonsuivis + if suivi.famille.accueil: + self.counters['familles_accueil'][month] += 1 + if suivi.famille.connue: + self.counters['familles_connues'][month] += 1 + if month_suivi: + self.counters['familles_suivies'][month] += 1 + self.counters['enfants_suivis'][month] += suivi.enf_suivis + self.counters['enfants_suivis_non_suivis'][month] += suivi.enf_nonsuivis + if suivi.famille.accueil: + self.counters['familles_accueil'][month] += 1 + if suivi.famille.connue: + self.counters['familles_connues'][month] += 1 + if month_evalue or month_suivi: + if getattr(suivi, 'demande_prioritaire', False): + self.counters['prioritaires'][month] += 1 + self.counters['prioritaires']['total'] += 1 + self.counters['familles_total'][month] += 1 + self.counters['enfants_total'][month] += suivi.enf_suivis + + if not suivi.date_debut_suivi and suivi.motif_fin_suivi and ( + suivi.date_fin_suivi >= month_start and suivi.date_fin_suivi < month_end + ): + self.counters['familles_eval_sans_suivi'][month] += 1 + self.counters['familles_eval_sans_suivi']['total'] += 1 + + # Au total: + suivi_evalue = evaluation_entre(self.date_start, self.date_end) + suivi_acc = suivi_entre(self.date_start, self.date_end) + if suivi_evalue: + self.counters['familles_evaluees']['total'] += 1 + self.counters['enfants_evalues']['total'] += suivi.enf_suivis + self.counters['enfants_evalues_non_suivis']['total'] += suivi.enf_nonsuivis + if suivi.famille.accueil: + self.counters['familles_accueil']['total'] += 1 + if suivi.famille.connue: + self.counters['familles_connues']['total'] += 1 + if suivi_acc: + self.counters['familles_suivies']['total'] += 1 + self.counters['enfants_suivis']['total'] += suivi.enf_suivis + self.counters['enfants_suivis_non_suivis']['total'] += suivi.enf_nonsuivis + if suivi.famille.accueil: + self.counters['familles_accueil']['total'] += 1 + if suivi.famille.connue: + self.counters['familles_connues']['total'] += 1 + if suivi_evalue or suivi_acc: + self.counters['familles_total']['total'] += 1 + self.counters['enfants_total']['total'] += suivi.enf_suivis + if suivi.duree_attente is not None and ( + suivi.date_debut_suivi >= self.date_start and suivi.date_debut_suivi <= self.date_end + ): + self.counters['duree_attente']['familles'] += 1 + self.counters['duree_attente']['total'] += suivi.duree_attente + + def get_stats(self, months): + return { + 'familles': self.suivi_stats(Suivi, months), + } + + def export_lines(self, context): + months = context['months'] + + def stats_for(values): + for key, vals in values.items(): + if key in ['duree_attente', 'total_familles']: + continue + yield [self.labels[key]] + [vals[month] for month in months] + [vals['total']] + yield ( + [self.labels['duree_attente'] + ' (jours)'] + + (len(months)) * [''] + + [values['duree_attente']['moyenne'].days] + ) + + yield ['BOLD', 'Familles AEMO'] + [str(month) for month in months] + ['Total'] + yield from stats_for(context['familles']) + + +class StatistiquesParIntervView(StatsMixin, PermissionRequiredMixin, TemplateView): + """This view is currently unused (#344). It might be deleted in the future.""" + template_name = 'statistiques/stats-interv.html' + + def interv_stats(self, model, months): + intervs = model.objects.annotate( + date_fin=Coalesce('suivi__date_fin_suivi', date.today()), + date_debut=Coalesce('suivi__date_debut_evaluation', 'suivi__date_debut_suivi') + ).filter( + date_debut__lte=self.date_end, + date_fin__gte=self.date_start + ).exclude( + suivi__motif_fin_suivi='erreur' + ).annotate( + enf_suivis=Count(Case( + When(suivi__famille__membres__role__nom="Enfant suivi", then=1), + output_field=IntegerField(), + )) + ).select_related('suivi', 'intervenant') + + counters = {} + for interv in intervs: + if interv.intervenant not in counters: + counters[interv.intervenant] = self.init_counters(['num_familles', 'num_enfants'], months) + counters[interv.intervenant]['num_familles']['total'] += 1 + counters[interv.intervenant]['num_enfants']['total'] += interv.enf_suivis + for month in months: + month_start, month_end = self.month_limits(month) + if interv.date_debut <= month_end and interv.date_fin >= month_start: + counters[interv.intervenant]['num_familles'][month] += 1 + counters[interv.intervenant]['num_enfants'][month] += interv.enf_suivis + return {key: counters[key] for key in sorted(counters.keys(), key=attrgetter('nom'))} + + def get_stats(self, months): + return { + 'intervs': self.interv_stats(Intervenant, months), + } + + def export_lines(self, context): + months = context['months'] + + def stats_for(values): + for key, vals in values.items(): + yield [key.nom_prenom, 'Familles'] + [vals['num_familles'][month] for month in months] + yield [key.nom_prenom, 'Enfants'] + [vals['num_enfants'][month] for month in months] + + yield ['BOLD', 'AEMO', ''] + [str(month) for month in months] + yield from stats_for(context['intervs']) + + +class StatistiquesParLocaliteView(StatsMixin, PermissionRequiredMixin, TemplateView): + template_name = 'statistiques/stats-localite.html' + + def localite_query(self, model): + return model.objects.annotate( + date_fin=Coalesce('date_fin_suivi', date.today()), + date_debut=Coalesce('date_demande', 'date_debut_evaluation', 'date_debut_suivi') + ).filter( + date_debut__lte=self.date_end, + date_fin__gte=self.date_start + ).exclude( + motif_fin_suivi='erreur' + ).annotate( + enf_suivis=Count(Case( + When(famille__membres__role__nom="Enfant suivi", then=1), + output_field=IntegerField(), + )) + ).values('date_debut', 'date_fin', 'famille__npa', 'famille__localite', 'enf_suivis') + + def localite_stats(self, model, months): + suivis = self.localite_query(model) + counters = self.init_counters(['totals'], months) + for suivi in suivis: + loc_key = f"{suivi['famille__npa']} {suivi['famille__localite']}" + if loc_key not in counters: + counters.update(self.init_counters([loc_key], months)) + counters[loc_key]['total'] += suivi['enf_suivis'] + counters['totals']['total'] += suivi['enf_suivis'] + for month in months: + month_start, month_end = self.month_limits(month) + if suivi['date_debut'] <= month_end and suivi['date_fin'] >= month_start: + counters[loc_key][month] += suivi['enf_suivis'] + counters['totals'][month] += suivi['enf_suivis'] + return {localite: counters[localite] for localite in sorted(counters.keys())} + + def get_stats(self, months): + return { + 'localites': self.localite_stats(Suivi, months), + } + + def export_lines(self, context): + months = context['months'] + + def stats_for(values): + for key, vals in values.items(): + yield ['Totaux' if key == 'totals' else key] + [vals[month] for month in months] + [vals['total']] + + yield ['BOLD', 'AEMO'] + [str(month) for month in months] + ['Total'] + yield from stats_for(context['localites']) + + +class StatistiquesParRegionView(StatsMixin, PermissionRequiredMixin, TemplateView): + template_name = 'statistiques/stats-region.html' + + def region_query(self, model, region_key): + return model.objects.annotate( + date_fin=Coalesce('date_fin_suivi', date.today()), + date_debut=Coalesce('date_demande', 'date_debut_evaluation', 'date_debut_suivi') + ).filter( + date_debut__lte=self.date_end, + date_fin__gte=self.date_start + ).exclude( + motif_fin_suivi='erreur' + ).annotate( + enf_suivis=Count(Case( + When(famille__membres__role__nom="Enfant suivi", then=1), + output_field=IntegerField(), + )) + ).values('date_debut', 'date_fin', region_key, 'enf_suivis') + + def region_stats(self, model, months, region_key): + suivis = self.region_query(model, region_key) + counters = self.init_counters(['totals'], months) + for suivi in suivis: + loc_key = suivi[region_key] or '?' + if loc_key not in counters: + counters.update(self.init_counters([loc_key], months)) + counters[loc_key]['total'] += suivi['enf_suivis'] + counters['totals']['total'] += suivi['enf_suivis'] + for month in months: + month_start, month_end = self.month_limits(month) + if suivi['date_debut'] <= month_end and suivi['date_fin'] >= month_start: + counters[loc_key][month] += suivi['enf_suivis'] + counters['totals'][month] += suivi['enf_suivis'] + return {region: counters[region] for region in sorted(counters.keys())} + + def get_stats(self, months): + return { + 'regions': self.region_stats(Suivi, months, 'famille__region__nom'), + } + + def export_lines(self, context): + months = context['months'] + + def stats_for(values): + for key, vals in values.items(): + yield ( + ['Totaux' if key == 'totals' else key] + + [vals[month] for month in months] + + [vals['total']] + ) + + yield ['BOLD', 'AEMO'] + [str(month) for month in months] + ['Total'] + yield from stats_for(context['regions']) + + +class StatistiquesParAgeView(StatsMixin, PermissionRequiredMixin, TemplateView): + template_name = 'statistiques/stats-age.html' + + def age_stats(self, model, months): + enfants_suivis = Personne.objects.filter(role__nom='Enfant suivi') + enfants_suivis = enfants_suivis.exclude( + famille__suivi__motif_fin_suivi='erreur' + ).annotate( + date_fin=Coalesce( + 'famille__suivi__date_fin_suivi', date.today() + ), + date_debut=Coalesce( + 'famille__suivi__date_demande', + 'famille__suivi__date_debut_evaluation', 'famille__suivi__date_debut_suivi' + ) + ) + enfants_suivis = enfants_suivis.filter( + date_debut__lte=self.date_end, + date_fin__gte=self.date_start + ) + + counters = {} + means = {'total': [], **{m: [] for m in months}} + for enfant in enfants_suivis: + age = enfant.age_a(enfant.date_debut + ((enfant.date_fin - enfant.date_debut) / 2)) + if age is None: + continue + age = age_real = int(age) + if age > 18: + age = 18 + if age not in counters: + counters.update(self.init_counters([age], months)) + counters[age]['total'] += 1 + means['total'].append(age_real) + for month in months: + month_start, month_end = self.month_limits(month) + if enfant.date_debut <= month_end and enfant.date_fin >= month_start: + counters[age][month] += 1 + means[month].append(age_real) + stats = {str(age): counters[age] for age in sorted(counters.keys())} + if '18' in stats: + stats['18 et plus'] = stats['18'] + del stats['18'] + # Calcul des moyennes à 1 décimale + means['total'] = int(sum(means['total']) / max(len(means['total']), 1) * 10) / 10 + for month in months: + if month.is_future(): + means[month] = '-' + else: + means[month] = int(sum(means[month]) / max(len(means[month]), 1) * 10) / 10 + return stats, means + + def get_stats(self, months): + stats, means = self.age_stats(Suivi, months) + return { + 'ages': stats, + 'means': means, + } + + def export_lines(self, context): + months = context['months'] + + def stats_for(values): + for key, vals in values.items(): + yield ['Totaux' if key == 'totals' else key] + [vals[month] for month in months] + [vals['total']] + + yield ['BOLD', 'AEMO'] + [str(month) for month in months] + ['Total'] + yield from stats_for(context['ages']) + yield ['Âge moyen'] + [context['means'][month] for month in months] + [context['means']['total']] + + +class StatistiquesParDureeView(StatsMixin, PermissionRequiredMixin, TemplateView): + template_name = 'statistiques/stats-duree.html' + + slices = { + Suivi: [ + {'label': '0 à 3 mois', 'start': 0, 'stop': 120}, + {'label': '4 à 6 mois', 'start': 121, 'stop': 210}, + {'label': '7 à 9 mois', 'start': 211, 'stop': 300}, + {'label': '10 à 12 mois', 'start': 301, 'stop': 394}, + {'label': '13 à 15 mois', 'start': 395, 'stop': 484}, + {'label': '16 à 18 mois', 'start': 485, 'stop': 574}, + {'label': '19 à 24 mois', 'start': 575, 'stop': 760}, + {'label': '25 à 36 mois', 'start': 761, 'stop': 1125}, + {'label': '37 à 48 mois', 'start': 1126, 'stop': 1490}, + {'label': '49 mois et plus', 'start': 1491, 'stop': 100000}, + ], + } + + def duree_stats(self, model, months): + suivis = model.objects.filter( + date_debut_suivi__isnull=False, + date_fin_suivi__lte=self.date_end, + date_fin_suivi__gte=self.date_start + ).exclude( + motif_fin_suivi='erreur' + ).annotate( + duree_suivi=F('date_fin_suivi') - F('date_debut_suivi') + ) + counters = {sl['label']: 0 for sl in self.slices[model]} + for suivi in suivis: + duree_days = suivi.duree_suivi.days + for sl in self.slices[model]: + if sl['stop'] > duree_days > sl['start']: + counters[sl['label']] += 1 + break + return counters + + def get_stats(self, months): + return { + 'slices': self.slices[Suivi], + 'durees': self.duree_stats(Suivi, months), + } + + def export_lines(self, context): + def stats_for(values, slices): + for _slice in slices: + yield [_slice['label'], values[_slice['label']]] + + yield ['BOLD', f'AEMO, du {format_d_m_Y(self.date_start)} au {format_d_m_Y(self.date_end)}'] + yield ['BOLD', 'Durée', 'Nombre de suivis'] + yield from stats_for(context['durees'], self.slices[Suivi]) + + +class StatistiquesMotifsView(StatsMixin, PermissionRequiredMixin, TemplateView): + template_name = 'statistiques/stats-motifs.html' + labels = { + 'ann': 'Motif d’annonce', + 'orient': 'Service annonceur', + 'fin_preeval': 'Abandon avant évaluation', + 'fin_posteval': 'Abandon après évaluation', + 'fin_postacc': 'Fin de l’accompagnement', + 'fin_total': 'Total', + 'prov': 'Provenance', + 'dest': 'Destination', + } + + def motifs_stats(self, model, months): + suivis = model.objects.annotate( + date_fin=Coalesce('date_fin_suivi', date.today()), + date_debut=Coalesce('date_demande', 'date_debut_evaluation', 'date_debut_suivi') + ).filter( + date_debut__lte=self.date_end, + date_fin__gte=self.date_start + ).exclude( + motif_fin_suivi='erreur' + ).values( + 'famille_id', 'date_debut', 'date_fin', 'date_debut_evaluation', 'date_debut_suivi', + 'motif_demande', 'motif_fin_suivi', + 'service_orienteur', 'famille__provenance', 'famille__destination', + ) + + # Initiate all counters to 0 for each month. + counters = { + 'dem': {}, 'orient': {}, 'prov': {}, 'dest': {}, + 'fin': {'preeval': {}, 'posteval': {}, 'postacc': {}, 'total': {}} + } + for key, choices in ( + ('dem', MOTIF_DEMANDE_CHOICES), ('fin', MOTIFS_FIN_SUIVI_CHOICES), + ('orient', SERVICE_ORIENTEUR_CHOICES), ('prov', PROVENANCE_DESTINATION_CHOICES), + ('dest', PROVENANCE_DESTINATION_CHOICES)): + for ch in choices: + if key == 'fin': + if ch[0] == 'erreur': + continue + for subkey in counters['fin'].keys(): + counters[key][subkey].update(self.init_counters([ch[0]], months)) + else: + counters[key].update(self.init_counters([ch[0]], months)) + counters['orient'].update(self.init_counters(['undefined'], months)) + + def suivi_in_month(suivi, month): + month_start, month_end = self.month_limits(month) + return suivi['date_debut'] <= month_end and suivi['date_fin'] >= month_start + + for suivi in suivis: + # Stats motif demande + for motif in (suivi['motif_demande'] or []): + counters['dem'][motif]['total'] += 1 + for month in months: + if suivi_in_month(suivi, month): + for motif in (suivi['motif_demande'] or []): + counters['dem'][motif][month] += 1 + # Stats service annonceur + counters['orient'][suivi['service_orienteur'] or 'undefined']['total'] += 1 + for month in months: + if suivi_in_month(suivi, month): + counters['orient'][suivi['service_orienteur'] or 'undefined'][month] += 1 + # Stats motif fin de suivi + if suivi['motif_fin_suivi'] and suivi['motif_fin_suivi'] != 'erreur': + counters['fin']['total'][suivi['motif_fin_suivi']]['total'] += 1 + if not suivi['date_debut_evaluation'] and not suivi['date_debut_suivi']: + counters['fin']['preeval'][suivi['motif_fin_suivi']]['total'] += 1 + elif not suivi['date_debut_suivi']: + counters['fin']['posteval'][suivi['motif_fin_suivi']]['total'] += 1 + else: + counters['fin']['postacc'][suivi['motif_fin_suivi']]['total'] += 1 + for month in months: + if suivi_in_month(suivi, month): + counters['fin']['total'][suivi['motif_fin_suivi']][month] += 1 + if not suivi['date_debut_evaluation'] and not suivi['date_debut_suivi']: + counters['fin']['preeval'][suivi['motif_fin_suivi']][month] += 1 + elif not suivi['date_debut_suivi']: + counters['fin']['posteval'][suivi['motif_fin_suivi']][month] += 1 + else: + counters['fin']['postacc'][suivi['motif_fin_suivi']][month] += 1 + # Stats provenance + if suivi['famille__provenance']: + counters['prov'][suivi['famille__provenance']]['total'] += 1 + for month in months: + if suivi_in_month(suivi, month): + counters['prov'][suivi['famille__provenance']][month] += 1 + # Stats destination + if suivi['famille__destination']: + counters['dest'][suivi['famille__destination']]['total'] += 1 + for month in months: + if suivi_in_month(suivi, month): + counters['dest'][suivi['famille__destination']][month] += 1 + return counters + + def get_stats(self, months): + motif_ann_dict = dict(MOTIF_DEMANDE_CHOICES) + annonceur_dict = dict(SERVICE_ORIENTEUR_CHOICES) + motif_fin_dict = dict(MOTIFS_FIN_SUIVI_CHOICES) + provdest_dict = dict(PROVENANCE_DESTINATION_CHOICES) + stats = self.motifs_stats(Suivi, months) + return { + 'data': { + 'ann': {motif_ann_dict[key]: data for key, data in stats['dem'].items()}, + 'orient': {annonceur_dict.get(key, 'Non défini'): data for key, data in stats['orient'].items()}, + 'fin_preeval': {motif_fin_dict[key]: data for key, data in stats['fin']['preeval'].items()}, + 'fin_posteval': {motif_fin_dict[key]: data for key, data in stats['fin']['posteval'].items()}, + 'fin_postacc': {motif_fin_dict[key]: data for key, data in stats['fin']['postacc'].items()}, + 'fin_total': {motif_fin_dict[key]: data for key, data in stats['fin']['total'].items()}, + 'prov': {provdest_dict[key]: data for key, data in stats['prov'].items()}, + 'dest': {provdest_dict[key]: data for key, data in stats['dest'].items()}, + } + } + + def export_lines(self, context): + months = context['months'] + + def stats_for(values): + for key1, vals in values.items(): + yield ['BOLD', self.labels[key1]] + for key2, subvals in vals.items(): + yield [key2] + [subvals[month] for month in months] + [subvals['total']] + + yield ['BOLD', 'AEMO'] + [str(month) for month in months] + ['Total'] + yield from stats_for(context['data']) + + +class StatistiquesPrestationView(PermissionRequiredMixin, TemplateView): + permission_required = 'aemo.export_stats' + template_name = 'statistiques/stats-prestations.html' + + def _sum_list(self, liste): + tot = timedelta() + for data in liste: + if data != '-': + tot += data + return tot + + @staticmethod + def temps_totaux_mensuels_fam_gen(prest_model, annee): + """ + Renvoie un dictionnaire avec les totaux mensuels de toutes les prestations familiales + et générales pour l'année en cours (de janv. à déc.). + """ + query = prest_model.objects.filter( + date_prestation__year=annee + ).annotate( + month=TruncMonth('date_prestation'), + duree_tot=ExpressionWrapper(Count('intervenants') * F('duree'), output_field=DurationField()) + ).values('month', 'lib_prestation__nom', 'duree_tot') + # La somme est calculée en Python, car Django ne sait pas faire la somme de duree_tot. + months = [Month(annee, num_month) for num_month in range(1, 13)] + data = {month: {'total': '-' if month.is_future() else timedelta(0)} for month in months} + for result in query: + month = Month.from_date(result['month']) + if result['lib_prestation__nom'] not in data[month]: + data[month][result['lib_prestation__nom']] = '-' if month.is_future() else timedelta(0) + data[month][result['lib_prestation__nom']] += result['duree_tot'] + data[month]['total'] += result['duree_tot'] + return data + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + get_params = self.request.GET.copy() + self.export_flag = get_params.pop('export', None) + date_form = DateYearForm(get_params) + context['date_form'] = date_form + if not date_form.is_valid(): + return context + if date_form.is_valid(): + annee = int(date_form.cleaned_data['year']) + counters = {} + tot_dus_mensuels = [timedelta()] * 12 + tot_ecarts_mensuels = [timedelta()] * 12 + + intervenants = Utilisateur.objects.annotate( + num_prest=Count('prestations', filter=Q(prestations__date_prestation__year=annee)) + ).filter(num_prest__gt=0).order_by('nom', 'prenom') + for interv in intervenants: + h_prestees = interv.totaux_mensuels('aemo', annee) + h_prestees = [('-' if Month(annee, idx).is_future() else h) for idx, h in enumerate(h_prestees, start=1)] + + tot_prestees = self._sum_list(h_prestees) + counters[interv] = { + 'heures_prestees': h_prestees, + 'tot_prestees': tot_prestees, + } + + tot_prest_mensuels = self.temps_totaux_mensuels_fam_gen(Prestation, annee) + + tot_dus_mensuels.append(self._sum_list(tot_dus_mensuels)) + tot_ecarts_mensuels.append(self._sum_list(tot_ecarts_mensuels)) + + totaux_par_prest = {} + for month, data in tot_prest_mensuels.items(): + for label, duration in data.items(): + if label not in totaux_par_prest: + totaux_par_prest[label] = timedelta(0) + if duration != '-': + totaux_par_prest[label] += duration + + context.update({ + 'annee': annee, + 'titre': 'Prestations AEMO', + 'intervenants': counters, + 'months': [date(annee, m, 1) for m in range(1, 13)], + 'libelles_prest': LibellePrestation.objects.all().order_by('code'), + 'totaux_prest_mensuels': tot_prest_mensuels, + 'totaux_par_prest': totaux_par_prest, + 'total_gen': totaux_par_prest['total'], + }) + return context + + def render_to_response(self, context, **response_kwargs): + if self.export_flag: + export = ExportStatistique(col_widths=[30]) + export.fill_data(self.export_lines(context)) + return export.get_http_response(self.__class__.__name__.replace('View', '') + '.xlsx') + else: + return super().render_to_response(context, **response_kwargs) + + def export_lines(self, context): + months = context['months'] + yield ['BOLD', 'AEMO'] + [str(month) for month in months] + ['Total'] + for user, vals in context['intervenants'].items(): + yield ([user.nom_prenom] + [format_duree(val) for val in vals['heures_prestees']] + + [format_duree(vals['tot_prestees'])]) + yield ['BOLD', 'Par type d’intervention'] + for prest in context['libelles_prest']: + yield ([prest.nom] + [ + format_duree(context['totaux_prest_mensuels'][month].get(prest.nom, + '-' if month.is_future() else timedelta(0))) + for month in [Month.from_date(m) for m in months] + ] + [format_duree(context['totaux_par_prest'].get(prest.nom, timedelta(0)))]) + + +class StatistiquesNiveauxView(StatsMixin, PermissionRequiredMixin, TemplateView): + permission_required = 'aemo.export_stats' + template_name = 'statistiques/stats-niveaux.html' + + def get_stats(self, months): + prest_list = ['aemo04', 'aemo05', 'aemo06', 'aemo07'] + prest_query = Prestation.objects.filter( + famille__isnull=False, + date_prestation__range=(self.date_start, self.date_end), + lib_prestation__code__in=prest_list, + ).annotate( + month=TruncMonth('date_prestation'), + niveau_interv=Subquery( + Niveau.objects.filter( + Q(famille=OuterRef('famille_id')) & + Q(date_debut__lt=OuterRef('date_prestation')) & ( + Q(date_fin__isnull=True) | Q(date_fin__gt=OuterRef('date_prestation')) + ) + ).order_by('-date_debut').values('niveau_interv')[:1] + ), + ).values( + 'month', 'niveau_interv', 'lib_prestation__code', + ).annotate( + sum_hours=Sum('duree'), + ) + niveaux = { + niv: { + p: { + **{m: timedelta(0) for m in months}, 'total': timedelta(0) + } for p in prest_list + } for niv in [0, 1, 2, 3] + } + for line in prest_query: + if line['niveau_interv'] is None: + continue + niveaux[line['niveau_interv']][line['lib_prestation__code']][Month.from_date(line['month'])] = line['sum_hours'] + niveaux[line['niveau_interv']][line['lib_prestation__code']]['total'] += line['sum_hours'] + return { + 'stats': niveaux, + 'prest_map': LibellePrestation.objects.in_bulk(prest_list, field_name='code'), + } + + def export_lines(self, context): + months = context['months'] + yield ['BOLD', 'Ressources par niveau'] + [str(month) for month in months] + ['Total'] + for niv, prests in context['stats'].items(): + yield ['BOLD', niv] + for prest, numbers in prests.items(): + yield [context['prest_map'][prest].nom] + [numbers[m] for m in months] + [numbers['total']] diff --git a/archive/__init__.py b/archive/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/archive/admin.py b/archive/admin.py new file mode 100644 index 0000000..3863f25 --- /dev/null +++ b/archive/admin.py @@ -0,0 +1,9 @@ +from django.contrib import admin + +from .models import Archive + + +@admin.register(Archive) +class ArchiveAdmin(admin.ModelAdmin): + list_display = ['nom', 'unite', 'date_debut', 'date_fin'] + search_fields = ['nom'] diff --git a/archive/forms.py b/archive/forms.py new file mode 100644 index 0000000..60c37da --- /dev/null +++ b/archive/forms.py @@ -0,0 +1,31 @@ +from django import forms + +from aemo.forms import BootstrapMixin + + +class ArchiveKeyUploadForm(BootstrapMixin, forms.Form): + file = forms.FileField(label='Clé de déchiffrement des archives', required=True) + + +class ArchiveFilterForm(BootstrapMixin, forms.Form): + + search_famille = forms.CharField( + label='Recherche par nom de famille', + max_length=30, + required=False + ) + + search_intervenant = forms.CharField( + label='Recherche par interv. CRNE', + max_length=30, + required=False + ) + + def filter(self, archives): + if not self.cleaned_data['search_famille'] and not self.cleaned_data['search_intervenant']: + return archives.none() + if self.cleaned_data['search_famille']: + archives = archives.filter(nom__icontains=self.cleaned_data['search_famille']) + if self.cleaned_data['search_intervenant']: + archives = archives.filter(intervenant__icontains=self.cleaned_data['search_intervenant']) + return archives diff --git a/archive/migrations/0001_Add_archive_model.py b/archive/migrations/0001_Add_archive_model.py new file mode 100644 index 0000000..21d7455 --- /dev/null +++ b/archive/migrations/0001_Add_archive_model.py @@ -0,0 +1,30 @@ +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Archive', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('nom', models.CharField(max_length=40)), + ('unite', models.CharField(max_length=10)), + ('intervenant', models.CharField(blank=True, max_length=50)), + ('ope', models.CharField(blank=True, max_length=50)), + ('motif_fin', models.CharField(blank=True, max_length=30)), + ('date_debut', models.DateField(null=True)), + ('date_fin', models.DateField()), + ('key', models.TextField()), + ('pdf', models.FileField(null=True, upload_to='archives/')), + ], + options={ + 'ordering': ('nom',), + }, + ), + ] diff --git a/archive/migrations/0002_longer_intervenant.py b/archive/migrations/0002_longer_intervenant.py new file mode 100644 index 0000000..008517f --- /dev/null +++ b/archive/migrations/0002_longer_intervenant.py @@ -0,0 +1,16 @@ +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('archive', '0001_Add_archive_model'), + ] + + operations = [ + migrations.AlterField( + model_name='archive', + name='intervenant', + field=models.CharField(blank=True, max_length=120), + ), + ] diff --git a/archive/migrations/__init__.py b/archive/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/archive/models.py b/archive/models.py new file mode 100644 index 0000000..06cbffb --- /dev/null +++ b/archive/models.py @@ -0,0 +1,19 @@ +from django.db import models + + +class Archive(models.Model): + nom = models.CharField(max_length=40) + unite = models.CharField(max_length=10) + intervenant = models.CharField(max_length=120, blank=True) + ope = models.CharField(max_length=50, blank=True) + motif_fin = models.CharField(max_length=30, blank=True) + date_debut = models.DateField(null=True) + date_fin = models.DateField() + key = models.TextField() + pdf = models.FileField(upload_to='archives/', null=True) + + class Meta: + ordering = ('nom',) + + def __str__(self): + return f"{self.unite}: {self.nom}" diff --git a/archive/pdf.py b/archive/pdf.py new file mode 100644 index 0000000..591a409 --- /dev/null +++ b/archive/pdf.py @@ -0,0 +1,64 @@ +import subprocess +import tempfile + +from io import BytesIO +from pathlib import Path +from pypdf import PdfWriter, PdfReader + +from django.utils.text import slugify +from aemo.pdf import BasePDF, BilanPdf, EvaluationPdf, MessagePdf, RapportPdf, JournalPdf + + +class ArchiveBase(BasePDF): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.merger = PdfWriter() + + def get_filename(self): + return f"{slugify(self.instance.nom)}-{self.instance.pk}.pdf" + + def append_pdf(self, PDFClass, obj): + temp = BytesIO() + pdf = PDFClass(temp, obj) + pdf.produce() + self.merger.append(temp) + + def append_other_docs(self, documents): + msg = [] + for doc in documents: + doc_path = Path(doc.fichier.path) + if not doc_path.exists(): + msg.append(f"Le fichier «{doc.titre}» n'existe pas!") + continue + if doc_path.suffix.lower() == '.pdf': + self.merger.append(PdfReader(str(doc_path))) + elif doc_path.suffix.lower() in ['.doc', '.docx']: + with tempfile.TemporaryDirectory() as tmpdir: + cmd = ['libreoffice', '--headless', '--convert-to', 'pdf', '--outdir', tmpdir, doc_path] + subprocess.run(cmd, capture_output=True) + converted_path = Path(tmpdir) / f'{doc_path.stem}.pdf' + if converted_path.exists(): + self.merger.append(PdfReader(str(converted_path))) + else: + msg.append(f"La conversion du fichier «{doc.titre}» a échoué") + elif doc_path.suffix.lower() == '.msg': + self.append_pdf(MessagePdf, doc) + else: + msg.append(f"Le format du fichier «{doc.titre}» ne peut pas être intégré.") + return msg + + +class ArchivePdf(ArchiveBase): + title = "Archive" + + def produce(self): + famille = self.instance + self.append_pdf(EvaluationPdf, famille) + self.append_pdf(JournalPdf, famille) + for bilan in famille.bilans.all(): + self.append_pdf(BilanPdf, bilan) + for rapport in famille.rapports.all(): + self.append_pdf(RapportPdf, rapport) + msg = self.append_other_docs(famille.documents.all()) + self.merger.write(self.doc.filename) + return msg diff --git a/archive/templates/archive/key_upload.html b/archive/templates/archive/key_upload.html new file mode 100644 index 0000000..52cec61 --- /dev/null +++ b/archive/templates/archive/key_upload.html @@ -0,0 +1,18 @@ +{% extends 'base.html' %} + +{% block content %} +
    +
    +
    + {% csrf_token %} + {{ form.as_div }} +
    +
    + Annuler + +
    +
    +
    +
    +
    +{% endblock %} diff --git a/archive/templates/archive/list.html b/archive/templates/archive/list.html new file mode 100644 index 0000000..58f8c25 --- /dev/null +++ b/archive/templates/archive/list.html @@ -0,0 +1,37 @@ +{% extends 'base.html' %} +{% block extra_javascript %} + +{% endblock %} + +{% block content %} +
    +
    +

    Archives {{ unite|upper }}

    +
    +
    +
    +
    +
    {{ form.search_famille.label_tag }} {{ form.search_famille }}
    +
    {{form.search_intervenant.label_tag }} {{ form.search_intervenant }}
    +
    +
    +
    +
    +
    +
    +
    Utilisez la recherche par nom de famille et/ou par intervenant.
    +
    +
    +{% endblock %} diff --git a/archive/templates/archive/list_partial.html b/archive/templates/archive/list_partial.html new file mode 100644 index 0000000..93651dd --- /dev/null +++ b/archive/templates/archive/list_partial.html @@ -0,0 +1,28 @@ + + + + + {% if can_download %} + + {% endif %} + + {% for archive in archives %} + + + + + + + + {% if can_download %} + + {% endif %} + + {% empty %} + + + + {% endfor %} +
    NomRéf. {{ unite|upper }}Réf. OPEDate de débutDate de finMotif de finDéchiffrement
    {{ archive.nom }}{{ archive.intervenant }}{{ archive.ope }}{{ archive.date_debut|default:'' }}{{ archive.date_fin }}{{ archive.motif_fin }} + Déchiffrer +
    Aucune famille pour cette recherche.
    diff --git a/archive/tests/__init__.py b/archive/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/archive/tests/crne_rsa b/archive/tests/crne_rsa new file mode 100644 index 0000000..cd71cd4 --- /dev/null +++ b/archive/tests/crne_rsa @@ -0,0 +1,51 @@ +-----BEGIN RSA PRIVATE KEY----- +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 +-----END RSA PRIVATE KEY----- diff --git a/archive/tests/crne_rsa.pub b/archive/tests/crne_rsa.pub new file mode 100644 index 0000000..3325ced --- /dev/null +++ b/archive/tests/crne_rsa.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCsGKEEl1oiJgE5o/8CPC+pBAU7WKdUQhWsq6Q8mZvEyMVx4Gsd3VgMxDYnkr0tyqVmcUkufVfAZV8ZIyixEDxU4pqh/8QD2el1D+dw2lNzwa6CrbPRSaxiOvY5eWhm7duQR3OETs1/nAT+zmodDogWfo3IfBJuDqJRWXV34L5Rk1Vdk9rKEAfGyogxBvtr8UKq6xZXSDweY/jFKrtnyACXsGmD94aqcgpWbaLxTR064Ahyuh/jlACfTt7aKZf/YYtJRGseeNlx6VRRYl+UQN02uwWL/fPU9g+E04e/BHtIvPByddnwYSWlwaeIFHS9Ta6sIO0LW3E1oYAGOhao8c+Z3GyqG6Og13x5XG7bQOjR/IqtKcWobNT+cXJ7vtAkzsdQpIIgtFIm9eGNXhGfuq9Tn4KlzzAl3lP9y+RpchnRxcZJTqslflB0tFPTkwj5biDIbNvcxOdr38QyO2lHyejpJgFixxNj+PD0reE1ii7UyMkXXLelRKZwHRpetSqNzVuyHOrtJW+R2gMbPaPRsfI6Rz3gbXIw0m4rrOeoepnMGMT0w90TRF0ohqNACrFx/7dLyFL6529gx8DmBntWLUWIYkGJ/o9F1Iwzlp3s3e0KWvsktMfyadgMbIQtolqXaVS7rpIs4uJBZjR1Ya2+MY/IyFZbNJM+ny3aYxGMvHcUhQ== transit@example.org diff --git a/archive/tests/sample-2.msg b/archive/tests/sample-2.msg new file mode 100644 index 0000000000000000000000000000000000000000..ded03fdf23a72dbfbf3af272a4a0308473b0b0fd GIT binary patch literal 9728 zcmeHM&2Jk;6n|^Cq)qC60BvbX-AzBBq{P_HSCjCOv~^Gs~7LMdRI>dGmhr z-n{o_X7lSW`~JN7WA|UwKs^+uM{7Ijg-z`mzjt``y`=ik_GoQw4bA(w@auDWhAgl{ zcUSlp7LaJteaL@z-*EjvKBAtp-SJZw(y?jFG3%wuYq_eKaf;=6JyX`LC8uOr3;LpI z+nIS&FBD6GaxbN4FN{uJoJo(LpGi+lO~=m7q~+*Dg{rkUp0^e=#d0iXEw(aL@wPj@ zUH!G&ckcJz-Swd7URu99e&f5}ZXNt-`ct_YANPG&w#~9LswX0yY1i<5Q|CwZw{wGM zvWe_qvM`h=3=E$c$z}%P{rw}kA#-G;e_$Z~ZlrUPjW?<{m>|-5X({`enPZVb%0)V7 ztx?^vHZ1^8Vk({L`^c=?MXSuSip3+HkxpNQzBqmKyPv<^d+3`o{jTkq4H0SA3sfbG z7HORF>Y1S;l_^F!RU^7YX_}=AEH{YL7rJf#Y1e---hYPvy$y@!&%8x%-QsQ0AJi1& zB0=M4FBk3ggu$;$o|)IP%ld>}v1~Jz;@B=V6%*qP6eXSdU;<1lM%5`Kj7-@s8ii~z zU$oVGt}>rU4knGfSt!Ku>twRS$+!XYIp*iiiczr2j*~6%3%A{)CK5bspFLJ6WkF7FWqLD4hk+Zy*wMt{FtC7wXBWIPYDvKO5s%Abhk~HS4rdh^I zwzOpObBx)Ht3~tLLb045RBv`JQ!*2Aj+qss*T^m`F4#_{>gZ?Fb7xcUPff2Hl}t5n zTqzlq5~n<#0+fia2+fFz)tfRXOVo2eUi&)r==kHUt+(JD1oED4jX3^0;@Dv?-@Mm* z|ITe~oOaaJ!}MT}cg6}cUzq+?bxtDuj`GKQ=>PknS3kIZ?m~YT9o}6(J~Dv%@@|(u zO5KWor;`a{|wRnM;TcdI%dKNVh-j@H#f+L)5(jgQh< zRo~z@8|q;-Kdc+<8KqD|eO2-QQ0otAJC*)P9uOwXe^Avu`-Evo@iV)U7t*@adb{}G z&#Qh9kJ-KgZ#%Tr{^RgI6TJ8Mami-XZvJg||9Besqq8$lczWBgQAqnw#qBn3f?tHR zHC6wlR*#aV{J@J7_A^!Ah{JGQzvnkE)y9Wuzw&d>Z`fBA|HcfS>J9OBa5z#rxMQ7$?c#LY1-$GM!~a*~TD8#%^%-~5bm`&+d>emti(EO3$Y zghdXoMT*a-4xd_=TatEwwrk#X7rxmQ!Olf=Oa1!XC*e#?bNpAP44;%uJ|XA1c9q|% zWOL2po&=wn<1Xu#zo$r3_}Ft?nBbF7o4?e7(XuVHV5QhcfYLo_JHkF!T z)8G5{?@IOmg|B35EdKcN{QDxylj@JP3idzf5BtmX$2nb!kF^TUf51=vpA_RmAF2LWt6=*>cbvau@sD_t;>+?M@Nxc<;p4vZ^zr5SA9pP&K71812x`9m zsha=G^v69u(V`Qyv;-(i*|#fPur`w_?wzrTh3 z_f?i9#m8KAE}&-kuIJ0oe@9rB6d!ZleE+Ga|CLnKz0cu$pUHPI={+!ByMN)Ef)pQf z9j{#$p?{STbBtSQf;z`vCp=&Do-9JqXzl(9Y<$ybm73W<&R6G2{+1}+e{=?x>i-(^ z2Iqg^Bmc|xzn&KG5qtP925P3imw91tN&FvUSyKJqVBVno=ib=|ECfEusz6?>i^rv-Cz2%w9>o&{Y#49if{pM wTlm<9kP7il0zQemInGBYxF_MRg8PE^{TFeAyB5xG$l>672*sb%GiibU0e5D^J^%m! literal 0 HcmV?d00001 diff --git a/archive/tests/sample.doc b/archive/tests/sample.doc new file mode 100644 index 0000000000000000000000000000000000000000..0c2d5fdefe0c1977d053f5c4579dc4a4ecfcb4c6 GIT binary patch literal 9216 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 G|NRH_MBH5f literal 0 HcmV?d00001 diff --git a/archive/tests/sample.msg b/archive/tests/sample.msg new file mode 100644 index 0000000000000000000000000000000000000000..4c0e77b8d0f333512bc5addad75c0746c611d53d GIT binary patch literal 2045952 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

    |Q5HU`nFT82k*N8V0Qd`7{s3fPWKRnR zHr{*^mv}O^m57 zQtt_PT6A=6l3t^@RjsCf3^d(*r+)0+CK#V8(mxKu(YGTb$(-K$N~^B+IBj>Mq2J}l z-nkMcKdEHrtRY2L%*#ZMF)h0is_M%tiI=SFH3;Gnr-uou!RF)xV&fV0TIe)WC^LT@ zeTX|IdX2PteMV`Nt`WE9+Jh{L6SGBA743gckW#3SU=+N%RX7-eJskjtgu_6ChwMae zZ7UO#Jc(=bv*TjK-pAq11wY>m1&wr-GAoX!6!zUzkvA1e4_3a9AT)ZY?$a?P1!9}6 zCImxIRBC;0-@VCw7^vh)>J1XfSOF(ii-tRF!h zf!1Yrg6ltfAfw6PNo>>G(&S5)!P37%gPmI6dcRLD-HVs(bviqB=uXhF68O4aYpTn} zO)hy!1pb|2of=V%7ji6D;O31=jZ&L`dvd0@7RMvjMCQA#{{Pm2NjbVH+J1dv1@Zhf z

      <56pi@dbsDSLyJkAfkELupX`2Mcd%lkg8qW=RpN}!&q#L}sEYfUcKuaPH=L{W zE9?;rGB4RGMd}>BQ(_?oxEqHj24JIr6#lj{+WB5^O@;25+H=FNK7r`8&Pn%LA8n`? zHKW;m&m;Tm9Zbr~D9h6qD!-X@+V38t2lrF7I%3oL@gR;z zSnaW#yjYhL4L?MzFx22uRo#K!E=H4bv0Znf$A@!Ql=f`gp+Yq{GpbdUZgVJod3E}# z!|91f(zhK=&#g%>uT4LBEWM*H{rd6ryC>3j$6VV|ktkX30;xY|E5w8(>U@}>5m!5) z+Axz*_dMn7tP_&$0b>eiq>NJI9m+)MMroeAPEE-}mqOVOG+0IbdMp0lw{L>3)pD*k zikeG;9P{=;NQTqG{^3cQ2T4OhG#65+a z?f8F_q?4!A{Jj)nJ-GVrYQZ+gBC~)C00)$3b20PV z4R@85%pW9(SD;F^VrNlX*00o9Uy(3@e57IxfM4E+KPcEgpK@b!c}mNRdoW1-n*qR) zk2>4~s@W*m=uY|gK{fUhSN8m}rey*FzW7kiF-X7@8@eivtg`eLZzoD6reyK%@}eB? zi+30X9|@#i+IOPONKTt3m#f6~0T!qTk~3yk2*4tW7=#Yuz4lFrSbPC*xr^a$D#%uB zA*+P0S$8v-FA83>3h}9O$M~CM$-q3q;F0^>Z8tSe^t^O^{zL){qEJKaQ$;RmoV$mb z)uneV6YlRh9DW)O#?rU)36iM9w1a8aMMqvBs&i!c_8s9} z8oAphduZ(2tip~)+eIomDS63$6*CSlI$P&-5l82nRmT1Ex*Y-V$ZJGZ?w>2IX+;h8 zOz-e3jt|5)ryl!ofE@Yr#@)A~7ti+Urj!0$I{Nd#>)S~JZlFx)j;#CR&g=DuO6mwj zci&&fQR4HP*1_1V6KIjpG~1X)+!vOw7R24RrOdGH5xyk#QqtQiL=B#M!$&mk?W3tx+V1XF1IH}?UKzhNir}OfcaJ=(LF7~9`wt^4m(29Z(@+MS;m)BS# zx=>vs@0$BJHt2Bl`Z{kl8*3Nk2NqffzcYG?eEWak=+Xhj41^m_1n7g;066=v6ch!T zDgvd_SrBh?RHpQ*7zK2(Hvq=x9RrjHn=9T4O}{{#tv0OG)j1BDLmOBCyBLuBZ@&NA zFY_$G4YPoWoLwvg`Om2vf3vY)KZPMWB4kn6UrN8AQ!va9SIFg~I@ZdLY!3ZIKtd}x z59ckHuK(fzDqs*%N{CRCN;c>Ysp8mb$Z&)FEdWv?z-XV&QlN$$h1Eu!J4Ta_@=Wgi z^W(&Sob&g;PyQ|#L|&NqnDtEebjA8D4LoM8=Z8O|=~I7wl5v$^foEy9EVRRD5SYms zt^K4m3rHk|3WhDV13s$Cu)g&fF|Q`2o2P}TWIsQ?~4yMi76z2k#IWz(a&86Fy%^r z4pG|?iBqlbJ^w%#m9jDOrxb!gh|Z#6TBv8ARd+C2`fY8jt$%(2vQ`*`RfPy`a952P zeR}GCB_@zVb4|BB{q58sP}|t_5>WE{s!qX*F^qlrKohW1PJZ;|eAuYd*cIp77h0cO#;pcS>&4+$zm;ypAj+km4u9NUyj`=m>A;2zk=n6KhZ^lr z;Kb|PF-#*%8bTE3 zJHVknb%%&CIVYAJi~#Atuh>;bf){a^*B#0U`BPAw`Jy8LB|1!2B1e?6fe9L?m}HGp5XqQjSc{h+Z%|?BZgK%2RXIdti?#c$ zKz_%m$uXNsb-&q+kgr!rnnu?tXC$v`z5#QIk%1GxtxD)PK>y*v0(;fyV}KB`2PN!% zsXWzv0>d5CEeZOWn=yWFkkkJ>4w>q@ZSe0_mmgbdQ#QMt`2{ZZw<+%QcY1PQf+B7^ zSJJtm%>MWl{rcsM3Qnx@%7n}c*DS|Ew8l z7`lt-iv_CQqZ5!r`Hd0#NZX7aH)jz-Kv+7gZlt1J$irBK_I*kIq6q6nW?A`X1Kj~T zwj!W|22O!s)TWL^Kj-;wmpTu4h6GQ4Xmg}_}!V~w~$(~$~vYkauvcz4L=L| z#j1J}8ID~Dw#uKtfb#<9Vah82!f;1;2n#`RsbVjnq4P zH^zpNkKV04Q+s=FRFXgkqZ#tRL{V^&QvDE?-M6-Fv53B6y~U|Ow&0%^%a!=fUj~s? zgCe~ySIo8YGrox{rtVLIK_zb-4O(@_z1R8f1A(s;5g903jF;ok2KVQl(-~XUHjjTA zCXpwL`_oPs|M?)+RppM5_GA|?_8wE8_2bzY?NZ?0iK(LKah-DpGhN$5ZWF?FN=USg zuUcWb5sFaTWtlI^sc57j;B_|*XP)=KM&s>~Ql5nVpPikyaCu;+6_I}aGB%KHjGWk~ zXq))q&gK|Zv9=PEJ@P9WB?XC&WGYH?+H4+Cfa36qK}aI3{645~;MJ%cq?XyYOY+9h zT8NQ&CpJC~#N;__{5hmIB~Otr0-^+;Qb99H&ExD=W2EGWUR4L@2eq!}r>rXal4Y6S zTnBZHAk<#?94N7zr=qvI68|BDWACe4t`;F0TQVX<%$=5-i3Op6utGdrt{z#P1xwfa z=Nw@mSd(dMIsPp5?JZB>NWxCF|Hu z{ihCe@MQi-6bxlqe;a8c`Ng8PPh;-gI{XK0{ILs=!lLi6(Vkbn{Vg3_u`g+F6xE$m zB2D!BH6fip$Wl8F@F|1u&f3y^zbkDhzB;+-$S8H=GXqd|+T|9PuX1+;!vqiX{E#0Q z0gXH@ZTX6K9tyJ^dQW%C)fMGyRlMAPV<~1ftdaGeTRNK0>4$!aL$UZl@Cw44`APjN z>A{A+b2HkF4v^JRzpWO(|5S{!A(=;n0%6p6{cA56p8On|pKwjfKbF_2cMy8BRHP{e z%V2AVt)9QZS<0Ry*HI)D=PfmOaxdbq`D`_}oRIy8R#??|<5lXfpH;YF+BTJz^Dm&IF@tZX&-4^n$sO*U8OAGraIZT*bbb`Z)J4zA4&)}=FO+I#>)Zp(g1(ls((pZxQ*qXW7QU379igp zQk+oVEl`ml#zN9ebFvCPg-SYr9ODZ`k$H-@+(~75Q+gl&q&e9{W^yl$as(M;1&eXA zQbp(lai&Ut>Y{RA0C|;Be(T&kLSR{(GLO2fI}rYuMY^%+8;xHMhOQnPSWZo${ea1D zO}a~sy{x9mRKzP^8lEnrL<-GFQ(h9587?_32VqFH*o9!>YG`!3q7#?Qv-wJ5e}2bs|A zx@{WDll|wTAD!Izp} z)`z^3QC>i-Iehbc@a;^i%}ve&z!r}Sn_3FnD4=;Of=a4IETG8?Fp@PYcP^6Y0&N%= zuJU^uIlo~Oc}jx9!$ovfGGa4L|2!?6zKSdZ%Ceg(5-HX9)$$=070>x0OndC-bbWe! z6j6TQ{XZW3j=FUu+lG~yWv8El4R&3W6tB`@2cdl!aHjZB`V7^O*; zHl&AJl?GTlEcvQ^v6=dJx#}0HQ-&M5*rsEGk-8kV(xQsuC+Lqo?{@&mi1byL3JkF( zIRw0e2G6jie%b)dREO~GNz=JBaGa$`SyU+nY2j$OxPV*9DM*c(rLc%5=hmDd$Ee;i ze&XzuvA~Y*M6M$OgCB&yKplNe+n!EV(|@#B%eQv-Q7bQ@vI5jSVmwpU1JtJO|?Ywv0@kPJTxe z^aaAFOi7wZeS|334&l#I4rp7=;pTppI3vPr1$ZBPDGN~O{ApihGv_hYrj#SOGlJMP zL6^4}#J$;S)o-{UOl0wveymgsqgH8}h?H3)@kt@t;bOxxW4@+GlBbr|Pj|bs&fvtw ze7O~B;~70urUoxWlkcKD%m!lAG4F4y8_+*%v^{&5{`$cB(_RBn zTR>Wf?cHfWBLoMGF^eU)pilGxL3GtfQ`w)Hg>up?zRI^+g?81$n?~~XN$+!^oV~94 z-bfifpUEPFvt%&!FN;ni(TyXMSWm=*s%>NfXv0eqy&W-*)4kNH2}=aZ2%YfB=;ju? zPcEF~B)kdrZE5K14l>=wL_zZnIj+W9k{Fl25dVS21vr`rfO1@>rqdXzcMvhSk+a&z z=FDpzTRCM2F+$I)He}3I0KP=}=dfvUEOOOqFrj)U@vcRP8e|v@$)O;YV!a_{{tLL* zgcl!8QJBH8KKfJAW%Ok7yGh~{mWs#~Rt{b>jVg1rF`xQYLyJMT-&9YcIIyaf78bKi zkLmEvSg?wf{-4jw)k0KbOj+u*FNsOh$ngg%tO?_xQF3#)4X)ISQNmkQV>ERMK)OT% z*-%a~W=*P=|1`NT+o$p^Y~vNTC?P|MuMYpZ2fac>=Bk3}e3{8M0sR1CxX{t(!+Ra& zJ}tHPMusditQe@sUS@oK7sSdyyMz$yi4Lq9ykBcr-$@-_BVR5G=o3=<3IN!GW_w*R zYVzq{NS*%>Me$&ycBu1I?Ty|IhRSOAYP}`TG=&M@RnfYp$}`=GIGxpXo6^+XZd<(e zRd2Kv7IXH~=A=yRsUsX2Goe79HT>z<-W$ht29C!KAFsWA{OP?DIuB38JvmYP?8MW* zPwLE^jC*^s_QT1ipHJz0Jr(!Qsgjnp#s~G+N}@x%O5fgP&N+A);plxXq=k9Vlo84g zlNt4IPA%bFT>9wu*s4}=2NM>hDzeO~J?g$~Yl^wPWwZ6het8j_oaA!X+l-`Cb)vMG)dn2k8XblLH;rdzNM1?#zS&HO=_AYS#+BJ6n2|~%^h*)4)MwJnxa`)3mPs{GKGl2ulv) zbc3m1KG39LvP#uAr@tj5s=aR&!1;#YWUiQ!-S_H%&tqDjp?cVJ=+IRaxx6oc@fOE2 zOjD#Px8YLHsC#RX+9y@a+1m9f>tPq9M-&xd(tz+H(-U;$Km{VTv&U2lIuQINsDAO$ zRzE=gRs!cLGrE;zhXrgC!{IE=zBS-d?;4{-OZhypZC*uww}JjmKRZVa{>R6gppl#a z!G@zS>3)mVbs8Xm>CbQqx`YNLeJ!oW)Y4}W=OzgXCd=o5zKlsgpS1?LIChbX_b$z3 zLxhP$ou?k()nYzKQ5>fj7g)1?7sYQmlp=w6bB~f#iCx`leY$=URV(WNQ*c|R)kj0upX;AnWPS4mP#)c+LTqYbI~(a#7~NXuv)46u?|n7^TJGt zEj44y#4Ix;8)%{*187ihw+V)o)94+d`Bwiv@)c1&*CKX+TK@y?N$yj_NgOcS4g{L8y&fUc{abpw4>O<7w3-JTJO02t~Mm!Aqy)B|@{n=zY z%L^@bn);Bg`V%Kr*6bR~iN$e~?Ri_QeNcK+S8Mui>PI0Ii%+N?eZ&T>m6B0qUUzK* zH=g&rhW_EpQ<3FDGUAjgm3GqpriDgeGsN?{ zk(-|#O9wk$s91D8> zHPB4|U721o0DuQ**hK^pItbSjCpIpEKm5TB^J@p@31ExsNf_AKS%F-TR2iF%p&4W(Ufzznq$kd!i>b?bTp?b0+cqShoEV4;d|09)vI7~X#{ z52``@vQsRzv%WN-i;K8zx|0pf|GbFk6L(lHss6ff`|sbU-@i)(JKYl^&eTPLk;HR~ zo~|eiH2=&P!_bhohl6k^Sov@dw*kmJ5_7E^-?@bVw7NrRy_g0xF}w$Ym1G!TkPRja zOco4gjRb`0iBh1RQpB1?K#Rbl1gU5kgOyT+-3NQiB+pf*^y3nb<}r5QR5MdlFmm3h z!X(%s>Zq|%kf6K(WM*UXMuy*;8^JJ%l50kTauUt@CXUkqs&>~YNDLbSV)AtH2RgEk z#j2iT@NZ@3eZfg zW8e`La?~I||4fbo*x<39=U%600E4$aa`l4oT9;6D0tGWd@@sYjhV0mFKsitEht-omK;6su(y1AnhmYlZs^tKY_TiWXIAM1xY+ z+XV(cx?SoczssY3h$K`g9yY~7P`I#EaGRv7W47gr%RQqxVT)0bq{-{kW!e?K)`5D@ z=B3XD5i=3RC=r*yCp1AmWf4>%7ey z?9_imYO}r#qG6d!??HQ-knl`hu$KVHrb^2N;2~S);@beONZMofW+%unQ{CABU7HFF z11-A8FhA(DRhp}}$^jH8nPndx>IPnF#^;HUvC-n(a)2aWlktYX(t`dt^(={wq^d;n ztm|0`S^&j4MrHxF^3<*(-}@a_sa+;0xoEX)#N3GH--wo7*FMoyrF!Ph6Bu05Qj;P< z1~;a}c!EAKv2U9UI2QV*X!I{~O?>AIAb@!>e7}e)CSNc;)SEvV@1AHuEUrWykHoFx z6senvtNXm^=;u)E!36I61aHV{1nqbhawnR)r9T8KOZitk!{=Z?QWCzMd;PcuXut)VviZ=gN9^KFGuwOt|u+d&3tsOp0y#Jr- z1Cx+8O}<%V=PM7)B2e;1QHX+;N?2*q?)A_)7^0k;3g24g{m8#=9ETxuw<@B8<(tmk%6K4oGb2z9~&O zUDPs`NMYz}a>a;1_XgABTdH;eT!iYPOsr&GFLTXbnx*=2fFT@5!iXotqsqHA`;V`b z$cA?OZF-0J<{Jx3yW>^dT}reW-{&Y*w5d~vNeJj0k4wrM;AVAYqOrs(BGaFtKo!d3 zr=b953|hX$#OY#aR<$2FG?)mznc)%54kFpRi0L{OK}kQBi?Z#pBvE|HVfKjc|K}t@ z4F&S&V>n)#)u6pq47qs41I4>Pvx1 zn#s`VtC8O0xjPgKY#Rs-EHwPi2rvjAwIqL4e>qclU)S89b4{mVS60OX-N4}VWfrG* zT{`+uchk!BYwl-v{W$eVw=g1OS#a}im$QHAo{i497T3Bv>)d1A;keDq(%W}my8J}< z?fT8v_MY4Q+q_eXx;MP(zj(iF%! zymrxWQt4oJ3xdg5@?_x<>c`vH;cD@;k8M1s_E$cg0RlR5?ipU)=_6|VaP4UFrPF-8 zw~XW#=ztPpSWgLvd4)>;A{S02dlxPcjV=oXropc&L-wtG@idtEIX`G!;D=|fa)C&J zOfxPKGvf`$#GTq$#zOeM@`;n&XFf)`G*aZwd0P=KShH-*6|Fotu>zno@dvY^h zw&M(~O&jrU%w3JaRT=gQEk1=p^l$*wu*iiW6Z+@u4-otaU{1xBnmgrDH*w;MYw#w1 zRZ5!u|MscacPM5dx$k|hMoVE;P-3Ue>(k5=`=J!$jBInn=E;0Um_9Moj2nxd-_W9< zd%D@>ktm2JOGeZF!uv4=V4XeiLpH1OS*8dnKxZcxWcR`MhcUA$=+1ehWG0`x4g;n; zW)&L_dVG%ssYvmYH{*!_2Idq90W@!3yqJLzE5LgM;QcC(<%X~Oc;P2f#MxcINLFW? zR>r0je0>g@MEq{MGOi`RS|bmbUK1ZI?5+hAlznV&3C9N$$JJ59;{{VTYd|Mzi0x{now>&iVSXn zdQ84sEUS`BPGZ80gOc%sh3~CN5A$4)Dc~@HAP7yCA8=Xp3W{(<9Y<6RY$_k`5@kE( zd20){lnB2twI=o}l;=2OdnL=PW7De&+p0<_$`(i~CGlp~|Nj*jw-Ejb5B`!e-r z^`UuMS$5P(DU&}s2Es8t?~J?Y(#v}-gq#S}G{}o}q;=&8L&?gzuDYS-!moR)itlxX zKf`$!3WOfVm3NoeISbrB;OvREi#$Si6e?X_`0r72xEvvJ9_I3ta00wrakquE&ZNHZ zYwD@_K-8g;JV~&lg|u~Zotx+8%f}CwPxe%FXP1ws7gXLUkY;pxsKiykl4p8v+9tUftd#K_25W=K4b0K2tE>Oh%lRW=Ift_V z>LR*pH%etU`U2i$_49wK{GQjb_~qlf3mw9NWjV3C2v+Y2?=)gcE|F;aj=F6v#0|m> zG(~h^+?iOnao71?;|sNcXh!5JsVB;A8krq+c>F;50EYLzxSa73)0Cse*n+7xM}=Fd zX74H(J%Ex$9sx}L45BDfcq6DmM5_SAOQ)sx^NFiuY{jZA(EvQLi48x>!q+gY5aZ^J zy1Fn(%;$YT1$h^ZcEFk(ei1E=t6}-0 zbUgB%*=60tmAK#)**EgNqXZMH+r*T|J6r_nlVB*lEY`-9mQkP(YAQeptWZHsV6Bc6 z5o>Xb;gGk0;>oFx*sBFa-(VTWo$G@5z8V!9{E&MPet_Y_memx@@Wb{V?g3X0DwZaQ z7V#n}#SLM@&W>a^)?r-Ixd_Mhd$UD2cc$(vs8$%?tUe%RzFOn1`5sZ)NrTXrc-8mT z7-^37UuHgTzRTVBpLDy6X8z{Otc!nI0Qu3v@rLdz+G~`Q3!ld1<5rz}5#J=VLM*hP zBK@z_;2Y+x5F^Yr&As{ZIHOr#0qqP*9_~d{hb-TqYC>derOJ{8{?Z&u7}6$LKFDG6 zCza8-kmj;IJzOV5XC3N5IFq3qm1;%S9l$g2@ZMF3Mf>KGi^f4Y%IS}UBjrM-f$I4B zd{MiA<$WqB3T<}_%oA0iMHxFP-&=s1UscJ{hDsKY^FAlU%HWm=Nwn6NZNb!}DUKmi zRtTz{i>nM=tE-IUE?eur8z@rL5&|qk_i$Yi?@I-oATd6mao>y@C#Skzw};EGYrZdp z-H`nRzR04_jmjH!5Jt4Nd=M1vud9R3xeN1(lJv)r5k2HR5 z)q>pqs90bM=g}*14tYx6g|xJ~SyyD_4>V^zON0RXRv@#zh_eiSyd6SpSfbf^0hdr9 z9Bhog1;huhF+7po?f@7g#7`iZ0bwFS(4Y_3pz44dhj%pqL}AS}I07o?({Z)ul#;34 z?rlOJod~A!hPpMRDSc&D;a|1X`e&>n;(;R3Pa)EmwT64=9d#c5m~-of<{jP~Oyq+SU`gdvT1tg~VL|(4ntyFhOZW zQvX|Vp)jluQ2iCs9R)!@5M1LZQF@_z42-WRi?u(>utAgsBf8BXhds!Jt=MZ3cduKm zuoG;}O%NWtiv>it8{r9(t-~ZY01IzxQo%F*z`G@PqAAu=9)~5d0l=frK zrXPizA4k)FoXz-gd2{!|X@_Q0CHF6+R)O31;(IF+#v6YL4?r%y;Q$i|$E%v%-JS@(KNs+$l-GDRepJ03#M^M^d-=FSUNPZq$fIKKVaxs5$JS;ZI|oac zmxR?aQdRTX#awL7ZJy=fHOQmn_;&Y0$J{S?^o;J@uz7bQ1zmoLeQze`P7$sA{$UZN z>$2k}A-n?lPE|k-RU#h5&0+!LQa(GdJqU@NC?C7Im1n2P6LvQO8)VV9V%8s%vk8In zM&Nc4E1d0^MVC0_Ycu=>D_z||=ie)db!~aBj!T%%o1mUw5Sye(38LozN71=BwDkXf z{C#$BTeYp*x^C;b?iZCLY~62ISCz0*BuWuNIIC6bYUn0pCEX;+EeUHy7fF&NKECUM z5T7I@@%f$KpRluYdB30U$Mf;>6MOS8AAe@ng;AR0v%#h8u%jfKBOvclMv`NboOH9> zK6}wkA+-(5-$16s;=?}KO?<&3UfpBO+K6JIG9E8MSuodOH&SqHJ_Updb5*h8(930U zc)fs(I|i9?0YORo@w~Z=y^qJJQzsVMFe@?gL2tbUQSJ&$(e$wksaV)ol-0T`x0N7+ zKNmEk@by#wlM7iR(@i`PJVCIVm^^*R2O6Z`PdAK~%B#X~0%~Zv*TxzW}|^M2db*R0ix3KN$6SR~s-pSfaWy{iAd%U1^8+I?GOYz}h-sqpYRJkBx$Y@Jl;& znwSdz>9{?8U3TOgiA~w_jIc+B>)n~3U{sH#5}a=s49)=6u87v7Fkb|$3S%rn2_AfJ zaIBGcwAaSZbhRVV^0l(rU>`aLLCvs4dmZumxQw;%s|Y}jrGyhRH@C9#_-IqTHd zzaNs`xnlgGeE=6#wi#K;Oj`jRFY~HHdbKdvr|ZQB+7keTs=hgiu{dhYR5dVhqp7Ar zO?I>o1)%{^e-HJhCbQRE-u~;~4X&av6~$*SkrU<$-qc@2aIon>iW%kvbKTg~3Ujql zuTgBQ3%mGsoX<72f%a}|@?rNFHHRmL-4SOk{ijHUR|q?oW0xg%M>IZ-{d73AyZMow zsyXBJt6jxv=MVQG6Smq$>hJV*ZorJv9%Fht6eCR(&0o)Mhl2celg;+&H1UYg$Gnz4 z$cq+R(){uT&K~G(Z<|OwYm-XA_Tpa`4|pUuJzfXo`r@6MZ(9K?&z~|9bRy14S&djJ zISKT-({;kiK1%&b8Dc^x>(={^hTbX&l)UV|N$(d0ACvD<>s%!!2?Ssg2O`uFwsC{n z$4WE5E8Vl`7+~}KY&MYU#9Lv@t^zbYifjY)g{G#i7rT;`io*;s0dHtB-7e8rD^9jl zM*#qHY%|hXBjmYAiWCfZqZ+PBfFko2C^L;I$9Yj?J_yPI{Z}yZvq6Nq=3>;Fi+Lge zZFX8WLw*Qgn{TM`K@2%S7=fV(cV-L2^K9b*j@O6mdO0FnkgYY^s)3rb@DKxL=lquN z*rx$@Fy%k7(;vNuGk&=o-~uP(NCNmDVzTjJ&H~l5GKnn&z^H4XF$H$ghC!VM+8aPH z=2|69x+XmDjJ4a>d$2nkPHngleEG7)<@cN#-Q1QUDgEdTRNv}z=@%lm{=uJ6)pPJn zLcBe6i}s{ZQ_=LVR6by%`DK9aLsain-H2eAI55yo?h#4v|dG!%wPOs z^U=OKs0gO4DPZ1EH?a@R{gq^0zb=$Ds_P>!Y(Z2YrmiHLV}Um9?h)cYY763$zzI`cq_3+_kzK`* zulrTgv$A)l@)hnYbUmXbdw7E@( z5#hnC4Z^qDV{3+X11ON~kpvV3{x=#iVhEU-F|NH0UOz( z!5jT5PugH#4pFg<8%UbvmJfrJC{>1q@QHax4tUoQV(7i;gc3`rHll*RPJ~n)RZ){U z48CFvaeQYWPSj(P9=zsN2h#{6JBI4*vdCwVc>yZkVD5?RE@jNh1A%4v#`8D&y1J;DzeR{ zkc64)#*Rpxuu^A9P01(;pPc7^?b;qyboaOt*eaL3oA5WvOZtg|A4g?Ty7mgAe&Iov z8Vq(Rn^I%fcW2(a;JL@Ruo<9UVSO@b{sxKwhmw!^K>Xki{K^$%R*DsX(kw0oOj{d- z?L=M-=v>=MWTe&iJZKNVq>5D^Oyi(yuOXE=^(amZq*bv0Ms~9j&bZoo1F%?~O#zyd z{z#F-&@!tTD5v8YkSoot`y0{QogI;PGSw8jD~47TCjb&$)+-w26#KF}YuCcS*;D7A zy!>OydaJYf-g|MlOD#qa8nb`c?(hdE@vJKoW?}I0*DKv8x!;)Y9pUYEwxkmkDerwP;?7t?lDAM9tR# zJALzgbhE#NtIu+$10|IDOl4m@qh?Q}6ey4D#mOfEy@M%+1awX#03(VQ*;M)8A;A>N zn~x|t|MxCbF(VF|FeG!{eqw)-@a4{BUJqVZKgx6Py{=g_Yf z(7&G0v@O<5KCOB6oaWa`E!&G)$@N-SFKd0hs+QxQX2J~eI2)YYZe`q_=sF*MwI^~? zmPqZ@e&Cpv_b@kFc4~YvW}ENMnwuMI)~Xm*Ct{Tvqc|$qd=&&=z;k{oO*5i)9R!JrV=2|NMHj}`}%8mt4kPe#ST+_ux?iMLA&KBc(l$kUL zD6N-{C|T%7P6a2ppX9=rpC9I8yW$Ca*swBMofQMX59PP}75Q%h1^(*UDGXSzEosV_ z$zxA|3Fl%ct|Dd0 zyPisQ<=A`_CoW5Vmgt5-RW9nVn>BM=m08ZKqg+%K#Wd;1tZ@tKlUDtzK1Mu=^|pv0 zZ6r>bsaOO)LG>Jcuo~#AQX%pNpyoFlqeRwE>l_O3-L{R1rMb%97~BH}M4hO6A#l6` z=tJ@gwe`(-IBb1KgxVuIZ9GxCYf9BpjOH#>vIcb2Fl7E>4VSIb7enK!vSAJiHLV1? zIm}^lH30|Tv}Kkl)YhRoW{oSWG~bRX37qTI7|fGkmBbJ-G*jZdzzQ8*SQLs;5~V{` zWj!2I_ogP=l?WPA$2Y6+!l?2^8S6Dl$w`sSC45bYE2CHd<$z9V7= zRM5Z-dqjn)Cnm~2kkz0_br>i}8i+rK^uSs-RfMPOCI=}{Ud zd+<%RIV7ee&&I@*Qy(-$$ltMrl3gpwCNJPsHuYVHdkzUP;?K& z9CwnVvs+TApg`7&YSgSUW@Pa&QvXFbeD~K!I_|c_n6iy0<9B|w@renwHn#iK@i%1T zO<--b)%v608X<~nr5rs%uEwo#s{vq!@>Gd2kiIY4xYqyQ*bN~`Q?i72*L1R`ch1Fm z;q`Vt1N)J2^IrYCpUT(LoCBYKI#3$zSGvn<1K(RCZ=bL_8L#Spt1PKj-M3r&K=t{} zU5)>;hI9(6+G*=uy!gQ(pSN#NzZW&Rn$@o3D&7|(*8fT0*?cs?TxvP~C90<=PCiY! zn4~D!yu9Nhh;>49=fVNup1Tv|YDkpkR&!DyahgtL<1*358cq|bXZO}j@m8;guJ2_h zC4^YqoCTs@Cfw6x?Y|wPw2Eb~s*k})LowCmR)QpTbh)PJdY%B4Y6M&>M|3Y0(t@`{ z3UJ9R3zaYXGl%s_;NCw`-Zbofv|NuX?nXH2V4yi7iI`kN^)c~qTYP8b=2oHDeGfM9BFryH??yN%~y{FZ^#*$&KVqr#8M>h zI*Ev}cbK~j=|y13yQ@QVx7#Wg5B~e0(r^U`^5{C7e7p2^did!ypPiPcR z(sp91?!KMpoyh2zGgEL`WoWh4V)P^j?UMeEi%hw)(5DMh=@Wg>{&JdNb)j@KW+5_2 zsHYC?au^qDrthIZU#ySikOybX2 z_PBIMInkm;Xuc|oGflSgH8|eN;5e1T5)!QqB}GMX2#k*pBQAt#j@K;{uxbA`Z}liT zB^zjYs}d1gW0AMY&_H&5bot6ICr86MM7`=Il!O?@slwOsu@W}gf~EtVWV4(v za~eoVVT`E1;kbcf8sD0=$Ux~(nDdtWB8BWi93Qp`9t!75H22S{cZ5~&4A-!>sZUp^ zHKG87sdsZ_Ogh#c6uE zJb)}a6#wHr7<-W($l#kifSX8l+j(MjXhQm$9Y}-hE_2_Z6tw;^3!_Dsp_!^&`5V%F zHFaFe9(vx*MRv3!zr65#64EwvA39Lit6%P zw=-{@*iY zEn{*z=i`8Gmm0K zEquXByr%SM<2L^>^`*mxqzn194XYVaW1OcRzCV|iwzaUNloai(45m-AR;x53_qIhS zXdz+QO7eH60$4*tcKcCIiwZp5X2|DTF=i;#N=BsI2{*kO5AV+cE{ta|eY_+uim5(B zQSKR>;4U2D&=@tUv?!an@gmKE7OH@4Ev1qZr#zb`wf8-Z{hX8RzBlP`!rE zHx(S_>ME}C#c|Bga-hR%)3WBPM8Bp+Q8&o?#;Zg1JysjJ_UXxb6eWG8@R$<#a$33# zqbW=%aa8zG#A2A;uV!R+R`>uU%H}vWI5N4V&g=uM8*C2?ueLv^j(Sk>($&a zRay;|KW8fVftrGT+8II@echm$Q1=lkgtO#ZL9QpL7gDH_#Z=ZiCge&16MO7nn%B27 zh?4Gw=ruV2TKEsuC1nmm{x{bGbCvB$C=W^wSP5O=K&@|f0X@H3Z&q_ZpcP`I_}BhG z;n+PGn9TUhzc~ow4WR{S*Kibo1k5Cq)lvhGqx|CA5;&_8xRWa0^`FQW3Hxul3 zW=WNQPFo<%*b|fEQq{Ff;GTqM!UG)LAm_8|4`}>J|9qgy(^^ye!B3;&iZ$N=I&>E( zeX`zq_gys}Nu%|N)vpV|x6Mj?qpJ?I-@9OW@@V`9^LMGhP)*4L*dCto{YCFv^Mj+e z#-#LN&fJO@dfV634o%NnwZC~1bmjTXo;&C6-O9T^Hk-QicZ+iE-OpcsFID_|yz}M! zw>HSc=lXAZAuAJ#Kq{+yBbkgA8) z*d--%{cl%>Us)Y%LP{v-7+%N$C@3_z8em=E`zh=OaeVPeouZl5Ws{xP80+lSzUjZT zRt{J?X4dx=iAymZszAlCiV?WtQ`=1bhW@HQ!Bu_o9>>D}w{R*WEAX4vJMZQX+vXq1 zURRs_P1>}n?~~*$8~<{8zi|hF4FF920)X5oD8-kcUnUh_@_UETl_}JXv+-gT$ccF$RdVG9YBr%R?H@yE|8PYox@YR07@!#MIy>Y zdsmfM=Oq**lHkx)*&h)^R!YD|oUiQxZsIP~A?yXWRC(7m63R#v%A|dP7}*ztA-#yf zCD$gVWHX>Y^brHK>PedG3CAQr%94WtdqpNNo&dEkUpJk<1Iv~baKIt6i?XmXBY=@C zcA%K?({_l72F?MwV{Jgr(foS>_8P%B7r2Q4D@VT$_!N7{!8%pHwe2(`BoV6GU$0XwxGN&yA>Eg-rbF%hvf zEiaTSc^CGI_iLfLcd5EohC5igNGxIlO*8pO=rI+M#|H)(vqu3mx-we=3?6`bGnkc^ zCx|rHVQ(h`5LeLAFk3KuXV|*y|Nk3l&9$2=A5LV&@#pqc37^!f4j%*BtY?l z6iiAO6EGdBj I($?gRBGE6MtHx2?h!!7+6wcf$(T6d>Fa=x~OcEoPu{)JEaw zXX0W3x1KTiPZ=y$8Y>Ns;!DX@%0rj2`QAn6Gk@(JVh^!pofn zTIjL@D}#js&+pv8ytaDkgd-nsGv(S->Ee`|`pB}}AarI>M7a@`q&PmbfurJ|ck%g+ z;pasJh@zHWDYtzQ6jw8%c-5}&*NLH!Bbvx?%WP}$en)qTyGBph)B%mVwY*%!$2imDJ&Z%@=-N8T#`+MQ+^yrd7PNs>sjbDbwgH51F55GbJsFlk}|s zA~5|j-{?p8ZzK)^+x@DJl%)3C8c%mwW$rydpLjzSWnj!7Bo0tqX;RYFgln*ze9+bY z$#IUkg={dI1cLyPd=7w7QbOf*s~xs_!bD83vy%y<~VQL!<(TD-NP*e{4KI32u? z-D_E#Ez`)--Lzzq6?U>2_#bK8Y&3sYZGgBbwePI{!~WY2Cr3guD@=zgN0*7YTU5NH zNO6pAb~n;7_+jfm+F|q5^qVoUxSp5Vx4Hrqq(GySVFC=~ZO%iZdo;Y4_#Rhp!u}Ls z_p}}~Muz1<+W_6KkjzT8f)z$KVC$|4UH^*`QB{rl`lA4P*ADW&3In<10_}0XXHI_b z8t@WLjEaAeYs+fmj2u726&@#CWtwon0*d+5FiVlf#C)=`iAkW5j#(9I%xX55}xl{KV+3`ih| z+^sy?DQJn^=7ezzfETGV4;M0WSvubEG%=yF*(%edv>gWDQOlWDS)13Px}~oH^m+wN zPQY-PKv_oc)S%980AUJd7k=Gr?AWU$pR&B2tr6E#@+i}3XJ$b@ws;BCnvuRik+HQfd8D)ql=t{x>f8_soFGmW28?vNQ884CEem6?ci?;t zg>h>Xk|MC3E3jcP_=s(m3&@iI7;&+&sH?CL~zBl93E(Ye)XBXSB5N=|?tjCPy@;@Z4V z^24_hp>Jz5(5Hmc-ukc-EN(*6%~3i3U@oZvrUHbZv~`xw3us_ASbMb;FG>UDZDp-! zvIOPo-Fj}Lh?Fxys%wIw#uC=C{JMLs4OX0~-JD&!rNN0>S2OZv400c75|Jb!y_qzZ zQXEtziQ8b`ybRrZJtGfkjPI}AqmG(P=?v1rO((D6s{=VjUvx|)PRP2XhY<%=kdj3! z8tJV=xn*g2Cy>Io$8IryMdQ0boE%IFF2NUG^(vAgDF@-YZDQmwE2EC8C-kufY6ZXSfuFnzy>pT_?a|~P4I9-FC zoDkSxP9qGc=tXub*?!O*^~pWc$s6I01VO(9Jq9T0IVFW-*Qi4LT*KH@yjOOxmj($1^U}v}MIXPuqrwOG#dESbknvR+_7e%;;$}lkH zz?spF*fAA+QUM|sWi1f1INXf{MyAo3GlEB@(nb^FUX^DPcx6L_@)3JwVaq4~3USxt7<|`*SSuLl*GwA@{ zW*3YKhXxzhRgGD;BKI>#feFy;5!T?@EM45g-!x=(&mDYzr(x?-$xFRAN6Y=|V^Uu^Di>!?nh%20yXS6IbYXZBx7qg@gE6ixRRi@UF^4Zj3; zXAW-3+HoH4&$!`JN*wJDU7CGjl=|W<{>7#27uRtciqkmz4!`)E_Tu8P4R4RVcs(0t z_;nO37)8oVAsM3%N5W#WN7v?rspW=k${D?pJDMO0^T;19C>(v8AFfyscK5{SpX_k# z$(L%!!$XR~Hx<1+QW{=R^77oNmzN7(-Z&Xvd^X(S%*)SbUtT;P{`UOKe@Y^Z$|A6p zV~SN{As5CR&PBx5j;*baP-}?TR6lm3VJx98!lQAlplR%F<3`2H5qGbS{i)rEZF!}3 zWn;+ojhn8&I&y1c!Od6auD!Z^`PGe2`;$SkDXjYM6T$wyHH!Ka--X`b9y+BjVrWQT_e+4H;VOmlLZv0K9P!B(BnLw`4^ zetVI6C;RztD?ay3+3Nqj3^6+xf}g!0tmEp|IigRU67pB*);VM1Ui@cQylyy#D=Is@hVQWsYYV3q zqrII(5!D3QDy0*pfN~@kVKhGuisDZBGmFu6E($3VxG(^TwRM=*=w~<3sZO_@qA~;5 z30r-hQ9?3@R{$rRXpn=R?t+ho>x-1YG{8Q)dS-O3VrmH1FE&e>qA5zRg1w)w5WHEi z&yaTD>3h!;bOeVFV^9cNu>u_#n3c4B?Wh(i>f>!m0t_gy>02~&05^@UCin{%`FQd6 z(^3P$R~b&cyMl)URU;S*S8E!(Mh?)@6&lb;v9FCf=Ou>e>KccAKDYv1xd-3#^hL6u z*(Kg{^eC}86dQ!t#=;u0u9)9y8Coz}MZ(e1gu<5z6=MkvrNwj2nMq-pgFV^C{{z4(kpSpV zOV``&C#P-8FHyCc&Uw^%W7om1mHeg#e%}>TyP|7s_R>z6c&k_JmeGHzyv1eR0DLZZ zI{Sk_t65^eF9ifFN%E8^_rRQxXS}*D>T)3E)DX&YEU$(adwXM|W$0QIX;L7P&6;8` zU)r`|^p4}N-V{lWoUs9U;Ie@Ped)t7*tRiamZRelZB0%{Z1|BgVKV}{Nxdg#FOxLP zZWeeuXEa>Lvy*H7=G(W(D#Q*eocu7YFaF7WrdT*Bk~ZV#UVV*f5Q#5$+ctc@WwPh! z2z@TSRp}}5=3t&|F>mct(?gacaXr&l%+p*~^r`nXwZvFtOs=NvYT%qp=fs>l6Xf38s z12LeNwOXeCw$Bq^!j6Vr>~R%pZO^0xH3F)@nIlZ~uG;mOG-{vzd>N)D{k3xl68iWj!^EEBUS)AYP(WsrJ|c870MT{V1>aW}!E^?RE05>`^b zuStzmG?QIXNO^d0XGv|{Vn)HC(uTzgIfrgFmZ%LMM+cXEez6Wd76Mn89n8jmEz1PF zrZN|yD-rFzPV19H4&A1dxj*aad2`SV@ze|niQK`)5rR*q(h4-)?wX(9rB8o}r%w>a zVWRv<_U$9-W#%4i4kkhaVO61cBTTD55xz0`|M`6T0=mU2dRs|Ykn@vmIRia;Fd0s| zo58ox8TG};F5zK<_O<)Vyw?d&5)V+C&`uTyZ2W9_X>cmtnf%;n+Us1M0-RjiHhY?I zIxqW$fx=*a8(g5q6&Rr+vyx)6yt9m=!U^IqtPGc$S}TlvR~!%mqui^fV^=K<2w6#( zGOu2 z{DAq$ehv0JpF^H^HD@FRbp>GM_x}iokv#{`0|{p!!1#A|)&HlSYv6#zjf-Xf)xbMK zoS*yF`W}03k#fh<>TcY%hz}#LjASq4uRN>!p{+8H4n78U-1u!7U+)X<)jvO&p5q8s zOO8u0W~)dpD1iyCQw;U}lL$leFer0mfaTf=Ht2csFJK%LkMwXK9zzQId@)kk$6dU? zbN&0tpQc$6mcvgoorU21`g*By?I;=e8@mmfH1={}Q(!hi5<}y(OTciL$OJQM1AH%@ zO3bd9`RiQB(3wR zZveEZr*=S3S{Dt7AL77zYNrH&YKW2nOClfA^0|xeG1fN9p!Wb;7jFhhCJ&X^Bh5#! zz1(<=ZL1`Q;U&Y1jjUB^}3*Q;O}BDhv8-5e4iyRtIb||?sEB&@4&65yz^T}_kAjj9cvsuT>Zfzd&ko|A{p3o;l{FvuFCpr z`Xx@sCwqX4*pL9YGz=a2^FPvO?LUsJ3aIpb|JV>f9JBI7?V7Z}wWp+zl6!PR+Le*o z+>>X18~ijHQOV@ou&|p&<~qmunj6!%DH{J!bk)Jp4KSMkNFxR^PbnYg?-wMc)Mbcc z0a_SCmIA7bz0$`ZvsZu!N%P^%U}i`(4BlzGE&!@4bW#~MCc|L2k{=mI_jnkj_o_RH zHN(k9`k$PG!AemwEs=Do7vD_9i|3uP#9+B+ysknNodF<;LzYYnB@b9nSf+;s;lWBB zT^S;HNnfp*?8Tj0`9Pw-+A9uuiPuqKh-_HS^HpHkUpy}Cv441nhLtX&N#ljKNcj@` zQ2c03bjzB4>d|AgwEyX_0OPe21!X~4fmf|4*VSCVKi+BF`IelO@%8p{clk;Js(QCB z{JX@+|Kd6Ql5$eOwg8{Akckk<_r2ruTqEMt?0zmo`)#4gHs#h;m1w*1b>&7vAt_Q6s)WX{&*&6@!;AW54g3@^)3XL=LLTF>|1}st}1x( zVsQLLPJ>!R{qx*QypPW}T`E3W8LD+6D;c% zYWLbg$G&a)RB*T{jw_5ITIlD22BNFh5epKH8<)5|xRkZlRJ4YAqr z_aF8?!ueo_F5W3}y@qf$B<5H6?OS$Jk)JN45Mz5!y$x{CjJ{z)wkccnzy_Q(b=rwv z_~USj0zigYg4b8s@&^{EYj#xY9I#W#sQnGFAq-{@{&EU3diq+n#3zM3y1nP#|272= zufpdnM@y3RS0_*ZIu&2K?!es&CDeKI+{%*9?b5?1X0=8CdK0&Y9gVqvVxb&1dlxX; zw7zL;s&2-eLCV7GhT}u4Z;zyADs_)S$1C3jclVu!faQ&*X7zb@=N}Fm<`USl@^T^_ zlj6Gqkp`hydJ^HqD}?utu@xkFG~uT{`cOItLBAfP8}0RSZK9 zK8E0Q7227)!e>2B1c>}4w<9784kLzT4c8yPie!?a1{XotvKz4_yHUJ|7?kM2sx#9l zuem3B2KfodY!zi!)+2QTRpbCCn%IX62N!<(^q)1>$7nCtldQ1DQ>M3Zychjpt=Y3* zmx`rUx0W-}tioj33WM3@aHnLy5&|f8bi5{2=I9lCeG`IQB}ECq9zQVvFr4he(7eax z=(EAxxaD{Wh{&ru4tqetoLbd%M0o23v%z?PaPPb$w$r zGpcZO+3ys+3;iiD7}MtU;O=ukFtIWkpa~If%(dokE1CKna6z+O7@+V}>q+;3in^?E zGSjBrqwjR9LPu4f~|6D|^e4kET(xYqELBPm2mr zX5IWfzP*7dWCFj)e;ois&<|&BS0Y?fFS@4l92Sw5YoG3f)A}Otg$rtJkycsr?!oCv ze6Omsb+!n|(7mOE;_06T%f0I|PM-#EPurfDRh=Hb9TuMHJXh4;o@PA_lmySGH?_ zb+SYifqJ0@*Nhh1csB0(-+1TlJ==BqYVjXA@z$ z5;iMfGS#rANU1}~aH1w5`s_O<8dtS&OkvcjgGn>?KD(pc?qUF>Kl^uQH62QGfI`)b z-e8y&7LNsbdpe1XY26r1kI4zbC(DuLI{X?Cbv}qi1{_O{l9%aH& zhudKyZz2{9=#9(2OJZC~f-wY`4A~O-RL@7zW8YQbDb6SX=g|zhjK+49- z=tN1I?{TewjyeBy;W5l4raSUnH2WJdHOb2;*^d~$B$RsS-nPMw3Jo=jKP#>d4i5sPY*yQV@$ScBlFWU z`cxjaxS?kt=nt!7fkExIh#dBhTBVIeo7zWQX3 zM&&`9jy4};-No%OmM0Na5C%w z^Kp<_OaVRVLLn#*eB?0G*qrQ5{FAG?XGo zVNrXnA(+1Bm&rD7DIchF_oxFv9~Z3&qS%i2Xb&AFN*nXIAN9ytI1tO^=fml7NNM$l zY%^_{yNASLIp`zK`_roSGhpUQxRF>hO_HC@h#J&+TxYfoi&XQSId7CP6^Id*_!W!w zOSi;FOTXo)^^p+%&_ zr#lDJI&_S2W0vS7MahrC!U&?`AfrPzPO0pA!#^s7NJs+Bf&d^1ScL{@LO7c;B@9kYfPw%F|P zl^;@g{+Aj>w2RKNdGuZLeW7V*s%iIOHOrIM)dN;lq zCmy%kUiqRc86H@TOoq!)$8Kma7PM=1{!mm|O_KLIa)~+CjmmLFx~x$Ln1V70DPzDELe0DRwi;*B0=7%=rPHCZH~m;pW1!ugV9N|X-!ZA?$BVY>>~_>gGS z_vbtgmqqG2R4OY+<_NzTH&)r#198;jyl%3)eTM|w>F_ zh(g?QcUF7qcMfRoGUfCv-MSkd-Oi488u=z-@I0;hYnP|~FEsW22KtB4g)awKfAn2f z>#_#(CAoy?(7^W_lRk`?3Fcn1)~EnLj`>?&MV;(wumK#q~wjUv(HW>1KS46Guuq6{FhWuQs^{xTOLM1g)#nDX2r+ zxP}RSn;_7Fa(c4|>@KWp%GYWyz2D4mvgCfB4D6xUCj={?UB9 z%`OP6qEh!?Z{dFHALaFTYx_5wb8YTC=_=b%bcXZ4#{4Zpg&JDtSiloGC^&=pkZT#T z5icv!h)S#QnXZs6o~NQi+kS6Y{4dlYp*iAD^GbycD@o1T%2&faHy>8HdPec;Z{5N> zCWXJXuWDOgJ#5z&fpjpuIPDQ??% zs_o3_)-zXHf7iCXy4H5*{GE+=@7%f2zVd3DcJH0v5AGa(bmz>o_TP`&55H*FetGxz z^LuAr-P3-0Z{@f9+CT5ULQXZl-*1QREurt9#Y)!A;)(f#Ku%z8ssC(%^_h535j>!B{U72aV6RHrTx81GoJMAW1nk4^uG{5{*lH;|c z`&*OrdQ}%)tNuLdvx(T$6cS^-?@-D_ooUr-y(syVg&yC7AHI;^S<5f(x9g0VT#-Jc zH~z%|W<-c zI1H4aVC?3kwABEU5cONRvm*Qt9Y7O|=yC{A}BP5#xbz-{WHSZ)tm`|@y=uYdgv0PWseNv zLFVz7IqA1E(t^zAd44U6*8QeCf4Hz9DlqnwzEg^^LnrMIcraoxQ#uyY#E9;^+!;TP zZvipGVO2#NVs#i~EhrXCrMye@=s#FR! z-B+EtTw$7kVSiO+%TWd&($)r)dT|$gf5q;Slft5A9nK@y=eu&R>&r>ShMoUCLP;#} z{*24UCV3^>H$lX|w$3(Ixx2`6;!JJc zrN`@Kr%uG1?X5nu{-1`|o#OiRfcuFLlslhXwCg&uM(w{dzy5cAk#S*hOYP$MON;-j zr=-p}$kspIq;dJlPj#`}@k#?oKV)v+Rs0VRDCuN86&fi#!}@HbYj;B_%!x%!jsSRu0a7>m6~hX4?til zV4;loJ*+oo?sVkMEw-m0Z~J!o<>f;oUKz7>ArxmRS9@iZWy z#n8`Ev0D7fDsgm*9g{Rq00-_?C3LTR4akJ7A4c8jd880- zLkGGNj5-9@NtMzn#G|+`Y8Ouj0(y;R8lX;ZRfQl9#vN~MvSe5zS<8KM6sf6FuowT2 zp|gx@st?2P8MUBBH;nG?baZz}OLv2afH<1bEl77ucR0G05F`WOOuP>$07>w47(9FS0dR;tc-}8kagz@q#VK)h z-8X++fUu>oGwgMz_ibgb1}WQ6rX5aE0)ood?Zey{Y}(V736(FKUd>(t%H`xD-y%Sl zAkC#}J_2AB^zWH=xeOG_d7)c~H?lN(7opSH;YrfZbEYh>|JDenKzX6WVNKi*_EZhv zm*BKyFK4|k893e`IH+;4*(0^mXN zXYHXy`}n}xq1eUf^r!zsOZN~Q1*l+JSh$--hukyNa^4SguPKAErAotq#H)ZWE7s4O zw65P;U-P|5kzLE`5NvI?o%?RHvPbz}-2gtXo*@dSypmh4E#IVI>(2B0hBrd+E^07Q zbZNW5jW-{F?GI3?H+lV3z;m~wBsENLNU@}23 z%YNv`4Zt(3}L|@d{lDUJyw70I2*R z!ugzZqh@40sL*vbGCljA1;t9lkB7lcJbP{mHG76qO~lnRW>ZOY`Bj0Ue3De~hY3Ra zTndF#FunAbD|QE))$E5p%=)6DBXFcli2QG|^>~M)002PZ0wTWcTIz6;OQqhr;-DvTUE7=n4-79oqiiw_zn8q!Q8RW&Z zP{lmv&ipyQT;mB}$Q}?7GdjAIL9*4Zwp6#5?C<3jX%*;DLx36GrEbL0_XQ(%!%k!?~b4RTu z7)#!0eSd?M?A8JmH~O?P$4O3isX^>HrOq~mTx|qA%f;Pgty#ocGH}*8!Qi4RD;q|R z@uZ6pot+IYQ)To{>O}J$I#E~fOa~J6CkS$2>{33x1b{aBGUyn*fL~X$wfom=nxnsu z27f>I|M?$=77TJwfJO&Mfk$b%@g0WfVgo`+$7nU7jtac-0X;P1wC==?L$ZkhH!Ksh ziDXU++UP(j?n&A@DyJc<6g|RBNsVb5s-)ahVVnUD@F&=gyG)5`e?1EwUctOum{#Is zySFf>W^IH^vg9zQOODG~92m$gb&S?DvLwC}TN^xL^IMNKIkJy@ z*_pX?=W>t{Y(1Yt``_wMsA%1lHJ`c&KsHk;;w3~nUO9ZPwtA3o$A;`&h{^z?KDGxfsg@b=mcbAgw z=PvY<*6&9py(&n~w>2*RES>9dJ@7v96jc0}1%$=)i2o((`YcLcD@*9VaUBbULegGN zy8}$3=4G59t?4ljC4)B#CppYc`l|^U*4Iz`$$ko2{rftUPrWGEg>jLF5af6``8^u-xW zi|u}QVLpFK;00sRBOP1o%*N2AR)KvWWc_x$;dtp-L=n=iqLHa<;tep!=XCC#9Y-ou zNla)#VWo_?i45Ph??3z{?+;TlmgIl*u8W1YQIE80G%NPcE3^&K*rj69^y_Ut2$o#Q zR6t?>kOD?3MX%xz$|yi7c26m3<@2zKB84(+Xf#E_s95l2SVq$y#YoCl3PmF4UGa^y zuC0H>c(jUU#G}stwJ!Yy!*ba!(P^LX(FJ?NFpdsJPjwfCWW6j@K3tP26!$M`l+tOW`WbWcS58i1u_LKpAq=|i?lIJ!b(i}ic z+4Z!y<)nR3<{)3izgg}N8+@}BS(5jTcmUM=O12JN9w|?o2Iwe)`y!IycJaTzfgM6# zuwt9PeP<-ZqLCCNCVnUY20ZUKeC66^7iB<&gAcXW z>*A7Ud8bkEvMB5Vf5slaKWG94;CU$Hsp%r1#A&04)T8W)f4Hy(eaW60tq6Q|UKmR2 z8SFL+J5M2pouCj=@ReCK@T)I;5XFw7S%%U##)_Z2WRd-RiMf!Pw?R=9GY6GI14bCqUxf z2^blWh$k~%5C9hI1olXxAppUWSHcVcLQsMz3`kr?q2&^>GD@6|s`;nRf@2%$2jLU4 zJX|snr0D-@jXYXRa|}c`!GJtQ+Nc1fjhHibNS_nb zrJtCA2KaJPK$A; zH?C%94`PtdC{CwJ1u$#e4(lLp>;FNio|gyJJXb?kGG1%|!SuF=$j z5q+YtxIV1R7{I-KfXAwtveYBJS4@>G2LLA9j=M2^ysU>M2xLbi=F6zJVjB4|>@E@d zRFOecc2w<+;+dkkl|8Y?v3KkCptVu+uMLR0`ax zdNc((ZA)dxxw0dmoy5?zu{CsGrnsskvC}6gJUp@f1n47#Gz^*tHt=l`bB=cKZTw+mSfbhZ zL*zRw_?r`{Zq823A$)v2-Sb!HRx>T`LsU6Nt7U@w!RZPb<6z&VkL*RA~Ov( zYe{q{e?nLp581f?Ol(_%j$1$c^mH$%u8D$42ydjNUd4z- z52TCAXI6ghBEn7D5|)a&hJNxkdL!W+5yjbffuf@WR|uuBI&JBg(nNUHSa#5$HA&Pw z(L2@?-<`GU z6ilzlH1`K8GHsu|xf2xakj_Y2(jlRm)cT1H>)M;?iF4@7Rp%^raXwJ(x%WgIW8Nqi z)Ax};w*P!|O3L4Ce|88g?WfL+V$#OQn^@asDP9&pKOYIMm11vrqw;)yF(D!&Ldf^4 zVY=znf-b6kMvRgh1obP6Ra&jcP(X?*hb<^vtZQTC@@mQzIV78cChNetpO zriD!?ahd9(@rcl~uj$oEm&6Voa`&X<7oM=uy-~E6Xh!Z&IbFW;M4AI zuaNW^%I}z|1rNpu6-XG_QoXoTw2sCcPEcuo-vwG~hRP7as935y=tsp15d=#t!o_?RI`}#tZ}dcOVvDN=+CR%Q=Y*=km!P?9R96cb z9RuiSS=r9mF6&ASV5~4K;$s_jD-e$?Gvde**WUAvMP3mB8g1~Dr13TDi1yFh@P zhSQ}}pxO;N2QM6}RlkS}IQ+_Ul&`KZ=ukE*tE$l5)fXI3VzRF!yXz7o{|etS~x1m3BjOqlQA%zSJ9~z%hAc@0`LGzuY%Tvk@ug*qmoN0N;NLuaDg8 zij*K8dnsts%wJwi*eCIjlag;+TI$>NZN45EQec;VK*wir&iG}PCSsY+pX<*;HSv2q za=ldzk-)jU3Y&7YnfKt2oIp-$Fzw*pAM8>mym>Rb9=EwhQ{95ITl|GSSjj*AF3su6kC3u&T%`u%W8LMoKCN%PF^t7>Mg<f0lJ&4ZO0&d-Zt!^>I_#^!ZbAj?U$In?ZVGGRyk54bNWj;)2=w z%&w%BpCx-lz}RgI2KC_49s(dB0^(F0jrv@qm`IaU0mIu=3qhJx4QJ!NgHT15Of44^ zS&n>t?pz&LlYW;TJK+L7H&fZ_bzkXX19#K@gPUg$%8fkCMUJTO=WY1;(NHG4ApQRw2D5z+lS6`*HWUB| zjv@*uS3nR(#674?|K%P2*EUv}<=dC>#j{@kL9FuNV(Dm6>}xqBApDRwztz2|^=^*{ zjMuhbndwX5dviAvjoC9Iz$IH73Aorf`}~LMS?jM?@VfD{^Ph@|pNY5zjbfYh#6nr*F+NT0cv01G{=7hEpO!A=ENZEfX9D27;u^d_Q_x{~e7xI9aGdu)6E)*iF|)mzPkUh#n7gs?fA z43{+9g=TTC;SquD^JE=?Exe%?BHct8d6EOD14e(IopiN@cs*9BH+gGqg)dq@ImrVQf{vD2NzOG1sBCXZNkce} zAiun~(rd3H?^EWP2-fn7|8R_7;RBJ(7f5P6{o8bdAw{x@qk)wo*rltU za*!Ihc$4Xf1i%he!W(D#Dm%3vQ|j1|Hm58f6TisBdkcW#D?*NplS6GD+o}udDw-;S}aoCl6eIFm33dbMAnw#K^$;)XJc<(FV z00uRD_|=gV?gX!PwXgBHgohcu02E?bv|J%HW9NSpzZbD0>7^U$R_+;;{S@0leuC^= z^A27#y4Y&Sj8pr;jSoDwE{x9=Tya!bvqC{g4g%(lfV}JjcYR@xizd%f3BQ(Vit8EEv=YBsyG!mUpPzE-U!m;M+YF9!xDRx&tx70q&4n~9h*EB zcDl3N`t-rp6EieT|C_R*pWY+uu@tXGkOtNA(-&uIQ5nu3^^99k8d?7v!s|#3LG3jI}+PTeqbfm_o7@mUM^sr zf%J)I8de%NZn-kdM5Su%*#Q`plMO}kh zpD5RIj{ZxTS1wiJvX0?cr&rZn=oVHZ-$(qYttzFz7Sq<3Y`rn1ZjLfBy$zqpta=Oh z|KSt=Do@ODkp0m}T(t~d8z7qRkxv4G`T3c>kzG~FE_5DdZP|P4E?yx)p({8WMm?n( z^p)K+;BS)$?FZKU{dcBBnv)t9FBBwg?XviO32C>_mcVccEm*Ukh7l$9%vdXbNTzud zUS-t#yTX&hlhEhfab$^{`eQRIgeK;PD+&-IKz&v$3I_ZPvZ4>lP=ekKWvAvaTAB&u@cf|b#a z&Ldo+x`O>TlWA)?t0cpPK@Obfw75q#Pr`eZ)Boeml52C(OuAyyXeI`++k@;Xx{@_P z97W@ip}L?k85HoD5hX={`LyUq;7RWlDH)s|2=fnJj<;O*%?%dwRWpukE0$91A{ z4N+-KHhF+(TRcOO%DniQZ}&gmz~8t6i@P#^uJ8|k@w;`Xy=4k+0Z-Z>y4i*QjFO~l z!|$4M6q0g|1MT|rH$)S(u9GU86-&)#Rb$@j-`9y&X*<5^bx~`2F+yg}Bb6|}Vg70O zse^FZVn+mvUtP9gm%E_aU0I04A{jr_fF84Te0sUssg!@esqx`fQ`*dO@I!FwK(F{g z!k4%I)b*`DEJ1-bA})3Ng^Zi)I=(OdH)~wBZaz0bgpBNI?~K*O3gUCcbln8LCHN$C ztS=bo9n4k4lH1q(`{NeGA8)PZ*728(`fSo98qUZ@uz}tEGGM1Y$tYLxycp&(xOLn2 zby65G;snDrR*c*%bF1U9&EOe=+OYs4c-!ntD}YVbUEaYMe*Uo3~c3)Ju-CY)-;3vwynw#r=lRE|S@8p~7JMtYWUfSPrLIzcn+4W@NZ zO%&65bu^Eo(C);goKAt4)tu7A#p3bi5;FEzs99Po!GefQ{)7N?hLKaVFC8CvCN$yr z%KC>EpHu_09?nQD2To?3)-ycIg}2Ne1bqh{4kyzI(Rdhx@etE$b83S(i20uA6`(#()^JY>ROuy34jLW+`qiRBt{ykKE>LHIBO^*&}Z>5I_I z2K*3lf@=QCD;~AIisLt;F81bVUXHh8jq!1>G*_Og(z+uc%FwgFwWXHE9^zhL%2;Oc zdA51-JB;fi5we2@(NmG^zapYXUK+(I#@GCj{4SVIH!Yy%z{o&Gsp(o=@Lucy z9vAC1>aspK;nm|GELmJK(z8)S zEn3Ht3$&&@TJ_#{4YSR2)rbRvg>-iVJBo)09meP9W`5JjYI-UFbW6nr2}Iv1=7@-j zz8h0@u@RMFOH$EpF36dE)9OcU`cjVji@<$!Vei|=FZNpif5Lh z9W(B8{Tf&<#vzWBj z=Z@>HEs$!i=8wC3Xmagc$=n`LKVL~FeDy`d_@qteUoQSG)9B2ULn;LDkgYRTJM^W} zD_&j{sZt#=yoN8ldTlVJ*B5fbav68>c4(UY@=@D!z?+FFAya{LX+bkiyK2gB8Vb1_ z>-7k7&GZ^jtA3*q_AsfhS!B*%lzdF2QAOv25y2I#N>c9a%)N_-#9Hdv^0;NtZ~po= z(SufN6@fPAo;M=G(3bxwH7riPCHb4n6T8El)BM)W1W|SonK*ouv4hMaP{i z1f4_0o%1D~LKU5pqu~_r&dG8~&>3g%|CpGF9`r5B&9&04_?K$PP*{|K`wt z{d)in)W7Ffb9 zU-}_W3_~882lqY-cf6XXvlTq3=yYX`Vd!<@)4(a2O5x zN$=CJ_c>vqerNkkBz0WePcnk59 zpJRBKal<8WUz?!hxwjS$9s^Iac zr~E-(-I%}A#ZRu6HtE)kvtVf(lF#6=4KXWBZZJxhYE3mU=4jS;Gndtz(f2(!)X+LH z!iahz?W))F5=hX=m7=X%`Hf)EvV&8W$@q+_Mx2I@5KM$4X;@=3oS^dJ^FBH!_rb)g zbsiO+H~}3blx;DyfihU^{iM9-ki$Op50wRJ0zWhgc01|9qISgMMQPk}h0CkpYJfDB z;7zWrz6NtUwWU=r`x4$U`d4j;97k!OQ6ANpa}#CxP)~SDAYtOSQgCUxoi* z-~K`(!Np$w;D?c6%=sxjBH5>*`Y7#`@A>hH2;MqKH|lt~%gPxgT5D@$kS#F#W0hTq z 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%0Adm>cd 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

      gIOpn)T@x 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,fR5lF7r}M(2N~=R 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 z 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

    +{% endblock %} diff --git a/templates/aemo/permissions.html b/templates/aemo/permissions.html new file mode 100644 index 0000000..8fe50e4 --- /dev/null +++ b/templates/aemo/permissions.html @@ -0,0 +1,29 @@ +{% extends "base.html" %} + +{% block extrastyle %} + +{% endblock %} + +{% block content %} + +{% for grp in groups %}{% endfor %} + + {% for label, plist in perms_by_categ.items %} + + {% for pcode, pverb in plist %} + + {% for grp, pcodes in grp_perms.items %} + + {% endfor %} + + {% endfor %} + {% endfor %} + +
    {{ grp.name }}
    {{ label }}
    {{ pverb }}{% if pcode in pcodes %}{% endif %}
    +{% endblock %} diff --git a/templates/aemo/personne_edit.html b/templates/aemo/personne_edit.html new file mode 100644 index 0000000..9e9e519 --- /dev/null +++ b/templates/aemo/personne_edit.html @@ -0,0 +1,125 @@ +{% extends "base.html" %} + +{% block extrastyle %} +{{ block.super }} + +{% endblock %} + +{% block boutons_droite %} + {% include 'aemo/famille_boutons.html' with active='coordonnees' %} +{% endblock %} + +{% block content %} +
    +
    Famille {{ famille.nom }} - {{ famille.adresse }}
    +
    {% if personne.pk %}{{ personne.nom_prenom }}{% else %}Nouveau membre{% endif %}
    +
    +
    +
    +
    {% csrf_token %} + +
    +
    + {{ form.nom.label_tag }}{{ form.nom.errors }}{{ form.nom }} +
    +
    + {{ form.prenom.label_tag }}{{ form.prenom.errors }}{{ form.prenom }} +
    +
    +
    +
    + {{ form.date_naissance.label_tag }}{% help_tooltip 'Si l’âge est connu, mais pas la date de naissance exacte, saisir le 1er janvier de l’année supposée' %} +
    {{ form.date_naissance.errors }}{{ form.date_naissance }} +
    +
    + {{ form.genre.label_tag }}{{ form.genre.errors }}{{ form.genre }} +
    +
    + {{ form.role.label_tag }}{{ form.role.errors }}{{ form.role }} +
    +
    +
    +
    + {{ form.filiation.label_tag }}{% help_tooltip 'Précision sur le lien familial (père de…, etc.)' %}{{ form.filiation.errors }}{{ form.filiation }} +
    + {% if form.prescripteur %}{# CIPE #} +
    + {{ form.prescripteur.label_tag }}{{ form.prescripteur.errors }}{{ form.prescripteur }} +
    + {% endif %} +
    +
    +
    + {{ form.rue.label_tag }}{{ form.rue.errors }}{{ form.rue }} +
    +
    + {{ form.city_auto.label_tag }}{{ form.city_auto.errors }}{{ form.city_auto }} +
    +
    +
    +
    + {{ form.telephone.label_tag }}{{ form.telephone.errors }}{{ form.telephone }} +
    +
    + {{ form.email.label_tag }}{{ form.email.errors }}{{ form.email }} +
    +
    +
    +
    + {{ form.profession.label_tag }}{{ form.profession.errors }}{{ form.profession }} +
    +
    + {{ form.pays_origine.label_tag }}{{ form.pays_origine.errors }}{{ form.pays_origine }} +
    +
    +
    +
    + {{ form.allergies.label_tag }}{{ form.allergies.errors }}{{ form.allergies }} +
    +
    +
    +
    + {{ form.remarque.label_tag }}{{ form.remarque.errors }}{{ form.remarque }} +
    +
    + {{ form.remarque_privee.label_tag }}{{ form.remarque_privee.errors }}{{ form.remarque_privee }} +
    +
    + {% with gestite=personne.gestite %} + {% if gestite %} +
    +
    Gestité : {{ gestite }}
    +
    + {% endif %} + {% endwith %} +
    +
    +
    + {{ form.decedee.errors }}{{ form.decedee }} {{ form.decedee.label_tag|strip_colon }} +
    +
    +
    + + {% if personne.pk %} +
    + {% if form.instance.formation %} +
    + Formation +
    + {% endif %} + +
    + {% endif %} + + {% if famille|can_edit:user %} + {% include "actions.html" %} + {% endif %} +
    +
    +
    + +{% endblock %} diff --git a/templates/aemo/personne_reseau_list.html b/templates/aemo/personne_reseau_list.html new file mode 100644 index 0000000..ae305ec --- /dev/null +++ b/templates/aemo/personne_reseau_list.html @@ -0,0 +1,88 @@ +{% extends "base.html" %} + +{% block extra_javascript %} + +{% endblock %} + +{% block content %} +
    +
    Famille {{ personne.famille.nom }} - {{ personne.famille.adresse }}
    +
    Réseau professionnel de {{ personne.nom_prenom }}
    +
    +
    +
    + {% if personne.famille|can_edit:user %} + + {% endif %} +
    +
    +
    +
    +
    {% csrf_token %} + + + + + + + + + + {% for contact in reseau %} + + + + + + + + {% endfor %} + +
    Nom, prénomRôle/Act./prof.TéléphoneEmailAction
    {{ contact.nom_prenom }}{{ contact|role_profession }}{{ contact.tel_prof }}{{ contact.email }} + +
    +
    +
    +
    + +
    + +
    +{% endblock %} diff --git a/templates/aemo/prestation_edit.html b/templates/aemo/prestation_edit.html new file mode 100644 index 0000000..8314d3e --- /dev/null +++ b/templates/aemo/prestation_edit.html @@ -0,0 +1,48 @@ +{% extends "base.html" %} + +{% block extrastyle %} + +{% endblock %} + +{% block boutons_droite %} + {% if famille %} + {% include './famille_boutons.html' with active='prestation' %} + {% endif %} +{% endblock %} + +{% block content %} +
    +
    +

    + {% if famille %} + Famille {{ famille.nom }} - {{ famille.adresse }} + {% else %} + Mes prestations générales + {% endif %}

    +
    +
    + +
    + {% csrf_token %} +
    +
    {{ form.date_prestation|as_field_group }}
    +
    {{ form.duree|as_field_group }}
    +
    +
    +
    {{ form.texte|as_field_group }}
    +
    +
    +
    {{ form.manque }} {{ form.manque.label_tag|strip_colon }}
    +
    +
    +
    {{ form.fichier|as_field_group }}
    +
    +
    +
    {{ form.intervenants|as_field_group }}
    +
    + {% include "actions.html" %} +
    +{% endblock %} diff --git a/templates/aemo/prestation_generale.html b/templates/aemo/prestation_generale.html new file mode 100644 index 0000000..073c6c1 --- /dev/null +++ b/templates/aemo/prestation_generale.html @@ -0,0 +1,67 @@ +{% extends "base.html" %} + +{% block content %} + +
    +
    +

    + {% if prev_month %} + + {% endif %} + {{ current_date.month|month_name }} {{ current_date.year }} + {% if next_month %} + + {% endif %} +

    +
    + +
    +
    +
    + + + + + + + + + + + + + {% for prest in prestations %} + + + + + + + + + {% endfor %} + +
    DateDuréeParticipantsTexteAuteurAction
    {{ prest.date_prestation }}{{ prest.duree|format_duree }}{{ prest|sigles_intervenants }}{{ prest.texte|striptags }}{{ prest.auteur|sigle_personne }} + {% if prest|can_edit:user %} + + + + {% endif %} +
    +
    +
    +{% endblock %} diff --git a/templates/aemo/prestation_list.html b/templates/aemo/prestation_list.html new file mode 100644 index 0000000..82a545d --- /dev/null +++ b/templates/aemo/prestation_list.html @@ -0,0 +1,74 @@ +{% extends "base.html" %} + +{% block boutons_droite %} + {% if famille %} + {% include './famille_boutons.html' with active='prestation' %} + {% endif %} +{% endblock %} + +{% block content %} +
    + {% if famille %} +
    Famille {{ famille.nom }} - {{ famille.adresse }}
    +
    + + Ajouter + + {% if filter_form %}
    {{ filter_form.as_div }}
    {% endif %} +
    + {% else %} +
    Mes prestations générales
    + + {% endif %} +
    +
    +
    + + + + + + + + + + + + + + {% for prestation in prestations %} + + + + + + + + + + {% empty %} + + {% endfor %} + +
    DateDuréeInterv.ContenuAuteurPrest.Actions
    {{ prestation.date_prestation|date:"d.m.Y" }}{{ prestation.duree|strip_seconds }}{{ prestation|sigles_intervenants }}{{ prestation.texte|truncate_html_with_more:40 }} {{ prestation.fichier|as_icon }}{{ prestation.auteur|sigle_personne }}{{ prestation.lib_prestation.nom }} + {% with fam_pk=famille.pk|default:0 %} + {% if prestation|can_edit:user %} + + + + {% endif %} + {% endwith %} +
    + {% if filter_form.cleaned_data.recherche or filter_form.cleaned_data.famille %} + Pas de résultat pour votre recherche. + {% else %} + Aucune prestation saisie + {% endif %} +
    +
    +
    +{% endblock %} diff --git a/templates/aemo/prestation_menu.html b/templates/aemo/prestation_menu.html new file mode 100644 index 0000000..ada9c59 --- /dev/null +++ b/templates/aemo/prestation_menu.html @@ -0,0 +1,59 @@ +{% extends "base.html" %} + +{% block content %} + +
    +
    + + + + + + + + + + + + + {% for famille in familles %} + + + +
    {{ famille.rdv_manques|length }}
    + + {{ famille.aemo1|format_duree }} + {{ famille.aemo2|format_duree }} + {% with temps_total=famille.temps_total_prestations %} +
    + {% endwith %} + + + {% endfor %} + +
    FamillesRDV manquésEval.Accomp.TotalMes prestations
    + {{ famille.nom }} + - {{ famille.adresse }} + + {{ temps_total|format_duree }} + + {{ famille.user_prest|format_duree }} +
    +

    + Les prestations générales sont réparties chaque mois entre toutes les familles en fonction des familles actives durant le mois donné. Elles ne figurent pas sur cette page. +

    +
    +
    +{% endblock %} diff --git a/templates/aemo/prestation_personnelle.html b/templates/aemo/prestation_personnelle.html new file mode 100644 index 0000000..51ed1ed --- /dev/null +++ b/templates/aemo/prestation_personnelle.html @@ -0,0 +1,92 @@ +{% extends "base.html" %} +{% load static my_tags %} + +{% block content %} + +
    +
    +

    + {% if prev_month %} + + {% endif %} + {{ current_date.month|month_name }} {{ current_date.year }} + {% if next_month %} + + {% endif %} +

    +
    +
    +
    +
    + + + + + + + + + + + + + + + {% for prest in object_list %} + + + + + + + + + + + {% empty %} + + {% endfor %} + +
    DateDuréeFamilleIntervenant-e-sContenuAuteurPrestationActions
    {{ prest.date_prestation|date:"d.m.Y" }}{{ prest.duree|strip_seconds }}{{ prest.famille.nom }}{{ prest|sigles_intervenants }}{{ prest.texte|truncate_html_with_more:20 }}{{ prest.auteur|sigle_personne }}{{ prest.lib_prestation.nom }} + {% if prest|can_edit:user %} + + + + {% endif %} +
    Aucune prestation saisie
    +
    +
    +
    +
    +
    +
    + RÉCAPITULATIF pour {{ current_date.month|month_name }} {{ current_date.year }} +
    +
    + + {% for code, total in totaux %} + + + + + {% endfor %} + + + + +
    Total prestations {{ code }}{{ total|strip_seconds|default:'00:00' }}
    Total{{ total_final|strip_seconds|default:'00:00' }}
    +
    +
    +
    +
    +{% endblock %} diff --git a/templates/aemo/rapport.html b/templates/aemo/rapport.html new file mode 100644 index 0000000..0c4a2d8 --- /dev/null +++ b/templates/aemo/rapport.html @@ -0,0 +1,48 @@ +{% extends "base.html" %} + +{% block boutons_droite %} + {% include 'aemo/famille_boutons.html' with active='agenda' %} +{% endblock %} + +{% block content %} +
    +
    Famille {{ famille.nom }} - {{ famille.adresse }}
    +
    Dossier de suivi
    +
    + +
    + + + +
    +

    Résumé du {{ rapport.date }}

    + +

    Enfants:
    {{ enfants|linebreaksbr }}

    +

    Intervenant-e-s: {{ intervenants }}

    +

    Début du suivi: {{ rapport.famille.suivi.date_debut_suivi }}

    + + {% for label, value in data %} +

    {{ label }}

    + {{ value|default:'-'|raw_or_html }} + {% endfor %} + +

    + Le présent résumé comporte des éléments couverts par le secret professionnel au sens de la LPSy et du Code pénal. Seuls les propriétaires des données, à savoir les membres de la famille faisant l’objet du résumé, peuvent ensemble lever ce secret ou accepter la divulgation des données. Si cette autorisation n’est pas donnée, l’autorité compétente en matière de levée du secret professionnel doit impérativement être saisie. +

    + +
    + Retour + {% if rapport|can_edit:user %} + Modifier + {% endif %} + {% if rapport|can_delete:user %} +
    {% csrf_token %} + +
    + {% endif %} +
    +{% endblock %} diff --git a/templates/aemo/rapport_edit.html b/templates/aemo/rapport_edit.html new file mode 100644 index 0000000..e880e18 --- /dev/null +++ b/templates/aemo/rapport_edit.html @@ -0,0 +1,25 @@ +{% extends "base.html" %} +{% load my_tags %} + +{% block content %} +
    +

    Édition de résumé pour la famille {{ form.instance.famille }}

    +
    +
    +
    +
    + {% csrf_token %} + {{ form.non_field_errors }} + {% for field in form %} +
    + {{ field.label_tag }} {{ field.errors }} + {% if field.field.disabled %}{% get_field_value form.instance field.name|safe %} + {% else %}{{ field }}{% endif %} +
    + {% endfor %} + + {% include 'actions.html' %} +
    +
    +
    +{% endblock %} diff --git a/templates/aemo/role_edit.html b/templates/aemo/role_edit.html new file mode 100644 index 0000000..0fb1eff --- /dev/null +++ b/templates/aemo/role_edit.html @@ -0,0 +1,22 @@ +{% extends "base.html" %} + +{% block content %} +
    +

    Role

    +
    +
    +
    +
    + {% csrf_token %} + + + {% csrf_token %} + + {{ form.as_table }} +
    + {% include "actions.html" %} +
    + +
    +
    +{% endblock %} diff --git a/templates/aemo/role_list.html b/templates/aemo/role_list.html new file mode 100644 index 0000000..77ada97 --- /dev/null +++ b/templates/aemo/role_list.html @@ -0,0 +1,40 @@ +{% extends "base.html" %} + +{% block title %}Rôles{% endblock %} + +{% block content %} +
    +

    Rôles

    + {% if perms.aemo.add_role %} +
    + Nouveau +
    + {% endif %} +
    +
    +
    + + + + + + + + + + + {% with can_edit=perms.aemo.change_role %} + {% for role in object_list %} + + + + + + + {% endfor %} + {% endwith %} + +
    NomRôle familialRôle intervenantÉditeur ? {% help_tooltip editeur_help %}
    {% if can_edit and role.editable %}{% endif %}{{ role.nom }}{% if can_edit and role.editable %}{% endif %}{{ role.est_famille|boolean_icon }}{{ role.est_intervenant|boolean_icon }}{{ role.est_editeur|boolean_icon }}
    +
    +
    +{% endblock %} diff --git a/templates/aemo/service_edit.html b/templates/aemo/service_edit.html new file mode 100644 index 0000000..c5b96cc --- /dev/null +++ b/templates/aemo/service_edit.html @@ -0,0 +1,19 @@ +{% extends "base.html" %} + +{% block content %} +
    +

    Services partenaires

    +
    {{ view.action }}
    +
    + +
    +
    +
    {% csrf_token %} + + {{ form.as_table }} +
    + {% include "actions.html" %} +
    +
    +
    +{% endblock %} diff --git a/templates/aemo/service_list.html b/templates/aemo/service_list.html new file mode 100644 index 0000000..dba0424 --- /dev/null +++ b/templates/aemo/service_list.html @@ -0,0 +1,36 @@ +{% extends "base.html" %} + +{% block title %}Services{% endblock %} + +{% block content %} + +
    +

    Services partenaires

    + {% if perms.aemo.add_service %} + + {% endif %} +
    + +
    +
    + + + + + + + + {% with can_edit=perms.aemo.change_service %} + {% for service in object_list %} + + + + + {% endfor %} + {% endwith %} + +
    SigleNom
    {% if can_edit %}{% endif %}{{ service.sigle }}{% if can_edit %}{% endif %}{{ service.nom_complet }}
    +
    +
    +{% endblock %} + diff --git a/templates/aemo/suivi_edit.html b/templates/aemo/suivi_edit.html new file mode 100644 index 0000000..e5706fe --- /dev/null +++ b/templates/aemo/suivi_edit.html @@ -0,0 +1,175 @@ +{% extends "base.html" %} + +{% block boutons_droite %} + {% include './famille_boutons.html' with active='suivi' %} +{% endblock %} + +{% block content %} +
    +
    Famille {{ famille.nom }} - {{ famille.adresse }}
    +
    Dossier de suivi
    +
    + +
    {% csrf_token %} + +
    +
    + + + + + +
    Enfant(s) suivi(s) + + {% for enfant in famille.membres_suivis %} + + + + + + {% endfor %} +
    {{ enfant.nom_prenom }}{{ enfant.age|floatformat }} ans{{ enfant.formation.info_scol }}
    +
    +
    +
    +
    +
    {{ form.equipe }}
    +
    {{ form.service_annonceur }}
    +
    {{ form.service_orienteur }}
    +
    + +
    +
    + + {% if can_edit %} + + + + + {% endif %} + {% for interv in intervenants %} + {% if not interv.date_fin %} +
    {{ interv.role }}: {{ interv.intervenant.nom_prenom }} + {% if can_edit %} + + + + + + {% endif %} +
    + {% else %} +
    {{ interv.role }}: {{ interv.intervenant.nom_prenom }}
    + {% endif %} + {% endfor %} +
    +
    +
    +
    + {{ form.ope_referent }} +
    +
    + {{ form.ope_referent_2 }} +
    +
    + {{ form.mandat_ope }} +
    + +
    +
    +
    +
    +
    + + {% if can_edit %} + + + + + {% endif %} + + + + + {% for niv in niveaux %} + + + + + + + {% endfor %} +
    DuAuNiveau d'interv.
    {{ niv.date_debut|date:"d.m.Y" }}{{ niv.date_fin_calc|date:"d.m.Y"|default:"---" }}{{ niv.niveau_interv }} + + +
    + +
    +
    +
    + {{ form.demande_prioritaire }} +
    +
    +
    + {{ form.heure_coord }} {{ form.heure_coord.label_tag|strip_colon }} +
    + +
    +
    +
    Motif standardisé:
    +
    {{ form.motif_demande.errors }}{{ form.motif_demande }}
    +
    +
    +
    Motif de la demande:
    +
    {{ form.motif_detail.errors }}{{ form.motif_detail }}
    +
    +
    +
    Collaborations:
    +
    {{ form.collaboration.errors }}{{ form.collaboration }}
    +
    +
    +
    Ressources:
    +
    {{ form.ressource.errors }}{{ form.ressource }}
    +
    +
    +
    Gestion de crise:
    +
    {{ form.crise.errors }}{{ form.crise }}
    +
    +
    +
    Remarque:
    +
    {{ form.remarque.errors }}{{ form.remarque }}
    +
    + + {% include 'partial_table_documents.html' %} + + + + {% if can_edit %} +
    +
    + {% include "actions.html" %} +
    +
    + {% endif %} +
    +{% endblock %} diff --git a/templates/aemo/suivis_termines_list.html b/templates/aemo/suivis_termines_list.html new file mode 100644 index 0000000..8b58625 --- /dev/null +++ b/templates/aemo/suivis_termines_list.html @@ -0,0 +1,130 @@ +{% extends "base.html" %} + +{% block extra_javascript %} + +{% endblock %} + +{% block boutons_droite %} +
    +
    + {% if request.user|has_group:'direction' %} + Exporter + + {% endif %} +
    +
    + {{ form.nom }} + + +
    +
    +
    +
    +{% endblock %} + +{% block content %} +
    +
    Suivis terminés
    + {% if perms.aemo.can_archive %} +
    + +
    + {% endif %} +
    + +
    +
    + + + + + + + + + + + + + + + + {% for famille in object_list %} + + + + + + + + + + + + + + {% empty %} + + {% endfor %} + +
    NomAdresseRéf. AEMORéf. OPEDébut du suiviFin du suiviTotal heuresMotif de finArchiver {% help_tooltip "Le bouton d’archivage n’apparaît que si vous avez la permission d’archivage, que le suivi est terminé depuis plus de 180 jours et que le suivi s’est terminé l’année précédente." %} +
    + + {{ famille.npa}} {{ famille.localite }}{{ famille.suivi|sigles_referents }}{{ famille.suivi.ope_referent.nom_prenom|default_if_none:'' }} + {{ famille.suivi.mandat_ope|join:', '|in_parens }} + {{ famille.suivi.date_debut_suivi|date:'d.m.Y' }}{{ famille.suivi.date_fin_suivi|date:'d.m.Y' }}{{ famille.temps_total_prestations|format_duree }}{{ famille.suivi.get_motif_fin_suivi_display }} + {% if famille|archivable:user %} +
    {% csrf_token %} + +
    + {% endif %} +
    Cette liste est actuellement vide.
    +
    +
    + + + +{% endblock %} + diff --git a/templates/aemo/utilisateur_edit.html b/templates/aemo/utilisateur_edit.html new file mode 100644 index 0000000..33ee72d --- /dev/null +++ b/templates/aemo/utilisateur_edit.html @@ -0,0 +1,48 @@ +{% extends "base.html" %} + +{% block extrastyle %} + +{% endblock %} + +{% block content %} +
    +

    Utilisateur

    + {% if form.instance.pk %} +
    +
    {% csrf_token %} + +
    +
    {% csrf_token %} + +
    + Journal d’accès +
    + {% endif %} +
    +
    +
    +
    + {% csrf_token %} + + {{ form.as_table }} +
    +
    + {% if form.instance.pk %} +
    + {% if view.delete_url %} + + {% endif %} +
    + {% endif %} +
    + Annuler + +
    +
    +
    +
    +
    +{% endblock %} diff --git a/templates/aemo/utilisateur_journal.html b/templates/aemo/utilisateur_journal.html new file mode 100644 index 0000000..b07575c --- /dev/null +++ b/templates/aemo/utilisateur_journal.html @@ -0,0 +1,24 @@ +{% extends "base.html" %} + +{% block content %} +
    +

    Accès aux familles par {{ utilisateur }}

    +
    + + + + + + + + + + {% for line in object_list %} + + + + + {% endfor %} + +
    Date/heureFamilleAccès ordinaire
    {{ line.quand|date:'d.m.Y H:i' }}{{ line.famille }}{{ line.ordinaire|boolean_icon }}
    +{% endblock %} diff --git a/templates/aemo/utilisateur_list.html b/templates/aemo/utilisateur_list.html new file mode 100644 index 0000000..71a0aa7 --- /dev/null +++ b/templates/aemo/utilisateur_list.html @@ -0,0 +1,65 @@ +{% extends "base.html" %} + +{% block content %} +
    +

    Utilisateurs {% if active_users %}activés{% else %}désactivés{% endif %}

    + {% if perms.aemo.add_utilisateur %} +
    + {% if active_users %} + Charge dossiers + Utilisateurs désactivés + {% else %} + Utilisateurs actifs + {% endif %} + Nouveau +
    + {% endif %} +
    +
    +
    + + + + + + + + + + + + {% if not active_users %}{% endif %} + + + + {% with can_edit=perms.aemo.change_utilisateur %} + {% for util in object_list %} + + + + + + + + + + {% if not active_users %} + + {% endif %} + + {% endfor %} + {% endwith %} + +
    Nom, prénomSigleCourrielTaux act.TitreÉquipeRôlesGroupesAction
    {% if can_edit %}{% endif %} + {{ util.nom_prenom }}{% if can_edit %}{% endif %}{{ util.sigle }}{{ util.email }} + {{ util.taux_activite }}% + {% if util.decharge %}
    D. {{ util.decharge }}h{% endif %} +
    {{ util.profession }}{{ util.get_equipe_display }}{{ util.roles_str }}{{ util.groupes|join:", " }} +
    + {% csrf_token %} + +
    +
    +
    +
    +{% endblock %} diff --git a/templates/base.html b/templates/base.html new file mode 100644 index 0000000..dccf529 --- /dev/null +++ b/templates/base.html @@ -0,0 +1,119 @@ + + + + AEMO Fribourg {% block title %}{% endblock %} + + + {% include 'bootstrap_headers.html' %} + + + + + + + {% block extrastyle %}{% endblock %} + + + + + + + + + + {% block extra_javascript %}{% endblock %} + {{ form.media }} + + +
    + {% block header %} +
    +
    + + +
    +
    + {% include 'user_bar.html' %} + {% endblock %} + {% block top-navigation %} + + {% endblock %} + + {% block messages %} + {% if messages %} +
    +
    +
      + {% for message in messages %} +
    • {{ message|linebreaksbr|capfirst }}
    • + {% endfor %} +
    +
    +
    + {% endif %} + {% endblock messages %} + + {% block above-content %}{% endblock %} +
    +
    +
    + {% block content %}{% endblock %} + {% block pagination %} + {% include 'pagination.html' %} + {% endblock %} +
    +
    +
    + +
    + +
    +
    + + + + + + + + diff --git a/templates/bootstrap_headers.html b/templates/bootstrap_headers.html new file mode 100644 index 0000000..99fafd8 --- /dev/null +++ b/templates/bootstrap_headers.html @@ -0,0 +1,7 @@ + + + + + + + diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..6b9ae47 --- /dev/null +++ b/templates/index.html @@ -0,0 +1,31 @@ + + + + AEMO FribourgE + + + {% include 'bootstrap_headers.html' %} + + + +
    +
    + {% include 'user_bar.html' %} +
    +
    + AEMO +
    + +
    +
    + +
    + +
    +
    + + diff --git a/templates/login.html b/templates/login.html new file mode 100644 index 0000000..9ad462b --- /dev/null +++ b/templates/login.html @@ -0,0 +1,32 @@ +{% extends "base.html" %} + +{% block content %} +
    +
    + {% csrf_token %} + + {% if form.non_field_errors %} + {% for error in form.non_field_errors %} +

    {{ error }}

    + {% endfor %} + {% endif %} +
    + {{ form.username.label_tag }} +
    + {{ form.username.errors }}{{ form.username }} +
    +
    +
    + {{ form.password.label_tag }} +
    + {{ form.password.errors }}{{ form.password }} +
    +
    +
    +
    + +
    +
    +
    +
    +{% endblock %} diff --git a/templates/pagination.html b/templates/pagination.html new file mode 100644 index 0000000..a7a3fd8 --- /dev/null +++ b/templates/pagination.html @@ -0,0 +1,13 @@ +{% if is_paginated %} + +{% endif %} diff --git a/templates/partial_agenda_cloture.html b/templates/partial_agenda_cloture.html new file mode 100644 index 0000000..89516ea --- /dev/null +++ b/templates/partial_agenda_cloture.html @@ -0,0 +1,6 @@ +
    Fin de l’accompagnement le
    +

    {{ form.date_fin_suivi.errors }}{{ form.date_fin_suivi }}

    +
    Motif de fin
    +

    {{ form.motif_fin_suivi.errors }}{{ form.motif_fin_suivi }}

    +
    Destination
    +

    {{ form.destination.errors }}{{ form.destination }}

    \ No newline at end of file diff --git a/templates/partial_show_docs.html b/templates/partial_show_docs.html new file mode 100644 index 0000000..710d492 --- /dev/null +++ b/templates/partial_show_docs.html @@ -0,0 +1,8 @@ +{% for doc in docs %} + +{% endfor %} diff --git a/templates/partial_table_documents.html b/templates/partial_table_documents.html new file mode 100644 index 0000000..8954776 --- /dev/null +++ b/templates/partial_table_documents.html @@ -0,0 +1,31 @@ + + + + + +
    Documents + {% if famille|can_edit:user %} + + + + + {% endif %} + +
    + {% for doc in famille.documents.all %} + {{ doc.titre }} + {% if famille|can_edit:user %} + + + + {% endif %} + {% endfor %} +
    +
    diff --git a/templates/registration/password_change_form.html b/templates/registration/password_change_form.html new file mode 100644 index 0000000..c5543fd --- /dev/null +++ b/templates/registration/password_change_form.html @@ -0,0 +1,27 @@ +{% extends "base.html" %} + +{% block extrastyle %} + +{% endblock %} + +{% block content %} +

    Modification du mot de passe

    + +

    Pour des raisons de sécurité, saisissez votre ancien mot de passe puis votre nouveau mot de passe à deux reprises afin de vérifier qu'il est correctement saisi.

    + +
    + {% csrf_token %} + {% for field in form %} + + {{ field }} + {{ field.help_text }} + {% endfor %} +
    + +
    +
    +{% endblock %} diff --git a/templates/registration/password_reset_complete.html b/templates/registration/password_reset_complete.html new file mode 100644 index 0000000..45f8b24 --- /dev/null +++ b/templates/registration/password_reset_complete.html @@ -0,0 +1,10 @@ +{% extends "base.html" %} +{% load i18n %} + +{% block content %} + +

    {% translate "Your password has been set. You may go ahead and log in now." %}

    + +

    {% translate 'Log in' %}

    + +{% endblock %} diff --git a/templates/registration/password_reset_confirm.html b/templates/registration/password_reset_confirm.html new file mode 100644 index 0000000..9bea5d6 --- /dev/null +++ b/templates/registration/password_reset_confirm.html @@ -0,0 +1,35 @@ +{% extends "base.html" %} +{% load i18n static %} + +{% block extrastyle %}{{ block.super }}{% endblock %} + +{% block content %} + +{% if validlink %} + +

    {% translate "Please enter your new password twice so we can verify you typed it in correctly." %}

    + +
    {% csrf_token %} +
    + +
    + {{ form.new_password1.errors }} + + {{ form.new_password1 }} +
    +
    + {{ form.new_password2.errors }} + + {{ form.new_password2 }} +
    + +
    +
    + +{% else %} + +

    {% translate "The password reset link was invalid, possibly because it has already been used. Please request a new password reset." %}

    + +{% endif %} + +{% endblock %} diff --git a/templates/registration/password_reset_done.html b/templates/registration/password_reset_done.html new file mode 100644 index 0000000..be4f202 --- /dev/null +++ b/templates/registration/password_reset_done.html @@ -0,0 +1,12 @@ +{% extends "base.html" %} +{% load i18n %} + +{% block content %} + +

    {% translate 'Password reset sent' %}

    + +

    {% translate 'We’ve emailed you instructions for setting your password, if an account exists with the email you entered. You should receive them shortly.' %}

    + +

    {% translate 'If you don’t receive an email, please make sure you’ve entered the address you registered with, and check your spam folder.' %}

    + +{% endblock %} diff --git a/templates/registration/password_reset_form.html b/templates/registration/password_reset_form.html new file mode 100644 index 0000000..cf8ccca --- /dev/null +++ b/templates/registration/password_reset_form.html @@ -0,0 +1,14 @@ +{% extends 'base.html' %} + +{% block title %}Mot de passe oublié ?{% endblock %} + +{% block content %} +

    Mot de passe oublié ?

    +

    Saisissez votre adresse électronique ci-dessous et nous vous enverrons les instructions pour en créer un nouveau.

    + +
    + {% csrf_token %} + {{ form.as_p }} + +
    +{% endblock %} diff --git a/templates/statistiques/stat-form.html b/templates/statistiques/stat-form.html new file mode 100644 index 0000000..b559617 --- /dev/null +++ b/templates/statistiques/stat-form.html @@ -0,0 +1,11 @@ +
    +
    +
    + {{ date_form.non_field_errors }} +

    + Statistiques du 1er {{ date_form.start_month }} {{ date_form.start_year }} à fin {{ date_form.end_month }} {{ date_form.end_year }} + +

    +
    +
    +
    \ No newline at end of file diff --git a/templates/statistiques/stat-tabs.html b/templates/statistiques/stat-tabs.html new file mode 100644 index 0000000..958ba58 --- /dev/null +++ b/templates/statistiques/stat-tabs.html @@ -0,0 +1,41 @@ + diff --git a/templates/statistiques/statistiques.html b/templates/statistiques/statistiques.html new file mode 100644 index 0000000..1aa3b74 --- /dev/null +++ b/templates/statistiques/statistiques.html @@ -0,0 +1,98 @@ +{% extends "base.html" %} + +{% block title %}Statistiques{% endblock %} + +{% block content %} + {% include "statistiques/stat-form.html" %} + {% include "statistiques/stat-tabs.html" with active="general" %} + +
    +
    + + + {% for month in months %}{% endfor %} + + + + + + + + {% for month in months %}{% endfor %} + + + + + {% for month in months %}{% endfor %} + + + + + {% for month in months %}{% endfor %} + + + + + {% for month in months %}{% endfor %} + + + + + {% for month in months %}{% endfor %} + + + + + {% for month in months %}{% endfor %} + + + + + {% for month in months %}{% endfor %} + + + + + {% for month in months %}{% endfor %} + + + + + {% for month in months %}{% endfor %} + + + + + {% for month in months %}{% endfor %} + + + + + {% for month in months %}{% endfor %} + + + + + {% for month in months %}{% endfor %} + + + + + {% for month in months %}{% endfor %} + + + + + + + +
    {{ month }}Total
    +

    Familles

    + {{ familles.total_familles }} familles prise en compte sur la période choisie +
    Total familles (évaluation et/ou accomp.){{ familles.familles_total|get_item:month }}{{ familles.familles_total.total }}
    Total enfants suivis (évaluation et/ou accomp.){{ familles.enfants_total|get_item:month }}{{ familles.enfants_total.total }}
    Familles évaluées{{ familles.familles_evaluees|get_item:month }}{{ familles.familles_evaluees.total }}
    Enfants évalués{{ familles.enfants_evalues|get_item:month }}{{ familles.enfants_evalues.total }}
    Enfants non suivis de familles évaluées{{ familles.enfants_evalues_non_suivis|get_item:month }}{{ familles.enfants_evalues_non_suivis.total }}
    Familles évaluées sans aboutir à un suivi{{ familles.familles_eval_sans_suivi|get_item:month }}{{ familles.familles_eval_sans_suivi.total }}
    Familles suivies{{ familles.familles_suivies|get_item:month }}{{ familles.familles_suivies.total }}
    Enfants suivis{{ familles.enfants_suivis|get_item:month }}{{ familles.enfants_suivis.total }}
    Enfants non suivis de familles suivies{{ familles.enfants_suivis_non_suivis|get_item:month }}{{ familles.enfants_suivis_non_suivis.total }}
    dont Familles d’accueil{{ familles.familles_accueil|get_item:month }}{{ familles.familles_accueil.total }}
    dont Familles déjà suivies{{ familles.familles_connues|get_item:month }}{{ familles.familles_connues.total }}
    Demandes prioritaires{{ familles.prioritaires|get_item:month }}{{ familles.prioritaires.total }}
    Rendez-vous manqués{{ familles.rdv_manques|get_item:month }}{{ familles.rdv_manques.total }}
    Durée moyenne entre demande et début de suivi{{ familles.duree_attente.moyenne.days }} jours
    +
    + +
    +
    +
    +{% endblock %} diff --git a/templates/statistiques/stats-age.html b/templates/statistiques/stats-age.html new file mode 100644 index 0000000..f667e36 --- /dev/null +++ b/templates/statistiques/stats-age.html @@ -0,0 +1,43 @@ +{% extends "base.html" %} + +{% block content %} + {% include "statistiques/stat-form.html" %} + {% include "statistiques/stat-tabs.html" with active="age" %} + +
    +
    +

    + Répartition des enfants suivis (dès demande jusqu'à la fin d’accompagnement) par âge. L’âge est calculé à la date médiane entre la demande et la fin du suivi. +

    + + + + + {% for month in months %}{% endfor %} + + + + + + {% for age, stats in ages.items %} + + + {% for month in months %}{% endfor %} + + + {% endfor %} + + + {% for month in months %}{% endfor %} + + + +
    Âge{{ month }}Total
    +

    Âges

    +
    {{ age }}{{ stats|get_item:month }}{{ stats.total }}
    Âge moyen{{ means|get_item:month }}{{ means.total }}
    +
    + +
    +
    +
    +{% endblock %} diff --git a/templates/statistiques/stats-duree.html b/templates/statistiques/stats-duree.html new file mode 100644 index 0000000..80d55dd --- /dev/null +++ b/templates/statistiques/stats-duree.html @@ -0,0 +1,33 @@ +{% extends "base.html" %} + +{% block content %} + {% include "statistiques/stat-form.html" %} + {% include "statistiques/stat-tabs.html" with active="duree" %} + +
    +
    +

    + Répartition des suivis par durée d’accompagnement. Les suivis pris en compte sont ceux dont la date de fin de suivi se situe entre les bornes temporelles sélectionnées. +

    + + + + + + + + + {% for slice in slices %} + + + + + {% endfor %} + +
    DuréeNb de suivis
    {{ slice.label }}{{ durees|get_item:slice.label }}
    +
    + +
    +
    +
    +{% endblock %} diff --git a/templates/statistiques/stats-interv.html b/templates/statistiques/stats-interv.html new file mode 100644 index 0000000..6decab1 --- /dev/null +++ b/templates/statistiques/stats-interv.html @@ -0,0 +1,45 @@ +{% extends "base.html" %} + +{% block extrastyle %} + +{% endblock %} + +{% block content %} + {% include "statistiques/stat-form.html" %} + {% include "statistiques/stat-tabs.html" with active="interv" %} + +
    +
    + + + + {% for month in months %}{% endfor %} + + + + + + {% for interv, counters in intervs.items %} + + + {% for month in months %}{% endfor %} + + + + + {% for month in months %}{% endfor %} + + + {% endfor %} + +
    Intervenant-e{{ month }}Total
    +

    AEMO

    +
    {{ interv.nom_prenom }}Familles{{ counters.num_familles|get_item:month }}{{ counters.num_familles.total }}
    Enfants{{ counters.num_enfants|get_item:month }}{{ counters.num_enfants.total }}
    +
    + +
    +
    +
    +{% endblock %} diff --git a/templates/statistiques/stats-localite.html b/templates/statistiques/stats-localite.html new file mode 100644 index 0000000..2b14915 --- /dev/null +++ b/templates/statistiques/stats-localite.html @@ -0,0 +1,45 @@ +{% extends "base.html" %} + +{% block content %} + {% include "statistiques/stat-form.html" %} + {% include "statistiques/stat-tabs.html" with active="localite" %} + +
    +
    +

    + Nombre d’enfants suivis (dès demande jusqu'à la fin d’accompagnement) par localité. +

    + + + + + {% for month in months %}{% endfor %} + + + + + + {% for localite, stats in localites.items %} + {% if localite != 'totals' %} + + + {% for month in months %}{% endfor %} + + + {% endif %} + {% endfor %} + + + {% for month in months %}{% endfor %} + + + +
    Localité{{ month }}Total
    +

    Localités

    +
    {{ localite }}{{ stats|get_item:month }}{{ stats.total }}
    Totaux{{ localites.totals|get_item:month }}{{ localites.totals.totals }}
    +
    + +
    +
    +
    +{% endblock %} diff --git a/templates/statistiques/stats-motifs.html b/templates/statistiques/stats-motifs.html new file mode 100644 index 0000000..ca1459a --- /dev/null +++ b/templates/statistiques/stats-motifs.html @@ -0,0 +1,120 @@ +{% extends "base.html" %} + +{% block content %} + {% include "statistiques/stat-form.html" %} + {% include "statistiques/stat-tabs.html" with active="motifs" %} + +
    +
    + + + + {% for month in months %}{% endfor %} + + + + + {% for motif, stats in data.ann.items %} + + + {% for month in months %}{% endfor %} + + + {% endfor %} + + + + + {% for month in months %}{% endfor %} + + + + + {% for service, stats in data.orient.items %} + + + {% for month in months %}{% endfor %} + + + {% endfor %} + + + + + {% for month in months %}{% endfor %} + + + + + + {% for motif, stats in data.fin_preeval.items %} + + + {% for month in months %}{% endfor %} + + + {% endfor %} + + {% for motif, stats in data.fin_posteval.items %} + + + {% for month in months %}{% endfor %} + + + {% endfor %} + + {% for motif, stats in data.fin_postacc.items %} + + + {% for month in months %}{% endfor %} + + + {% endfor %} + + {% for motif, stats in data.fin_total.items %} + + + {% for month in months %}{% endfor %} + + + {% endfor %} + + + + + {% for month in months %}{% endfor %} + + + + + {% for prov, stats in data.prov.items %} + + + {% for month in months %}{% endfor %} + + + {% endfor %} + + + + + {% for month in months %}{% endfor %} + + + + + {% for dest, stats in data.dest.items %} + + + {% for month in months %}{% endfor %} + + + {% endfor %} + +
    Motif d’annonce{{ month }}Total
    {{ motif }}{{ stats|get_item:month }}{{ stats.total }}
    Service annonceur{{ month }}Total
    {{ service }}{{ stats|get_item:month }}{{ stats.total }}
    Motif de fin d’évaluation ou d’accompagnement{{ month }}Total
    Abandon avant évaluation
    {{ motif }}{{ stats|get_item:month }}{{ stats.total }}
    Abandon après évaluation
    {{ motif }}{{ stats|get_item:month }}{{ stats.total }}
    Fin de l'accompagnement
    {{ motif }}{{ stats|get_item:month }}{{ stats.total }}
    Total
    {{ motif }}{{ stats|get_item:month }}{{ stats.total }}
    Provenance{{ month }}Total
    {{ prov }}{{ stats|get_item:month }}{{ stats.total }}
    Destination{{ month }}Total
    {{ dest }}{{ stats|get_item:month }}{{ stats.total }}
    +
    + +
    +
    +
    +{% endblock %} diff --git a/templates/statistiques/stats-niveaux.html b/templates/statistiques/stats-niveaux.html new file mode 100644 index 0000000..e75fec1 --- /dev/null +++ b/templates/statistiques/stats-niveaux.html @@ -0,0 +1,37 @@ +{% extends "base.html" %} + +{% block content %} + {% include "statistiques/stat-form.html" %} + {% include "statistiques/stat-tabs.html" with active="niveau" %} + +
    +
    + + + + + {% for month in months %}{% endfor %} + + + + + {% for niveau, prest_list in stats.items %} + + + + {% for prest, prest_data in prest_list.items %} + + + {% for month in months %}{% endfor %} + + + {% endfor %} + {% endfor %} + +
    Ressources par niveau{{ month }}Total
    Niveau {{ niveau }}
    {{ prest_map|get_item:prest }}{{ prest_data|get_item:month|format_duree }}{{ prest_data|get_item:'total'|format_duree }}
    +
    + +
    +
    +
    +{% endblock %} diff --git a/templates/statistiques/stats-prestations.html b/templates/statistiques/stats-prestations.html new file mode 100644 index 0000000..d2a75fa --- /dev/null +++ b/templates/statistiques/stats-prestations.html @@ -0,0 +1,78 @@ +{% extends "base.html" %} + +{% block content %} +
    +
    +
    + {{ date_form.non_field_errors }} +

    + Statistiques de l'année {{ date_form.year }} + +

    +
    +
    +
    + {% include "statistiques/stat-tabs.html" with active="prestations" %} + +
    +
    + + + + + {% for month in months %} + + {% endfor %} + + + + + + + {% for user, detail in intervenants.items %} + + + {% for h in detail.heures_prestees %} + + {% endfor %} + + + {% endfor %} + + + + + + {% for month in months %} + + {% endfor %} + + + + + + {% for libelle in libelles_prest %} + + + {% for month, data in totaux_prest_mensuels.items %} + + {% endfor %} + + + {% endfor %} + + + {% for month, data in totaux_prest_mensuels.items %} + + {% endfor %} + + + +
    {{ month|date:"N" }}Total
    +

    Intervenant·e·s {{ unite|upper }}

    Heures prestées
    {{ user|nom_prenom_abreg }}{{ h|format_duree|default_if_zero }}{{ detail.tot_prestees|format_duree }}
    {{ month|date:"N" }}Total
    {{ libelle.nom }}{% if month.is_future %}-{% else %}{{ data|get_item:libelle.nom|format_duree }}{% endif %}{{ totaux_par_prest|get_item:libelle.nom|format_duree }}
    Totaux{{ data.total|format_duree }}{{ total_gen|format_duree }}
    +
    + +
    +
    +
    +{% endblock %} diff --git a/templates/statistiques/stats-region.html b/templates/statistiques/stats-region.html new file mode 100644 index 0000000..d93f794 --- /dev/null +++ b/templates/statistiques/stats-region.html @@ -0,0 +1,45 @@ +{% extends "base.html" %} + +{% block content %} + {% include "statistiques/stat-form.html" %} + {% include "statistiques/stat-tabs.html" with active="region" %} + +
    +
    +

    + Nombre d’enfants suivis (dès demande jusqu'à la fin d’accompagnement) par région. +

    + + + + + {% for month in months %}{% endfor %} + + + + + + {% for region, stats in regions.items %} + {% if region != 'totals' %} + + + {% for month in months %}{% endfor %} + + + {% endif %} + {% endfor %} + + + {% for month in months %}{% endfor %} + + + +
    Région{{ month }}Total
    +

    Régions

    +
    {{ region }}{{ stats|get_item:month }}{{ stats.total }}
    Totaux{{ regions.totals|get_item:month }}{{ regions.totals.total }}
    +
    + +
    +
    +
    +{% endblock %} diff --git a/templates/two_factor/_base.html b/templates/two_factor/_base.html new file mode 100644 index 0000000..94d9808 --- /dev/null +++ b/templates/two_factor/_base.html @@ -0,0 +1 @@ +{% extends "base.html" %} diff --git a/templates/two_factor/_wizard_forms.html b/templates/two_factor/_wizard_forms.html new file mode 100644 index 0000000..d4f3715 --- /dev/null +++ b/templates/two_factor/_wizard_forms.html @@ -0,0 +1,13 @@ +{{ wizard.management_form }} + + {% for field in form.visible_fields %} + + + + {% endfor %} +
    {{ field.label_tag }}{{ field.errors }}{{ field }} + {% if field.name == 'password' %} Mot de passe oublié ?{% endif %} +
    +{% for hidden in form.hidden_fields %} +{{ hidden }} +{% endfor %} diff --git a/templates/two_factor/profile/profile.html b/templates/two_factor/profile/profile.html new file mode 100644 index 0000000..03b42c2 --- /dev/null +++ b/templates/two_factor/profile/profile.html @@ -0,0 +1,41 @@ +{% extends "two_factor/_base.html" %} +{% load i18n %} + +{% block content %} +

    {% block title %}{% trans "Account Security" %}{% endblock %}

    + + {% if default_device %} + + Modifier mon mot de passe + +

    {% trans "Tokens will be generated by your token generator." %}

    + +

    {% trans "Backup Tokens" %}

    +

    + {% blocktrans trimmed %}If you don't have any device with you, you can access + your account using backup tokens.{% endblocktrans %} + {% blocktrans trimmed count counter=backup_tokens %} + You have only one backup token remaining. + {% plural %} + You have {{ counter }} backup tokens remaining. + {% endblocktrans %} +

    +

    {% trans "Show Codes" %}

    + +

    Ajouter un appareil supplémentaire pour l’authentification à deux facteurs

    +

    Ajouter un autre appareil

    + +

    {% trans "Disable Two-Factor Authentication" %}

    +

    Si vous désactivez l’authentification à deux facteurs, vous devrez ensuite la réactiver pour pouvoir vous connecter. Cela peut être utile si vous souhaitez changer d’appareil.

    +

    + {% trans "Disable Two-Factor Authentication" %}

    + {% else %} +

    {% blocktrans trimmed %}Two-factor authentication is not enabled for your + account. Enable two-factor authentication for enhanced account + security.{% endblocktrans %}

    +

    + {% trans "Enable Two-Factor Authentication" %} +

    + {% endif %} +{% endblock %} diff --git a/templates/user_bar.html b/templates/user_bar.html new file mode 100644 index 0000000..d3ce4b7 --- /dev/null +++ b/templates/user_bar.html @@ -0,0 +1,13 @@ +
    +
    + {% if user.is_authenticated %} +
    + +
    {% csrf_token %} + +
    +
    + {% endif %} +
    +
    +