def delete_agree(sender, instance, **kwargs): """ Undo the updates when the agree was created. """ try: instance.review except ObjectDoesNotExist: return False signalAPI.remove_activity(sender_id=instance.giver_id, verb="re-raved", model_name="review", obj_id=instance.review_id) signalAPI.remove_karma_action( recipient_id=instance.review.user_id, giver_id=instance.giver_id, karma=2, time_range=(instance.created_at, instance.created_at + dt.timedelta(hours=1))) signalAPI.remove_karma_action( recipient_id=instance.giver_id, giver_id=instance.giver_id, karma=1, time_range=(instance.created_at, instance.created_at + dt.timedelta(hours=1))) signalAPI.update_statistics(model_name="userstatistics", obj_id=instance.giver_id, agrees_out=-1, karma=-1) signalAPI.update_statistics(model_name="userstatistics", obj_id=instance.review.user_id, agrees_in=-1, karma=-2) signalAPI.update_statistics(model_name="review", obj_id=instance.review_id, agrees=-1) signalAPI.update_statistics(model_name="popularity", obj_id=instance.review.item_id, **utils.decrement_popularities( instance.created_at, instance.review.rating)) reviews = signalAPI.filter_then_count(model_name="review", user=instance.giver_id, item=instance.review.item_id) if reviews == 0: remaining = signalAPI.filter_then_order_by( model_name="agree", order_criteria="-created_at", giver=instance.giver_id, review__item=instance.review.item_id) if (not remaining or remaining[0].created_at < instance.created_at): old_rating = utils.get_rating_field(instance.review.rating) signalAPI.update_statistics(model_name="item", obj_id=instance.review.item_id, **{old_rating: -1}) if remaining: new_rating = utils.get_rating_field(remaining[0].review.rating) signalAPI.update_statistics(model_name="item", obj_id=instance.review.item_id, **{new_rating: 1})
def create_agree(sender, instance, created, **kwargs): """ Creates a notification for the writer of the review. Create two karma actions for the agree. Increment the giver's agrees by one and karma by one. Increment the receiver's agrees by one and karma by two. Increment the item's rating count by one. """ if created: signalAPI.queue_activity(sender_id=instance.giver_id, verb="re-raved", model_name="review", obj_id=instance.review_id) signalAPI.queue_notification(sender_id=instance.giver_id, recipient_id=instance.review.user_id, model_name="agree", obj_id=instance.pk) signalAPI.add_karma_action(recipient_id=instance.review.user_id, giver_id=instance.giver_id, karma=2) signalAPI.add_karma_action(recipient_id=instance.giver_id, giver_id=instance.giver_id, karma=1) signalAPI.update_statistics(model_name="userstatistics", obj_id=instance.giver_id, agrees_out=1, karma=1) signalAPI.update_statistics(model_name="userstatistics", obj_id=instance.review.user_id, agrees_in=1, karma=2) signalAPI.update_statistics(model_name="review", obj_id=instance.review_id, agrees=1) signalAPI.update_statistics(model_name="popularity", obj_id=instance.review.item_id, today=instance.review.rating, week=instance.review.rating, month=instance.review.rating, alltime=instance.review.rating) reviews = signalAPI.filter_then_count(model_name="review", user=instance.giver_id, item=instance.review.item_id) if reviews == 0: rating = utils.get_rating_field(instance.review.rating) signalAPI.update_statistics(model_name="item", obj_id=instance.review.item_id, **{rating: 1}) old_agrees = signalAPI.filter_excluding_me_then_order_by( model_name="agree", obj_id=instance.pk, order_criteria="-created_at", giver=instance.giver_id, review__item=instance.review.item_id) if old_agrees: rating = utils.get_rating_field(old_agrees[0].review.rating) signalAPI.update_statistics(model_name="item", obj_id=instance.review.item_id, **{rating: -1})
def delete_agree(sender, instance, **kwargs): """ Undo the updates when the agree was created. """ try: instance.review except ObjectDoesNotExist: return False signalAPI.remove_activity( sender_id=instance.giver_id, verb="re-raved", model_name="review", obj_id=instance.review_id ) signalAPI.remove_karma_action( recipient_id=instance.review.user_id, giver_id=instance.giver_id, karma=2, time_range=(instance.created_at, instance.created_at+dt.timedelta(hours=1)) ) signalAPI.remove_karma_action( recipient_id=instance.giver_id, giver_id=instance.giver_id, karma=1, time_range=(instance.created_at, instance.created_at+dt.timedelta(hours=1)) ) signalAPI.update_statistics( model_name="userstatistics", obj_id=instance.giver_id, agrees_out=-1, karma=-1 ) signalAPI.update_statistics( model_name="userstatistics", obj_id=instance.review.user_id, agrees_in=-1, karma=-2 ) signalAPI.update_statistics( model_name="review", obj_id=instance.review_id, agrees=-1 ) signalAPI.update_statistics( model_name="popularity", obj_id=instance.review.item_id, **utils.decrement_popularities(instance.created_at, instance.review.rating) ) reviews = signalAPI.filter_then_count( model_name="review", user=instance.giver_id, item=instance.review.item_id ) if reviews == 0: remaining = signalAPI.filter_then_order_by( model_name="agree", order_criteria="-created_at", giver=instance.giver_id, review__item=instance.review.item_id ) if (not remaining or remaining[0].created_at < instance.created_at): old_rating = utils.get_rating_field(instance.review.rating) signalAPI.update_statistics( model_name="item", obj_id=instance.review.item_id, **{ old_rating: -1 } ) if remaining: new_rating = utils.get_rating_field( remaining[0].review.rating) signalAPI.update_statistics( model_name="item", obj_id=instance.review.item_id, **{ new_rating: 1 } )
def create_agree(sender, instance, created, **kwargs): """ Creates a notification for the writer of the review. Create two karma actions for the agree. Increment the giver's agrees by one and karma by one. Increment the receiver's agrees by one and karma by two. Increment the item's rating count by one. """ if created: signalAPI.queue_activity( sender_id=instance.giver_id, verb="re-raved", model_name="review", obj_id=instance.review_id ) signalAPI.queue_notification( sender_id=instance.giver_id, recipient_id=instance.review.user_id, model_name="agree", obj_id=instance.pk ) signalAPI.add_karma_action( recipient_id=instance.review.user_id, giver_id=instance.giver_id, karma=2 ) signalAPI.add_karma_action( recipient_id=instance.giver_id, giver_id=instance.giver_id, karma=1 ) signalAPI.update_statistics( model_name="userstatistics", obj_id=instance.giver_id, agrees_out=1, karma=1 ) signalAPI.update_statistics( model_name="userstatistics", obj_id=instance.review.user_id, agrees_in=1, karma=2 ) signalAPI.update_statistics( model_name="review", obj_id=instance.review_id, agrees=1 ) signalAPI.update_statistics( model_name="popularity", obj_id=instance.review.item_id, today=instance.review.rating, week=instance.review.rating, month=instance.review.rating, alltime=instance.review.rating ) reviews = signalAPI.filter_then_count( model_name="review", user=instance.giver_id, item=instance.review.item_id ) if reviews == 0: rating = utils.get_rating_field(instance.review.rating) signalAPI.update_statistics( model_name="item", obj_id=instance.review.item_id, **{ rating: 1} ) old_agrees = signalAPI.filter_excluding_me_then_order_by( model_name="agree", obj_id=instance.pk, order_criteria="-created_at", giver=instance.giver_id, review__item=instance.review.item_id ) if old_agrees: rating = utils.get_rating_field( old_agrees[0].review.rating) signalAPI.update_statistics( model_name="item", obj_id=instance.review.item_id, **{ rating: -1 } )