Ejemplo n.º 1
0
def answer_save(request, q_id):
    question = Question.objects.get(id=q_id)
    content = request.POST.get("content", "")
    if not content:
        request.session["error_message"] = u"풀이의 내용을 입력하세요"
        return redirect(question.get_absolute_url())

    content = unicode.strip(content)
    profile = get_profile(request)

    #
    # 풀이작성 시 알림메일 발송 대상
    #
    emails = []

    answer = Answer()
    answer.profile = profile
    answer.content = content
    answer.save()

    revision = Revision(profile=profile, content=content)
    revision.save()
    answer.revisions.add(revision)

    question.answers.add(answer)
    question.modify_time = datetime.datetime.today()
    question.save()

    request.session["ok_message"] = u"풀이가 작성되었습니다"

    body = u"""%(user)s 님의 풀이 (작성일시: %(create_time)s)
-----------------------------------------------------------------------------

%(content)s

-----------------------------------------------------------------------------
%(subject)s

- http://codingdojang.com%(url)s
    """ % {
        "user": profile.name,
        "create_time": answer.register_time.strftime(u"%Y-%m-%d %X"),
        "content": content,
        "subject": question.subject,
        "url": answer.get_absolute_url(),
    }

    if question.profile != profile:
        emails.append(question.profile.email)

    #
    # subscriber: 질문 구독자에게도 답글 알림메일을 발송
    #
    for subscriber in question.subscriber.all():
        if subscriber != profile:
            emails.append(subscriber.email)

    send_mail(u"[%s] 글에 풀이가 작성되었습니다." % (question.subject),
              body,
              settings.DEFAULT_FROM_EMAIL,
              emails)

    cache_remove(question.id)
    return redirect(answer.get_absolute_url())