Project

General

Profile

Development #32244

interface manager/queryset sur les formdata, pour les gabarits

Added by Frédéric Péters 2 months ago. Updated about 2 months ago.

Status:
Solution déployée
Priority:
Normal
Start date:
12 Apr 2019
Due date:
% Done:

0%

Patch proposed:
Yes
Planning:
No

Description

Pour afficher les demandes à proximité, j'utilisais précédemment un [script etc.] alors que ça se prête plutôt bien avec l'utilisation d'un gabarit, il manque "juste" "quelques" methodes.

0002-lazy-add-queryset-like-features-to-lazy-formdef-3224.patch View (2.45 KB) Frédéric Péters, 12 Apr 2019 03:25 PM

0001-misc-rename-move-FormDefSubstVar-to-lazy-variables-m.patch View (2.9 KB) Frédéric Péters, 12 Apr 2019 03:25 PM

0002-lazy-add-queryset-like-features-to-lazy-formdef-3224.patch View (7.18 KB) Frédéric Péters, 14 Apr 2019 10:13 AM

0002-lazy-add-queryset-like-features-to-lazy-formdef-3224.patch View (7.19 KB) Frédéric Péters, 14 Apr 2019 10:28 AM


Related issues

Blocks w.c.s. - Development #32263: proposer la réouverture d'un brouillon en début de saisie Solution déployée 14 Apr 2019

Associated revisions

Revision e0d82144 (diff)
Added by Frédéric Péters about 2 months ago

misc: rename/move FormDefSubstVar to lazy variables module (#32244)

Revision 22fc1227 (diff)
Added by Frédéric Péters about 2 months ago

lazy: add queryset-like features to lazy formdef (#32244)

{% for formdata in form.formdef.objects.pending %} {{formdata.number}} {% endfor %}

History

#1 Updated by Frédéric Péters 2 months ago

(tests à ajouter, et utilisation en vrai pour voir ce qu'il faudrait encore comme méthodes)

#2 Updated by Benjamin Dauvergne 2 months ago

Elle est où la partie "pour les demandes à proximité" ?

#3 Updated by Frédéric Péters 2 months ago

"Dans l'objectif général de passer par des gabarits pour l'affichage des demandes à proximité, une première étape.".

#4 Updated by Frédéric Péters 2 months ago

  • Blocks Development #32263: proposer la réouverture d'un brouillon en début de saisie added

#5 Updated by Frédéric Péters 2 months ago

Pour également être utile dans #32263, j'étends ce patch avec la possibilité de filter sur les brouillons, sur l'usager connecté, et un getitem nécessaire pour faire ...objects.drafts.0.internal_id.

Avec les tests complétés pour valider tout ça.

(en passant ça ajoute un select_iterator() bidon au stockage pickle)

#6 Updated by Frédéric Péters 2 months ago

Le __len__ n'était pas testé (et comportait du coup une erreur), voilà.

#7 Updated by Benjamin Dauvergne 2 months ago

  • Status changed from Solution proposée to Solution validée
  • Je ne crois pas que Django efface les filtres en cours sur un .all() :
        def all(self):
            # (mimicking django)
            return LazyFormDefObjectsManager(self._formdef)
    

    Django fait juste return self._clone()
  • La mise en cache du queryset n'est fait que sur un accès indexé, ce n'est pas le comportement Django qui est systématique, mais il y a peut-être une raison; si on veut proposer les deux possibilités je dirai de faire comme Django pour se retrouver en terrain connu: iter mets en cache, si pas souhaité, avoir un iterator() (le premier utilisant le deuxième).
  • criterias = [x for x in self._criterias if not getattr(x, 'exclude_drafts', False)] un peu complexe tout ça, peut-être serait-il plus simple de proposer directement sur formdef des accesseurs all_objects ou objects et no_drafts... en l'état formdef.objects.count() change de comportement (plus de drafts dans les décomptes, mais ça me parait bien), et expliciter dans ces accesseurs les critères en place

Voilà sans trop voir comment ce sera utilisé j'en suis réduit à des remarques bien générales.

#8 Updated by Frédéric Péters 2 months ago

en l'état formdef.objects.count() change de comportement (plus de drafts dans les décomptes, mais ça me parait bien).

Oui, j'étais même sûr d'avoir un "XXX: should exclude drafts" quelque part, que je ne retrouve pas.

Voilà sans trop voir comment ce sera utilisé j'en suis réduit à des remarques bien générales.

#32263 l'exploite.

#9 Updated by Frédéric Péters about 2 months ago

  • Status changed from Solution validée to Résolu (à déployer)
commit 22fc1227dd053667f940d4ca1476ebd0fad05f8f
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Fri Apr 12 15:21:29 2019 +0200

    lazy: add queryset-like features to lazy formdef (#32244)

    {% for formdata in form.formdef.objects.pending %}
      {{formdata.number}}
    {% endfor %}

commit e0d82144a793f293404a165996c8482371f5a321
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Fri Apr 12 15:03:24 2019 +0200

    misc: rename/move FormDefSubstVar to lazy variables module (#32244)

#10 Updated by Frédéric Péters about 2 months ago

  • Status changed from Résolu (à déployer) to Solution déployée

Also available in: Atom PDF