3 from question import Question
6 accepted = models.BooleanField(default=False)
7 accepted_at = models.DateTimeField(null=True, blank=True)
8 accepted_by = models.ForeignKey(User, null=True)
10 class Meta(QandA.Meta):
15 return self.question.headline
17 def mark_accepted(self, user):
18 if not self.accepted and not self.question.answer_accepted:
20 self.accepted_at = datetime.datetime.now()
21 self.accepted_by = user
23 self.question.accepted_answer = self
25 answer_accepted.send(sender=Answer, answer=self, user=user)
30 def unmark_accepted(self, user):
34 self.question.accepted_answer = None
36 answer_accepted_canceled.send(sender=Answer, answer=self, user=user)
41 def _update_question_answer_count(self, diff):
42 self.question.answer_count = self.question.answer_count + diff
45 def activate_revision(self, user, revision):
46 super(Answer, self).activate_revision(user, revision)
47 self.question.update_last_activity(user)
49 def mark_deleted(self, user):
50 if super(Answer, self).mark_deleted(user):
51 self._update_question_answer_count(-1)
53 def unmark_deleted(self):
54 if super(Answer, self).unmark_deleted():
55 self._update_question_answer_count(1)
57 def get_latest_revision(self):
58 return self.revisions.all()[0]
60 def get_question_title(self):
61 return self.question.title
63 def get_absolute_url(self):
64 return '%s#%s' % (self.question.get_absolute_url(), self.id)
66 def save(self, *args, **kwargs):
67 super(Answer, self).save(*args, **kwargs)
70 self._update_question_answer_count(1)
72 def __unicode__(self):
75 answer_accepted = django.dispatch.Signal(providing_args=['answer', 'user'])
76 answer_accepted_canceled = django.dispatch.Signal(providing_args=['answer', 'user'])
78 class AnswerRevision(NodeRevision):