1234567891011121314151617181920212223242526272829 |
- from django.dispatch import receiver
- from django.db.models.signals import post_save
- from .models import IPPrefix, IPResource
- from ipaddress import ip_address, ip_network
- @receiver(post_save, sender=IPPrefix, dispatch_uid='ip_prefix')
- def ip_prefix(sender, instance, created, **kwargs):
- network = ip_network(instance.prefix)
- for ip in IPResource.objects.all():
- address = ip_address(ip.ip)
- if address in network:
- ip.prefixes.add(instance)
- else:
- ip.prefixes.remove(instance)
- @receiver(post_save, sender=IPResource, dispatch_uid='ip_resource')
- def ip_resource(sender, instance, created, **kwargs):
- address = ip_address(instance.ip)
- for prefix in IPPrefix.objects.all():
- network = ip_network(prefix.prefix)
- if address in network:
- instance.prefixes.add(prefix)
- else:
- instance.prefixes.remove(prefix)
|