33 lines
		
	
	
		
			750 B
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			750 B
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
| # -*- coding: utf-8 -*-
 | |
| import logging
 | |
| import os
 | |
| 
 | |
| from lxml import etree
 | |
| 
 | |
| from odoo.loglevels import ustr
 | |
| from odoo.tools import misc, view_validation
 | |
| 
 | |
| _logger = logging.getLogger(__name__)
 | |
| 
 | |
| _cohort_validator = None
 | |
| 
 | |
| 
 | |
| @view_validation.validate('cohort')
 | |
| def schema_cohort(arch, **kwargs):
 | |
|     """ Check the cohort view against its schema
 | |
| 
 | |
|     :type arch: etree._Element
 | |
|     """
 | |
|     global _cohort_validator
 | |
| 
 | |
|     if _cohort_validator is None:
 | |
|         with misc.file_open(os.path.join('web_cohort', 'views', 'cohort.rng')) as f:
 | |
|             _cohort_validator = etree.RelaxNG(etree.parse(f))
 | |
| 
 | |
|     if _cohort_validator.validate(arch):
 | |
|         return True
 | |
| 
 | |
|     for error in _cohort_validator.error_log:
 | |
|         _logger.error(ustr(error))
 | |
|     return False
 |