From 2bb0dea9fa2a6e62b9066615096b052edcd7fe27 Mon Sep 17 00:00:00 2001 From: ismail Date: Sun, 29 Jun 2025 17:38:08 +0300 Subject: [PATCH] update on the notification --- inventory/models.py | 3 +++ inventory/signals.py | 62 +++++++++++++++++++++++++++++++++++++++++++- inventory/urls.py | 2 +- inventory/views.py | 4 +++ 4 files changed, 69 insertions(+), 2 deletions(-) diff --git a/inventory/models.py b/inventory/models.py index 2e1fea2a..4ba4b9bd 100644 --- a/inventory/models.py +++ b/inventory/models.py @@ -2202,6 +2202,9 @@ class Vendor(models.Model, LocalizedNameMixin): max_length=255, unique=True, verbose_name=_("Slug"), null=True, blank=True ) + def get_absolute_url(self): + return reverse("vendor_detail", kwargs={"dealer_slug":self.dealer.slug,"pk": self.pk}) + def save(self, *args, **kwargs): if not self.slug: base_slug = slugify(self.name) diff --git a/inventory/signals.py b/inventory/signals.py index bfcca5b0..2692d058 100644 --- a/inventory/signals.py +++ b/inventory/signals.py @@ -920,4 +920,64 @@ def car_created_notification(sender, instance, created, **kwargs): New Car {instance.vin} has been added to dealer {instance.dealer.name}. View """, - ) \ No newline at end of file + ) +@receiver(post_save, sender=PurchaseOrderModel) +def po_fullfilled_notification(sender, instance, created, **kwargs): + if instance.is_fulfilled(): + dealer = models.Dealer.objects.get(entity=instance.entity) + recipients = models.CustomGroup.objects.filter(dealer=instance.dealer,name="Accountant").first().group.user_set.all() + for recipient in recipients: + models.Notification.objects.create( + user=recipient, + message=f""" + New Purchase Order has been added. + View + """, + ) +@receiver(post_save, sender=models.Vendor) +def vendor_created_notification(sender, instance, created, **kwargs): + if created: + recipients = models.CustomGroup.objects.filter(dealer=instance.dealer,name="Inventory").first().group.user_set.excludeall() + + for recipient in recipients: + models.Notification.objects.create( + user=recipient, + message=f""" + New Vendor {instance.name} has been added to dealer {instance.dealer.name}. + View + """, + ) + +@receiver(post_save, sender=models.SaleOrder) +def sale_order_created_notification(sender, instance, created, **kwargs): + if created: + recipients = models.CustomGroup.objects.filter(dealer=instance.dealer,name="Accountant").first().group.user_set.exclude(email=instance.dealer.user.email) + + for recipient in recipients: + models.Notification.objects.create( + user=recipient, + message=f""" + New Sale Order has been added for estimate:{instance.estimate}. + View + """, + ) +@receiver(post_save, sender=models.Lead) +def lead_created_notification(sender, instance, created, **kwargs): + if created: + models.Notification.objects.create( + user=instance.staff.user, + message=f""" + New Lead has been added. + View + """, + ) +@receiver(post_save, sender=models.Lead) +def lead_created_notification(sender, instance, created, **kwargs): + if created: + models.Notification.objects.create( + user=instance.staff.user, + message=f""" + New Lead has been added. + View + """, + ) diff --git a/inventory/urls.py b/inventory/urls.py index 2e95003c..b5469311 100644 --- a/inventory/urls.py +++ b/inventory/urls.py @@ -208,7 +208,7 @@ urlpatterns = [ path("notifications/fetch/", views.fetch_notifications, name="fetch_notifications"), path( - "/notifications/", + "notifications/", views.NotificationListView.as_view(), name="notifications_history", ), diff --git a/inventory/views.py b/inventory/views.py index 40693d5b..b950896b 100644 --- a/inventory/views.py +++ b/inventory/views.py @@ -5616,6 +5616,10 @@ def lead_transfer(request,dealer_slug, slug): if form.is_valid(): lead.staff = form.cleaned_data["transfer_to"] lead.save() + models.Notification.objects.create( + user=lead.staff.user, + message=f"You have been assigned a new lead: {lead.full_name}.", + ) messages.success(request, _("Lead transferred successfully")) else: messages.error(request, f"Invalid form data: {str(form.errors)}")