Skip to content

Commit

Permalink
Resolves kiwitcms#736. Add a lint checker class to check for use of d…
Browse files Browse the repository at this point in the history
…b_column argument in model field definition.
  • Loading branch information
brymut committed Sep 1, 2020
1 parent 06ff861 commit 4dc6374
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 0 deletions.
2 changes: 2 additions & 0 deletions kiwi_lint/__init__.py
Expand Up @@ -21,6 +21,7 @@
from .views import ClassBasedViewChecker
from .datetime import DatetimeChecker
from .forms import FormFieldChecker, ModelFormChecker
from .db_column import DbColumnChecker


def register(linter):
Expand All @@ -43,3 +44,4 @@ def register(linter):
linter.register_checker(DatetimeChecker(linter))
linter.register_checker(FormFieldChecker(linter))
linter.register_checker(ModelFormChecker(linter))
linter.register_checker(DbColumnChecker(linter))
25 changes: 25 additions & 0 deletions kiwi_lint/db_column.py
@@ -0,0 +1,25 @@
from pylint import interfaces, checkers
from pylint.checkers import utils


class DbColumnChecker(checkers.BaseChecker):
__implements__ = (interfaces.IAstroidChecker, )

name = 'db-column-used'

msgs = {
'E4841': (
'Do not use db_column in model field definitions',
'db-column-used',
'Do not use db_column argument in model field definitions,'
'See: https://github.com/kiwitcms/Kiwi/issues/736'
)
}

@utils.check_messages('db-column-used')
def visit_attribute(self, node):
if (node.attrname.endswith(('Field', 'Key'))
and node.expr.name == 'models' and node.parent.keywords):
for keyword_arg in node.parent.keywords:
if keyword_arg.arg == 'db_column':
self.add_message('db-column-used', node=node)

0 comments on commit 4dc6374

Please sign in to comment.