MongoEngine / MongoEngine/mongoengine

Fill _instance when adding an embedded document to a list

Abierto
#1,925 3 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Lenguaje dominante
Python
Estrellas
4.3k
Forks
1.2k
Merge medio
4 h 41 min
PR fusionados (30 d)
11

Descripción

EmbeddedDocument._instance is not filled when the embedded document as added to a document's list of embedded docs:
https://github.com/MongoEngine/mongoengine/commit/7d90aa76ff7116269dea42f2c6629ea6b868b0de#diff-da780e321f79f4602bab26240c7b0d7dR87

ipdb> l
    136         benefit = PurchaseBenefit()
    137         coupon.benefits.append(benefit)
    138         # HACK: force MongoEngine to fill _instance
    139         import ipdb; ipdb.set_trace()
--> 140         coupon.benefits[0]
    141     form = PurchaseBenefitForm(request.form if request.method == 'POST' else None, obj=benefit)
    142     errors = []
    143     if request.method == 'POST' and form.validate():

ipdb> isinstance(benefit, mongoengine.EmbeddedDocument)
True
ipdb> benefit._instance
ipdb> n
> /Users/Vic/projects/brain2/brain/crm/coupons.py(141)edit_coupon_benefit()
    140         coupon.benefits[0]
--> 141     form = PurchaseBenefitForm(request.form if request.method == 'POST' else None, obj=benefit)
    142     errors = []

ipdb> benefit._instance
Coupon(id='5b915f6a2ac6b371ed8f21df', ...)
ipdb>

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Empieza por el commit referenciado, especialmente por el diff enlazado alrededor de la línea 87, y reproduce la secuencia de append mostrada en el issue. Comprueba el comportamiento de EmbeddedDocument antes y después de añadirlo a la lista principal; se considera terminado cuando _instance está rellenado inmediatamente después de append, con una prueba de regresión que cubra ese caso.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
mongodb, python
Área
databases
Tipo de issue
Error
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.