def get_markings(obj, selectors=None, inherited=False, descendants=False): """ Get all markings associated to the field(s). Args: obj: An SDO or SRO object. selectors: string or list of selectors strings relative to the SDO or SRO in which the properties appear. inherited: If True, include object level markings and granular markings inherited relative to the properties. descendants: If True, include granular markings applied to any children relative to the properties. Returns: list: Marking identifiers that matched the selectors expression. Note: If ``selectors`` is None, operation will be performed only on object level markings. """ if selectors is None: return object_markings.get_markings(obj) results = granular_markings.get_markings(obj, selectors, inherited, descendants) if inherited: results.extend(object_markings.get_markings(obj)) return list(set(results))
def is_marked(obj, marking=None, selectors=None, inherited=False, descendants=False): """ Check if field(s) is marked by any marking or by specific marking(s). Args: obj: An SDO or SRO object. marking: identifier or list of marking identifiers that apply to the properties selected by `selectors`. selectors: string or list of selectors strings relative to the SDO or SRO in which the field(s) appear(s). inherited (bool): If True, include object level markings and granular markings inherited to determine if the properties is/are marked. descendants (bool): If True, include granular markings applied to any children of the given selector to determine if the properties is/are marked. Returns: bool: True if ``selectors`` is found on internal SDO or SRO collection. False otherwise. Note: When a list of marking identifiers is provided, if ANY of the provided marking identifiers match, True is returned. If ``selectors`` is None, operation will be performed only on object level markings. """ if selectors is None: return object_markings.is_marked(obj, marking) result = granular_markings.is_marked( obj, marking, selectors, inherited, descendants, ) if inherited: granular_marks = granular_markings.get_markings(obj, selectors) object_marks = object_markings.get_markings(obj) if granular_marks: result = granular_markings.is_marked( obj, granular_marks, selectors, inherited, descendants, ) result = result or object_markings.is_marked(obj, object_marks) return result