fix card ordering when generating cards by basing card creation off fact

This commit is contained in:
Damien Elmes 2010-07-21 19:46:27 +09:00
parent f3d2965e12
commit a68366b5c4

View file

@ -145,12 +145,14 @@ The current importer only supports a single active card template. Please disable
# add facts # add facts
self.deck.updateProgress() self.deck.updateProgress()
factIds = [genID() for n in range(len(cards))] factIds = [genID() for n in range(len(cards))]
factCreated = {}
def fudgeCreated(d, tmp=[]): def fudgeCreated(d, tmp=[]):
if not tmp: if not tmp:
tmp.append(time.time()) tmp.append(time.time())
else: else:
tmp[0] += 0.00001 tmp[0] += 0.00001
d['created'] = tmp[0] d['created'] = tmp[0]
factCreated[d['id']] = d['created']
return d return d
self.deck.s.execute(factsTable.insert(), self.deck.s.execute(factsTable.insert(),
[fudgeCreated({'modelId': self.model.id, [fudgeCreated({'modelId': self.model.id,
@ -178,15 +180,14 @@ where factId in (%s)""" % ",".join([str(s) for s in factIds]))
data) data)
# and cards # and cards
self.deck.updateProgress() self.deck.updateProgress()
now = time.time()
active = 0 active = 0
for cm in self.model.cardModels: for cm in self.model.cardModels:
self._now = now
if cm.active: if cm.active:
active += 1 active += 1
data = [self.addMeta({ data = [self.addMeta({
'id': genID(), 'id': genID(),
'factId': factIds[m], 'factId': factIds[m],
'factCreated': factCreated[factIds[m]],
'cardModelId': cm.id, 'cardModelId': cm.id,
'ordinal': cm.ordinal, 'ordinal': cm.ordinal,
'question': u"", 'question': u"",
@ -203,11 +204,10 @@ where factId in (%s)""" % ",".join([str(s) for s in factIds]))
"Add any scheduling metadata to cards" "Add any scheduling metadata to cards"
if 'fields' in card.__dict__: if 'fields' in card.__dict__:
del card.fields del card.fields
t = self._now + data['ordinal'] t = data['factCreated'] + data['ordinal'] * 0.000001
data['created'] = t data['created'] = t
data['modified'] = t data['modified'] = t
data['due'] = t data['due'] = t
self._now += .00001
data.update(card.__dict__) data.update(card.__dict__)
data['tags'] = u"" data['tags'] = u""
self.cardIds.append(data['id']) self.cardIds.append(data['id'])