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.
>
>
>

Reply via email to