Skip to content

Commit

Permalink
Matrix account creation (#9)
Browse files Browse the repository at this point in the history
* add replication_enabled property to MatrixHomeserver

* Remove fixture
  • Loading branch information
thebalaa authored Jul 26, 2024
1 parent 75bdc6e commit b9f9f3c
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 3 deletions.
3 changes: 3 additions & 0 deletions fractal_database_matrix/controllers/replicate.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ def to(

try:
homeserver = MatrixHomeserver.objects.get(url=homeserver_url)
if not homeserver.replication_enabled:
homeserver.update(replication_enabled=True)
except MatrixHomeserver.DoesNotExist:
with transaction.atomic():
# create the homeserver
Expand All @@ -58,6 +60,7 @@ def to(
type=MatrixHomeserver.__name__,
registration_token=registration_token,
parent_db=current_database,
replication_enabled=True,
)
current_device.add_membership(homeserver)
else:
Expand Down
3 changes: 2 additions & 1 deletion fractal_database_matrix/migrations/0001_initial.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ class Migration(migrations.Migration):
('url', models.URLField(unique=True)),
('priority', models.PositiveIntegerField(blank=True, default=0, null=True)),
('registration_token', models.CharField(blank=True, max_length=255, null=True)),
('replication_enabled', models.BooleanField(default=False)),
],
options={
'abstract': False,
Expand All @@ -35,7 +36,7 @@ class Migration(migrations.Migration):
('matrix_id', models.CharField(max_length=255)),
('password', models.CharField(blank=True, max_length=255, null=True)),
('access_token', models.CharField(max_length=255)),
('device', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='fractal_database.device')),
('device', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='fractal_database.device')),
('homeserver', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='credentials', to='fractal_database_matrix.matrixhomeserver')),
],
options={
Expand Down
3 changes: 2 additions & 1 deletion fractal_database_matrix/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ class MatrixHomeserver(Service):
url = models.URLField(unique=True)
priority = models.PositiveIntegerField(default=0, blank=True, null=True)
registration_token = models.CharField(max_length=255, blank=True, null=True)
replication_enabled = models.BooleanField(default=False)

def __str__(self) -> str:
return f"{self.url} (MatrixHomeserver)"
Expand Down Expand Up @@ -205,7 +206,7 @@ class MatrixCredentials(BaseModel):
homeserver = models.ForeignKey(
MatrixHomeserver, on_delete=models.CASCADE, related_name="credentials"
)
device = models.ForeignKey(Device, on_delete=models.CASCADE)
device = models.ForeignKey(Device, on_delete=models.CASCADE, blank=True, null=True)


class InMemoryMatrixCredentials(MatrixCredentials):
Expand Down
5 changes: 4 additions & 1 deletion fractal_database_matrix/signals.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ def create_replication_channel_for_new_matrix_homeserver(

if not created or raw:
return

if not instance.replication_enabled:
return
if not transaction.get_connection().in_atomic_block:
raise Exception("Not in transaction")

Expand Down Expand Up @@ -83,6 +84,8 @@ def create_matrix_replication_target_for_new_database(
return

for homeserver in homeservers:
if not homeserver.replication_enabled:
continue
instance.create_channel(
MatrixReplicationChannel,
homeserver=homeserver,
Expand Down

0 comments on commit b9f9f3c

Please sign in to comment.