Re: [web2py] Menu based on Boolean table fields.

2011-03-21 Thread Martín Mulone
Take a look to this code.

#list slices who own
def my_slices():

user_id = session.auth.user.id
slices = db(db.slices.user_id == user_id).select(db.slices.id,
 db.slices.title)
myslices = [
(T('Add slice'), False, A(T('Add slice'), \
  _title=T("Upload a slice"), \
  _href=URL('default','upload')))

]
if slices:
for slice in slices:
myslices.append(('%s'%slice.title, False, A('%s'%slice.title, \
  _title=T("Edit a slice"), \
  _href=URL('default','edit',args=[
slice.id]


return myslices


response.menu = [
(T('My slices'), False, A(T('My slices'),_href='javascript: void(0);'),
 my_slices())
]

2011/3/21 annet 

> In db.py I defined the following table:
>
> db.define_table('cardfunction',
>
> Field('company_id',db.company,default='',notnull=True,unique=True),
>Field('home',type='boolean',default=True),
>Field('logo',type='boolean',default=False),
>Field('tagline',type='boolean',default=False),
>Field('image',type='boolean',default=False),
>Field('css',type='boolean',default=False),
>Field('customcss',type='boolean',default=False),
>Field('keywords',type='boolean',default=False),
>migrate=False)
>
> Based on this table I would like to generate a menu. In a controller I
> got the following code:
>
> if not session.id or session.id!=auth.user.bedrijf_id:
>session.id=auth.user.bedrijf_id
>
> session.row=db(db.cardfunction.bedrijf_id==session.id
> ).select(db.cardfunction.ALL)
>session.card_menu=[
> ['Home',request.function=='index',URL(r=request,f='index')],
>['Logo',request.function=='logo',URL(r=request,f='logo')],
>...
>
> ['Keywords',request.function=='keywords',URL(r=request,f='keywords')]]
>
>
> In the view I would like to generate a menu, in which, if the
> session.row.field value is true a link is being rendered and if
> session.row.field is false a  element is being rendered. What
> I had in mind:
>
> 
>  {{for _name,_active,_link in session.card_menu:}}
>{{if session.row.home:}}
>  
> href="{{=_link}}">{{=_name}}
>  
>{{else:}}
>  
>{{=_name}}
>  
>{{pass}}
>  
>  {{pass}}
> 
>
> ... doesn't work. Besides, if session.row.home: seven times, once for
> every field isn't a very elegant solution either. I hope one of you
> can provide me with a solution.
>
> Kind regards,
>
> Annet.




-- 
Pablo Martín Mulone (mar...@tecnodoc.com.ar)
http://www.tecnodoc.com.ar/

My blog: http://martin.tecnodoc.com.ar
Expert4Solution Profile:
http://www.experts4solutions.com/e4s/default/expert/6


[web2py] Menu based on Boolean table fields.

2011-03-21 Thread annet
In db.py I defined the following table:

db.define_table('cardfunction',

Field('company_id',db.company,default='',notnull=True,unique=True),
Field('home',type='boolean',default=True),
Field('logo',type='boolean',default=False),
Field('tagline',type='boolean',default=False),
Field('image',type='boolean',default=False),
Field('css',type='boolean',default=False),
Field('customcss',type='boolean',default=False),
Field('keywords',type='boolean',default=False),
migrate=False)

Based on this table I would like to generate a menu. In a controller I
got the following code:

if not session.id or session.id!=auth.user.bedrijf_id:
session.id=auth.user.bedrijf_id
 
session.row=db(db.cardfunction.bedrijf_id==session.id).select(db.cardfunction.ALL)
session.card_menu=[
['Home',request.function=='index',URL(r=request,f='index')],
['Logo',request.function=='logo',URL(r=request,f='logo')],
...
 
['Keywords',request.function=='keywords',URL(r=request,f='keywords')]]


In the view I would like to generate a menu, in which, if the
session.row.field value is true a link is being rendered and if
session.row.field is false a  element is being rendered. What
I had in mind:


  {{for _name,_active,_link in session.card_menu:}}
{{if session.row.home:}}
  
{{=_name}}
  
{{else:}}
  
{{=_name}}
  
{{pass}}
 
  {{pass}}


... doesn't work. Besides, if session.row.home: seven times, once for
every field isn't a very elegant solution either. I hope one of you
can provide me with a solution.

Kind regards,

Annet.


[web2py] Menu based on Boolean table fields.

2011-03-21 Thread annet
In db.py I defined the following table:

db.define_table('cardfunction',
 
Field('company_id',db.company,default='',notnull=True,unique=True),
Field('home',type='boolean',default=True),
Field('logo',type='boolean',default=False),
Field('tagline',type='boolean',default=False),
Field('image',type='boolean',default=False),
Field('css',type='boolean',default=False),
Field('customcss',type='boolean',default=False),
Field('keywords',type='boolean',default=False),
migrate=False)


Based on this table I would like to generate a menu. In a controller I
got the following code:

if not session.id or session.id!=auth.user.bedrijf_id:
session.id=auth.user.bedrijf_id
 
session.row=db(db.cardfunction.bedrijf_id==session.id).select(db.cardfunction.ALL)
session.card_menu=[
['Home',...],
['Logo',...],
...
['Keywords',...]]


In a view I got the following code to generate the menu:

{{if session.card_menu:}}
  

  {{for _name,_active,_link in session.card_menu:}}
{{if session.row.home:}}
  
{{=_name}}
  
{{else:}}
  
{{=_name}}
  
{{pass}}
 {{if session.row.logo:}}
  
{{=_name}}
  
{{else:}}
  
{{=_name}}
  
{{pass}}
.
  {{pass}}

   
{{pass}}


I wonder whether there is a more efficient way to generate the menu,
e.g. using an index instead of the field names: session.row.field_i
where i ranges from 0 to 7.


Kind regards,

Annet.