Hi!
I'm trying to develop a E-Learning-System. The idea is to give the student
a bunch of cards to learn every day.
Therefore I have a table 'cards' which includes only the answer.
Table 'userCard' includes the date when the user learnt the card the last
time and in which stage (multiplier for the timedelta) the card is for this
special user.
Table 'subject' holds the name of the subject and table 'studyGroup' hold
the name of the studyGroup of the student.
To get the cards for the day for this student in a special subject with the
answers for his studyGroup and with only the cards he didnt learn the last
days I tried the following select:
groupCards = db((db.groupCards.card_id == db.card.id) \
& (db.groupCards.studyGroup_id == auth.user.studyGroup_id) \
& (session.chosenSubject_id == db.card.subject_id)
& (db.userCard.stage <= 5) \
& (db.userCard.lastTimeLearned < (datetime.date.today() - datetime.
timedelta(days=(1))))
& ((datetime.date.today()) <= db.userCard.lastTimeLearned)
).select(db.userCard.ALL, left=db.userCard.on((db.userCard.card_id
== db.card.id)))
I used the left outer join to include the cards, he never learned before.
The userCards are created later if they don't exist.
Now I have the problem, that I have userCard before and in the select. In
the select, it seems, that I can't do the both querys and without them
before select, there is no card selected at all.
The other problem is, that in timedelta, I would like to change the '1'
with db.userCard.stage, but I only get the exception, that I can't use a
field in timedelta.
Any idea?
P.S.: Sorry for my english ;o)
--