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