from django.dispatch import receiver from django.db.models.signals import post_save from api.models import User, TemporaryUser from django.contrib.auth.models import Permission from api.tasks import verify_user_with_person_api_task @receiver(post_save, sender=User) def assign_device_permissions(sender, instance, created, **kwargs): if created: device_permissions = Permission.objects.filter(content_type__model="device") atoll_read_permission = Permission.objects.get(codename="view_atoll") island_read_permission = Permission.objects.get(codename="view_island") payment_permissions = Permission.objects.filter( content_type__model="payment" ).exclude(codename__startswith="delete_") topup_permissions = Permission.objects.filter( content_type__model="topup" ).exclude(codename__startswith="delete_") wallet_transaction_permissions = Permission.objects.filter( content_type__model="wallettransaction" ).exclude(codename__startswith="delete_") user_read_only_permission = Permission.objects.get( codename="view_user", content_type__model="user" ) instance.user_permissions.add(user_read_only_permission) for permission in topup_permissions: instance.user_permissions.add(permission) for permission in device_permissions: instance.user_permissions.add(permission) instance.user_permissions.add(atoll_read_permission, island_read_permission) for permission in payment_permissions: instance.user_permissions.add(permission) for permission in wallet_transaction_permissions: instance.user_permissions.add(permission) @receiver(post_save, sender=TemporaryUser) def verify_user_with_person_api(sender, instance, created, **kwargs): if created: print(f"Temporary User Instance: {instance}") verify_user_with_person_api_task(instance.t_id)