mirror of
https://github.com/pre-commit/pre-commit-hooks.git
synced 2026-04-06 20:16:53 +00:00
Added loaderon-hooks logic
This commit is contained in:
parent
0b70e285e3
commit
0a66e6635d
23 changed files with 612 additions and 0 deletions
|
|
@ -0,0 +1,67 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import os
|
||||
import re
|
||||
|
||||
from pre_commit_logic.util.template_methods.file_bunches_lines_checker_template_method import \
|
||||
FileBunchesLinesCheckerTemplateMethod
|
||||
|
||||
|
||||
class ModelNameAttributeChecker(FileBunchesLinesCheckerTemplateMethod):
|
||||
def __init__(self, argv):
|
||||
super(ModelNameAttributeChecker, self).__init__(argv)
|
||||
self.__module_name = ''
|
||||
name_attribute_regex = r'^(\t| )*_name = .+'
|
||||
self.__name_pattern = re.compile(name_attribute_regex)
|
||||
inherit_attribute_regex = r'^(\t| )*_inherit = .+'
|
||||
self.__inherit_pattern = re.compile(inherit_attribute_regex)
|
||||
self.__name_line = ''
|
||||
self.__inherit_line = ''
|
||||
|
||||
def _get_regexp(self):
|
||||
return r'^(\t| )*class.+'
|
||||
|
||||
def _check_file(self):
|
||||
self.__module_name = self._set_module_name()
|
||||
super(ModelNameAttributeChecker, self)._check_file()
|
||||
|
||||
def _set_module_name(self):
|
||||
models_folder_directory_path = os.path.dirname(self.filename)
|
||||
module_directory_path = os.path.dirname(models_folder_directory_path)
|
||||
return os.path.basename(module_directory_path)
|
||||
|
||||
def _check_bunch(self):
|
||||
super(ModelNameAttributeChecker, self)._check_bunch()
|
||||
if self.__name_line and not self.__has_multiple_inheritance():
|
||||
self.__check_name()
|
||||
|
||||
def _check_line(self):
|
||||
"""
|
||||
We will use this inherited method (which runs through all file lines) in order to gather lines that are required
|
||||
to perform the lines bunch check.
|
||||
"""
|
||||
if self.__name_pattern.match(self._file_line):
|
||||
self.__name_line = self._file_line.strip('_name = ')
|
||||
if self.__inherit_pattern.match(self._file_line):
|
||||
self.__inherit_line = self._file_line.strip('_inherit = ')
|
||||
|
||||
def __has_multiple_inheritance(self):
|
||||
return '[' in self.__inherit_line and ',' in self.__inherit_line
|
||||
|
||||
def __check_name(self):
|
||||
correct_name_regex = r'[\'\"]' + self.__module_name + r'\..+[\'\"]'
|
||||
correct_name_pattern = re.compile(correct_name_regex)
|
||||
if not correct_name_pattern.match(self.__name_line):
|
||||
self.inform_check_failure(
|
||||
'El nombre de modelo {} no incluye como prefijo el nombre del módulo {}.'.format(
|
||||
self.__name_line.strip('_name = '),
|
||||
self.__module_name
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
def main(argv=None):
|
||||
return ModelNameAttributeChecker(argv).run()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
exit(main())
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
|
||||
from pre_commit_logic.util.template_methods.files_bunches_checker_template_method import \
|
||||
FileBunchesCheckerTemplateMethod
|
||||
|
||||
|
||||
class ViewFieldsOrderChecker(FileBunchesCheckerTemplateMethod):
|
||||
def __init__(self, argv):
|
||||
super(ViewFieldsOrderChecker, self).__init__(argv)
|
||||
name_line_regex = r'^(\t| )*<field name="name">.+<\/field>(\t| )*'
|
||||
self._name_line_pattern = re.compile(name_line_regex)
|
||||
model_line_regex = r'^(\t| )*<field name="model">.+<\/field>(\t| )*'
|
||||
self._model_line_pattern = re.compile(model_line_regex)
|
||||
self._record_line = None
|
||||
self._name_line = None
|
||||
self._model_line = None
|
||||
|
||||
def _get_regexp(self):
|
||||
return r'^(\t| )*<record id=.+ model="ir.ui.view">(\t| )*'
|
||||
|
||||
def _check_bunch(self):
|
||||
self._record_line = self._bunch_of_lines[0].strip()
|
||||
self._name_line = self._bunch_of_lines[1]
|
||||
self._model_line = self._bunch_of_lines[2]
|
||||
self._perform_check()
|
||||
|
||||
def _perform_check(self):
|
||||
if not self._name_line_pattern.match(self._name_line):
|
||||
self.inform_check_failure("El primer campo (field) declarado en un record de vista debe ser 'name'. "
|
||||
"Vista: {}".format(self._record_line))
|
||||
if not self._model_line_pattern.match(self._model_line):
|
||||
self.inform_check_failure("El segundo campo (field) declarado en un record de vista debe ser 'model'. "
|
||||
"Vista: {}".format(self._record_line))
|
||||
|
||||
|
||||
def main(argv=None):
|
||||
return ViewFieldsOrderChecker(argv).run()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
exit(main())
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
|
||||
from pre_commit_logic.odoo_specific_hooks.check_view_fields_order import ViewFieldsOrderChecker
|
||||
|
||||
|
||||
class ViewNameChecker(ViewFieldsOrderChecker):
|
||||
def __init__(self, argv):
|
||||
super(ViewNameChecker, self).__init__(argv)
|
||||
self._name_line = None
|
||||
self._model_line = None
|
||||
|
||||
def _perform_check(self):
|
||||
self.__make_required_strips()
|
||||
correct_name_regex = r'<field name="name">' + self._model_line + \
|
||||
r'\.(search|form|tree|filter)(\.inherit)?<\/field>'
|
||||
correct_name_pattern = re.compile(correct_name_regex)
|
||||
if not correct_name_pattern.match(self._name_line):
|
||||
strip_name_line = self._name_line.strip()
|
||||
strip_name_line = strip_name_line.strip('<field name="name">')
|
||||
strip_name_line = strip_name_line.strip('</field>')
|
||||
self.inform_check_failure("El nombre de la vista {} no cumple el formato {}."
|
||||
.format(strip_name_line, correct_name_regex))
|
||||
|
||||
def __make_required_strips(self):
|
||||
self._model_line = self._model_line.strip()
|
||||
self._model_line = self._model_line[20:-8]
|
||||
self._name_line = self._name_line.strip()
|
||||
|
||||
|
||||
def main(argv=None):
|
||||
return ViewNameChecker(argv).run()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
exit(main())
|
||||
Loading…
Add table
Add a link
Reference in a new issue