The virtualfields class is not a common python class?

On jún. 28, 09:35, szimszon <szims...@gmail.com> wrote:
> That's weired why is this working:
>
> class web_sites_extra():
>   def servername( self ):
>     return self.web_sites.txt.split()
>
> and this not:
>
> class web_sites_extra():
>   def servername( self ):
>     r=self.web_sites.txt.split()
>     return self.web_sites.txt.split()
>
> or this:
>
> class web_sites_extra():
>   def servername( self ):
>     r="something"
>     return self.web_sites.txt.split()
>
> On jún. 28, 09:13, szimszon <szims...@gmail.com> wrote:
>
> > After the
>
> >http://www.thadeusb.com/weblog/2009/12/31/web2py_virtualfields_as_an_...
>
> > webpage I made something like:
> > --- cut ---
> > db.define_table( 'web_sites',
> >                                                                 Field( 
> > 'web_id', db.web,
> >                                                                             
> >             label = T( 'Web config' ),
> >                                                                             
> >             requires = IS_IN_DB( db, 'web.id', '%(name)s' ) ),
> >                                                                 Field( 
> > 'name', 'string',
> >                                                                             
> >             label = T( 'Name' ),
> >                                                                             
> >             requires = [IS_NOT_EMPTY()] ),
> >                                                                 Field( 
> > 'txt', 'text',
> >                                                                             
> >             label = T( 'Config file' ),
> >                                                                             
> >             requires = [IS_NOT_EMPTY()] ),
> >                                                                 Field( 
> > 'weight', 'integer',
> >                                                                             
> >             label = T( 'Weight' ),
> >                                                                             
> >             requires = [IS_NOT_EMPTY()] ),
> >                                                                 Field( 
> > 'active', 'boolean',
> >                                                                             
> >             label = T( 'Active' ),
> >                                                                             
> >             default = True,
> >                                                                             
> >             ),
> >                                                                 Field( 
> > 'modified', 'boolean',
> >                                                                             
> >             label = T( 'Modified' ),
> >                                                                             
> >             default = True,
> >                                                                             
> >             writable = False,
> >                                                                             
> >             readable = False,
> >                                                                             
> >             ),
> >  )
>
> > # computing ServerNames and ServerAliases
> > ##########################################
> > class web_sites_extra():
> >         def servername( self ):
> >                 def lzy(  ):
> >                         x = 'sfjha'
> >                         return x
> >         return lzy
>
> > db.web_sites.virtualfields.append( web_sites_extra() )
> > --- cut ---
>
> > In the view:
> > --- cut ---
> > {{=selected_rows[0].servername()}}
>
> > But I got:
>
> >   File "gluon/sql.py", line 665, in __getattr__
> >     return dict.__getitem__(self,key)
> > KeyError: 'servername'
>
> > If I only change:
>
> > class web_sites_extra():
> >         def servername( self ):
> >                 def lzy(  ):
> >                         x = 'sfjha'
> >                         return x
> >         return lzy
>
> > to:
>
> > class web_sites_extra():
> >         def lzy( self ):
> >                         x = 'sfjha'
> >                         return x
> >         def servername( self ):
> >                 return self.lzy
>
> > it works.

Reply via email to