Skip to content
Snippets Groups Projects
Verified Commit 6e6218e6 authored by Jonathan Weth's avatar Jonathan Weth :keyboard:
Browse files

Add tasks for syncing rooms periodically or after changes

parent 5c6d77f5
No related branches found
No related tags found
1 merge request!7Resolve "Add periodic task for syncing rooms"
Pipeline #64061 failed
from django.db.models.signals import post_save
from aleksis.core.util.apps import AppConfig
......@@ -11,3 +13,10 @@ class DefaultConfig(AppConfig):
}
licence = "EUPL-1.2+"
copyright_info = (([2021, 2022], "Jonathan Weth", "dev@jonathanweth.de"),)
def ready(self):
from aleksis.core.models import Group
from .signals import post_save_matrix_signal
post_save.connect(post_save_matrix_signal, sender=Group)
from aleksis.apps.matrix.models import MatrixRoom
from .tasks import sync_room
def post_save_matrix_signal(sender, instance, created, **kwargs):
"""Sync Matrix room after changing a group."""
if created:
return
for room in MatrixRoom.objects.filter(group=instance):
sync_room.delay(room.pk)
from datetime import timedelta
from typing import Sequence
from aleksis.apps.matrix.models import MatrixRoom
......@@ -25,3 +26,11 @@ def provision_group_in_matrix(pk: int):
"""Provision provided group in Matrix."""
group = Group.objects.get(pk=pk)
group._provision_in_matrix()
@app.task(run_every=timedelta(days=1))
def sync_rooms():
"""Synchronise all Matrix rooms."""
rooms = MatrixRoom.objects.all()
for room in rooms:
room.sync()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment