[web2py] Re: Custom validator - pass record id to validator for update operations

2014-12-02 Thread clara
Hello Andrew,

It does make sense!

I was actually passing one of the record fields to my validator instead of 
the record ID I could just have passed the id and then have access to 
any field in the record.

Thanks a lot !

Clara

El lunes, 1 de diciembre de 2014 12:20:11 UTC-3, Andrew Buchan escribió:

 Hi Clara,

 I think (someone please correct me if I'm wrong -- and have a look at my 
 other question posted just after this :D) that the validator has no access 
 to the record.

 But because you can set the validator on a field at any time, one solution 
 is to chang your validator class so it knows about the record id, and only 
 assign the validator to the table's field just before you need to use it in 
 a form, but after you have obtained the record id.

 class MY_VALIDATOR(IS_IN_SET):
 
 def __init__(self, record_id=None):
 self.record_id = record_id
 #whatever your validator does

 def __call__(self, value):
 if value == self.self.record_id:
  #whatever

 def some_controller_url():
 record_id = request.vars.record_id
 #Override the validator set in models (if any) with this validator 
 which does have knowledge of the record
 db.my_table._my_field.requires = MY_VALIDATOR(record=record_id)
 form = SQLFORM( db.my_table, record=record_id)
 ...#Table will be built with a validator which knows about your record 
 :)
  

 Does this make sense?


 On Monday, December 1, 2014 2:49:45 PM UTC, clara wrote:

 Hello all,

 I am developing a web2py application and I am writing the logic to 
 control stock of certain items. To that end, I wrote a custom validator 
 which is working fine when creating new sale items. Now the problem 
 arises when updating these sale items, because I would need to know the 
 actual record being updated to adjust the logic in this cases.
  
 I could get this information through ._before_update method, but how 
 would I pass it to the validator ?

 I am not sure if this is the best way to do it. I will appreciate any 
 help on this matter!

 Best regards,

 Clara




-- 
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.


[web2py] Re: Custom validator - pass record id to validator for update operations

2014-12-01 Thread Andrew Buchan
Hi Clara,

I think (someone please correct me if I'm wrong -- and have a look at my 
other question posted just after this :D) that the validator has no access 
to the record.

But because you can set the validator on a field at any time, one solution 
is to chang your validator class so it knows about the record id, and only 
assign the validator to the table's field just before you need to use it in 
a form, but after you have obtained the record id.

class MY_VALIDATOR(IS_IN_SET):

def __init__(self, record_id=None):
self.record_id = record_id
#whatever your validator does

def __call__(self, value):
if value == self.self.record_id:
 #whatever

def some_controller_url():
record_id = request.vars.record_id
#Override the validator set in models (if any) with this validator 
which does have knowledge of the record
db.my_table._my_field.requires = MY_VALIDATOR(record=record_id)
form = SQLFORM( db.my_table, record=record_id)
...#Table will be built with a validator which knows about your record 
:)
 

Does this make sense?


On Monday, December 1, 2014 2:49:45 PM UTC, clara wrote:

 Hello all,

 I am developing a web2py application and I am writing the logic to control 
 stock of certain items. To that end, I wrote a custom validator which is 
 working fine when creating new sale items. Now the problem arises when 
 updating these sale items, because I would need to know the actual record 
 being updated to adjust the logic in this cases.
  
 I could get this information through ._before_update method, but how would 
 I pass it to the validator ?

 I am not sure if this is the best way to do it. I will appreciate any help 
 on this matter!

 Best regards,

 Clara




-- 
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.