|
1 | | -from django.contrib.contenttypes.models import ContentType |
2 | | -from django.db.models.signals import post_save |
| 1 | +from django.db.models.signals import post_save, post_delete |
3 | 2 | from django.dispatch import receiver |
4 | 3 |
|
5 | | -from news.models import News |
6 | | - |
| 4 | +from feed.services import create_news_for_model, delete_news_for_model |
| 5 | +from projects.models import Project |
7 | 6 |
|
8 | 7 | from vacancy.models import Vacancy |
9 | 8 |
|
10 | 9 |
|
11 | 10 | @receiver(post_save, sender=Vacancy) |
12 | 11 | def create_news_on_save(sender, instance, created, **kwargs): |
13 | | - if created: |
14 | | - content_type = ContentType.objects.filter(model="vacancy").first() |
15 | | - news_instance, created = News.objects.get_or_create( |
16 | | - content_type=content_type, object_id=instance.id |
17 | | - ) |
| 12 | + if instance.is_active: |
| 13 | + create_news_for_model(instance) |
| 14 | + else: |
| 15 | + delete_news_for_model(instance) |
| 16 | + |
| 17 | + |
| 18 | +@receiver(post_delete, sender=Vacancy) |
| 19 | +def delete_news_vacancy(sender, instance, **kwargs): |
| 20 | + delete_news_for_model(instance) |
| 21 | + |
| 22 | + |
| 23 | +@receiver(post_save, sender=Project) |
| 24 | +def create_news_on_created_project(sender, instance, created, **kwargs): |
| 25 | + if not instance.draft: |
| 26 | + create_news_for_model(instance) |
| 27 | + else: |
| 28 | + delete_news_for_model(instance) |
| 29 | + |
| 30 | + |
| 31 | +@receiver(post_delete, sender=Project) |
| 32 | +def delete_news_project(sender, instance, **kwargs): |
| 33 | + delete_news_for_model(instance) |
0 commit comments