Пример #1
0
def _diff_post(revision,last_revision,use_default=False,render_mode=False,is_answer=False):
    title_diff = None
    body_diff = None
    tags_diff = None
    descs = []

    if use_default:
        title_diff = revision.title
        body_diff = revision.html        
        tags_diff = mark_safe(tags_html(revision.tagname_list()))

    if last_revision is not None:
        if not is_answer and last_revision.title != revision.title:
            title_diff = mark_safe(htmldiff(revision.title,last_revision.title ))
            descs.append( _("edited title"))

        if revision.html != last_revision.html:
            if not render_mode:#markdown diff
                body_diff = mark_safe(htmldiff(revision.body,last_revision.body ))
            else:#render html diff
                revision_html = static_content(revision.html,"markdown")
                last_revision_html = static_content(last_revision.html,"markdown")
                body_diff = htmldiff(revision_html,last_revision_html,render_mode=True )
            descs.append(_("edited body"))

        current_tags = " ".join(revision.tagname_list())
        last_tags = " ".join(last_revision.tagname_list())
        if last_tags != current_tags:
            tags_diff = tagsdiff(current_tags,last_tags)
            tags_diff = mark_safe(tags_html(tags_diff))
            descs.append(_("edited tags"))
            
    return (title_diff,body_diff,tags_diff,",".join(descs))
Пример #2
0
def _diff_tag_post(revision,last_revision,use_default=False,render_mode=False):
    about_diff = None
    detail_diff = None
    descs = []

    if use_default:
        about_diff = revision.about
        detail_diff = revision.detail

    if last_revision is not None:
        if revision.about != last_revision.about:
            about_diff = mark_safe(htmldiff(revision.about,last_revision.about ))
            descs.append(_("edited about"))

        if revision.detail != last_revision.detail:
            if not render_mode:
                detail_diff = mark_safe(htmldiff(revision.detail,last_revision.detail )) 
            else:
                revision_detail = static_content(revision.detail,"markdown")
                last_revision_detail = static_content(last_revision.detail,"markdown")
                detail_diff = htmldiff(revision_detail,last_revision_detail,render_mode=True )
            descs.append(_("edited detail"))

    return (about_diff,detail_diff,",".join(descs))
Пример #3
0
def question(request, id, slug='', answer=None):
    try:
        question = Question.objects.get(id=id)

        question_headline = question.headline
        question_body = question.html
        tags = question.tags.all()

        if question.pendding_suggestion and question.pendding_suggestion.author == request.user:
            question_body = static_content(question.pendding_suggestion.body,"markdown")
            question_headline = question.pendding_suggestion.title
            tags = list(Tag.objects.filter(name__in=question.pendding_suggestion.tagname_list()))

    except:
        if slug:
            question = match_question_slug(id, slug)
            if question is not None:
                return HttpResponseRedirect(question.get_absolute_url())

        raise Http404()

    if question.nis.deleted and not request.user.can_view_deleted_post(question):
        raise Http404

    if request.GET.get('type', None) == 'rss':
        return RssAnswerFeed(request, question, include_comments=request.GET.get('comments', None) == 'yes')(request)

    if answer:
        answer = get_object_or_404(Answer, id=answer)

        if (question.nis.deleted and not request.user.can_view_deleted_post(question)) or answer.question != question:
            raise Http404

        if answer.marked:
            return HttpResponsePermanentRedirect(question.get_absolute_url())

        return answer_redirect(request, answer)

    if settings.FORCE_SINGLE_URL and (slug != slugify(question.title)):
        return HttpResponsePermanentRedirect(question.get_absolute_url())

    if request.POST:
        answer_form = AnswerForm(request.POST, user=request.user)
    else:
        answer_form = AnswerForm(user=request.user)

    answers = request.user.get_visible_answers(question)

    update_question_view_times(request, question)

    if request.user.is_authenticated():
        try:
            subscription = QuestionSubscription.objects.get(question=question, user=request.user)
        except:
            subscription = False
    else:
        subscription = False

    return pagination.paginated(request, ('answers', AnswerPaginatorContext()), {
    "question" : question,
    "question_headline" : question_headline,    
    "question_body" : question_body,
    "tags" : tags,
    "answer" : answer_form,
    "answers" : answers,
    "similar_questions" : question.get_related_questions(),
    "subscription": subscription,
    })