without understanding much about how it works I put following (trying to
correct what I believed to be typos) to my model:

class LESS_THAN:
    def __init__(self,db,query,field,error_message='Na sklade nie je
požadované množstvo'):
          self.db,self.query,self.field=db,query,field
          self.error_message=error_message
    def __call__(self,value):
          try:
               value=inv(value)
               records=self.db(self.query).select(limitby=(0,1))
               if value<0 or value>=records[0][self.field]: raise
               return (value,None)
          except:
               return (value,self.error_message)

db.invoice_item.count.requires=LESS_THAN(db,db.ware.id==request.vars.id,'count')

It raises error in every case. What could be the problem? I would be
very thankful if somebody could explain "try" section to me.

Julius


On So, 2009-01-10 at 07:17 -0800, mdipierro wrote:
> class LESS_THAN
>     def __init__(self,db,query,field,error_message='...'):
>           self.db,self.query,self.field=db,query,field)
>           self.error_message=error_message
>     def __call__(self,value):
>           try:
>                value=inv(value)
>                records=self.db(self.query).select(limitby=(0,1))
>                if value<0 or value>=records[0][self.field]: raise
>                return (value,None)
>           except:
>                return (value,self.error_message)
> 
> db.invoice_item.count.requires=IS_IN_DB
> (db,db.ware.id==request.vars.id,'count')
> 
> On Jan 10, 5:28 am, Julius Minka <[email protected]> wrote:
> > db.define_table('invoice_item',
> >                 SQLField('invoice_nr',required=True),
> >                 SQLField('ware',db.ware,required=True),
> >                 SQLField('discount','double',required=True),
> >                 SQLField('count','double',required=True))
> > db.invoice_item.ware.requires=IS_IN_DB(db,'ware.id','%(artnr)s%(size)s')
> >
> > How to validate "count" field to be less or equal than db.ware.count in
> > corresponding record of table db.ware based on choice made by
> > invoice_item.ware?
> > To tell it simply, in human words: how to not sell more items than I
> > currently have?
> >
> > I saw some validation examples in archives using IS_EXPR or custom
> > validators, but in those all relationships between fields stayed inside
> > the same table.
> >
> > Julius
> > 


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py Web Framework" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to