Projet

Général

Profil

Bug #75154

cron et vue personnalisée filtrée sur l'usager connecté

Ajouté par Frédéric Péters il y a environ un an. Mis à jour il y a environ un an.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
06 mars 2023
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non

Description

Exception:
  type = '<class 'AttributeError'>', value = ''NoneType' object has no attribute 'is_in_backoffice''

Stack trace (most recent call first):
  File "/usr/lib/python3/dist-packages/wcs/backoffice/management.py", line 2034, in get_view_criterias
  2032                 if filter_field_value == '__current__':
  2033                     context_vars = get_publisher().substitutions.get_context_variables(mode='lazy')
> 2034                     if get_request().is_in_backoffice() and context_vars.get('form'):
  2035                         # in case of backoffice submission/edition, take user associated
  2036                         # with the form being submitted/edited, if any.

  locals:
...
     filter_field = <wcs.backoffice.management.FakeField object at 0x7f166a2c3be0>
     filter_field_key = 'filter-user-value'
     filter_field_operator = 'eq'
     filter_field_operator_key = 'filter-user-operator'
     filter_field_value = '__current__'
     filters_dict = {'filter-user': 'on', 'filter-user-value': '__current__'}

  File "/usr/lib/python3/dist-packages/wcs/custom_views.py", line 184, in get_criterias
   182
   183         form_page = FormPage(formdef=formdef, view=self, update_breadcrumbs=False)
>  184         criterias = form_page.get_view_criterias(
   185             custom_view=self,
   186             compile_templates=compile_templates,

  locals:
     FormPage = <class 'wcs.backoffice.management.FormPage'>
     compile_templates = True
     form_page = <wcs.backoffice.management.FormPage object at 0x7f166a2c35b0>
     formdef = <CardDef 'BB_Enfants' id:17>
     keep_templates = False
     self = <CustomView id:12>

  File "/usr/lib/python3/dist-packages/wcs/carddef.py", line 222, in get_data_source_items
   220                 order_by = carddef.get_order_by(custom_view.order_by)
   221                 if not get_by_id:
>  222                     criterias.extend(custom_view.get_criterias(formdef=carddef, compile_templates=True))
   223
   224         if custom_view:

  locals:
     carddef = <CardDef 'BB_Enfants' id:17>
     cls = <class 'wcs.carddef.CardDef'>
     criterias = [<StrictNotEqual (attribute: 'status', value: 'draft')>, <Null (attribute: 'anonymised')>]
     custom_view = <CustomView id:12>
     data_source_id = 'carddef:bb_enfants:vue_complete'
     digest_key = 'default'
     get_by_id = None
     get_by_text = None
     limit = None
     order_by = '-receipt_time'
     parts = ['carddef', 'bb_enfants', 'vue_complete']
     query = None
     with_edit_related_url = False

  File "/usr/lib/python3/dist-packages/wcs/data_sources.py", line 396, in _get_structured_items
   394         from wcs.carddef import CardDef
   395
>  396         return CardDef.get_data_source_items(data_source['type'])
   397
   398     cache_duration = 0

  locals:
     CardDef = <class 'wcs.carddef.CardDef'>
     data_source = {'type': 'carddef:bb_enfants:vue_complete'}
     mode = None
     raise_on_error = False

  File "/usr/lib/python3/dist-packages/wcs/data_sources.py", line 385, in get_structured_items
   383
   384 def get_structured_items(data_source, mode=None, include_disabled=True, raise_on_error=False):
>  385     items = _get_structured_items(data_source, mode=mode, raise_on_error=raise_on_error)
   386     if not include_disabled:
   387         items = [i for i in items if not i.get('disabled')]

  locals:
     data_source = {'type': 'carddef:bb_enfants:vue_complete'}
     include_disabled = False
     mode = None
     raise_on_error = False

  File "/usr/lib/python3/dist-packages/wcs/data_sources.py", line 238, in get_items
   236
   237 def get_items(data_source, include_disabled=False, mode=None):
>  238     structured_items = get_structured_items(data_source, mode=mode, include_disabled=include_disabled)
   239     tupled_items = []
   240     for item in structured_items:

  locals:
     data_source = {'type': 'carddef:bb_enfants:vue_complete'}
     include_disabled = False
     mode = None

  File "/usr/lib/python3/dist-packages/wcs/fields.py", line 2619, in get_options
  2617             if self._cached_data_source:
  2618                 return self._cached_data_source
> 2619             self._cached_data_source = [x[:3] for x in data_sources.get_items(self.data_source)]
  2620             return self._cached_data_source[:]
  2621         elif self.items:

  locals:
     self = <ItemsField 2 'Enfants rattachés'>

  File "/usr/lib/python3/dist-packages/wcs/fields.py", line 2806, in store_display_value
  2804
  2805     def store_display_value(self, data, field_id, raise_on_error=False):
> 2806         options = self.get_options()
  2807         if not options:
  2808             return ''

  locals:
    ...
     field_id = '2'
     raise_on_error = False
     self = <ItemsField 2 'Enfants rattachés'>

  File "/usr/lib/python3/dist-packages/wcs/fields.py", line 678, in set_value
   676         data['%s' % self.id] = value
   677         if self.store_display_value:
>  678             display_value = self.store_display_value(data, self.id)
   679             if raise_on_error and display_value is None:
   680                 raise SetValueError('a datasource is unavailable (field id: %s)' % self.id)

  locals:
    ...

  File "/usr/lib/python3/dist-packages/wcs/formdata.py", line 1298, in anonymise
  1296         for field in self.formdef.get_all_fields():
  1297             if field.anonymise:
> 1298                 field.set_value(self.data, None)
  1299
  1300         self.anonymised = localtime()

  locals:
     field = <ItemsField 2 'Enfants rattachés'>
     self = <_wcs_Bb_Je-Nous-Inscris-A-Un-Evenement 'BB_Je nous inscris à un événement - n°45-2' id:2>

(il y a aussi éventuellement se dire qu'un bout peut être court-circuité parce qu'aller chercher les options possibles alors qu'on met à None, c'est inutile).

Révisions associées

Révision ee5ad161 (diff)
Ajouté par Frédéric Péters il y a environ un an

misc: avoid crash when anonymising on list filtered on connected user (#75154)

Révision 71f1c109 (diff)
Ajouté par Frédéric Péters il y a environ un an

misc: do not get items options when setting to empty value (#75154)

Historique

#1

Mis à jour par Robot Gitea il y a environ un an

  • Statut changé de Nouveau à En cours
  • Assigné à mis à Frédéric Péters

Frédéric Péters (fpeters) a ouvert une pull request sur Gitea concernant cette demande :

#2

Mis à jour par Robot Gitea il y a environ un an

  • Statut changé de En cours à Solution proposée
#3

Mis à jour par Robot Gitea il y a environ un an

  • Statut changé de Solution proposée à Solution validée

Lauréline Guérin (lguerin) a approuvé une pull request sur Gitea concernant cette demande :

#4

Mis à jour par Robot Gitea il y a environ un an

  • Statut changé de Solution validée à Résolu (à déployer)

Frédéric Péters (fpeters) a mergé une pull request sur Gitea concernant cette demande :

#5

Mis à jour par Transition automatique il y a environ un an

  • Statut changé de Résolu (à déployer) à Solution déployée
#6

Mis à jour par Transition automatique il y a 11 mois

Automatic expiration

Formats disponibles : Atom PDF