You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

43 lines
1.6 KiB

  1. # -*- coding: utf-8 -*-
  2. ##############################################################################
  3. #
  4. # Author: Damien Crier
  5. # Copyright 2015 Camptocamp SA
  6. #
  7. # This program is free software: you can redistribute it and/or modify
  8. # it under the terms of the GNU Affero General Public License as
  9. # published by the Free Software Foundation, either version 3 of the
  10. # License, or (at your option) any later version.
  11. #
  12. # This program is distributed in the hope that it will be useful,
  13. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  15. # GNU Affero General Public License for more details.
  16. #
  17. # You should have received a copy of the GNU Affero General Public License
  18. # along with this program. If not, see <http://www.gnu.org/licenses/>.
  19. #
  20. ##############################################################################
  21. import xmlrpclib
  22. import openerp
  23. class WarningOnSaveController(openerp.addons.web.http.Controller):
  24. _cp_path = "/web_warning_on_save"
  25. @openerp.addons.web.http.jsonrequest
  26. def check_warning_on_save(self, req, model, id):
  27. """
  28. try to call a method on the model given in parameter
  29. if method does not exist in the model, do nothing
  30. """
  31. m = req.session.model(model)
  32. try:
  33. return getattr(m, 'check_warning_on_save')(id, req.context)
  34. except xmlrpclib.Fault as e:
  35. if 'AttributeError' in e.faultString:
  36. return False
  37. else:
  38. raise openerp.osv.osv.except_osv('Error', e.faultCode)