X-Git-Url: https://git.openstreetmap.org/osqa.git/blobdiff_plain/77c34a5005c5e159e7795c985888162b88609d5d..0f2d00f9d7d5d28149707f66c719b28edfe51aed:/forum/models/answer.py diff --git a/forum/models/answer.py b/forum/models/answer.py index 85d671a..bac79af 100644 --- a/forum/models/answer.py +++ b/forum/models/answer.py @@ -2,49 +2,18 @@ from base import * from question import Question -class AnswerManager(CachedManager): - def create_new(self, question=None, author=None, added_at=None, wiki=False, text='', email_notify=False): - answer = Answer( - question = question, - author = author, - added_at = added_at, - wiki = wiki, - html = text - ) - if answer.wiki: - answer.last_edited_by = answer.author - answer.last_edited_at = added_at - answer.wikified_at = added_at - - answer.save() - - #update question data - question.last_activity_at = added_at - question.last_activity_by = author - question.save() - - AnswerRevision.objects.create( - answer = answer, - revision = 1, - author = author, - revised_at = added_at, - summary = CONST['default_version'], - text = text - ) - - -class Answer(Content): - question = models.ForeignKey('Question', related_name='answers') +class Answer(QandA): accepted = models.BooleanField(default=False) accepted_at = models.DateTimeField(null=True, blank=True) accepted_by = models.ForeignKey(User, null=True) - - objects = AnswerManager() - - class Meta(Content.Meta): + class Meta(QandA.Meta): db_table = u'answer' + @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 @@ -71,6 +40,10 @@ class Answer(Content): 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) @@ -98,35 +71,6 @@ class Answer(Content): return self.html -class AnswerRevision(ContentRevision): - """A revision of an Answer.""" - answer = models.ForeignKey('Answer', related_name='revisions') - - def get_absolute_url(self): - return reverse('answer_revisions', kwargs={'id':self.answer.id}) - - def get_question_title(self): - return self.answer.question.title - - class Meta(ContentRevision.Meta): - db_table = u'answer_revision' - ordering = ('-revision',) - - def save(self, *args, **kwargs): - """Looks up the next available revision number if not set.""" - if not self.revision: - self.revision = AnswerRevision.objects.filter( - answer=self.answer).values_list('revision', - flat=True)[0] + 1 - super(AnswerRevision, self).save(*args, **kwargs) - -class AnonymousAnswer(AnonymousContent): - question = models.ForeignKey('Question', related_name='anonymous_answers') - - def publish(self,user): - added_at = datetime.datetime.now() - #print user.id - Answer.objects.create_new(question=self.question,wiki=self.wiki, - added_at=added_at,text=self.text, - author=user) - self.delete() +class AnswerRevision(NodeRevision): + class Meta: + proxy = True \ No newline at end of file