ForestAdmin/django-forest

View on GitHub

Showing 39 of 39 total issues

Similar blocks of code found in 4 locations. Consider refactoring.
Open

def build_previous_year_to_date_condition(
self,
current_datetime: datetime,
offset: int,
**kwargs
django_forest/resources/utils/queryset/filters/date/factory.py on lines 87..103
django_forest/resources/utils/queryset/filters/date/factory.py on lines 114..127
django_forest/resources/utils/queryset/filters/date/factory.py on lines 138..151

Similar blocks of code found in 4 locations. Consider refactoring.
Open

def build_previous_week_to_date_condition(
self,
current_datetime: datetime,
offset: int,
**kwargs,
django_forest/resources/utils/queryset/filters/date/factory.py on lines 114..127
django_forest/resources/utils/queryset/filters/date/factory.py on lines 138..151
django_forest/resources/utils/queryset/filters/date/factory.py on lines 157..170

Similar blocks of code found in 4 locations. Consider refactoring.
Open

def build_previous_quarter_to_date_condition(
self,
current_datetime: datetime,
offset: int,
**kwargs
django_forest/resources/utils/queryset/filters/date/factory.py on lines 87..103
django_forest/resources/utils/queryset/filters/date/factory.py on lines 114..127
django_forest/resources/utils/queryset/filters/date/factory.py on lines 157..170

Similar blocks of code found in 4 locations. Consider refactoring.
Open

def build_previous_month_to_date_condition(
self,
current_datetime: datetime,
offset: int,
**kwargs
django_forest/resources/utils/queryset/filters/date/factory.py on lines 87..103
django_forest/resources/utils/queryset/filters/date/factory.py on lines 138..151
django_forest/resources/utils/queryset/filters/date/factory.py on lines 157..170

ConditionFactory has 21 functions (exceeds 20 allowed). Consider refactoring.
Open

class ConditionFactory:
 
DATE_CONDITION_BUILDERS = {
'today': 'build_today_condition',
'yesterday': 'build_yesterday_condition',
Severity: Minor
Found in django_forest/resources/utils/queryset/filters/date/factory.py - About 2 hrs to fix

    Similar blocks of code found in 2 locations. Consider refactoring.
    Open

    if isinstance(method, str):
    ret = getattr(Collection._registry[resource], method)(operator, value)
    elif callable(method):
    ret = method(operator, value)
    Severity: Major
    Found in django_forest/resources/utils/queryset/filters/utils.py and 1 other location - About 2 hrs to fix
    django_forest/resources/utils/smart_field.py on lines 17..20

    Similar blocks of code found in 2 locations. Consider refactoring.
    Open

    if isinstance(method, str):
    instance = getattr(Collection._registry[resource], method)(instance, value)
    elif callable(method):
    instance = method(instance, value)
    Severity: Major
    Found in django_forest/resources/utils/smart_field.py and 1 other location - About 2 hrs to fix
    django_forest/resources/utils/queryset/filters/utils.py on lines 82..85

    Similar blocks of code found in 2 locations. Consider refactoring.
    Open

    if "aggregator" in condition:
    if condition['aggregator'] == 'or':
    q_objects |= self.handle_aggregator(condition, Model, tz)
    else:
    q_objects &= self.handle_aggregator(condition, Model, tz)
    Severity: Major
    Found in django_forest/resources/utils/queryset/filters/utils.py and 1 other location - About 1 hr to fix
    django_forest/resources/utils/queryset/filters/utils.py on lines 164..173

    Similar blocks of code found in 2 locations. Consider refactoring.
    Open

    for item in queryset:
    if getattr(item, relation_field["field"], None) is not None:
    self.handle_smart_fields(
    getattr(item, relation_field["field"]), collection_name, params, False, False
    Severity: Major
    Found in django_forest/resources/utils/smart_field.py and 1 other location - About 1 hr to fix
    django_forest/resources/utils/smart_field.py on lines 72..81

    Similar blocks of code found in 2 locations. Consider refactoring.
    Open

    if many:
    for item in queryset:
    if getattr(item, relation_field["field"], None) is not None:
    self.handle_smart_fields(
    getattr(item, relation_field["field"]), collection_name, params, False, False
    Severity: Major
    Found in django_forest/resources/utils/smart_field.py and 1 other location - About 1 hr to fix
    django_forest/resources/utils/smart_field.py on lines 73..76

    Function handle_aggregator has a Cognitive Complexity of 12 (exceeds 5 allowed). Consider refactoring.
    Open

    def handle_aggregator(self, filters, Model, tz):
    q_objects = Q()
    for condition in filters['conditions']:
    if "aggregator" in condition:
    if condition['aggregator'] == 'or':
    Severity: Minor
    Found in django_forest/resources/utils/queryset/filters/utils.py - About 1 hr to fix

    Function get_ids_from_request has a Cognitive Complexity of 9 (exceeds 5 allowed). Consider refactoring.
    Open

    def get_ids_from_request(self, request, Model):
    body = self.get_body(request.body)
     
    if 'data' in body:
    data = body['data']
    Severity: Minor
    Found in django_forest/utils/views/base.py - About 55 mins to fix

    Function _handle_smart_field_for_relation has a Cognitive Complexity of 9 (exceeds 5 allowed). Consider refactoring.
    Open

    def _handle_smart_field_for_relation(self, queryset, relation_field, collection_name, params, many):
    if many:
    for item in queryset:
    if getattr(item, relation_field["field"], None) is not None:
    self.handle_smart_fields(
    Severity: Minor
    Found in django_forest/resources/utils/smart_field.py - About 55 mins to fix

    Function _rewrite_Q_with_field has a Cognitive Complexity of 8 (exceeds 5 allowed). Consider refactoring.
    Open

    def _rewrite_Q_with_field(self, q, condition):
    operator = condition['operator']
    splitted_fields = condition['field'].split(":")
     
    new_children = []
    Severity: Minor
    Found in django_forest/resources/utils/queryset/filters/utils.py - About 45 mins to fix

    Function _handle_authent_error has a Cognitive Complexity of 8 (exceeds 5 allowed). Consider refactoring.
    Open

    def _handle_authent_error(self, response):
    if response.status_code == 404:
    raise AuthenticationThirdPartyException(
    MESSAGES['SERVER_TRANSACTION']['SECRET_NOT_FOUND']
    )
    Severity: Minor
    Found in django_forest/authentication/views/callback.py - About 45 mins to fix

    Function fill_csv_relationships has a Cognitive Complexity of 8 (exceeds 5 allowed). Consider refactoring.
    Open

    def fill_csv_relationships(self, res, record, data, params):
    pk_name = self.Model._meta.pk.name
    for name, value in record['relationships'].items():
    related_res = self.get_related_res(data, value)
    field_name = params[f'fields[{name}]']
    Severity: Minor
    Found in django_forest/resources/utils/csv.py - About 45 mins to fix

    Similar blocks of code found in 4 locations. Consider refactoring.
    Open

    def build_previous_month_condition(
    self,
    current_datetime: datetime,
    offset: int,
    period: int = 1
    Severity: Major
    Found in django_forest/resources/utils/queryset/filters/date/factory.py and 3 other locations - About 40 mins to fix
    django_forest/resources/utils/queryset/filters/date/factory.py on lines 79..85
    django_forest/resources/utils/queryset/filters/date/factory.py on lines 130..136
    django_forest/resources/utils/queryset/filters/date/factory.py on lines 154..155

    Similar blocks of code found in 4 locations. Consider refactoring.
    Open

    def build_previous_quarter_condition(
    self,
    current_datetime: datetime,
    offset: int,
    period: int = 1,
    Severity: Major
    Found in django_forest/resources/utils/queryset/filters/date/factory.py and 3 other locations - About 40 mins to fix
    django_forest/resources/utils/queryset/filters/date/factory.py on lines 79..85
    django_forest/resources/utils/queryset/filters/date/factory.py on lines 106..112
    django_forest/resources/utils/queryset/filters/date/factory.py on lines 154..155

    Similar blocks of code found in 4 locations. Consider refactoring.
    Open

    def build_previous_year_condition(self, current_datetime: datetime, offset: int, period: int = 1) -> RangeCondition:
    return RangeCondition(*get_previous_x_years(current_datetime, period, offset))
    Severity: Major
    Found in django_forest/resources/utils/queryset/filters/date/factory.py and 3 other locations - About 40 mins to fix
    django_forest/resources/utils/queryset/filters/date/factory.py on lines 79..85
    django_forest/resources/utils/queryset/filters/date/factory.py on lines 106..112
    django_forest/resources/utils/queryset/filters/date/factory.py on lines 130..136

    Similar blocks of code found in 4 locations. Consider refactoring.
    Open

    def build_previous_week_condition(
    self,
    current_datetime: datetime,
    offset: int,
    period: int = 1
    Severity: Major
    Found in django_forest/resources/utils/queryset/filters/date/factory.py and 3 other locations - About 40 mins to fix
    django_forest/resources/utils/queryset/filters/date/factory.py on lines 106..112
    django_forest/resources/utils/queryset/filters/date/factory.py on lines 130..136
    django_forest/resources/utils/queryset/filters/date/factory.py on lines 154..155
    Severity
    Category
    Status
    Source
    Language