import random import string from django.db.models.signals import post_save from django.dispatch import receiver from django.conf import settings from .models import Club, FailedApiCall, CustomUser import requests def generate_unique_code(): characters = string.ascii_letters + string.digits while True: code = ''.join(random.sample(characters, 3)) if not Club.objects.filter(broadcast_code=code).exists(): return code @receiver(post_save, sender=Club) def assign_unique_code(sender, instance, created, **kwargs): if created and not instance.broadcast_code: instance.broadcast_code = generate_unique_code() instance.save() DISCORD_WEBHOOK_URL = 'https://discord.com/api/webhooks/1248191778134163486/sSoTL6cULCElWr2YFwyllsg7IXxHcCx_YMDJA_cUHtVUU4WOfN-5M7drCJuwNBBfAk9a' @receiver(post_save, sender=FailedApiCall) def notify_discord_on_create(sender, instance, created, **kwargs): notify_object_creation_on_discord(created, instance) @receiver(post_save, sender=CustomUser) def notify_user_creation_on_discord(sender, instance, created, **kwargs): notify_object_creation_on_discord(created, instance) def notify_object_creation_on_discord(created, instance): if created: default_db_engine = settings.DATABASES['default']['ENGINE'] if default_db_engine != 'django.db.backends.sqlite3': message = f'New {instance.__class__.__name__} created: {instance}' send_discord_message(DISCORD_WEBHOOK_URL, message) def send_discord_message(webhook_url, content): data = { "content": content } response = requests.post(webhook_url, json=data) if response.status_code != 204: raise ValueError( f'Error sending message to Discord webhook: {response.status_code}, {response.text}' )