From 6cd5522099476db9061f9672d0cec3085de50f0c Mon Sep 17 00:00:00 2001 From: Timothy Hobbs Date: Tue, 14 Nov 2023 20:07:25 +0100 Subject: [PATCH] Move to ruff, its faster & catches more --- .github/workflows/pythonpackage.yml | 17 +++-------------- .../migrations/0002_populate_usersettings.py | 2 +- helpdesk/migrations/0003_initial_data_import.py | 3 +-- .../migrations/0010_remove_queuemembership.py | 2 +- helpdesk/tests/helpers.py | 2 +- helpdesk/tests/test_kb.py | 2 +- helpdesk/tests/test_navigation.py | 5 +---- helpdesk/tests/test_query.py | 2 +- helpdesk/tests/test_time_spent.py | 13 ------------- helpdesk/tests/test_usersettings.py | 9 --------- helpdesk/validators.py | 2 +- helpdesk/views/staff.py | 2 +- pyproject.toml | 2 ++ requirements-dev.txt | 3 +-- 14 files changed, 15 insertions(+), 51 deletions(-) create mode 100644 pyproject.toml diff --git a/.github/workflows/pythonpackage.yml b/.github/workflows/pythonpackage.yml index 9e880b53..45ae1727 100644 --- a/.github/workflows/pythonpackage.yml +++ b/.github/workflows/pythonpackage.yml @@ -28,21 +28,10 @@ jobs: python -m pip install --upgrade pip pip install -r requirements.txt -r requirements-testing.txt -c constraints-Django${{ matrix.django-version }}.txt - - name: Format style check with 'autopep8' + - name: Lint with ruff run: | - pip install autopep8 - autopep8 --exit-code --global-config .flake8 helpdesk - - - name: Lint with 'flake8' - run: | - pip install flake8 - # stop the build if there are Python syntax errors or undefined names - # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide - flake8 helpdesk --count --show-source --statistics --exit-zero --max-complexity=20 - - - name: Sort style check with 'isort' - run: | - isort --line-length=120 --src helpdesk . --check + pip install ruff + ruff helpdesk - name: Test with pytest run: | diff --git a/helpdesk/migrations/0002_populate_usersettings.py b/helpdesk/migrations/0002_populate_usersettings.py index b35bfc80..42c94cf5 100644 --- a/helpdesk/migrations/0002_populate_usersettings.py +++ b/helpdesk/migrations/0002_populate_usersettings.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- from django.contrib.auth import get_user_model -from django.db import models, migrations +from django.db import migrations from helpdesk.settings import DEFAULT_USER_SETTINGS diff --git a/helpdesk/migrations/0003_initial_data_import.py b/helpdesk/migrations/0003_initial_data_import.py index c13bb47c..b3fcbb43 100644 --- a/helpdesk/migrations/0003_initial_data_import.py +++ b/helpdesk/migrations/0003_initial_data_import.py @@ -1,8 +1,7 @@ # -*- coding: utf-8 -*- import os -from sys import path -from django.db import models, migrations +from django.db import migrations from django.core import serializers fixture_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '../fixtures')) diff --git a/helpdesk/migrations/0010_remove_queuemembership.py b/helpdesk/migrations/0010_remove_queuemembership.py index b0df7ee4..98775daa 100644 --- a/helpdesk/migrations/0010_remove_queuemembership.py +++ b/helpdesk/migrations/0010_remove_queuemembership.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -from django.db import models, migrations +from django.db import migrations class Migration(migrations.Migration): diff --git a/helpdesk/tests/helpers.py b/helpdesk/tests/helpers.py index fe4d65de..e91e7d85 100644 --- a/helpdesk/tests/helpers.py +++ b/helpdesk/tests/helpers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from django.contrib.auth import get_user_model -from helpdesk.models import Queue, Ticket, UserSettings +from helpdesk.models import Queue, Ticket import sys diff --git a/helpdesk/tests/test_kb.py b/helpdesk/tests/test_kb.py index 511aae67..23525586 100644 --- a/helpdesk/tests/test_kb.py +++ b/helpdesk/tests/test_kb.py @@ -2,7 +2,7 @@ from django.test import TestCase from django.urls import reverse from helpdesk.models import KBCategory, KBItem, Queue, Ticket -from helpdesk.tests.helpers import create_ticket, get_staff_user, print_response, reload_urlconf, User +from helpdesk.tests.helpers import get_staff_user class KBTests(TestCase): diff --git a/helpdesk/tests/test_navigation.py b/helpdesk/tests/test_navigation.py index fef74fce..b4a427ea 100644 --- a/helpdesk/tests/test_navigation.py +++ b/helpdesk/tests/test_navigation.py @@ -6,7 +6,7 @@ from django.test.utils import override_settings from django.urls import reverse from helpdesk import settings as helpdesk_settings from helpdesk.models import Queue -from helpdesk.tests.helpers import create_ticket, get_staff_user, print_response, reload_urlconf, User +from helpdesk.tests.helpers import create_ticket, get_staff_user, reload_urlconf, User from importlib import reload import sys @@ -109,7 +109,6 @@ class StaffUsersOnlyTestCase(StaffUserTestCaseMixin, TestCase): """When HELPDESK_ALLOW_NON_STAFF_TICKET_UPDATE is False, staff users should be able to access the dashboard. """ - from helpdesk.decorators import is_helpdesk_staff user = get_staff_user() self.client.login(username=user.username, password='password') @@ -120,8 +119,6 @@ class StaffUsersOnlyTestCase(StaffUserTestCaseMixin, TestCase): """When HELPDESK_ALLOW_NON_STAFF_TICKET_UPDATE is False, non-staff users should not be able to access the dashboard. """ - from helpdesk.decorators import is_helpdesk_staff - user = self.non_staff_user self.client.login(username=user.username, password=self.non_staff_user_password) diff --git a/helpdesk/tests/test_query.py b/helpdesk/tests/test_query.py index 8e2c1533..bee5b664 100644 --- a/helpdesk/tests/test_query.py +++ b/helpdesk/tests/test_query.py @@ -3,7 +3,7 @@ from django.test import TestCase from django.urls import reverse from helpdesk.models import KBCategory, KBItem, Queue, Ticket from helpdesk.query import query_to_base64 -from helpdesk.tests.helpers import create_ticket, get_staff_user, print_response, reload_urlconf, User +from helpdesk.tests.helpers import get_staff_user class QueryTests(TestCase): diff --git a/helpdesk/tests/test_time_spent.py b/helpdesk/tests/test_time_spent.py index f89214e3..83027c56 100644 --- a/helpdesk/tests/test_time_spent.py +++ b/helpdesk/tests/test_time_spent.py @@ -1,25 +1,12 @@ import datetime -from django.contrib.auth import get_user_model from django.contrib.auth.hashers import make_password from django.contrib.auth.models import User -from django.contrib.sites.models import Site -from django.core import mail from django.test import TestCase from django.test.client import Client -from django.urls import reverse -from helpdesk import settings as helpdesk_settings from helpdesk.models import FollowUp, Queue, Ticket -from helpdesk.templatetags.ticket_to_link import num_to_link import uuid - -try: # python 3 - from urllib.parse import urlparse -except ImportError: # python 2 - from urlparse import urlparse - - class TimeSpentTestCase(TestCase): def setUp(self): diff --git a/helpdesk/tests/test_usersettings.py b/helpdesk/tests/test_usersettings.py index b7d72866..7ba26c96 100644 --- a/helpdesk/tests/test_usersettings.py +++ b/helpdesk/tests/test_usersettings.py @@ -1,15 +1,6 @@ from django.contrib.auth import get_user_model -from django.core import mail from django.test import TestCase -from django.test.client import Client from django.urls import reverse -from helpdesk.models import CustomField, Queue, Ticket - - -try: # python 3 - from urllib.parse import urlparse -except ImportError: # python 2 - from urlparse import urlparse class TicketActionsTestCase(TestCase): diff --git a/helpdesk/validators.py b/helpdesk/validators.py index 5fb80e39..72589111 100644 --- a/helpdesk/validators.py +++ b/helpdesk/validators.py @@ -28,7 +28,7 @@ def validate_file_extension(value): valid_extensions = ['.txt', '.asc', '.htm', '.html', '.pdf', '.doc', '.docx', '.odt', '.jpg', '.png', '.eml'] - if not ext.lower() in valid_extensions: + if ext.lower() not in valid_extensions: # TODO: one more check in case it is a file with no extension; we # should always allow that? if not (ext.lower() == '' or ext.lower() == '.'): diff --git a/helpdesk/views/staff.py b/helpdesk/views/staff.py index d25dac0c..9b8565ac 100644 --- a/helpdesk/views/staff.py +++ b/helpdesk/views/staff.py @@ -1340,7 +1340,7 @@ def ticket_list(request): ('kbitem', 'kbitem__isnull'), ]) for param, filter_command in filter_in_params: - if not request.GET.get(param) is None: + if request.GET.get(param) is not None: patterns = request.GET.getlist(param) try: pattern_pks = [int(pattern) for pattern in patterns] diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..211ea9fe --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,2 @@ +[tool.ruff] +ignore = ["E501", "E731", "F841", "E721"] diff --git a/requirements-dev.txt b/requirements-dev.txt index b26ca6de..973bf2e3 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,6 +1,5 @@ tox -autopep8 -flake8 +ruff pycodestyle isort freezegun