Project

General

Profile

Development #42963

/api/user: DoesNotExist: Attribute matching query does not exist.

Added by sentry io about 2 months ago. Updated about 1 month ago.

Status:
Solution déployée
Priority:
Normal
Category:
-
Target version:
-
Start date:
15 May 2020
Due date:
% Done:

0%

Patch proposed:
Yes
Planning:
No

Description

https://sentry.entrouvert.org/entrouvert/publik/issues/1751/

DoesNotExist: Attribute matching query does not exist.
(7 additional frame(s) were not displayed)
...
  File "authentic2/custom_user/models.py", line 290, in to_json
    d[str(attribute.name)] = drf_field.to_representation(av.to_python())
  File "authentic2/models.py", line 347, in to_python
    deserialize = self.attribute.get_kind()['deserialize']
  File "django/db/models/fields/related_descriptors.py", line 184, in __get__
    rel_obj = self.get_object(instance)
  File "django/db/models/fields/related_descriptors.py", line 159, in get_object
    return qs.get(self.field.get_reverse_related_filter(instance))
  File "django/db/models/query.py", line 380, in get
    self.model._meta.object_name

Internal Server Error: /api/user/

0002-tox.ini-hide-modifier-to-disable-sw.patch View (1.05 KB) Benjamin Dauvergne, 18 May 2020 04:11 PM

0001-misc-hide-disabled-attributes-and-values-42963.patch View (6.91 KB) Benjamin Dauvergne, 18 May 2020 04:11 PM

0001-misc-hide-disabled-attributes-and-values-42963.patch View (6.91 KB) Benjamin Dauvergne, 18 May 2020 06:33 PM

Associated revisions

Revision a38a843a (diff)
Added by Benjamin Dauvergne about 1 month ago

misc: hide disabled attributes and values (#42963)

History

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

  • Project changed from Suivi des traces to Authentic 2
  • Subject changed from DoesNotExist: Attribute matching query does not exist. to /api/user: DoesNotExist: Attribute matching query does not exist.

#2 Updated by Benjamin Dauvergne about 2 months ago

Encore un attribut désactivé.

#3 Updated by Benjamin Dauvergne about 2 months ago

  • Assignee set to Benjamin Dauvergne

#4 Updated by Benjamin Dauvergne about 1 month ago

#5 Updated by Frédéric Péters about 1 month ago

(c'est quoi le sw de tox ? (qui arrive au milieu de la branche 2.2 et qui peut être désactivé dans cette branche))

#6 Updated by Benjamin Dauvergne about 1 month ago

Frédéric Péters a écrit :

(c'est quoi le sw de tox ? (qui arrive au milieu de la branche 2.2 et qui peut être désactivé dans cette branche))

https://docs.pytest.org/en/latest/cache.html#stepwise

#7 Updated by Benjamin Dauvergne about 1 month ago

Voilà c'est sorti du ticket, concentrons nous.

#8 Updated by Frédéric Péters about 1 month ago

  • Status changed from Solution proposée to Solution validée

Ok.

(pas de problème non plus pour le nosw, mais ça me semble s'ajouter à un truc qui a été ajouté par erreur dans le tox.ini, et du coup je verrais plutôt simplement toute référence sw dégager).

#9 Updated by Paul Marillonnet about 1 month ago

  • Status changed from Solution validée to Solution proposée
  • Au lieu des try … except AttributeError, est-ce qu'on pourrait se contenter d'ajouter hasattr(self.attributes, 'first_name') etc. dans les if … ?
  • Qu'est-ce qu'on gagne ici à laisser de côté le Manager de Django pour utiliser le QueryManager de django-model-utils ?
  • Du code churn pour rien ici il me semble :
    diff --git a/src/authentic2/models.py b/src/authentic2/models.py                    
    index 0056097d..01a37e5c 100644                                                     
    --- a/src/authentic2/models.py                                                      
    +++ b/src/authentic2/models.py                                                      
    @@ -160,8 +160,8 @@ class Attribute(models.Model):                                  
             verbose_name=_('order'),                                                   
             default=0)                                                                 
    
    -    objects = managers.AttributeManager(disabled=False)                            
         all_objects = managers.AttributeManager()                                      
    +    objects = managers.AttributeManager(disabled=False)                            
    
         registration_attributes = QueryManager(asked_on_registration=True)             
         user_attributes = QueryManager(user_editable=True) 
    

#10 Updated by Paul Marillonnet about 1 month ago

  • Status changed from Solution proposée to Solution validée

Oops pardon, c'est déjà validé par Fred.

#11 Updated by Benjamin Dauvergne about 1 month ago

  • Status changed from Solution validée to Résolu (à déployer)
commit a38a843aefbb12f931b8c5f8eef5654fc381a3c1
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date:   Fri May 15 17:08:35 2020 +0200

    misc: hide disabled attributes and values (#42963)

#12 Updated by Benjamin Dauvergne about 1 month ago

Pas vu test question, j'y réponds quand même pour la postérité.

Paul Marillonnet a écrit :

  • Au lieu des try … except AttributeError, est-ce qu'on pourrait se contenter d'ajouter hasattr(self.attributes, 'first_name') etc. dans les if … ?

Ça n'est pas équivalent en python2, ça l'est devenu en python3.

  • Qu'est-ce qu'on gagne ici à laisser de côté le Manager de Django pour utiliser le QueryManager de django-model-utils ?

Je ne comprends pas, je n'ai rien modifié de ce genre, on utilise toujours AttributeValueManager.

  • Du code churn pour rien ici il me semble :
    [...]

L'ordre a une importance pour définir le manager par défaut (c'est toujours le premier déclaré), c'est justement cela que je voulais changé.

https://docs.djangoproject.com/fr/3.0/topics/db/managers/#default-managers

#13 Updated by Frédéric Péters about 1 month ago

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

Also available in: Atom PDF