From 134815445d52af62ea8f0ff8197fd696dbdf964d Mon Sep 17 00:00:00 2001 From: Etienne Pallier Date: Fri, 3 Jul 2020 18:52:53 +0200 Subject: [PATCH] Bugfix Emprunts calcul sur les dates pourri... (v3.7.9.53) --- README.md | 30 +++++++++++++++--------------- database/update/db-update-2020-06-19.sh | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ database/update/db-update-2020-07-03.sh | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ database/update/script_sql/db-update-2020-06-19.sql | 7 +++++++ database/update/script_sql/db-update-2020-07-03.sql | 5 +++++ src/Controller/MaterielsController.php | 24 ++++++++++++++++++------ src/Controller/SuivisController.php | 2 ++ src/Model/Entity/Emprunt.php | 2 +- tests/TestCase/Controller/SurCategoriesControllerTest.php | 2 +- 9 files changed, 163 insertions(+), 23 deletions(-) create mode 100755 database/update/db-update-2020-06-19.sh create mode 100755 database/update/db-update-2020-07-03.sh create mode 100755 database/update/script_sql/db-update-2020-06-19.sql create mode 100755 database/update/script_sql/db-update-2020-07-03.sql diff --git a/README.md b/README.md index 4fd3922..25ab505 100644 --- a/README.md +++ b/README.md @@ -53,20 +53,16 @@ Logiciel testé et validé sur les configurations suivantes : VERSION ACTUELLE -Date: 30/06/2020 -Version: 3.7.9.52 +Date: 03/07/2020 +Version: 3.7.9.53 Author: EP Commentaire: - - Bugfix et refactorisation des actions documents /admission, /sortie, /ficheMateriel - => désormais, on passe l'id du matos associé et non pas son numero d'inventaire !!! (mauvais raccourci) - => ca permet de tester les conditions d'accès de ces actions en fonction du matériel concerné !! - - Bugfix test de ces mêmes actions (mal testées avant) - - L'ajout (/add) d'un suivi, emprunt, ou doc doit toujours se faire avec l'id de l'entité parente associée (en général materiel id) - => (/add/id) sinon refus - - ... - + - Bugfix Emprunts calcul sur les dates pourri : on utilise maintenant FrozenDate et FrozenTime de cakephp au lieu de DateTime de php + - Changement stratégie find matériels, liste des Propriétaire : ce n'est plus la liste des gens qui ont au moins 1 materiel, mais la liste de tous les utilisateurs (tout le ldap) + - Bugfix suivis : type suivi doit être obligatoire !!! + - Désactivé tests en php5 sur SurCategories à cause erreur Template file "Surcategories/index.ctp" is missing (General.php line 1101) + - Amélioration page /pages/acls - - Tests génériques automatiques pour (presque) toutes les actions de (presque) tous les controleurs principaux (Materiels, Suivis, Emprunts, Users) mais aussi du controleur "quelconque" SurCategories (pour vérifier que ça marche aussi !!!) - Dans ces tests génériques, on teste non seulement qu'une action s'exécute seulement quand elle y est autorisée, mais aussi qu'elle s'exécute correctement (au moins pour les actions CRUD : add,edit,delete...) - Le nombre total de tests (en ajoutant ces tests automatiques) monte à 220 !! @@ -108,11 +104,15 @@ La liste ci-dessous est aussi en ligne ici : https://tinyurl.com/labinvent#headi ----------------------------------------------------------------------------------------------------------- -29/06/2020 v3.7.9.51 (EP) - - bugfix et réécriture des actions documents /admission, /sortie, /fiche !!! (pas d'id) +30/06/2020 v3.7.9.51-52 (EP) + - Bugfix et refactorisation des actions documents /admission, /sortie, /ficheMateriel => désormais, on passe l'id du matos associé et non pas son numero d'inventaire !!! (mauvais raccourci) - => ca permet de tester les conditions d'accès de ces actions en fonction du matériel concerné !! - + => ca permet de tester les conditions d'accès de ces actions en fonction du matériel concerné !! + - Bugfix test de ces mêmes actions (mal testées avant) + - L'ajout (/add) d'un suivi, emprunt, ou doc doit toujours se faire avec l'id de l'entité parente associée (en général materiel id) + => (/add/id) sinon refus + - ... + 29/06/2020 v3.7.9.50 (EP) - Nouveau (et dernier dernier) super test ajouté : test du cycle de vie complet d'un matériel (CREATED => ... => ARCHIVED) - bugfix (en cours) des actions documents/admission et documents/sortie qui ne marchent plus car on ne leur passe pas un id mais un nom de doc... diff --git a/database/update/db-update-2020-06-19.sh b/database/update/db-update-2020-06-19.sh new file mode 100755 index 0000000..0a806d5 --- /dev/null +++ b/database/update/db-update-2020-06-19.sh @@ -0,0 +1,57 @@ +#!/bin/bash + +#myname=`basename $0 .sh` +myname=`basename $0` +myname=${myname%%.*} + +# Pour Mac OS recent (>=10.10, Yosemite), la syntaxe du SED est differente +# Il faut donc exécuter ce script de la manière suivante : +# ./macos-db-update.sh + + +function abort() { + echo "******************************************************" + echo "!!! Script $0 aborté à cause d'une erreur d'exécution !!!" + echo "******************************************************" + exit 1 +} + + +if [ ! -f ../../config/app.php ] ; then +echo "Vous devez executer ce script depuis le dossier database/update/" +exit 1 +fi + + +# Get login, pass, dbname, and hostname +username=$(grep "/\*d\*/'username'" ../../config/app.php | cut -d"'" -f4) || abort +password=$(grep "/\*d\*/'password'" ../../config/app.php | cut -d"'" -f4) || abort +database=$(grep "/\*d\*/'database'" ../../config/app.php | cut -d"'" -f4) || abort +host=$(grep "/\*d\*/'host'" ../../config/app.php | cut -d"'" -f4) || abort + + +#cp -p ./script_sql/db-update-2016-07-01-irap.sql ./script_sql/db-update-2016-07-01-irap-build.sql +cp -p ./script_sql/$myname.sql ./script_sql/$myname-build.sql || abort + +# Execute sql update script +sed -e "s/database/$database/" -i ./script_sql/$myname-build.sql || abort +mysql --user=$username --password=$password -h $host < ./script_sql/$myname-build.sql || abort + +# Delete temporary file and cakephp cache (-f avoids warning if no file) +rm -f ./script_sql/$myname-build.sql +sudo rm -f ../../tmp/cache/models/* +sudo rm -f ../../tmp/cache/persistent/* + +# Faire ca aussi si ca suffit pas... +#sudo chmod -R 777 ../../tmp +#sudo chmod -R 777 ../../vendor +#sudo chmod -R 777 ../../webroot + + +# PLUGIN update +# Installation plugin cakephp-dompdf +# (on va a la racine du projet) +#cd ../../ +#php composer.phar require daoandco/cakephp-dompdf +#bin/cake plugin assets symlink +#cd - diff --git a/database/update/db-update-2020-07-03.sh b/database/update/db-update-2020-07-03.sh new file mode 100755 index 0000000..0a806d5 --- /dev/null +++ b/database/update/db-update-2020-07-03.sh @@ -0,0 +1,57 @@ +#!/bin/bash + +#myname=`basename $0 .sh` +myname=`basename $0` +myname=${myname%%.*} + +# Pour Mac OS recent (>=10.10, Yosemite), la syntaxe du SED est differente +# Il faut donc exécuter ce script de la manière suivante : +# ./macos-db-update.sh + + +function abort() { + echo "******************************************************" + echo "!!! Script $0 aborté à cause d'une erreur d'exécution !!!" + echo "******************************************************" + exit 1 +} + + +if [ ! -f ../../config/app.php ] ; then +echo "Vous devez executer ce script depuis le dossier database/update/" +exit 1 +fi + + +# Get login, pass, dbname, and hostname +username=$(grep "/\*d\*/'username'" ../../config/app.php | cut -d"'" -f4) || abort +password=$(grep "/\*d\*/'password'" ../../config/app.php | cut -d"'" -f4) || abort +database=$(grep "/\*d\*/'database'" ../../config/app.php | cut -d"'" -f4) || abort +host=$(grep "/\*d\*/'host'" ../../config/app.php | cut -d"'" -f4) || abort + + +#cp -p ./script_sql/db-update-2016-07-01-irap.sql ./script_sql/db-update-2016-07-01-irap-build.sql +cp -p ./script_sql/$myname.sql ./script_sql/$myname-build.sql || abort + +# Execute sql update script +sed -e "s/database/$database/" -i ./script_sql/$myname-build.sql || abort +mysql --user=$username --password=$password -h $host < ./script_sql/$myname-build.sql || abort + +# Delete temporary file and cakephp cache (-f avoids warning if no file) +rm -f ./script_sql/$myname-build.sql +sudo rm -f ../../tmp/cache/models/* +sudo rm -f ../../tmp/cache/persistent/* + +# Faire ca aussi si ca suffit pas... +#sudo chmod -R 777 ../../tmp +#sudo chmod -R 777 ../../vendor +#sudo chmod -R 777 ../../webroot + + +# PLUGIN update +# Installation plugin cakephp-dompdf +# (on va a la racine du projet) +#cd ../../ +#php composer.phar require daoandco/cakephp-dompdf +#bin/cake plugin assets symlink +#cd - diff --git a/database/update/script_sql/db-update-2020-06-19.sql b/database/update/script_sql/db-update-2020-06-19.sql new file mode 100755 index 0000000..552d45e --- /dev/null +++ b/database/update/script_sql/db-update-2020-06-19.sql @@ -0,0 +1,7 @@ +use database; + +-- Table emprunts +-- 17/6/20 : ajouté champ “nom” à emprunts (comme pour suivis) +-- car toute entité devrait avoir au moins les champs “id” et “nom” +-- (afin de pouvoir faire des traitements génériques sur toute entité) +ALTER TABLE emprunts ADD nom VARCHAR(45) NULL DEFAULT NULL AFTER id; diff --git a/database/update/script_sql/db-update-2020-07-03.sql b/database/update/script_sql/db-update-2020-07-03.sql new file mode 100755 index 0000000..b4af5d6 --- /dev/null +++ b/database/update/script_sql/db-update-2020-07-03.sql @@ -0,0 +1,5 @@ +use database; + +-- Table suivis +-- 03/07/20 : champ type_suivi_id obligatoire +ALTER TABLE `suivis` CHANGE `type_suivi_id` `type_suivi_id` INT(11) NOT NULL DEFAULT '1'; \ No newline at end of file diff --git a/src/Controller/MaterielsController.php b/src/Controller/MaterielsController.php index 83991c2..077b42b 100755 --- a/src/Controller/MaterielsController.php +++ b/src/Controller/MaterielsController.php @@ -2310,15 +2310,27 @@ class MaterielsController extends AppController { 'lieu_detail !=' => 'null' ) ]); - $s_nomresp = $this->Materiels->find('list', [ - 'keyField' => 'nom_responsable', - 'valueField' => 'nom_responsable', - 'order' => 'nom_responsable', + // (EP 202007) TOUS les utilisateurs (même ceux qui n'ont aucun matériel) + $s_nomresp = $this->Materiels->Users->find('list', [ + 'keyField' => 'nom', + 'valueField' => 'nom', + 'order' => 'nom', 'conditions' => array( - 'status !=' => 'ARCHIVED', - 'nom_responsable !=' => 'null' + 'nom !=' => 'SUPERADMIN FAKE_LDAP', ) ]); + // Uniquement les utilisateurs qui ont au moins 1 matériel + /* + $s_nomresp = $this->Materiels->find('list', [ + 'keyField' => 'nom_responsable', + 'valueField' => 'nom_responsable', + 'order' => 'nom_responsable', + 'conditions' => array( + 'status !=' => 'ARCHIVED', + 'nom_responsable !=' => 'null' + ) + ]); + */ /* (EP) Depuis le 2/4/19, cette variable n'est plus utilisée * car on préfère la recherche plein texte plutot que dans une liste * On pourrait donc mettre en commentaire, mais bon... diff --git a/src/Controller/SuivisController.php b/src/Controller/SuivisController.php index d215ade..81aad2b 100755 --- a/src/Controller/SuivisController.php +++ b/src/Controller/SuivisController.php @@ -40,10 +40,12 @@ class SuivisController extends AppController // 2) Puis on fait nos petites règles locales pour notre labo à nous tout seul // Par exemple, si je veux adapter la règle pour la modificaiton d'un suivi ("edit") : + /* $this->setAuthorizationsForAction('edit', 'add', [ //'user' => ['default',0], 'super' => ['default',0], ]); + */ } //@Override parent diff --git a/src/Model/Entity/Emprunt.php b/src/Model/Entity/Emprunt.php index 4f6cf43..4f106ec 100755 --- a/src/Model/Entity/Emprunt.php +++ b/src/Model/Entity/Emprunt.php @@ -103,7 +103,7 @@ class Emprunt extends Entity { } */ $this->d($this->date_emprunt); - echo($this->date_emprunt); // '17/04/2020' + //echo($this->date_emprunt); // '17/04/2020' $this->d($this->date_emprunt->__toString()); // '17/04/2020' //$date_emprunt = new \DateTime(strtr($this->_properties['date_emprunt'],'/','-')) ; //->format('d/m/y'); //$date_emprunt = new \DateTime(str($this->date_emprunt)) ; //->format('d/m/y'); diff --git a/tests/TestCase/Controller/SurCategoriesControllerTest.php b/tests/TestCase/Controller/SurCategoriesControllerTest.php index 8dcaf3a..2442b65 100755 --- a/tests/TestCase/Controller/SurCategoriesControllerTest.php +++ b/tests/TestCase/Controller/SurCategoriesControllerTest.php @@ -112,7 +112,7 @@ class SurCategoriesControllerTest extends General * * @dataProvider dataProviderActionsAndRoles4 * - * @requires PHP 5.6 + * @requires PHP 7 * (https://phpunit.readthedocs.io/fr/latest/incomplete-and-skipped-tests.html#sauter-des-tests-en-utilisant-requires) */ public function testAuthorizationsForAllActionsOnSurCategories($action, $role_short, $role_long) { -- libgit2 0.21.2