Esempio n. 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))
Esempio n. 2
0
def revisions(request, id ):
    post = get_object_or_404(Node, id=id).leaf

    revisions = list(post.revisions.exclude(suggest_status="pendding").order_by('revised_at'))
    rev_ctx = []

    last_revision = None
    title_diff,body_diff,tags_diff = (None,None,None)
    edit_desc = None
    for i, revision in enumerate(revisions):
        if i > 0 :
            (title_diff,body_diff,tags_diff,edit_desc) = _diff_post(revision,last_revision,use_default=True)
        else:
            (title_diff,body_diff,tags_diff) = (revision.title,revision.html,mark_safe(tags_html(revision.tagname_list())))

        rev_ctx.append(dict(inst=revision))
        rev_ctx[i]['title'] = title_diff
        rev_ctx[i]['html'] = body_diff
        rev_ctx[i]['tags'] = tags_diff        

        if len(revision.summary) == 0:
            rev_ctx[i]['summary'] = edit_desc
        else:
            rev_ctx[i]['summary'] = revision.summary

        last_revision = revision

    rev_ctx.reverse()

    return render_to_response('revisions.html', {
            'post': post,
            'revisions': rev_ctx,
            'is_post':True,
            }, context_instance=RequestContext(request))