I think you want this:

class CustomWIdget():

   def __init__(self, parameters=None):
        pass

   def  html(self):
       return DIV(self.field.name)
   
   def __call__(self, field, value):
       self.field = field
       self.value = value
       return self.html() #this doesnt return html markup, escaped text 
instead

db.define_table("table1",
    Field("myField", "string", widget=CustomWidget() ) 
)


On Friday, 25 April 2014 22:40:57 UTC-5, aleon...@gmail.com wrote:
>
>
> Hi, Im having troubles defining widgets as classes. When widgets are 
> defined as functions it all works well, the function returns a html 
> object(DIV, UL, ...) and the view renders the markup correctly, but im 
> trying to define the widget as a class to handle static files requirements 
> for that widget.
>
> I have tried the __str__ method to render the widget but the view(or 
> SQLFORM) renders as text, not html markup.
>
> Here is some example code:
>
> #Widget as a function
> def CustomWidget(field, value):
>     return DIV(field.name, _class="myClass")
>
> #Widget as a class
> class CustomWIdget():
>
>    def __init__(self, field, value):
>        self.field = field
>        self.value = value
>    
>    def  html(self):
>        return DIV(self.field.name)
>    
>    def __str__(self):
>        return str(self.html()) #this doesnt return html markup, escaped 
> text instead
>
> db.define_table("table1",
>     Field("myField", "string", widget=CustomWidget) 
> )
>
> Thanks in advance.
>
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to