Source code for hestia_earth.validation.validators.management

from hestia_earth.schema import TermTermType, SiteSiteType
from hestia_earth.utils.model import filter_list_term_type

from hestia_earth.validation.utils import _filter_list_errors

_SITE_TYPE_TO_TERM_TYPES = {
    SiteSiteType.CROPLAND.value: [
        TermTermType.CROPRESIDUEMANAGEMENT,
        TermTermType.LANDUSEMANAGEMENT,
        TermTermType.TILLAGE,
        TermTermType.WATERREGIME
    ],
    SiteSiteType.PERMANENT_PASTURE.value: [
        TermTermType.LANDUSEMANAGEMENT,
        TermTermType.WATERREGIME
    ]
}


[docs]def validate_has_termType(site: dict, term_type: TermTermType): blank_nodes = filter_list_term_type(site.get('management', []), term_type) return len(blank_nodes) > 0 or { 'level': 'warning', 'dataPath': '.management', 'message': 'should contain at least one management node', 'params': { 'termType': term_type.value } }
[docs]def validate_has_termTypes(site: dict): blank_nodes = site.get('management', []) term_types = _SITE_TYPE_TO_TERM_TYPES.get(site.get('siteType'), []) return len(term_types) == 0 or len(blank_nodes) == 0 or _filter_list_errors([ validate_has_termType(site, term_type) for term_type in term_types ])
[docs]def validate_exists(site: dict): blank_nodes = site.get('management', []) term_types = _SITE_TYPE_TO_TERM_TYPES.get(site.get('siteType'), []) return len(term_types) == 0 or len(blank_nodes) > 0 or { 'level': 'warning', 'dataPath': '.management', 'message': 'should contain at least one management node' }