File models.py
has 999 lines of code (exceeds 500 allowed). Consider refactoring.
import copy
import importlib
import uuid
import warnings
from collections.abc import Iterable, Sequence
HistoricalRecords
has 28 functions (exceeds 20 allowed). Consider refactoring.
class HistoricalRecords:
DEFAULT_MODEL_NAME_PREFIX = "Historical"
thread = context = LocalContext()
m2m_models = {}
Function __init__
has 27 arguments (exceeds 7 allowed). Consider refactoring.
def __init__(
Function copy_fields
has a Cognitive Complexity of 19 (exceeds 7 allowed). Consider refactoring.
def copy_fields(self, model):
"""
Creates copies of the model's original fields, returning
a dictionary mapping field name to copied field object.
"""
SimpleHistoryAdmin
has 21 functions (exceeds 20 allowed). Consider refactoring.
class SimpleHistoryAdmin(admin.ModelAdmin):
history_list_display = []
object_history_template = "simple_history/object_history.html"
object_history_list_template = "simple_history/object_history_list.html"
Function _get_m2m_field_changes_for_diff
has a Cognitive Complexity of 18 (exceeds 7 allowed). Consider refactoring.
def _get_m2m_field_changes_for_diff(
self,
old_history: "HistoricalChanges",
m2m_fields: Iterable[str],
foreign_keys_are_objs: bool,
Function _get_field_changes_for_diff
has a Cognitive Complexity of 17 (exceeds 7 allowed). Consider refactoring.
def _get_field_changes_for_diff(
self,
old_history: "HistoricalChanges",
fields: Iterable[str],
foreign_keys_are_objs: bool,
Function _process
has a Cognitive Complexity of 16 (exceeds 7 allowed). Consider refactoring.
def _process(self, to_process, date_back=None, dry_run=True):
if date_back:
stop_date = timezone.now() - timezone.timedelta(minutes=date_back)
else:
stop_date = None
Function __init__
has 30 lines of code (exceeds 25 allowed). Consider refactoring.
def __init__(
self,
verbose_name=None,
verbose_name_plural=None,
bases=(models.Model,),
Function history_view
has a Cognitive Complexity of 12 (exceeds 7 allowed). Consider refactoring.
def history_view(self, request, object_id, extra_context=None):
"""The 'history' admin view for this model."""
request.current_app = self.admin_site.name
model = self.model
opts = model._meta
Function update_change_reason
has a Cognitive Complexity of 10 (exceeds 7 allowed). Consider refactoring.
def update_change_reason(instance, reason):
attrs = {}
model = type(instance)
manager = instance if instance.pk is not None else model
history = get_history_manager_for_model(manager)
Function bulk_create_with_history
has a Cognitive Complexity of 10 (exceeds 7 allowed). Consider refactoring.
def bulk_create_with_history(
objs,
model,
batch_size=None,
ignore_conflicts=False,
Function bulk_update_with_history
has 9 arguments (exceeds 7 allowed). Consider refactoring.
def bulk_update_with_history(
Function bulk_create_with_history
has 8 arguments (exceeds 7 allowed). Consider refactoring.
def bulk_create_with_history(
Function related_manager_cls
has a Cognitive Complexity of 9 (exceeds 7 allowed). Consider refactoring.
def related_manager_cls(self):
related_model = self.rel.related_model
class HistoricRelationModelManager(related_model._default_manager.__class__):
def get_queryset(self):
Function transform_field
has a Cognitive Complexity of 9 (exceeds 7 allowed). Consider refactoring.
def transform_field(field):
"""Customize field appropriately for use in historical model"""
field.name = field.attname
if isinstance(field, models.BigAutoField):
field.__class__ = models.BigIntegerField
Function history_form_view
has a Cognitive Complexity of 9 (exceeds 7 allowed). Consider refactoring.
def history_form_view(self, request, object_id, version_id, extra_context=None):
request.current_app = self.admin_site.name
original_opts = self.model._meta
model = getattr(
self.model, self.model._meta.simple_history_manager_attribute
Function finalize
has a Cognitive Complexity of 9 (exceeds 7 allowed). Consider refactoring.
def finalize(self, sender, **kwargs):
inherited = False
if self.cls is not sender:
inherited = self.inherit and issubclass(sender, self.cls)
if not inherited:
Function _bulk_history_create
has a Cognitive Complexity of 8 (exceeds 7 allowed). Consider refactoring.
def _bulk_history_create(self, model, batch_size):
"""Save a copy of all instances to the historical model.
:param model: Model you want to bulk create
:param batch_size: number of models to create at once.
Function handle
has a Cognitive Complexity of 8 (exceeds 7 allowed). Consider refactoring.
def handle(self, *args, **options):
self.verbosity = options["verbosity"]
to_process = set()
model_strings = options.get("models", []) or args