IS_IN_SET Conditional produces no Dropdown

36 views
Skip to first unread message

Fabian

unread,
Feb 10, 2020, 12:58:25 AM2/10/20
to web2py-users
Hello Guys,

I made a Validator which should check if the value is in the list, but only if an expression is True.
It works fine BUT it produces no dropdown. Hope you can help me:

Class:

class IS_IN_SET_CONDITIONAL():
   
def __init__(self, liste, expression, error_message="Value not allowed"):
       
self.expression = expression
       
self.error_message = error_message
       
self.liste = liste

   
def __call__(self, value):
       
if self.expression:
             
if value in liste:          
                   
return (value,None)
             
else:
                   
return(value, self.error_message)

       
else:
           
return (value, None)


Field:

Field("Letter", label="Letter", requires=IS_IN_SET_CONDITIONAL(['A', 'B', 'C'], Expression)),


Massimo Di Pierro

unread,
Feb 10, 2020, 11:18:38 AM2/10/20
to web2py-users
You need to 1) extend Validator and 2) provide an options method. This should do:


from pydal.validators import Validator

class IS_IN_SET_CONDITIONAL(Validator):

   
def __init__(self, liste, expression, error_message="Value not allowed"):
       
self.expression = expression
       
self.error_message = error_message
       
self.liste = liste

   
def __call__(self, value):
       
if self.expression:

             
if value in self.liste:          
                   
return (value,None)

             
else:
                   
return(value, self.error_message)

       
else:
           
return (value, None)
    def options(self):
        return self.liste

Fabian

unread,
Feb 11, 2020, 5:16:45 AM2/11/20
to web2py-users
Thanks for your answer,

I've tried but i get an error:

Reply all
Reply to author
Forward
0 new messages