Projet

Général

Profil

Development #29187

Ordre des catégories dans la cellule Saisie back-office

Ajouté par Stéphane Laget il y a plus de 5 ans. Mis à jour il y a plus de 2 ans.

Statut:
Nouveau
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
18 décembre 2018
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Reprendre l'ordre des catégories qui est définie dans la rubrique catégorie plutôt qu'un ordre alphabétique


Fichiers


Demandes liées

Lié à Combo - Development #23536: Cellule reprenant les démarches pour lesquels l'utilisateur (agent) a les droits en saisieFermé02 mai 2018

Actions

Historique

#1

Mis à jour par Frédéric Péters il y a environ 5 ans

  • Sujet changé de Portail agent : cellule Saisie back-office à Ordre des catégories dans la cellule Saisie back-office
#2

Mis à jour par Nicolas Roche il y a plus de 4 ans

  • Lié à Development #23536: Cellule reprenant les démarches pour lesquels l'utilisateur (agent) a les droits en saisie ajouté
#3

Mis à jour par Nicolas Roche il y a plus de 4 ans

Les formulaires sont groupés par catégories dans l'ordre où les catégories apparaissent en premier dans la liste renvoyée par wcs.

J'ai considéré que wcs n'envoie pas forcément les formulaires groupés par catégories (bien que j'ai l'impression que ce soit déjà le cas).

#4

Mis à jour par Nicolas Roche il y a plus de 4 ans

  • Assigné à mis à Nicolas Roche
#5

Mis à jour par Frédéric Péters il y a plus de 4 ans

Les formulaires sont groupés par catégories dans l'ordre où les catégories apparaissent en premier dans la liste renvoyée par wcs.

L'ordre des catégories se trouve dans l'attribut "position" de l'objet catégorie dans w.c.s., donc il serait nécessaire de commencer par définir celui-ci, dans les tests, dans la boucle for i in range(1, 10): cat = Category().

Ensuite,

- {% for formdef in category_formdefs.list|dictsort:"title" %}
(...)
+ {% for formdef in category.formdefs %}

ça me semble faire perdre l'assurance de tri alphabétique des démarches.

~~

Mais en gros je dirais que ce patch, plutôt, il devrait côté gabarit uniquement retirer le {% regroup ... actuel, de loin quelque chose comme :

-  {% regroup site_formdefs.data|dictsort:"category" by category as categories_formdefs %}
-  {% for category_formdefs in categories_formdefs %}
+  {% for category_formdefs in site_formdefs.formdefs_by_category %}  <-- et dans models.py créer ça.
#6

Mis à jour par Nicolas Roche il y a plus de 4 ans

côté gabarit uniquement retirer le {% regroup ... actuel,

tout juste, merci !

La construction de 'formdefs_by_category' pourrait être plus simple si on fait confiance à l'ordre retourné par wcs.

#7

Mis à jour par Frédéric Péters il y a plus de 4 ans

La construction de 'formdefs_by_category' pourrait être plus simple si on fait confiance à l'ordre retourné par wcs.

Je ne suis pas sûr de voir la question mais les démarches sont bien retournées par w.c.s. en respectant l'ordre des catégories, et avec un truc en second niveau de tri, alphabétique; tu constates autre chose ?

#8

Mis à jour par Nicolas Roche il y a plus de 4 ans

les démarches sont bien retournées par w.c.s. en respectant l'ordre des catégories, et avec un truc en second niveau de tri, alphabétique;

Oui, c'est même validé dans le test.

Je ne suis pas sûr de voir la question

Je pensais que l'algo suivant serait plus court/simple à écrire/relire, mais en fait ça ne me semble pas être le cas.


        # group formdef by categories, keeping the w.c.s. categories order
        for site_formdefs in context['all_formdefs'].values():
            length = len(site_formdefs['data'])
            indice = 0
            if length > 0:
                site_formdefs['formdefs_by_category'] = []
                grouper = site_formdefs['data'][0]['category']
            while indice < length:
                category_list = []
                while indice < length and site_formdefs['data'][indice]['category'] == grouper:
                    category_list.append(site_formdefs['data'][indice])
                    indice += 1
                site_formdefs['formdefs_by_category'].append({
                    'grouper': grouper,
                    'list': category_list
                })
                if indice < length:
                    grouper = site_formdefs['data'][indice]['category']

#9

Mis à jour par Nicolas Roche il y a plus de 2 ans

  • Statut changé de Solution proposée à Nouveau
  • Assigné à Nicolas Roche supprimé

Je ne suis pas sûr de voir la question mais les démarches sont bien retournées par w.c.s. en respectant l'ordre des catégories, et avec un truc en second niveau de tri, alphabétique; tu constates autre chose ?

Finalement je constate autre chose : wcs renvoie un simple tri alphabétique sur les noms des formulaires (sans la casse).
ex :

pdb> [(x.get('category'), x['title']) for x in json_response['data']]
[
 ('tests', 'bug limit one'),
 ('Maélis', 'dés-inscription maelis'),
 ('SOLIS', "FOLIS Demande d'aide"),
 ('Maélis', 'inscription maelis'),
 (None, 'test esirius delete'),
 ('tests', 'vide')
]

Il manque l'information nécessaire sur l'ordre des catégories
(par exemple un attribut category_position si l'on veut s'épargner le trie côté wcs).

Formats disponibles : Atom PDF