add signals
This commit is contained in:
parent
56f516e25b
commit
fbfe97fe5b
@ -1,4 +1,5 @@
|
||||
from django.apps import AppConfig
|
||||
from django.db.models.signals import post_delete
|
||||
|
||||
|
||||
class AggregatorConfig(AppConfig):
|
||||
@ -6,9 +7,17 @@ class AggregatorConfig(AppConfig):
|
||||
|
||||
def ready(self):
|
||||
self.register_config()
|
||||
self.register_signals()
|
||||
|
||||
def register_config(self):
|
||||
import djconfig
|
||||
from .forms import AggregatorAppConfigForm
|
||||
|
||||
djconfig.register(AggregatorAppConfigForm)
|
||||
|
||||
def register_signals(self):
|
||||
from .models import AggregationSource, Chat
|
||||
from .signals import aggregation_source_deleted, chat_deleted
|
||||
|
||||
post_delete.connect(aggregation_source_deleted, sender=AggregationSource)
|
||||
post_delete.connect(chat_deleted, sender=Chat)
|
||||
|
@ -48,8 +48,6 @@ class Chat(models.Model):
|
||||
obj.photo.save(os.path.basename(path), f, save=True)
|
||||
obj.photo_id = chat.photo.small_file_id
|
||||
obj.save()
|
||||
if created:
|
||||
transaction.on_commit(lambda: collect_new_messages.delay(obj.pk))
|
||||
return obj
|
||||
|
||||
def __str__(self):
|
||||
|
24
aggregator/signals.py
Normal file
24
aggregator/signals.py
Normal file
@ -0,0 +1,24 @@
|
||||
from django.db import transaction
|
||||
from pyrogram import Error
|
||||
|
||||
from .client import get_client
|
||||
from .models import Chat, AggregationSource
|
||||
from .tasks import collect_new_messages
|
||||
|
||||
|
||||
def aggregation_source_deleted(sender, instance: AggregationSource, **kwargs):
|
||||
if not AggregationSource.objects.filter(chat_id=instance.chat_id):
|
||||
Chat.objects.filter(chat_id=instance.chat_id).delete()
|
||||
|
||||
|
||||
def chat_created(sender, instance: Chat, created, **kwargs):
|
||||
if created:
|
||||
transaction.on_commit(lambda: collect_new_messages.delay(instance.pk))
|
||||
|
||||
|
||||
def chat_deleted(sender, instance: Chat, **kwargs):
|
||||
with get_client() as client:
|
||||
try:
|
||||
client.leave_chat(instance.chat_id)
|
||||
except Error:
|
||||
pass
|
Loading…
Reference in New Issue
Block a user