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))
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))
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, })