Is byday just a string? If so, how could it have a "weekday" and an "n"
attribute?
Anthony
On Thursday, April 26, 2012 3:59:20 AM UTC-4, Annet wrote:
>
> 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.
>
>
>