Hi,
Thanks for your reply.
Here's some more code from the function:
if session.site:
print session.site
if not session.site or session.site[0].nodeID!=session.id:
session.site=db((db.NodeNav.nodeID==session.id)&(db.NodeNav.navID==db.Nav.id)&\
(db.Nav.navbarID==SITENAVBARID)).select(db.NodeNav.ALL,orderby=db.Nav.position)
if session.site:
print session.site[0]
# HERE I CONSTRUCT PART OF A MENU AND SOME UI COMPONENTS
if session.about:
print session.about
if not session.about or session.about[0].NodeNav['nodeID']!=session.id:
session.about=db((db.NodeNav.nodeID==session.id)&(db.NodeNav.navID==db.Nav.id)&\
(db.Nav.navbarID==ABOUTNAVBARID)).select(db.Nav.ALL,db.NodeNav.ALL,orderby=db.Nav.position)
if session.about:
print session.about[0].NodeNav
# HERE I CONSTRUCT PART OF A MENU AND SOME UI COMPONENTS
return dict()
The first time I run the code the following lines are written to the
console:
<Row {'frontend': True, 'navID': 1, 'update_record': <function <lambda> at
0x15e26c30>, 'createdOn': datetime.datetime(2012, 7, 27, 8, 26, 22),
'nodeID': 283, 'modifiedOn': datetime.datetime(2012, 7, 27, 8, 26, 22),
'id': 39, 'delete_record': <function <lambda> at 0x15e265b0>, 'backend':
True}>
<Row {'frontend': True, 'navID': 32, 'update_record': <function <lambda> at
0x15b26d70>, 'createdOn': datetime.datetime(2012, 7, 27, 10, 18, 17),
'nodeID': 283, 'modifiedOn': datetime.datetime(2012, 7, 27, 10, 18, 17),
'id': 76, 'delete_record': <function <lambda> at 0x15b26830>, 'backend':
True}>
The second time the code is run I get this:
[<Row {'frontend': True, 'navID': 1, 'modifiedOn': datetime.datetime(2012,
7, 27, 8, 26, 22), 'createdOn': datetime.datetime(2012, 7, 27, 8, 26, 22),
'backend': True, 'nodeID': 283, 'id': 39}>, <Row {'frontend': False,
'navID': 2, 'modifiedOn': datetime.datetime(2012, 7, 27, 8, 27, 8),
'createdOn': datetime.datetime(2012, 7, 27, 8, 27, 8), 'backend': True,
'nodeID': 283, 'id': 40}>, ...]
<Row {'frontend': True, 'navID': 1, 'update_record': <function <lambda> at
0x15c601f0>, 'createdOn': datetime.datetime(2012, 7, 27, 8, 26, 22),
'nodeID': 283, 'modifiedOn': datetime.datetime(2012, 7, 27, 8, 26, 22),
'id': 39, 'delete_record': <function <lambda> at 0x15c60f70>, 'backend':
True}>
[<Row {}>, <Row {}>, <Row {}>, <Row {}>, <Row {}>]
So, apparently the join:
session.about=db((db.NodeNav.nodeID==session.id)&(db.NodeNav.navID==db.Nav.id)&\
(db.Nav.navbarID==ABOUTNAVBARID)).select(db.Nav.ALL,db.NodeNav.ALL,orderby=db.Nav.position)
doesn't survive being stored in session?
I hope there is way to get passed this, while my whole application depends
on this function:
def index():
if request.args(0)!=session.id or not len(request.args):
redirect(URL('addressbook','router',args=request.args(0)))
else:
if session.site:
print session.site
if not session.site or session.site[0].nodeID!=session.id:
session.site_menu=session.herotext=session.hero=session.homepage=session.promounit=session.relatednames=\
session.socialmedia=session.googlemaps=session.theme=session.customtheme=[]
session.container=session.navbarfixedtop=False
session.site=db((db.NodeNav.nodeID==session.id)&(db.NodeNav.navID==db.Nav.id)&\
(db.Nav.navbarID==SITENAVBARID)).select(db.NodeNav.ALL,orderby=db.Nav.position)
if session.site:
print session.site[0]
session.site_menu=[['home',False,URL('site','index',args=session.id)]]
for s in session.site:
if s.navID==4 and s.frontend:
session.herotext=db(db.HeroUnitText.nodeID==session.id).select(db.HeroUnitText.ALL).first()
if s.navID==5 and s.frontend:
session.hero=db(db.HeroUnit.nodeID==session.id).select(db.HeroUnit.ALL).first()
if s.navID==6 and s.frontend:
session.homepage=db((db.AboutText.nodeID==session.id)&(db.AboutText.aboutID==HOMEPAGEID))\
.select(db.AboutText.ALL).first()
if not session.homepage:
response.flash='Geen home page tekst
beschikbaar'
alert='alert-info' # to set alert class for
flash
if s.navID==7 and s.frontend:
session.promounit=True
if s.navID==8 and s.frontend:
session.relatednames=db((db.NodeRelatedNames.nodeID==session.id)&\
(db.NodeRelatedNames.relatedID==db.Organization.nodeID)&(db.NodeRelatedNames.relatedID==db.Address.nodeID)&\
(db.Address.addrType==PHYSICALADDR))\
.select(db.Organization.nodeID,db.Organization.name,db.Address.ALL,orderby=db.Organization.name)
if s.navID==9 and s.frontend:
session.socialmedia=db((db.NodeSocialMedia.nodeID==session.id)&\
(db.NodeSocialMedia.socialMediaID==db.SocialMedia.id))\
.select(db.NodeSocialMedia.ALL,db.SocialMedia.ALL,orderby=db.SocialMedia.name)
if s.navID==10 and s.frontend:
session.googlemaps=True
if s.navID==12 and s.frontend:
session.theme=db((db.NodeTheme.nodeID==session.id)&\
(db.NodeTheme.themeID==db.Theme.id)).select(db.Theme.ALL).first()
# session because theme results in error in
layout.html
if session.theme:
session.container=session.theme.container
session.navbarfixedtop=session.theme.navbarFixedTop
if s.navID==13 and s.frontend:
session.customtheme=db(db.CustomTheme.nodeID==session.id).select(db.CustomTheme.ALL).first()
if session.customtheme:
session.container=session.customtheme.container
session.navbarfixedtop=session.customtheme.navbarFixedTop
if session.about:
print session.about
if not session.about or
session.about[0].NodeNav['nodeID']!=session.id:
session.about_dropdown=[]
session.about=db((db.NodeNav.nodeID==session.id)&(db.NodeNav.navID==db.Nav.id)&\
(db.Nav.navbarID==ABOUTNAVBARID)).select(db.Nav.ALL,db.NodeNav.ALL,orderby=db.Nav.position)
if session.about:
print session.about[0].NodeNav
for a in session.about:
if a.Nav.id==32 and a.NodeNav.frontend:
session.site_menu.append([T('about'),False,'#'])
else:
session.about_dropdown.append([T(a.Nav.name),False,URL(a.Nav.frontendcontroller,a.Nav.function,args=session.id)])
if not session.cal or session.cal[0].NodeNav['nodeID']!=session.id:
session.calendar_dropdown=session.hours=session.promohomepage=[]
session.tab_1=session.tab_2=session.tab_3=False
session.cal=db((db.NodeNav.nodeID==session.id)&(db.NodeNav.navID==db.Nav.id)&\
(db.Nav.navbarID==CALENDARNAVBARID)).select(db.Nav.ALL,db.NodeNav.ALL,orderby=db.Nav.position)
if session.cal:
for c in session.cal:
if c.Nav.id==41 and c.NodeNav.frontend:
session.site_menu.append([T('calendar'),False,'#'])
if c.Nav.id==42 and c.NodeNav.frontend:
calendarDropdown(c)
session.openinghours=True
weekday=request.now.weekday()+1
session.hours=db((db.OpeningHours.nodeID==session.id)&(db.OpeningHours.dayID==weekday))\
.select(db.OpeningHours.ALL,orderby=db.OpeningHours.startTime)
else:
response.flash_hours='Geen informatie over
openingstijden beschikbaar'
if c.Nav.id==43 and c.NodeNav.frontend:
calendarDropdown(c)
session.tab_2=True
if c.Nav.id==44 and c.NodeNav.frontend:
calendarDropdown(c)
session.tab_1=True
if c.Nav.id==45 and c.NodeNav.frontend:
calendarDropdown(c)
session.tab_3=True
if session.tab_1:
tab='tab-1'
elif session.tab_2:
tab='tab-2'
elif session.tab_3:
tab='tab-3'
else:
session.promohomepage=generatePromoUnit(HOMEPAGEID)
if not session.promohomepage:
response.flash_promounits='Geen promo units
beschikbaar'
response.view='site/index.html'
return dict(tab=tab)
Kind regards,
Annet
--