Projet

Général

Profil

Actions

Anomalie #1661

fermé

Suppression de plusieurs contributions

Ajouté par Olivier Peyrat il y a presque 2 ans. Mis à jour il y a environ un an.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
Core
Version cible:
Début:
20/01/2023
Echéance:
% réalisé:

100%

Temps estimé:
Version utilisée:

Description

Dans Galette, on a cherché à supprimer les contributions obsolètes des adhésions jusqu'au 31/08/2018.
Lorsqu'on va sur "Liste des contributions" avec un filtre tel que celui-ci :

On obtient bien la liste de toutes les contributions avec les adhérents concernés.
Si on sélectionne plusieurs contributions pour suppression on obtient le message suivant :

Pour la même sélection, l'export csv fonctionne.
A noter que la suppression individuelle avec l’icône sur la même ligne fonctionne.


Fichiers

Mis à jour par Johan Cwiklinski il y a presque 2 ans

C'est un problème que j'ai constaté récemment sur la version de développement, il semble que ce ne soit pas vraiment nouveau :/

Je n'ai pas été en mesure de déterminer ce qui a provoqué ce problème, je n'ai pas de correctif à proposer pour le moment.

Mis à jour par Olivier Peyrat il y a presque 2 ans

Ok, merci pour les infos.

Mis à jour par Guillaume AGNIERAY il y a presque 2 ans

Sur la version de développement j'ai d'abord cette erreur :

Type: InvalidArgumentException
Message: Missing data for URL segment: type
File: /home/vhosts/galette/galette/vendor/slim/slim/Slim/Router.php
Line: 381

Je pense ne pas me tromper en corrigeant cette ligne : source:/galette/lib/Galette/Controllers/Crud/ContributionsController.php@develop#L699

if (isset($post['delete'])) {
    return $response
        ->withStatus(301)
        ->withHeader('Location', $this->router->pathFor('removeContributions', ['type' => $type])); // <- ICI
}

Et je tombe ensuite sur :

Type: ErrorException
Message: Undefined array key 'id'
File: /home/vhosts/galette/galette/lib/Galette/Controllers/Crud/ContributionsController.php
Line: 952
Trace: 
#0 /home/vhosts/galette/galette/lib/Galette/Controllers/Crud/ContributionsController.php(952): {closure}()
#1 /home/vhosts/galette/galette/lib/Galette/Controllers/CrudController.php(171): Galette\\Controllers\\Crud\\ContributionsController->confirmRemoveTitle()
#2 /home/vhosts/galette/galette/lib/Galette/Controllers/CrudController.php(148): Galette\\Controllers\\CrudController->getconfirmDeleteParams()
#3 [internal function]: Galette\\Controllers\\CrudController->confirmDelete()

Qui amène donc ici : source:/galette/lib/Galette/Controllers/Crud/ContributionsController.php@develop#L952

À ce niveau, le problème est vraisemblablement sur &args. Les ids semblent absents.

J'imaginais simplement ajouter l'argument dans handleBatch() une nouvelle fois :

if (isset($post['delete'])) {
    return $response
        ->withStatus(301)
        ->withHeader('Location', $this->router->pathFor('removeContributions', ['type' => $type, 'ids' => $post['entries_sel']])); // <- ICI
}

Mais je retombe sur la même erreur. Et je ne parviens pas à récupérer $args avec Analog depuis handleBatch() pour l'inspecter et vérifier si je transmets les ids correctement ou pas :s

Mis à jour par Johan Cwiklinski il y a presque 2 ans

  • Catégorie mis à Core
  • Assigné à mis à Johan Cwiklinski
  • Version cible mis à 1.0.0

Guillaume Agniéray a écrit (#note-3):

Mais je retombe sur la même erreur. Et je ne parviens pas à récupérer $args avec Analog depuis handleBatch() pour l'inspecter et vérifier si je transmets les ids correctement ou pas :s

J'en étais arrivé à peu près au même problème... La suppression "en masse" est censée être générique, sauf pour la liste des adhérents pour laquelle des spécificités ont toujours existé.
À l'heure actuelle, il n'y a plus que la liste des adhérents sur laquelle la suppression en masse continue de fonctionner - je ne sais pas à quel moment la transmission des ID a été perdue, je n'ai pas été en mesure de le retracer via l'historique du dépôt.

Deux choix s'offrent alors : corriger pour que ça devienne générique de nouveau (solution la plus propre, mais aussi la plus complexe) ou traiter chaque cas de manière spécifique. Ce qui est dommage avec la seconde solution, c'est que les plugins ne peuvent pas en tirer partie facilement d'une part, et que le but ces temps-ci est plutôt à la mise en commun du code :)

Je suis pris sur d'autres sujets à l'heure actuelle, je reviendrai sur le sujet ultérieurement.

Mis à jour par Johan Cwiklinski il y a plus d'un an

  • Statut changé de Nouveau à Résolu
  • % réalisé changé de 0 à 100

J'ai corrigé ça récemment ;)

Mis à jour par Olivier Peyrat il y a plus d'un an

Ok, bonne nouvelle ! Merci

Mis à jour par Johan Cwiklinski il y a plus d'un an

  • Statut changé de Résolu à Fermé

Mis à jour par Johan Cwiklinski il y a environ un an

Actions

Formats disponibles : Atom PDF