we will fix the backward incompatibility asap. Not intentional. On Saturday, 6 April 2019 12:12:47 UTC-7, David Manns wrote: > > PS this is not backward compatible to 2.17.2 > > On Thursday, April 4, 2019 at 4:52:37 PM UTC-4, David Manns wrote: >> >> The table in question has a field: >> >> Field('Paiddate', 'date', requires = [IS_EMPTY_OR(IS_DATE()), >> IS_EMPTY_OR(IS_MEMBERSHIP_YEAR_END())]), >> >> The custom validator is: >> >> class IS_MEMBERSHIP_YEAR_END(object): >> def __init__(self, error_message='Not a membership year end'): >> self.error_message = error_message >> def __call__(self, value): >> yearend = datetime.date(2018,9,30) >> if value.month==yearend.month and value.day==yearend.day: >> return (value, None) >> return (value, self.error_message) >> >> This works in 2.17.2 >> >> I updated my test environment to 2.18.4 and it fails. >> >> On the console I see: >> >> web2py Web Framework >> Created by Massimo Di Pierro, Copyright 2007-2019 >> Version 2.18.4-stable+timestamp.2019.03.13.05.27.54 >> Database drivers available: sqlite3, imaplib, pyodbc, pymysql >> please visit: >> ('\t', 'http://127.0.0.1:8000/') >> starting browser... >> Traceback (most recent call last): >> File "C:\Users\David\Google Drive\Oxcamne Archive\Web >> Site\OxCamNE.2.1\gluon\html.py", line 1890, in _validate >> (value, errors) = validator(value) >> File "C:\Users\David\Google Drive\Oxcamne Archive\Web >> Site\OxCamNE.2.1\gluon\packages\dal\pydal\validators.py", line 144, in >> __call__ >> return self.validate(value), None >> File "C:\Users\David\Google Drive\Oxcamne Archive\Web >> Site\OxCamNE.2.1\gluon\packages\dal\pydal\validators.py", line 2754, in >> validate >> return self.other.validate(value) >> AttributeError: 'IS_MEMBERSHIP_YEAR_END' object has no attribute >> 'validate' >> >> The ticket shows: >> >> Error ticket for "init" Ticket ID >> >> 127.0.0.1.2019-04-04.16-41-08.0dce185d-d8d2-4d36-9e47-8c82bc1d54f5 >> <type 'exceptions.Exception'> Validation error, field:Paiddate >> <pydal.validators.IS_EMPTY_OR object at 0x0000000004878048> Version >> web2py™ Version 2.18.4-stable+timestamp.2019.03.13.05.27.54 >> Python Python 2.7.14: C:\Python27\python.exe (prefix: C:\Python27) >> Traceback >> >> 1. >> 2. >> 3. >> 4. >> 5. >> 6. >> 7. >> 8. >> 9. >> 10. >> 11. >> 12. >> 13. >> 14. >> 15. >> 16. >> 17. >> 18. >> 19. >> 20. >> 21. >> 22. >> 23. >> 24. >> 25. >> 26. >> 27. >> 28. >> 29. >> 30. >> >> Traceback (most recent call last): >> File "C:\Users\David\Google Drive\Oxcamne Archive\Web >> Site\OxCamNE.2.1\gluon\restricted.py", line 219, in restricted >> exec(ccode, environment) >> File "C:\Users\David\Google Drive\Oxcamne Archive\Web >> Site\OxCamNE.2.1\applications\init\controllers/default.py", line 1747, in >> <module> >> File "C:\Users\David\Google Drive\Oxcamne Archive\Web >> Site\OxCamNE.2.1\gluon\globals.py", line 421, in <lambda> >> self._caller = lambda f: f() >> File "C:\Users\David\Google Drive\Oxcamne Archive\Web >> Site\OxCamNE.2.1\applications\init\models\db.py", line 109, in wrapped_f >> return f(*args) >> File "C:\Users\David\Google Drive\Oxcamne Archive\Web >> Site\OxCamNE.2.1\applications\init\controllers/default.py", line 214, in >> memberform >> deletable = dltbl, onvalidation=setmodified, onaccept=modmember, >> ondelete=delmember) >> File "C:\Users\David\Google Drive\Oxcamne Archive\Web >> Site\OxCamNE.2.1\gluon\tools.py", line 4322, in update >> detect_record_change=self.settings.detect_record_change): >> File "C:\Users\David\Google Drive\Oxcamne Archive\Web >> Site\OxCamNE.2.1\gluon\sqlhtml.py", line 1758, in accepts >> **kwargs >> File "C:\Users\David\Google Drive\Oxcamne Archive\Web >> Site\OxCamNE.2.1\gluon\html.py", line 2149, in accepts >> status = self._traverse(status, hideerror) >> File "C:\Users\David\Google Drive\Oxcamne Archive\Web >> Site\OxCamNE.2.1\gluon\html.py", line 910, in _traverse >> newstatus = c._traverse(status, hideerror) and newstatus >> File "C:\Users\David\Google Drive\Oxcamne Archive\Web >> Site\OxCamNE.2.1\gluon\html.py", line 910, in _traverse >> newstatus = c._traverse(status, hideerror) and newstatus >> File "C:\Users\David\Google Drive\Oxcamne Archive\Web >> Site\OxCamNE.2.1\gluon\html.py", line 910, in _traverse >> newstatus = c._traverse(status, hideerror) and newstatus >> File "C:\Users\David\Google Drive\Oxcamne Archive\Web >> Site\OxCamNE.2.1\gluon\html.py", line 910, in _traverse >> newstatus = c._traverse(status, hideerror) and newstatus >> File "C:\Users\David\Google Drive\Oxcamne Archive\Web >> Site\OxCamNE.2.1\gluon\html.py", line 917, in _traverse >> newstatus = self._validate() >> File "C:\Users\David\Google Drive\Oxcamne Archive\Web >> Site\OxCamNE.2.1\gluon\html.py", line 1895, in _validate >> raise Exception(msg) >> Exception: Validation error, field:Paiddate <pydal.validators.IS_EMPTY_OR >> object at 0x0000000004878048> >> >>
-- 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.