def vote_post_save(sender, instance, created, **kwargs): if created: Feedback.objects.filter(id=instance.feedback_id).update(score=F('score') + get_vt_weight(int(instance.type_id))) if int(instance.type_id) == 1: # Agree Feedback.objects.filter(id=instance.feedback_id).update(agrees_count=F('agrees_count') + 1) elif int(instance.type_id) == 2: # Disagree Feedback.objects.filter(id=instance.feedback_id).update(disagrees_count=F('disagrees_count') + 1)
def vote_post_delete(sender, instance, **kwargs): Feedback.objects.filter(id=instance.feedback_id).update(score=F('score') - get_vt_weight(int(instance.type_id))) if int(instance.type_id) == 1: # vote.type_id = 1 is Agree Feedback.objects.filter(id=instance.feedback_id).update(agrees_count=F('agrees_count') - 1) elif int(instance.type_id) == 2: # Disagree Feedback.objects.filter(id=instance.feedback_id).update(disagrees_count=F('disagrees_count') - 1) if instance.type_id == 1: # 1 = Agree try: priority = Priority.objects.get(marked_by_id=instance.voted_by_id, feedback_id=instance.feedback_id) except Priority.DoesNotExist: pass else: feedback = Feedback.objects.get(pk=priority.feedback_id) priorities = Priority.objects.filter(marked_by_id=instance.voted_by_id, feedback__item=feedback.item_id, feedback__is_positive=feedback.is_positive, value__gte=priority.value) for priority in priorities: priority.delete()