I defined tables Day and OpeningHours:
db.define_table('Day',
Field('name',length=16,
default='',notnull=True,unique=True),
Field('byday',length=2,default='',notnull=True,unique=True),
format='%(name)s',
migrate=False)
db.define_table('OpeningHours',
Field('nodeID','reference
Node',default='',notnull=True,ondelete='CASCADE',writable=False,readable=False),
Field('dayID','reference
Day',default='',notnull=True,ondelete='RESTRICT'),
Field('date',type='date'),
Field('fromTime',type='time'),
Field('toTime',type='time'),
migrate=False)
When I query the database, rows (OpeningHours and Day joined) reads like:
nodeID fromTime toTime byday
1 09:00 12:00 MO
1 15:00 22:00 MO
1 09:00 22:00 TU
1 09:00 12:00 WE
1 12:00 15:00 WE
1 09:00 22:00 TH
1 09:00 22:00 FR
1 09:00 13:00 SA
1 10:00 13:00 SO
In a function I set the date on the fields as follows:
nowdate=request.now.date()
nowday=request.now.weekday()
for row in session.oh_rows:
if nowday==row.Day.id-1:
row.OpeningHours.date=nowdate
else:
byday=row.Day.byday
row.OpeningHours.date=nowdate+relativedelta(weekday=byday)
For some reason this results in an error:
Traceback (most recent call last):
File "/Library/Python/2.5/site-packages/web2py/gluon/restricted.py", line
205, in restricted
exec ccode in environment
File
"/Library/Python/2.5/site-packages/web2py/applications/bootstrap/controllers/calendar.py"
<http://127.0.0.1:8000/admin/default/edit/bootstrap/controllers/calendar.py>,
line 178, in <module>
File "/Library/Python/2.5/site-packages/web2py/gluon/globals.py", line 173,
in <lambda>
self._caller = lambda f: f()
File
"/Library/Python/2.5/site-packages/web2py/applications/bootstrap/controllers/calendar.py"
<http://127.0.0.1:8000/admin/default/edit/bootstrap/controllers/calendar.py>,
line 57, in openingHours
row.OpeningHours.startDate=nowdate+relativedelta(weekday=byday)
File "applications/bootstrap/modules/relativedelta.py", line 278, in __radd__
weekday, nth = self.weekday.weekday, self.weekday.n or 1
AttributeError: 'str' object has no attribute 'weekday'
When I manually set byday=row.Day.byday to byday=MO the code runs without
problems, changing MO to TU, WE, FR, SA and SU also runs without problem.
What's wrong with row.Day.byday?
When I put {{=row.Day.byday}} in the view it displays: MO TU WE etc.
KInd regards,
Annet.