X-Git-Url: https://git.openstreetmap.org./osqa.git/blobdiff_plain/3b2f9ebad3131bb86045f3ac1d3b4f43b6d78398..8b123b1f0d204c972d5a2554f9b27e4f7d8ae33f:/forum/models/answer.py diff --git a/forum/models/answer.py b/forum/models/answer.py index 01e0aae..04735a4 100644 --- a/forum/models/answer.py +++ b/forum/models/answer.py @@ -1,79 +1,23 @@ from base import * +from django.utils.translation import ugettext as _ -from question import Question +class Answer(Node): + friendly_name = _("answer") -class Answer(QandA): - accepted = models.BooleanField(default=False) - accepted_at = models.DateTimeField(null=True, blank=True) - accepted_by = models.ForeignKey(User, null=True) + class Meta(Node.Meta): + proxy = True - class Meta(QandA.Meta): - db_table = u'answer' + @property + def accepted(self): + return self.nis.accepted @property def headline(self): return self.question.headline - def mark_accepted(self, user): - if not self.accepted and not self.question.answer_accepted: - self.accepted = True - self.accepted_at = datetime.datetime.now() - self.accepted_by = user - self.save() - self.question.accepted_answer = self - self.question.save() - answer_accepted.send(sender=Answer, answer=self, user=user) - return True - - return False - - def unmark_accepted(self, user): - if self.accepted: - self.accepted = False - self.save() - self.question.accepted_answer = None - self.question.save() - answer_accepted_canceled.send(sender=Answer, answer=self, user=user) - return True - - return False - - def _update_question_answer_count(self, diff): - self.question.answer_count = self.question.answer_count + diff - self.question.save() - - def activate_revision(self, user, revision): - super(Answer, self).activate_revision(user, revision) - self.question.update_last_activity(user) - - def mark_deleted(self, user): - if super(Answer, self).mark_deleted(user): - self._update_question_answer_count(-1) - - def unmark_deleted(self): - if super(Answer, self).unmark_deleted(): - self._update_question_answer_count(1) - - def get_latest_revision(self): - return self.revisions.all()[0] - - def get_question_title(self): - return self.question.title - def get_absolute_url(self): - return '%s#%s' % (self.question.get_absolute_url(), self.id) - - def save(self, *args, **kwargs): - super(Answer, self).save(*args, **kwargs) - - if self._is_new: - self._update_question_answer_count(1) + return '%s/%s' % (self.question.get_absolute_url(), self.id) - def __unicode__(self): - return self.html - -answer_accepted = django.dispatch.Signal(providing_args=['answer', 'user']) -answer_accepted_canceled = django.dispatch.Signal(providing_args=['answer', 'user']) class AnswerRevision(NodeRevision): class Meta: