Project

General

Profile

Actions

Anomalie #1661

closed

Suppression de plusieurs contributions

Added by Olivier Peyrat almost 2 years ago. Updated about 1 year ago.

Status:
Fermé
Priority:
Normal
Category:
Core
Target version:
Start date:
01/20/2023
Due date:
% Done:

100%

Estimated time:
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.


Files

clipboard-202301201725-rzyuk.png (8.53 KB) clipboard-202301201725-rzyuk.png Olivier Peyrat, 01/20/2023 05:25 PM
clipboard-202301201725-xvteh.png (8.53 KB) clipboard-202301201725-xvteh.png Olivier Peyrat, 01/20/2023 05:25 PM
clipboard-202301201726-oinsv.png (6.48 KB) clipboard-202301201726-oinsv.png Olivier Peyrat, 01/20/2023 05:26 PM
Actions #1

Updated by Johan Cwiklinski almost 2 years ago

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.

Actions #2

Updated by Olivier Peyrat almost 2 years ago

Ok, merci pour les infos.

Actions #3

Updated by Guillaume AGNIERAY almost 2 years ago

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

Actions #4

Updated by Johan Cwiklinski almost 2 years ago

  • Category set to Core
  • Assignee set to Johan Cwiklinski
  • Target version set to 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.

Actions #5

Updated by Johan Cwiklinski over 1 year ago

  • Status changed from Nouveau to Résolu
  • % Done changed from 0 to 100

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

Actions #6

Updated by Olivier Peyrat over 1 year ago

Ok, bonne nouvelle ! Merci

Actions #7

Updated by Johan Cwiklinski over 1 year ago

  • Status changed from Résolu to Fermé
Actions #8

Updated by Johan Cwiklinski about 1 year ago

Actions

Also available in: Atom PDF