From 727addb656df137e8d0873eab133a334f03e8661 Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Fri, 5 Nov 2021 22:21:28 +0100 Subject: [PATCH] Create models for profiles, rooms and spaces --- aleksis/apps/matrix/model_extensions.py | 9 ----- aleksis/apps/matrix/models.py | 52 +++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 9 deletions(-) delete mode 100644 aleksis/apps/matrix/model_extensions.py create mode 100644 aleksis/apps/matrix/models.py diff --git a/aleksis/apps/matrix/model_extensions.py b/aleksis/apps/matrix/model_extensions.py deleted file mode 100644 index 7075310..0000000 --- a/aleksis/apps/matrix/model_extensions.py +++ /dev/null @@ -1,9 +0,0 @@ -from django.utils.translation import gettext_lazy as _ - -from jsonstore import CharField - -from aleksis.core.models import Group, Person - - -Person.field(matrix_id=CharField(verbose_name=_("Matrix ID"))) -Group.field(matrix_room_id=CharField(verbose_name=_("Matrix room ID"))) diff --git a/aleksis/apps/matrix/models.py b/aleksis/apps/matrix/models.py new file mode 100644 index 0000000..3b3dd68 --- /dev/null +++ b/aleksis/apps/matrix/models.py @@ -0,0 +1,52 @@ +from django.db import models +from django.utils.translation import gettext_lazy as _ + +from aleksis.core.mixins import ExtensibleModel, ExtensiblePolymorphicModel +from aleksis.core.models import Group, Person + + +class MatrixProfile(ExtensibleModel): + """Model for a Matrix profile.""" + + matrix_id = models.CharField(verbose_name=_("Matrix ID"), unique=True) + person = models.OneToOneField( + Person, + on_delete=models.CASCADE, + verbose_name=_("Person"), + null=True, + blank=True, + related_name="matrix_profile", + ) + + class Meta: + verbose_name = _("Matrix profile") + verbose_name_plural = _("Matrix profiles") + + +class MatrixRoom(ExtensiblePolymorphicModel): + """Model for a Matrix room.""" + + room_id = models.CharField(verbose_name=_("Room ID"), unique=True) + alias = models.CharField(verbose_name=_("Alias"), unique=True, blank=True, null=True) + group = models.ForeignKey( + Group, + on_delete=models.CASCADE, + verbose_name=_("Group"), + null=True, + blank=True, + related_name="matrix_spaces", + ) + + class Meta: + verbose_name = _("Matrix room") + verbose_name_plural = _("Matrix rooms") + + +class MatrixSpace(MatrixRoom): + children = models.ManyToManyField( + to=MatrixRoom, verbose_name=_("Child rooms/spaces"), blank=True, related_name="parents" + ) + + class Meta: + verbose_name = _("Matrix space") + verbose_name_plural = _("Matrix spaces") -- GitLab