edukorg/drf-toolkit

View on GitHub

Showing 31 of 54 total issues

Function assertResponseMatch has a Cognitive Complexity of 51 (exceeds 7 allowed). Consider refactoring.
Open

def assertResponseMatch(self, expected, received):
def _assert_dict(expected_item, received_item, idx=None):
msg = f"At item #{idx}:: " if idx else ""
 
expected_keys = set(expected_item)
Severity: Minor
Found in drf_kit/tests.py - About 7 hrs to fix

File tests.py has 335 lines of code (exceeds 250 allowed). Consider refactoring.
Open

import inspect
import logging
import os
import re
from collections import Counter
Severity: Minor
Found in drf_kit/tests.py - About 4 hrs to fix

    BaseApiTest has 23 functions (exceeds 20 allowed). Consider refactoring.
    Open

    class BaseApiTest(APITransactionTestCase):
    maxDiff = None
     
    def setUp(self):
    super().setUp()
    Severity: Minor
    Found in drf_kit/tests.py - About 2 hrs to fix

      Function save has a Cognitive Complexity of 19 (exceeds 7 allowed). Consider refactoring.
      Open

      def save(self, *args, **kwargs):
      being_created = self.pk is None
       
      super().save(*args, **kwargs)
       
       
      Severity: Minor
      Found in drf_kit/models/file_models.py - About 2 hrs to fix

      Function process_cache_response has a Cognitive Complexity of 15 (exceeds 7 allowed). Consider refactoring.
      Open

      def process_cache_response(
      self,
      view_instance,
      view_method,
      request,
      Severity: Minor
      Found in drf_kit/cache.py - About 1 hr to fix

      Function _get_m2m_relations_for has a Cognitive Complexity of 13 (exceeds 7 allowed). Consider refactoring.
      Open

      def _get_m2m_relations_for(self, fields: Iterable[str]) -> Generator["SoftDeleteModel"]: # noqa: F821
      from drf_kit.models import SoftDeleteModel
       
      related_fields = {field.split("__")[0] for field in fields}
       
       
      Severity: Minor
      Found in drf_kit/managers/soft_delete_managers.py - About 1 hr to fix

      Function delete has a Cognitive Complexity of 11 (exceeds 7 allowed). Consider refactoring.
      Open

      def delete(self, using=None, keep_parents=False):
      if not self.is_deleted:
      signals.pre_soft_delete.send(sender=self.__class__, instance=self)
       
      # save & skip signals
      Severity: Minor
      Found in drf_kit/models/soft_delete_models.py - About 55 mins to fix

      Function __init__ has a Cognitive Complexity of 11 (exceeds 7 allowed). Consider refactoring.
      Open

      def __init__(self, *args, data=None, **kwargs):
      if data is not None:
      data = data.copy()
       
      for name, filter_obj in self.base_filters.items():
      Severity: Minor
      Found in drf_kit/filters.py - About 55 mins to fix

      Function default has a Cognitive Complexity of 11 (exceeds 7 allowed). Consider refactoring.
      Open

      def default(self, o):
      if o is None:
      return None
      if isinstance(o, datetime):
      value = assure_tz(o.astimezone(tz=DEFAULT_TIMEZONE))
      Severity: Minor
      Found in drf_kit/serializers.py - About 55 mins to fix

      Function _get_extra_filters has a Cognitive Complexity of 10 (exceeds 7 allowed). Consider refactoring.
      Open

      def _get_extra_filters(self, fields: Iterable[str]) -> Generator[dict[str, bool]]:
      for rel_model in self._get_m2m_relations_for(fields=fields):
      field_name = None
      for field in rel_model._meta.get_fields():
      # Locate the reverse-name of the field that points to the M2m through model
      Severity: Minor
      Found in drf_kit/managers/soft_delete_managers.py - About 45 mins to fix

      Avoid deeply nested control flow statements.
      Open

      if hasattr(file.storage, "move"):
      file.storage.move(previous_name=old_file, new_name=new_file)
      else: # still works when using local filesystem
      file.storage.save(new_file, file)
      file.storage.delete(old_file)
      Severity: Major
      Found in drf_kit/models/file_models.py - About 45 mins to fix

        Function get_source_dict has 6 arguments (exceeds 4 allowed). Consider refactoring.
        Open

        def get_source_dict(self, params, view_instance, view_method, request, args, kwargs):
        Severity: Minor
        Found in drf_kit/cache.py - About 45 mins to fix

          Function get_source_dict has 6 arguments (exceeds 4 allowed). Consider refactoring.
          Open

          def get_source_dict(self, params, view_instance, view_method, request, args, kwargs):
          Severity: Minor
          Found in drf_kit/cache.py - About 45 mins to fix

            Function __init__ has 5 arguments (exceeds 4 allowed). Consider refactoring.
            Open

            def __init__(self, max_length=50, db_index=True, allow_unicode=False, func=slugify, **kwargs):
            Severity: Minor
            Found in drf_kit/fields.py - About 35 mins to fix

              Function assertUUIDFilePath has 5 arguments (exceeds 4 allowed). Consider refactoring.
              Open

              def assertUUIDFilePath(self, prefix, name, extension, pk, file):
              Severity: Minor
              Found in drf_kit/tests.py - About 35 mins to fix

                Function process_cache_response has 5 arguments (exceeds 4 allowed). Consider refactoring.
                Open

                def process_cache_response(
                Severity: Minor
                Found in drf_kit/cache.py - About 35 mins to fix

                  Function _dict has a Cognitive Complexity of 9 (exceeds 7 allowed). Consider refactoring.
                  Open

                  def _dict(self):
                  # ref: https://github.com/django/django/blob/4.0.2/django/forms/models.py#L86
                  data = {}
                   
                  # If there's any deferred field (i.e. lazy loading),
                  Severity: Minor
                  Found in drf_kit/models/diff_models.py - About 35 mins to fix

                  Avoid too many return statements within this function.
                  Open

                  return None
                  Severity: Major
                  Found in drf_kit/views/viewsets.py - About 30 mins to fix

                    Avoid too many return statements within this function.
                    Open

                    return {"__eq__": msg}
                    Severity: Major
                    Found in drf_kit/tests.py - About 30 mins to fix

                      Avoid too many return statements within this function.
                      Open

                      return super().default(o)
                      Severity: Major
                      Found in drf_kit/serializers.py - About 30 mins to fix
                        Severity
                        Category
                        Status
                        Source
                        Language