From dbad132fb1dbb06090850c182c29882122f0b132 Mon Sep 17 00:00:00 2001 From: yalef Date: Wed, 24 May 2023 21:56:34 +0500 Subject: [PATCH] Add exception handling for model field checking --- flake8_django/checkers/model_content_order.py | 3 ++- tests/fixtures/model_content_order.py | 24 +++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/flake8_django/checkers/model_content_order.py b/flake8_django/checkers/model_content_order.py index 52acbca..0927541 100644 --- a/flake8_django/checkers/model_content_order.py +++ b/flake8_django/checkers/model_content_order.py @@ -1,4 +1,5 @@ import astroid +from astroid.exceptions import InferenceError from functools import partial from .base_model_checker import BaseModelChecker @@ -33,7 +34,7 @@ def is_field_declaration(node): ): return True return False - except AttributeError: + except (AttributeError, InferenceError): return False diff --git a/tests/fixtures/model_content_order.py b/tests/fixtures/model_content_order.py index eeb28aa..25e3b65 100644 --- a/tests/fixtures/model_content_order.py +++ b/tests/fixtures/model_content_order.py @@ -102,3 +102,27 @@ def my_method(self): @property def random_property(self): return '%s' % self + + +class CustomManager(models.Manager): + def manager_only_method(self): + return + + +class CustomQuerySet(models.QuerySet): + def manager_and_queryset_method(self): + return + + +class ModelWithCustomManager(models.Model): + """ + Model with custom manager which can't be inferred correctly. + """ + first_name = models.CharField(max_length=32) + objects = CustomManager.from_queryset(CustomQuerySet)() + class Meta: + verbose_name = 'test' + verbose_name_plural = 'tests' + + def __str__(self): + return 'Perfectly fine!'