mirror of
https://github.com/ankitects/anki.git
synced 2025-09-23 08:22:24 -04:00
fix add & rename fields when we have a fact not yet added to db
This commit is contained in:
parent
f17d0cc187
commit
047b06cabd
1 changed files with 21 additions and 1 deletions
|
@ -386,9 +386,13 @@ order by n""", id=card.id)
|
||||||
field = self.field
|
field = self.field
|
||||||
name = unicode(self.form.fieldName.text()) or _("Field")
|
name = unicode(self.form.fieldName.text()) or _("Field")
|
||||||
if field.name != name:
|
if field.name != name:
|
||||||
|
oldVal = self.fact[field.name]
|
||||||
self.deck.renameFieldModel(self.model, field, name)
|
self.deck.renameFieldModel(self.model, field, name)
|
||||||
# the card models will have been updated
|
# the card models will have been updated
|
||||||
self.readCard()
|
self.readCard()
|
||||||
|
# for add card case
|
||||||
|
self.updateFact()
|
||||||
|
self.fact[name] = oldVal
|
||||||
field.unique = self.form.fieldUnique.isChecked()
|
field.unique = self.form.fieldUnique.isChecked()
|
||||||
field.required = self.form.fieldRequired.isChecked()
|
field.required = self.form.fieldRequired.isChecked()
|
||||||
field.numeric = self.form.numeric.isChecked()
|
field.numeric = self.form.numeric.isChecked()
|
||||||
|
@ -444,12 +448,28 @@ order by n""", id=card.id)
|
||||||
f = FieldModel(required=False, unique=False)
|
f = FieldModel(required=False, unique=False)
|
||||||
f.name = _("Field %d") % (len(self.model.fieldModels) + 1)
|
f.name = _("Field %d") % (len(self.model.fieldModels) + 1)
|
||||||
self.deck.addFieldModel(self.model, f)
|
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.fillFieldList()
|
||||||
self.form.fieldList.setCurrentRow(len(self.model.fieldModels)-1)
|
self.form.fieldList.setCurrentRow(len(self.model.fieldModels)-1)
|
||||||
self.form.fieldName.setFocus()
|
self.form.fieldName.setFocus()
|
||||||
self.form.fieldName.selectAll()
|
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):
|
def deleteField(self):
|
||||||
row = self.form.fieldList.currentRow()
|
row = self.form.fieldList.currentRow()
|
||||||
if row == -1:
|
if row == -1:
|
||||||
|
|
Loading…
Reference in a new issue