Guest User

Untitled

a guest
Feb 12th, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.41 KB | None | 0 0
  1. class Product(models.Model):
  2. name = models.CharField(max_length=100)
  3. price = models.PositiveIntegerField()
  4. tax_rate = models.PositiveIntegerField()
  5. display_price = models.PositiveInteger()
  6. inputed_by = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, blank=True, on_delete=models.SET_NULL)
  7. updated_by = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, blank=True, on_delete=models.SET_NULL)
  8.  
  9. def save_model(self, request, obj, form, change):
  10. update_fields = []
  11. if not obj.pk:
  12. obj.inputed_by = request.user
  13. elif change:
  14. obj.updated_by = request.user
  15.  
  16. if form.initial['tax_rate'] != form.cleaned_data['tax_rate']:
  17. update_fields.append('tax_rate')
  18. if form.initial['price'] != form.cleaned_data['price']:
  19. update_fields.append('price')
  20.  
  21. obj.save(update_fields=update_fields)
  22. super().save_model(request, obj, form, change)
  23.  
  24. @receiver(post_save, sender=Product, dispatch_uid="update_display_price")
  25. def update_display_price(sender, **kwargs):
  26. created = kwargs['created']
  27. instance = kwargs['instance']
  28. updated = kwargs['update_fields']
  29. checklist = ['tax_rate', 'price']
  30.  
  31. if created:
  32. instance.display_price = instance.price+instance.tax_rate
  33. instance.save()
  34. elif set(checklist).issubset(updated):
  35. instance.display_price = instance.price+instance.tax_rate
  36. instance.save()
Add Comment
Please, Sign In to add comment