Advertisement
Guest User

Untitled

a guest
Feb 12th, 2016
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.35 KB | None | 0 0
  1. def mark_payment_as_sent_action():
  2. ''' Admin action to mark payment as sent '''
  3.  
  4. def mark_payment_as_sent(modeladmin, request, queryset):
  5.  
  6. # #####################################################################
  7. # This is what I currently do
  8. payments = queryset.filter(status=models.Payment.S_PENDING)
  9.  
  10. # This is what I want to do
  11. payments = queryset.pending()
  12. # #####################################################################
  13.  
  14. # Do stuff with filtered payments
  15.  
  16. return HttpResponseRedirect("...")
  17.  
  18. mark_payment_as_sent.short_description = "Mark as sent"
  19. return mark_payment_as_sent
  20.  
  21. class PaymentQuerySet(models.query.QuerySet):
  22.  
  23. def pending(self):
  24. return self.filter(status=self.model.S_PENDING)
  25.  
  26. class PaymentManager(models.Manager):
  27. use_for_related_fields = True
  28.  
  29. def get_query_set(self):
  30. return PaymentQuerySet(self.model)
  31.  
  32. def pending(self, *args, **kwargs):
  33. return self.get_query_set().pending(*args, **kwargs)
  34.  
  35. class Payment(models.Model):
  36.  
  37. status = models.CharField(
  38. max_length=25,
  39. choices=((S_PENDING, 'Pending'), ...)
  40. )
  41.  
  42. objects = managers.PaymentManager()
  43.  
  44. @admin.register(models.Payment)
  45. class PaymentsAdmin(admin.ModelAdmin):
  46.  
  47. actions = (
  48. admin_actions.mark_payment_as_sent_action(),
  49. )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement