Project

General

Profile

Development #32244

interface manager/queryset sur les formdata, pour les gabarits

Added by Frédéric Péters 7 days ago. Updated 3 days ago.

Status:
Solution validé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 proposée 14 Apr 2019

History

#1 Updated by Frédéric Péters 7 days ago

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

#2 Updated by Benjamin Dauvergne 7 days ago

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

#3 Updated by Frédéric Péters 7 days 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 5 days 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 5 days 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 5 days ago

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

#7 Updated by Benjamin Dauvergne 4 days 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 3 days 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.

Also available in: Atom PDF