From 047b06cabd76cfdd4f240f192fdd417ea0478f2c Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Tue, 14 Dec 2010 21:19:14 +0900 Subject: [PATCH] fix add & rename fields when we have a fact not yet added to db --- ankiqt/ui/clayout.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/ankiqt/ui/clayout.py b/ankiqt/ui/clayout.py index 936a0302d..3d36b2d4c 100644 --- a/ankiqt/ui/clayout.py +++ b/ankiqt/ui/clayout.py @@ -386,9 +386,13 @@ order by n""", id=card.id) field = self.field name = unicode(self.form.fieldName.text()) or _("Field") if field.name != name: + oldVal = self.fact[field.name] self.deck.renameFieldModel(self.model, field, name) # the card models will have been updated self.readCard() + # for add card case + self.updateFact() + self.fact[name] = oldVal field.unique = self.form.fieldUnique.isChecked() field.required = self.form.fieldRequired.isChecked() field.numeric = self.form.numeric.isChecked() @@ -444,12 +448,28 @@ order by n""", id=card.id) f = FieldModel(required=False, unique=False) f.name = _("Field %d") % (len(self.model.fieldModels) + 1) self.deck.addFieldModel(self.model, f) - self.deck.s.refresh(self.fact) + try: + self.deck.s.refresh(self.fact) + except: + # not yet added + self.updateFact() self.fillFieldList() self.form.fieldList.setCurrentRow(len(self.model.fieldModels)-1) self.form.fieldName.setFocus() self.form.fieldName.selectAll() + def updateFact(self): + oldFact = self.fact + model = self.deck.s.query(Model).get(oldFact.model.id) + fact = self.deck.newFact(model) + for field in fact.fields: + try: + fact[field.name] = oldFact[field.name] + except KeyError: + fact[field.name] = u"" + fact.tags = oldFact.tags + self.fact = fact + def deleteField(self): row = self.form.fieldList.currentRow() if row == -1: