@@ 15-41 (lines=27) @@ | ||
12 | class ItemValidator: |
|
13 | """Class for validation of Item objects.""" |
|
14 | ||
15 | def validate(self, item, skip=None, document_hook=None, item_hook=None): |
|
16 | """Check the object for validity. |
|
17 | ||
18 | :param item: item to validate |
|
19 | :param skip: list of document prefixes to skip |
|
20 | :param document_hook: function to call for custom document |
|
21 | validation |
|
22 | :param item_hook: function to call for custom item validation |
|
23 | ||
24 | :return: indication that the object is valid |
|
25 | ||
26 | """ |
|
27 | valid = True |
|
28 | # Display all issues |
|
29 | for issue in self.get_issues( |
|
30 | item, skip=skip, document_hook=document_hook, item_hook=item_hook |
|
31 | ): |
|
32 | if isinstance(issue, DoorstopInfo) and not settings.WARN_ALL: |
|
33 | log.info(issue) |
|
34 | elif isinstance(issue, DoorstopWarning) and not settings.ERROR_ALL: |
|
35 | log.warning(issue) |
|
36 | else: |
|
37 | assert isinstance(issue, DoorstopError) |
|
38 | log.error(issue) |
|
39 | valid = False |
|
40 | # Return the result |
|
41 | return valid |
|
42 | ||
43 | def get_issues( |
|
44 | self, item, skip=None, document_hook=None, item_hook=None |
@@ 125-150 (lines=26) @@ | ||
122 | class BaseValidatable(metaclass=abc.ABCMeta): |
|
123 | """Abstract Base Class for objects that can be validated.""" |
|
124 | ||
125 | def validate(self, skip=None, document_hook=None, item_hook=None): |
|
126 | """Check the object for validity. |
|
127 | ||
128 | :param skip: list of document prefixes to skip |
|
129 | :param document_hook: function to call for custom document |
|
130 | validation |
|
131 | :param item_hook: function to call for custom item validation |
|
132 | ||
133 | :return: indication that the object is valid |
|
134 | ||
135 | """ |
|
136 | valid = True |
|
137 | # Display all issues |
|
138 | for issue in self.get_issues( |
|
139 | skip=skip, document_hook=document_hook, item_hook=item_hook |
|
140 | ): |
|
141 | if isinstance(issue, DoorstopInfo) and not settings.WARN_ALL: |
|
142 | log.info(issue) |
|
143 | elif isinstance(issue, DoorstopWarning) and not settings.ERROR_ALL: |
|
144 | log.warning(issue) |
|
145 | else: |
|
146 | assert isinstance(issue, DoorstopError) |
|
147 | log.error(issue) |
|
148 | valid = False |
|
149 | # Return the result |
|
150 | return valid |
|
151 | ||
152 | @abc.abstractmethod |
|
153 | def get_issues(self, skip=None, document_hook=None, item_hook=None): |