You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

67 lines
2.2 KiB

from django.contrib.auth.models import Group
from rest_registration.signals import user_registered
from service.layer_service import LayerService
from service.models import Post_and_pvz, Post_and_pvzGroup, Post_and_pvzCategory, OtherObjects, OtherObjectsGroup, \
OtherObjectsCategory, PostMLChecker
from django.db.models.signals import post_save
from django.dispatch import receiver
from service.tasks import raschet
def user_created(sender, user, request, **kwargs):
group = Group.objects.get(name='Зритель')
group.user_set.add(user)
user.save()
user_registered.connect(user_created)
@receiver(post_save, sender=Post_and_pvz)
def post_pvz_handler(sender, instance, **kwargs):
LayerService().count_post_pvz_for_placementpoint(instance)
checker = PostMLChecker.objects.first()
if not checker:
raschet.delay()
else:
if checker.current >= checker.target - 1:
raschet.delay()
PostMLChecker.objects.all().delete()
else:
checker.current += 1
checker.save()
@receiver(post_save, sender=Post_and_pvzGroup)
def post_group_handler(sender, instance, **kwargs):
objects = Post_and_pvz.objects.filter(group=instance)
PostMLChecker.objects.create(target=objects.count())
for obj in objects:
obj.include_in_ml = instance.include_in_ml
obj.visible = instance.visible
obj.save()
@receiver(post_save, sender=Post_and_pvzCategory)
def post_category_handler(sender, instance, **kwargs):
objects = Post_and_pvzGroup.objects.filter(category=instance)
PostMLChecker.objects.create(target=Post_and_pvz.objects.filter(category=instance).count())
for obj in objects:
obj.include_in_ml = instance.include_in_ml
obj.visible = instance.visible
obj.save()
@receiver(post_save, sender=OtherObjectsGroup)
def other_group_handler(sender, instance, **kwargs):
OtherObjects.objects.filter(group=instance).update(visible=instance.visible)
@receiver(post_save, sender=OtherObjectsCategory)
def other_category_handler(sender, instance, **kwargs):
objects = OtherObjectsGroup.objects.filter(category=instance)
for obj in objects:
obj.visible = instance.visible
obj.save()