diff --git a/aleksis/apps/matrix/models.py b/aleksis/apps/matrix/models.py index 9270c6151c570d8345828a470c1f941fe7b25a2e..5d9d467a1b2cbca777a8fa7d14b13de19b39cdbc 100644 --- a/aleksis/apps/matrix/models.py +++ b/aleksis/apps/matrix/models.py @@ -6,11 +6,12 @@ from django.db.models import Q from django.template.defaultfilters import slugify from django.utils.translation import gettext_lazy as _ -from aleksis.apps.matrix.matrix import do_matrix_request from aleksis.core.mixins import ExtensibleModel, ExtensiblePolymorphicModel from aleksis.core.models import Group, Person from aleksis.core.util.core_helpers import get_site_preferences +from .util.matrix import do_matrix_request + class MatrixProfile(ExtensibleModel): """Model for a Matrix profile.""" @@ -73,7 +74,7 @@ class MatrixRoom(ExtensiblePolymorphicModel): @classmethod def from_group(cls, group: Group) -> "MatrixRoom": """Create a Matrix room from a group.""" - from .matrix import MatrixException, do_matrix_request + from .util.matrix import MatrixException, do_matrix_request try: room = cls.get_queryset().get(group=group) @@ -126,7 +127,7 @@ class MatrixRoom(ExtensiblePolymorphicModel): invite: Optional[List[str]] = None, creation_content: Optional[dict] = None, ) -> Dict[str, Any]: - from .matrix import do_matrix_request + from .util.matrix import do_matrix_request body = {"preset": "private_chat", "name": name, "room_alias_name": alias} @@ -143,7 +144,7 @@ class MatrixRoom(ExtensiblePolymorphicModel): @property def power_levels(self) -> Dict[str, int]: """Return the power levels for this room.""" - from aleksis.apps.matrix.matrix import do_matrix_request + from .util.matrix import do_matrix_request r = do_matrix_request("GET", f"rooms/{self.room_id}/state") @@ -154,7 +155,7 @@ class MatrixRoom(ExtensiblePolymorphicModel): @property def members(self) -> List[str]: - from aleksis.apps.matrix.matrix import do_matrix_request + from .util.matrix import do_matrix_request r = do_matrix_request( "GET", f"rooms/{self.room_id}/members", body={"membership": ["join", "invite"]} @@ -163,7 +164,7 @@ class MatrixRoom(ExtensiblePolymorphicModel): def _invite(self, profile: MatrixProfile) -> Dict[str, Any]: """Invite a user to this room.""" - from aleksis.apps.matrix.matrix import do_matrix_request + from .util.matrix import do_matrix_request r = do_matrix_request( "POST", @@ -280,7 +281,7 @@ class MatrixSpace(MatrixRoom): @property def child_spaces(self) -> List[str]: """Get all child spaces of this space.""" - from aleksis.apps.matrix.matrix import do_matrix_request + from .util.matrix import do_matrix_request r = do_matrix_request("GET", f"rooms/{self.room_id}/state") return [c["state_key"] for c in r if c["type"] == "m.space.child"] diff --git a/aleksis/apps/matrix/tests/test_matrix.py b/aleksis/apps/matrix/tests/test_matrix.py index 5efb3a1f04be829a4fc86a775d42b4caa987ca56..f5b87bec32eb3db4381dbe1cdb6e51e0561d44e5 100644 --- a/aleksis/apps/matrix/tests/test_matrix.py +++ b/aleksis/apps/matrix/tests/test_matrix.py @@ -7,8 +7,13 @@ import pytest import requests from celery.result import AsyncResult -from aleksis.apps.matrix.matrix import do_matrix_request 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,8 +32,6 @@ def test_connection(synapse): @pytest.fixture def matrix_bot_user(synapse): - from aleksis.apps.matrix.matrix import build_url - body = {"username": "aleksis-bot", "password": "test", "auth": {"type": "m.login.dummy"}} get_site_preferences()["matrix__homeserver"] = SERVER_URL @@ -52,8 +55,6 @@ def test_matrix_bot_user(matrix_bot_user): def test_create_room_for_group(matrix_bot_user): - from aleksis.apps.matrix.matrix import build_url, get_headers - g = Group.objects.create(name="Test Room") assert not MatrixRoom.objects.all().exists() room = MatrixRoom.from_group(g) @@ -79,8 +80,6 @@ def test_create_room_for_group_short_name(matrix_bot_user): def test_room_alias_collision_same_name(matrix_bot_user): - from aleksis.apps.matrix.matrix import MatrixException - g1 = Group.objects.create(name="Test Room") g2 = Group.objects.create(name="test-room") g3 = Group.objects.create(name="Test-Room") @@ -123,8 +122,6 @@ def test_room_alias_collision_school_term(matrix_bot_user): def test_sync_room_members(matrix_bot_user): - from aleksis.apps.matrix.matrix import build_url, get_headers - get_site_preferences()["matrix__homeserver_ids"] = "matrix.aleksis.example.org" g = Group.objects.create(name="Test Room") @@ -235,8 +232,6 @@ def test_sync_room_members_without_homeserver(matrix_bot_user): def test_use_room_sync(matrix_bot_user): - from aleksis.apps.matrix.matrix import build_url, get_headers - get_site_preferences()["matrix__homeserver_ids"] = "matrix.aleksis.example.org" g = Group.objects.create(name="Test Room") diff --git a/aleksis/apps/matrix/matrix.py b/aleksis/apps/matrix/util/matrix.py similarity index 100% rename from aleksis/apps/matrix/matrix.py rename to aleksis/apps/matrix/util/matrix.py