diff --git a/aleksis/apps/matrix/model_extensions.py b/aleksis/apps/matrix/model_extensions.py index 4e0472b2a75acaea8486a95e10982815ef61619f..f666d778b90edcccf71655b51304ee751c2a3f01 100644 --- a/aleksis/apps/matrix/model_extensions.py +++ b/aleksis/apps/matrix/model_extensions.py @@ -29,14 +29,14 @@ def _provision_in_matrix(self) -> MatrixRoom: @Group.property_ def matrix_alias(self) -> Optional[str]: """Return the alias of the group's room in Matrix.""" - rooms = [room for room in self.matrix_rooms.all() if type(room) == MatrixRoom] + rooms = [room for room in self.matrix_rooms.all() if isinstance(room, MatrixRoom)] return rooms[0].alias if rooms else None @Group.property_ def matrix_room_id(self) -> Optional[str]: """Return the ID of the group's room in Matrix.""" - rooms = [room for room in self.matrix_rooms.all() if type(room) == MatrixRoom] + rooms = [room for room in self.matrix_rooms.all() if isinstance(room, MatrixRoom)] return rooms[0].room_id if rooms else None diff --git a/aleksis/apps/matrix/tasks.py b/aleksis/apps/matrix/tasks.py index 34ccd15eb6cab43b7d43d8959f7abb577b425149..b47c2fb404ac7559203a4b9b83d8e6f631c29eda 100644 --- a/aleksis/apps/matrix/tasks.py +++ b/aleksis/apps/matrix/tasks.py @@ -1,5 +1,5 @@ +from collections.abc import Sequence from datetime import timedelta -from typing import Sequence from aleksis.apps.matrix.models import MatrixRoom from aleksis.core.celery import app diff --git a/aleksis/apps/matrix/tests/test_matrix.py b/aleksis/apps/matrix/tests/test_matrix.py index a815655fe4d290d4bbf9fa8fd6daacc11386633b..8c9dbdf80b5e92dfdfb4d9c502daa77175ad1a52 100644 --- a/aleksis/apps/matrix/tests/test_matrix.py +++ b/aleksis/apps/matrix/tests/test_matrix.py @@ -1,20 +1,16 @@ -import time from datetime import date from unittest.mock import call from django.contrib.auth.models import User -from django.db.models import Q import pytest import requests -from celery.result import AsyncResult from aleksis.apps.matrix.models import MatrixProfile, MatrixRoom, MatrixSpace from aleksis.apps.matrix.util.matrix import ( MatrixException, build_url, do_matrix_request, - get_headers, ) from aleksis.core.models import Group, Person, SchoolTerm from aleksis.core.util.core_helpers import get_site_preferences @@ -27,7 +23,7 @@ SERVER_URL = "http://127.0.0.1:8008" def test_connection(synapse): assert synapse["listeners"][0]["port"] == 8008 - assert requests.get(SERVER_URL).status_code == requests.codes.ok + assert requests.get(SERVER_URL).status_code == requests.codes.ok # noqa: S113 @pytest.fixture @@ -36,7 +32,7 @@ def matrix_bot_user(synapse): get_site_preferences()["matrix__homeserver"] = SERVER_URL - r = requests.post(build_url("register"), json=body) + r = requests.post(build_url("register"), json=body) # noqa: S113 print(r.text, build_url("register")) assert r.status_code == requests.codes.ok @@ -172,7 +168,7 @@ def test_sync_room_members(matrix_bot_user): # Get power levels r = do_matrix_request("GET", f"rooms/{room.room_id}/state") for event in r: - if not event["type"] == "m.room.power_levels": + if event["type"] != "m.room.power_levels": continue current_power_levels = event["content"]["users"] @@ -207,7 +203,7 @@ def test_power_levels(matrix_bot_user): # Get power levels r = do_matrix_request("GET", f"rooms/{room.room_id}/state") for event in r: - if not event["type"] == "m.room.power_levels": + if event["type"] != "m.room.power_levels": continue current_power_levels = event["content"]["users"] @@ -225,7 +221,7 @@ def test_power_levels(matrix_bot_user): # Not reduced here r = do_matrix_request("GET", f"rooms/{room.room_id}/state") for event in r: - if not event["type"] == "m.room.power_levels": + if event["type"] != "m.room.power_levels": continue current_power_levels = event["content"]["users"] @@ -240,7 +236,7 @@ def test_power_levels(matrix_bot_user): # Reduced here r = do_matrix_request("GET", f"rooms/{room.room_id}/state") for event in r: - if not event["type"] == "m.room.power_levels": + if event["type"] != "m.room.power_levels": continue current_power_levels = event["content"]["users"] @@ -313,9 +309,6 @@ def test_use_room_sync(matrix_bot_user): assert p1.matrix_profile.matrix_id == "@test1:matrix.aleksis.example.org" -from django.test import TransactionTestCase, override_settings - - def test_space_creation(matrix_bot_user): parent_group = Group.objects.create(name="Test Group") child_1 = Group.objects.create(name="Test Group 1") @@ -518,7 +511,7 @@ def test_signal_profile_person_changed(matrix_bot_user, mocker): g2.members.set([p2]) g2.owners.set([p4]) - room = MatrixRoom.from_group(g) + MatrixRoom.from_group(g) room2 = MatrixRoom.from_group(g2) sync_mock = mocker.patch("aleksis.apps.matrix.tasks.sync_room.delay") diff --git a/aleksis/apps/matrix/util/matrix.py b/aleksis/apps/matrix/util/matrix.py index 864a3f6ebbbefc34219dad31b94b0ccdfc8459ae..70662473e95237654d3b230f3ec515f4bab58683 100644 --- a/aleksis/apps/matrix/util/matrix.py +++ b/aleksis/apps/matrix/util/matrix.py @@ -29,7 +29,7 @@ def get_headers() -> dict[str, str]: def do_matrix_request(method: str, url: str, body: Optional[dict] = None) -> dict[str, Any]: """Do a HTTP request to the Matrix Client Server API.""" while True: - res = requests.request(method=method, url=build_url(url), headers=get_headers(), json=body) + res = requests.request(method=method, url=build_url(url), headers=get_headers(), json=body) # noqa: S113 try: data = res.json() diff --git a/pyproject.toml b/pyproject.toml index 8e260a884ba607ee282278f96b7380725499541c..134e446f39cc2923865be62e5542324444b9f800 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,7 +9,7 @@ include = ["CHANGELOG.rst", "LICENCE.rst", "aleksis/**/*.mo"] description = "AlekSIS (School Information System) — App Matrix (Integration with Matrix/Element)" authors = ["Jonathan Weth <dev@jonathanweth.de>"] -maintainers = ["Jonathan Weth <dev@jonathanweth.de>", "Dominik George <dominik.george@teckids.org>"] +maintainers = ["Jonathan Weth <jonathan.weth@teckids.org>", "Dominik George <dominik.george@teckids.org>"] license = "EUPL-1.2-or-later" homepage = "https://aleksis.org" repository = "https://edugit.org/AlekSIS/official/AlekSIS-App-Matrix" @@ -30,7 +30,6 @@ priority = "primary" name = "gitlab" url = "https://edugit.org/api/v4/projects/461/packages/pypi/simple" priority = "supplemental" - [tool.poetry.dependencies] python = "^3.10" aleksis-core = "^4.0.0.dev3" @@ -42,18 +41,16 @@ matrix = "aleksis.apps.matrix.apps:DefaultConfig" django-stubs = "^4.2" safety = "^2.3.5" -ruff = "^0.1.5" - -curlylint = "^0.13.0" +ruff = "^0.8.2" [tool.poetry.group.test.dependencies] -pytest = "^7.2" -pytest-django = "^4.1" +pytest = "^8.3" +pytest-django = "^4.9" pytest-django-testing-postgresql = "^0.2" -pytest-cov = "^4.0.0" -pytest-sugar = "^0.9.2" -selenium = "<4.10.0" -freezegun = "^1.1.0" +pytest-cov = "^6.0.0" +pytest-sugar = "^1.0.0" +selenium = "^4.27.0" +freezegun = "^1.5.0" [tool.poetry.group.docs] optional = true @@ -64,20 +61,20 @@ sphinxcontrib-django = "^2.3.0" sphinxcontrib-svg2pdfconverter = "^1.1.1" sphinx-autodoc-typehints = "^1.7" sphinx_material = "^0.0.35" - [tool.ruff] -exclude = ["migrations", "tests"] +exclude = ["migrations"] line-length = 100 [tool.ruff.lint] select = ["E", "F", "UP", "B", "SIM", "I", "DJ", "A", "S"] ignore = ["UP034", "UP015", "B028"] - -[tool.ruff.isort] +[tool.ruff.lint.extend-per-file-ignores] +"**/*/tests/**/*.py" = ["S101", "ARG", "FBT", "PLR2004", "S311", "S105"] +[tool.ruff.lint.isort] known-first-party = ["aleksis"] section-order = ["future", "standard-library", "django", "third-party", "first-party", "local-folder"] -[tool.ruff.isort.sections] +[tool.ruff.lint.isort.sections] django = ["django"] [build-system]