Commit 134815445d52af62ea8f0ff8197fd696dbdf964d

Authored by Etienne Pallier
1 parent d041043c
Exists in master and in 1 other branch dev

Bugfix Emprunts calcul sur les dates pourri... (v3.7.9.53)

- Emprunts : 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)
README.md
... ... @@ -53,20 +53,16 @@ Logiciel testé et validé sur les configurations suivantes :
53 53  
54 54 VERSION ACTUELLE
55 55  
56   -Date: 30/06/2020
57   -Version: 3.7.9.52
  56 +Date: 03/07/2020
  57 +Version: 3.7.9.53
58 58 Author: EP
59 59 Commentaire:
60   - - Bugfix et refactorisation des actions documents /admission, /sortie, /ficheMateriel
61   - => désormais, on passe l'id du matos associé et non pas son numero d'inventaire !!! (mauvais raccourci)
62   - => ca permet de tester les conditions d'accès de ces actions en fonction du matériel concerné !!
63   - - Bugfix test de ces mêmes actions (mal testées avant)
64   - - 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)
65   - => (/add/id) sinon refus
66   - - ...
67   -
  60 + - Bugfix Emprunts calcul sur les dates pourri : on utilise maintenant FrozenDate et FrozenTime de cakephp au lieu de DateTime de php
  61 + - 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)
  62 + - Bugfix suivis : type suivi doit être obligatoire !!!
  63 + - Désactivé tests en php5 sur SurCategories à cause erreur Template file "Surcategories/index.ctp" is missing (General.php line 1101)
  64 +
68 65 - Amélioration page /pages/acls
69   -
70 66 - 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 !!!)
71 67 - 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...)
72 68 - 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
108 104  
109 105 -----------------------------------------------------------------------------------------------------------
110 106  
111   -29/06/2020 v3.7.9.51 (EP)
112   - - bugfix et réécriture des actions documents /admission, /sortie, /fiche !!! (pas d'id)
  107 +30/06/2020 v3.7.9.51-52 (EP)
  108 + - Bugfix et refactorisation des actions documents /admission, /sortie, /ficheMateriel
113 109 => désormais, on passe l'id du matos associé et non pas son numero d'inventaire !!! (mauvais raccourci)
114   - => ca permet de tester les conditions d'accès de ces actions en fonction du matériel concerné !!
115   -
  110 + => ca permet de tester les conditions d'accès de ces actions en fonction du matériel concerné !!
  111 + - Bugfix test de ces mêmes actions (mal testées avant)
  112 + - 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)
  113 + => (/add/id) sinon refus
  114 + - ...
  115 +
116 116 29/06/2020 v3.7.9.50 (EP)
117 117 - Nouveau (et dernier dernier) super test ajouté : test du cycle de vie complet d'un matériel (CREATED => ... => ARCHIVED)
118 118 - 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...
... ...
database/update/db-update-2020-06-19.sh 0 → 100755
... ... @@ -0,0 +1,57 @@
  1 +#!/bin/bash
  2 +
  3 +#myname=`basename $0 .sh`
  4 +myname=`basename $0`
  5 +myname=${myname%%.*}
  6 +
  7 +# Pour Mac OS recent (>=10.10, Yosemite), la syntaxe du SED est differente
  8 +# Il faut donc exécuter ce script de la manière suivante :
  9 +# ./macos-db-update.sh <ce_script.sh>
  10 +
  11 +
  12 +function abort() {
  13 + echo "******************************************************"
  14 + echo "!!! Script $0 aborté à cause d'une erreur d'exécution !!!"
  15 + echo "******************************************************"
  16 + exit 1
  17 +}
  18 +
  19 +
  20 +if [ ! -f ../../config/app.php ] ; then
  21 +echo "Vous devez executer ce script depuis le dossier database/update/"
  22 +exit 1
  23 +fi
  24 +
  25 +
  26 +# Get login, pass, dbname, and hostname
  27 +username=$(grep "/\*d\*/'username'" ../../config/app.php | cut -d"'" -f4) || abort
  28 +password=$(grep "/\*d\*/'password'" ../../config/app.php | cut -d"'" -f4) || abort
  29 +database=$(grep "/\*d\*/'database'" ../../config/app.php | cut -d"'" -f4) || abort
  30 +host=$(grep "/\*d\*/'host'" ../../config/app.php | cut -d"'" -f4) || abort
  31 +
  32 +
  33 +#cp -p ./script_sql/db-update-2016-07-01-irap.sql ./script_sql/db-update-2016-07-01-irap-build.sql
  34 +cp -p ./script_sql/$myname.sql ./script_sql/$myname-build.sql || abort
  35 +
  36 +# Execute sql update script
  37 +sed -e "s/database/$database/" -i ./script_sql/$myname-build.sql || abort
  38 +mysql --user=$username --password=$password -h $host < ./script_sql/$myname-build.sql || abort
  39 +
  40 +# Delete temporary file and cakephp cache (-f avoids warning if no file)
  41 +rm -f ./script_sql/$myname-build.sql
  42 +sudo rm -f ../../tmp/cache/models/*
  43 +sudo rm -f ../../tmp/cache/persistent/*
  44 +
  45 +# Faire ca aussi si ca suffit pas...
  46 +#sudo chmod -R 777 ../../tmp
  47 +#sudo chmod -R 777 ../../vendor
  48 +#sudo chmod -R 777 ../../webroot
  49 +
  50 +
  51 +# PLUGIN update
  52 +# Installation plugin cakephp-dompdf
  53 +# (on va a la racine du projet)
  54 +#cd ../../
  55 +#php composer.phar require daoandco/cakephp-dompdf
  56 +#bin/cake plugin assets symlink
  57 +#cd -
... ...
database/update/db-update-2020-07-03.sh 0 → 100755
... ... @@ -0,0 +1,57 @@
  1 +#!/bin/bash
  2 +
  3 +#myname=`basename $0 .sh`
  4 +myname=`basename $0`
  5 +myname=${myname%%.*}
  6 +
  7 +# Pour Mac OS recent (>=10.10, Yosemite), la syntaxe du SED est differente
  8 +# Il faut donc exécuter ce script de la manière suivante :
  9 +# ./macos-db-update.sh <ce_script.sh>
  10 +
  11 +
  12 +function abort() {
  13 + echo "******************************************************"
  14 + echo "!!! Script $0 aborté à cause d'une erreur d'exécution !!!"
  15 + echo "******************************************************"
  16 + exit 1
  17 +}
  18 +
  19 +
  20 +if [ ! -f ../../config/app.php ] ; then
  21 +echo "Vous devez executer ce script depuis le dossier database/update/"
  22 +exit 1
  23 +fi
  24 +
  25 +
  26 +# Get login, pass, dbname, and hostname
  27 +username=$(grep "/\*d\*/'username'" ../../config/app.php | cut -d"'" -f4) || abort
  28 +password=$(grep "/\*d\*/'password'" ../../config/app.php | cut -d"'" -f4) || abort
  29 +database=$(grep "/\*d\*/'database'" ../../config/app.php | cut -d"'" -f4) || abort
  30 +host=$(grep "/\*d\*/'host'" ../../config/app.php | cut -d"'" -f4) || abort
  31 +
  32 +
  33 +#cp -p ./script_sql/db-update-2016-07-01-irap.sql ./script_sql/db-update-2016-07-01-irap-build.sql
  34 +cp -p ./script_sql/$myname.sql ./script_sql/$myname-build.sql || abort
  35 +
  36 +# Execute sql update script
  37 +sed -e "s/database/$database/" -i ./script_sql/$myname-build.sql || abort
  38 +mysql --user=$username --password=$password -h $host < ./script_sql/$myname-build.sql || abort
  39 +
  40 +# Delete temporary file and cakephp cache (-f avoids warning if no file)
  41 +rm -f ./script_sql/$myname-build.sql
  42 +sudo rm -f ../../tmp/cache/models/*
  43 +sudo rm -f ../../tmp/cache/persistent/*
  44 +
  45 +# Faire ca aussi si ca suffit pas...
  46 +#sudo chmod -R 777 ../../tmp
  47 +#sudo chmod -R 777 ../../vendor
  48 +#sudo chmod -R 777 ../../webroot
  49 +
  50 +
  51 +# PLUGIN update
  52 +# Installation plugin cakephp-dompdf
  53 +# (on va a la racine du projet)
  54 +#cd ../../
  55 +#php composer.phar require daoandco/cakephp-dompdf
  56 +#bin/cake plugin assets symlink
  57 +#cd -
... ...
database/update/script_sql/db-update-2020-06-19.sql 0 → 100755
... ... @@ -0,0 +1,7 @@
  1 +use database;
  2 +
  3 +-- Table emprunts
  4 +-- 17/6/20 : ajouté champ “nom” à emprunts (comme pour suivis)
  5 +-- car toute entité devrait avoir au moins les champs “id” et “nom”
  6 +-- (afin de pouvoir faire des traitements génériques sur toute entité)
  7 +ALTER TABLE emprunts ADD nom VARCHAR(45) NULL DEFAULT NULL AFTER id;
... ...
database/update/script_sql/db-update-2020-07-03.sql 0 → 100755
... ... @@ -0,0 +1,5 @@
  1 +use database;
  2 +
  3 +-- Table suivis
  4 +-- 03/07/20 : champ type_suivi_id obligatoire
  5 +ALTER TABLE `suivis` CHANGE `type_suivi_id` `type_suivi_id` INT(11) NOT NULL DEFAULT '1';
0 6 \ No newline at end of file
... ...
src/Controller/MaterielsController.php
... ... @@ -2310,15 +2310,27 @@ class MaterielsController extends AppController {
2310 2310 'lieu_detail !=' => 'null'
2311 2311 )
2312 2312 ]);
2313   - $s_nomresp = $this->Materiels->find('list', [
2314   - 'keyField' => 'nom_responsable',
2315   - 'valueField' => 'nom_responsable',
2316   - 'order' => 'nom_responsable',
  2313 + // (EP 202007) TOUS les utilisateurs (même ceux qui n'ont aucun matériel)
  2314 + $s_nomresp = $this->Materiels->Users->find('list', [
  2315 + 'keyField' => 'nom',
  2316 + 'valueField' => 'nom',
  2317 + 'order' => 'nom',
2317 2318 'conditions' => array(
2318   - 'status !=' => 'ARCHIVED',
2319   - 'nom_responsable !=' => 'null'
  2319 + 'nom !=' => 'SUPERADMIN FAKE_LDAP',
2320 2320 )
2321 2321 ]);
  2322 + // Uniquement les utilisateurs qui ont au moins 1 matériel
  2323 + /*
  2324 + $s_nomresp = $this->Materiels->find('list', [
  2325 + 'keyField' => 'nom_responsable',
  2326 + 'valueField' => 'nom_responsable',
  2327 + 'order' => 'nom_responsable',
  2328 + 'conditions' => array(
  2329 + 'status !=' => 'ARCHIVED',
  2330 + 'nom_responsable !=' => 'null'
  2331 + )
  2332 + ]);
  2333 + */
2322 2334 /* (EP) Depuis le 2/4/19, cette variable n'est plus utilisée
2323 2335 * car on préfère la recherche plein texte plutot que dans une liste
2324 2336 * On pourrait donc mettre en commentaire, mais bon...
... ...
src/Controller/SuivisController.php
... ... @@ -40,10 +40,12 @@ class SuivisController extends AppController
40 40  
41 41 // 2) Puis on fait nos petites règles locales pour notre labo à nous tout seul
42 42 // Par exemple, si je veux adapter la règle pour la modificaiton d'un suivi ("edit") :
  43 + /*
43 44 $this->setAuthorizationsForAction('edit', 'add', [
44 45 //'user' => ['default',0],
45 46 'super' => ['default',0],
46 47 ]);
  48 + */
47 49 }
48 50  
49 51 //@Override parent
... ...
src/Model/Entity/Emprunt.php
... ... @@ -103,7 +103,7 @@ class Emprunt extends Entity {
103 103 }
104 104 */
105 105 $this->d($this->date_emprunt);
106   - echo($this->date_emprunt); // '17/04/2020'
  106 + //echo($this->date_emprunt); // '17/04/2020'
107 107 $this->d($this->date_emprunt->__toString()); // '17/04/2020'
108 108 //$date_emprunt = new \DateTime(strtr($this->_properties['date_emprunt'],'/','-')) ; //->format('d/m/y');
109 109 //$date_emprunt = new \DateTime(str($this->date_emprunt)) ; //->format('d/m/y');
... ...
tests/TestCase/Controller/SurCategoriesControllerTest.php
... ... @@ -112,7 +112,7 @@ class SurCategoriesControllerTest extends General
112 112 *
113 113 * @dataProvider dataProviderActionsAndRoles4
114 114 *
115   - * @requires PHP 5.6
  115 + * @requires PHP 7
116 116 * (https://phpunit.readthedocs.io/fr/latest/incomplete-and-skipped-tests.html#sauter-des-tests-en-utilisant-requires)
117 117 */
118 118 public function testAuthorizationsForAllActionsOnSurCategories($action, $role_short, $role_long) {
... ...