X-Git-Url: https://git.openstreetmap.org./osqa.git/blobdiff_plain/1a949f7c97dc2f34c135f5cdf088df2927d3d652..6f9524a34c490d43db43a1ae4b44b40d77ce691a:/forum/activity.py diff --git a/forum/activity.py b/forum/activity.py index 9c27e12..1687798 100644 --- a/forum/activity.py +++ b/forum/activity.py @@ -1,50 +1,41 @@ import datetime from django.db.models.signals import post_save from forum.models import * -from forum.models.base import marked_deleted -from forum.models.meta import vote_canceled +from forum.models.base import marked_deleted, mark_canceled +from forum.models.node import node_create +from forum.models.answer import answer_accepted from forum.authentication import user_updated from forum.const import * -def record_ask_event(instance, created, **kwargs): - if created: - activity = Activity(user=instance.author, active_at=instance.added_at, content_object=instance, activity_type=TYPE_ACTIVITY_ASK_QUESTION) - activity.save() - -post_save.connect(record_ask_event, sender=Question) - - -def record_answer_event(instance, created, **kwargs): - if created: - activity = Activity(user=instance.author, active_at=instance.added_at, content_object=instance, activity_type=TYPE_ACTIVITY_ANSWER) - activity.save() +def record_ask_event(instance, **kwargs): + activity = Activity(user=instance.author, active_at=instance.added_at, content_object=instance, activity_type=TYPE_ACTIVITY_ASK_QUESTION) + activity.save() -post_save.connect(record_answer_event, sender=Answer) +node_create.connect(record_ask_event, sender=Question) -def record_comment_event(instance, created, **kwargs): - if created: - act_type = (instance.content_object.__class__ is Question) and TYPE_ACTIVITY_COMMENT_QUESTION or TYPE_ACTIVITY_COMMENT_ANSWER - activity = Activity(user=instance.user, active_at=instance.added_at, content_object=instance, activity_type=act_type) - activity.save() +def record_answer_event(instance, **kwargs): + activity = Activity(user=instance.author, active_at=instance.added_at, content_object=instance, activity_type=TYPE_ACTIVITY_ANSWER) + activity.save() -post_save.connect(record_comment_event, sender=Comment) +node_create.connect(record_answer_event, sender=Answer) -def record_question_revision_event(instance, created, **kwargs): - if created and instance.revision <> 1: - activity = Activity(user=instance.author, active_at=instance.revised_at, content_object=instance, activity_type=TYPE_ACTIVITY_UPDATE_QUESTION) - activity.save() +def record_comment_event(instance, **kwargs): + act_type = (instance.content_object.__class__ is Question) and TYPE_ACTIVITY_COMMENT_QUESTION or TYPE_ACTIVITY_COMMENT_ANSWER + activity = Activity(user=instance.user, active_at=instance.added_at, content_object=instance, activity_type=act_type) + activity.save() -post_save.connect(record_question_revision_event, sender=QuestionRevision) +node_create.connect(record_comment_event, sender=Comment) -def record_answer_revision_event(instance, created, **kwargs): - if created and instance.revision <> 1: - activity = Activity(user=instance.author, active_at=instance.revised_at, content_object=instance, activity_type=TYPE_ACTIVITY_UPDATE_ANSWER) +def record_revision_event(instance, created, **kwargs): + if created and instance.revision <> 1 and instance.node.node_type in ('question', 'answer',): + activity_type = instance.node.node_type == 'question' and TYPE_ACTIVITY_UPDATE_QUESTION or TYPE_ACTIVITY_UPDATE_ANSWER + activity = Activity(user=instance.author, active_at=instance.revised_at, content_object=instance, activity_type=activity_type) activity.save() -post_save.connect(record_answer_revision_event, sender=AnswerRevision) +post_save.connect(record_revision_event, sender=NodeRevision) def record_award_event(instance, created, **kwargs): @@ -56,13 +47,11 @@ def record_award_event(instance, created, **kwargs): post_save.connect(record_award_event, sender=Award) -def record_answer_accepted(instance, created, **kwargs): - if not created and 'accepted' in instance.get_dirty_fields() and instance.accepted: - activity = Activity(user=instance.question.author, active_at=datetime.datetime.now(), \ - content_object=instance, activity_type=TYPE_ACTIVITY_MARK_ANSWER) - activity.save() +def record_answer_accepted(answer, user, **kwargs): + activity = Activity(user=user, active_at=datetime.datetime.now(), content_object=answer, activity_type=TYPE_ACTIVITY_MARK_ANSWER) + activity.save() -post_save.connect(record_answer_accepted, sender=Answer) +answer_accepted.connect(record_answer_accepted) def update_last_seen(instance, **kwargs): @@ -88,7 +77,7 @@ def record_cancel_vote(instance, **kwargs): activity = Activity(user=instance.user, active_at=datetime.datetime.now(), content_object=instance, activity_type=act_type) activity.save() -vote_canceled.connect(record_cancel_vote) +mark_canceled.connect(record_cancel_vote, sender=Vote) def record_delete_post(instance, **kwargs):