[openresultat-Commits] r1538 - in trunk: . obj tests tests/binary_files/dyn

0 views
Skip to first unread message

cga...@users.adullact.net

unread,
May 31, 2024, 4:03:57 AMMay 31
to openmairie-...@googlegroups.com
Author: cgarcin
Date: 2024-05-31 10:03:54 +0200 (Fri, 31 May 2024)
New Revision: 1538

Modified:
trunk/
trunk/obj/import_specific.class.php
trunk/tests/023_02_workflow_parametrage_import_candidat.robot
trunk/tests/binary_files/dyn/config.inc.php
Log:
chore(branch) : merge bugfix #10418


Index: trunk
===================================================================
--- trunk 2024-05-31 08:00:19 UTC (rev 1537)
+++ trunk 2024-05-31 08:03:54 UTC (rev 1538)

Property changes on: trunk
___________________________________________________________________
Modified: svn:mergeinfo
## -1,5 +1,6 ##
/branches/10380:1482-1510
/branches/10395:1490-1502
+/branches/10418:1525-1537
/branches/10422:1529-1533
/branches/2.0.0-develop:1098-1107
/branches/2.0.0-develop-BV:713-732
Modified: trunk/obj/import_specific.class.php
===================================================================
--- trunk/obj/import_specific.class.php 2024-05-31 08:00:19 UTC (rev 1537)
+++ trunk/obj/import_specific.class.php 2024-05-31 08:03:54 UTC (rev 1538)
@@ -459,7 +459,7 @@
$form->setSelect("fichier", array(
"constraint" => array(
"size_max" => 8,
- "extension" => ".xml;.txt"
+ "extension" => ".xml"
),
));
// Référence
@@ -771,6 +771,22 @@
// Récupération du chemin d'acès au fichier
$fichier_tmp = str_replace("tmp|", "", $_POST['fichier']);
$path = $this->f->storage->storage->temporary_storage->getPath($fichier_tmp);
+ // Vérifie l'existence du fichier
+ if (empty($path)) {
+ $this->f->displayMessage('error', "Vous n'avez pas selectionné de fichier à importer");
+ return;
+ }
+ // Récupère le XML et vérifie sa validité
+ // Désactive les logs du XML pour ne pas les afficher dans les logs PHP
+ // et gérer l'erreur à la place
+ libxml_use_internal_errors(true);
+ if(($xml = simplexml_load_file($path)) === false) {
+ $this->f->displayMessage('error', "Le fichier n'a pas pu être chargé.");
+ libxml_clear_errors();
+ return;
+ }
+ // Réactive les logs
+ libxml_use_internal_errors(false);
// Récupération de la référence et utilisation pour savoir dans quel
// élément chercher
$reference = $_POST['reference'];
@@ -804,78 +820,94 @@
'obj' => 'election_candidat',
'idx' => 0
));
- // ouverture du XML
- $xml = simplexml_load_file($path);
// Dump de l'objet
$bureau_vote = $xml->election->bureaux_vote->bureau_vote;
$found = false;
- $status = 'valid';
$nouveaux_candidats_crees = 0;
$nouveaux_partis_crees = 0;
$candidats_associes = 0;
$candidats_en_erreur = 0;
- $liste_messages = array();
- foreach($bureau_vote as $bureau) {
- if ($bureau->{$correspondance[$reference]} == $code_ref) {
- // Supprime tous les candidats de l'élection
- if(! $inst_election->supprimer_candidats_election($election)) {
- $status = 'warning';
- $liste_messages[] = __("Les candidats déjà associés à l'élection n'ont pas pu être supprimés.");
- }
- // Récupère ou crée et associe les candidats à l'élection
- foreach($bureau->candidats->cand as $candidat) {
- // Création du parti politique si il n'existe pas déjà
- $ajout_parti_infos = $inst_parti_politique->ajouter_parti_si_non_existant($candidat->cod_nuance->__toString());
- // Compte le nombre de partis ajoutés
- if ($ajout_parti_infos['nouvel_ajout']) {
- $nouveaux_partis_crees++;
- }
+ // Vérifie si il y a bien des bureaux de vote dont le paramétrage peut être
+ // importés et informe l'utilisateur si ce n'est pas le cas.
+ $status = 'error';
+ $liste_messages = array(
+ __('Le fichier ne contiens aucun bureau de vote permettant d\'importer des candidats.')
+ );

- // Création du candidat si il n'existe pas déjà
- $ajout_candidat_infos = $inst_candidat->ajouter_candidat_si_non_existant($candidat->design_can->__toString());
- // Compte le nombre de candidat ajouté
- if ($ajout_candidat_infos['nouvel_ajout']) {
- $nouveaux_candidats_crees++;
+ if (! empty($bureau_vote)) {
+ $status = 'valid';
+ $liste_messages = array();
+ foreach($bureau_vote as $bureau) {
+ if (isset($bureau->{$correspondance[$reference]})
+ && $bureau->{$correspondance[$reference]} == $code_ref) {
+ // Le bureau voulu existe
+ $found = true;
+ // Supprime tous les candidats de l'élection
+ if(! $inst_election->supprimer_candidats_election($election)) {
+ $status = 'warning';
+ $liste_messages[] = __("Les candidats déjà associés à l'élection n'ont pas pu être supprimés.");
}
+ // Vérifie que les informations des candidats sont accessibles
+ if (empty($bureau->candidats->cand)) {
+ // Prépare un message d'erreur à destination de l'utilisateur et stop la boucle
+ $status = 'error';
+ $liste_messages[] = __("Les informations des candidats ne sont pas accessibles.");
+ break;
+ }
+ // Récupère ou crée et associe les candidats à l'élection
+ foreach($bureau->candidats->cand as $candidat) {
+ // Création du parti politique si il n'existe pas déjà
+ $ajout_parti_infos = $inst_parti_politique->ajouter_parti_si_non_existant($candidat->cod_nuance->__toString());
+ // Compte le nombre de partis ajoutés
+ if ($ajout_parti_infos['nouvel_ajout']) {
+ $nouveaux_partis_crees++;
+ }

- // Ajout du candidat à l'élection
- $valF = array(
- 'election_candidat' => '',
- 'election' => $election,
- 'candidat' => $ajout_candidat_infos['id'],
- 'ordre' => $candidat->no_panneau->__toString(),
- 'prefecture' => $candidat->cod_depot->__toString(),
- 'age_moyen' => null,
- 'siege' => null,
- 'age_moyen_com' => null,
- 'siege_com' => null,
- 'couleur' => null,
- 'photo' => null,
- 'parti_politique' => $ajout_parti_infos['id'],
- 'age_moyen_mep' => null,
- 'siege_mep' => null
- );
- if($election_candidat->ajouter($valF) !== true) {
- $candidats_en_erreur++;
- $this->f->addToLog("Echec de l'import du candidat. Description : ".var_export($valF, true));
- $status = 'warning';
- } else {
- $candidats_associes++;
+ // Création du candidat si il n'existe pas déjà
+ $ajout_candidat_infos = $inst_candidat->ajouter_candidat_si_non_existant($candidat->design_can->__toString());
+ // Compte le nombre de candidat ajouté
+ if ($ajout_candidat_infos['nouvel_ajout']) {
+ $nouveaux_candidats_crees++;
+ }
+
+ // Ajout du candidat à l'élection
+ $valF = array(
+ 'election_candidat' => '',
+ 'election' => $election,
+ 'candidat' => $ajout_candidat_infos['id'],
+ 'ordre' => $candidat->no_panneau->__toString(),
+ 'prefecture' => $candidat->cod_depot->__toString(),
+ 'age_moyen' => null,
+ 'siege' => null,
+ 'age_moyen_com' => null,
+ 'siege_com' => null,
+ 'couleur' => null,
+ 'photo' => null,
+ 'parti_politique' => $ajout_parti_infos['id'],
+ 'age_moyen_mep' => null,
+ 'siege_mep' => null
+ );
+ if($election_candidat->ajouter($valF) !== true) {
+ $candidats_en_erreur++;
+ $this->f->addToLog("Echec de l'import du candidat. Description : ".var_export($valF, true));
+ $status = 'warning';
+ } else {
+ $candidats_associes++;
+ }
}
+ $liste_messages[] = __("Nouveaux partis politique ajoutés : $nouveaux_partis_crees");
+ $liste_messages[] = __("Nouveaux candidats ajoutés : $nouveaux_candidats_crees");
+ $liste_messages[] = __("Candidats associés à l'élection : $candidats_associes");
+ $liste_messages[] = __("Candidats dont l'ajout à échoué : $candidats_en_erreur");
+ break;
}
- $found = true;
- $liste_messages[] = __("Nouveaux partis politique ajoutés : $nouveaux_partis_crees");
- $liste_messages[] = __("Nouveaux candidats ajoutés : $nouveaux_candidats_crees");
- $liste_messages[] = __("Candidats associés à l'élection : $candidats_associes");
- $liste_messages[] = __("Candidats dont l'ajout à échoué : $candidats_en_erreur");
- break;
}
+ if (!$found)
+ {
+ $liste_messages[] = __("La référence n'est pas présente dans le fichier");
+ $status = 'warning';
+ }
}
- if (!$found)
- {
- $liste_messages[] = __("La référence n'est pas présente dans le fichier");
- $status = 'warning';
- }
$this->f->displayMessage($status, implode('</br>', $liste_messages));
}


Modified: trunk/tests/023_02_workflow_parametrage_import_candidat.robot
===================================================================
--- trunk/tests/023_02_workflow_parametrage_import_candidat.robot 2024-05-31 08:00:19 UTC (rev 1537)
+++ trunk/tests/023_02_workflow_parametrage_import_candidat.robot 2024-05-31 08:03:54 UTC (rev 1538)
@@ -86,3 +86,12 @@
# Vérifie que le nouveau candidat a bien été ajouté
Use Simple Search Tous ${lib_new_candidat}
Element Should Contain css=.tab-tab ${lib_new_candidat}
+
+Import des candidats via un fichier XML - Format de fichier incorrect
+
+ # Accède à l'élection
+ Depuis le contexte election ${id_election}
+ # Accède au formulaire d'import
+ Click On Form Portlet Action election import_candidats
+ # Sélectionne un fichier n'ayant pas la bonne extension et vérifie le message d'erreur
+ Add File and Expect Error Message Contain fichier candidat1.png Le fichier n'est pas conforme à la liste des extension(s) autorisée(s)

Modified: trunk/tests/binary_files/dyn/config.inc.php
===================================================================
--- trunk/tests/binary_files/dyn/config.inc.php 2024-05-31 08:00:19 UTC (rev 1537)
+++ trunk/tests/binary_files/dyn/config.inc.php 2024-05-31 08:03:54 UTC (rev 1538)
@@ -1,4 +1,4 @@
<?php
$config = array();
-$config["upload_extension"] = ".gif;.jpg;.jpeg;.png;.txt;.pdf;.csv;.xml";
+$config["upload_extension"] = ".gif;.jpg;.jpeg;.png;.txt;.pdf;.csv;.xml;";
?>

Reply all
Reply to author
Forward
0 new messages