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")