~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to lib/lp/answers/model/question.py

Show diffs side-by-side

added added

removed removed

Lines of Context:
87
87
from lp.answers.interfaces.questiontarget import IQuestionTarget
88
88
from lp.answers.model.answercontact import AnswerContact
89
89
from lp.answers.model.questionmessage import QuestionMessage
 
90
from lp.answers.model.questionreopening import create_questionreopening
90
91
from lp.answers.model.questionsubscription import QuestionSubscription
91
92
from lp.app.enums import ServiceUsage
92
93
from lp.bugs.interfaces.buglink import IBugLinkTarget
278
279
            raise InvalidQuestionStateError(
279
280
                "New status is same as the old one.")
280
281
 
 
282
 
281
283
        # If the previous state recorded an answer, clear those
282
 
        # information as well.
 
284
        # information as well, but copy it out for the reopening.
 
285
        old_status = self.status
 
286
        old_answerer = self.answerer
 
287
        old_date_solved = self.date_solved
283
288
        self.answerer = None
284
289
        self.answer = None
285
290
        self.date_solved = None
286
291
 
287
 
        return self._newMessage(
 
292
        msg = self._newMessage(
288
293
            user, comment, datecreated=datecreated,
289
294
            action=QuestionAction.SETSTATUS, new_status=new_status)
290
295
 
 
296
        if new_status == QuestionStatus.OPEN:
 
297
            create_questionreopening(
 
298
                self,
 
299
                msg,
 
300
                old_status,
 
301
                old_answerer,
 
302
                old_date_solved)
 
303
        return msg
 
304
 
291
305
    @notify_question_modified()
292
306
    def addComment(self, user, comment, datecreated=None):
293
307
        """See `IQuestion`."""
474
488
    @notify_question_modified()
475
489
    def reopen(self, comment, datecreated=None):
476
490
        """See `IQuestion`."""
 
491
        old_status = self.status
 
492
        old_answerer = self.answerer
 
493
        old_date_solved = self.date_solved
477
494
        if not self.can_reopen:
478
495
            raise InvalidQuestionStateError(
479
496
                "Question status != ANSWERED, EXPIRED or SOLVED.")
480
497
        msg = self._newMessage(
481
 
            self.owner, comment, datecreated=datecreated,
482
 
            action=QuestionAction.REOPEN, new_status=QuestionStatus.OPEN)
 
498
            self.owner,
 
499
            comment,
 
500
            datecreated=datecreated,
 
501
            action=QuestionAction.REOPEN,
 
502
            new_status=QuestionStatus.OPEN)
 
503
        create_questionreopening(
 
504
            self,
 
505
            msg,
 
506
            old_status,
 
507
            old_answerer,
 
508
            old_date_solved)
483
509
        self.answer = None
484
510
        self.answerer = None
485
511
        self.date_solved = None
705
731
                raise AssertionError(
706
732
                    'product_id and distribution_id are NULL')
707
733
        return projects
708
 
        
709
734
 
710
735
    @staticmethod
711
736
    def new(title=None, description=None, owner=None,