コード例 #1
0
ファイル: readers.py プロジェクト: samadhy/osqa
def question_revisions(request, id):
    post = get_object_or_404(Question, id=id)
    revisions = list(post.revisions.all())
    revisions.reverse()
    for i, revision in enumerate(revisions):
        revision.html = QUESTION_REVISION_TEMPLATE % {
            'title': revision.title,
            'html': sanitize_html(markdowner.convert(revision.text)),
            'tags': ' '.join(['<a class="post-tag">%s</a>' % tag
                              for tag in revision.tagnames.split(' ')]),
        }
        if i > 0:
            revisions[i].diff = htmldiff(revisions[i-1].html, revision.html)
        else:
            revisions[i].diff = QUESTION_REVISION_TEMPLATE % {
                'title': revisions[0].title,
                'html': sanitize_html(markdowner.convert(revisions[0].text)),
                'tags': ' '.join(['<a class="post-tag">%s</a>' % tag
                                 for tag in revisions[0].tagnames.split(' ')]),
            }
            revisions[i].summary = _('initial version') 
    return render_to_response('revisions_question.html', {
                              'post': post,
                              'revisions': revisions,
                              }, context_instance=RequestContext(request))
コード例 #2
0
def revisions(request, id):
    post = get_object_or_404(Node, id=id).leaf
    revisions = list(post.revisions.order_by('revised_at'))
    rev_ctx = []

    for i, revision in enumerate(revisions):
        rev_ctx.append(dict(inst=revision, html=template.loader.get_template('node/revision.html').render(template.Context({
        'title': revision.title,
        'html': revision.html,
        'tags': revision.tagname_list(),
        }))))

        if i > 0:
            rev_ctx[i]['diff'] = mark_safe(htmldiff(rev_ctx[i-1]['html'], rev_ctx[i]['html']))
        else:
            rev_ctx[i]['diff'] = mark_safe(rev_ctx[i]['html'])

        if not (revision.summary):
            rev_ctx[i]['summary'] = _('Revision n. %(rev_number)d') % {'rev_number': revision.revision}
        else:
            rev_ctx[i]['summary'] = revision.summary

    rev_ctx.reverse()

    return render_to_response('revisions.html', {
    'post': post,
    'revisions': rev_ctx,
    }, context_instance=RequestContext(request))
コード例 #3
0
ファイル: readers.py プロジェクト: daonb/OSQA
def revisions(request, id):
    post = get_object_or_404(Node, id=id).leaf
    revisions = list(post.revisions.order_by('revised_at'))
    rev_ctx = []

    for i, revision in enumerate(revisions):
        rev_ctx.append(dict(inst=revision, html=template.loader.get_template('node/revision.html').render(template.Context({
        'title': revision.title,
        'html': revision.html,
        'tags': revision.tagname_list(),
        }))))

        if i > 0:
            rev_ctx[i]['diff'] = mark_safe(htmldiff(rev_ctx[i-1]['html'], rev_ctx[i]['html']))
        else:
            rev_ctx[i]['diff'] = mark_safe(rev_ctx[i]['html'])

        if not (revision.summary):
            rev_ctx[i]['summary'] = _('Revision n. %(rev_number)d') % {'rev_number': revision.revision}
        else:
            rev_ctx[i]['summary'] = revision.summary

    rev_ctx.reverse()

    return render_to_response('revisions.html', {
    'post': post,
    'revisions': rev_ctx,
    }, context_instance=RequestContext(request))
コード例 #4
0
ファイル: readers.py プロジェクト: nickpack/OSQA
def revisions(request, id):
    post = get_object_or_404(Node, id=id).leaf
    revisions = list(post.revisions.order_by("revised_at"))
    rev_ctx = []

    for i, revision in enumerate(revisions):
        rev_ctx.append(
            dict(
                inst=revision,
                html=template.loader.get_template("node/revision.html").render(
                    template.Context({"title": revision.title, "html": revision.html, "tags": revision.tagname_list()})
                ),
            )
        )

        if i > 0:
            rev_ctx[i]["diff"] = mark_safe(htmldiff(rev_ctx[i - 1]["html"], rev_ctx[i]["html"]))
        else:
            rev_ctx[i]["diff"] = mark_safe(rev_ctx[i]["html"])

        if not (revision.summary):
            rev_ctx[i]["summary"] = _("Revision n. %(rev_number)d") % {"rev_number": revision.revision}
        else:
            rev_ctx[i]["summary"] = revision.summary

    rev_ctx.reverse()

    return render_to_response(
        "revisions.html", {"post": post, "revisions": rev_ctx}, context_instance=RequestContext(request)
    )
コード例 #5
0
ファイル: readers.py プロジェクト: samadhy/osqa
def answer_revisions(request, id):
    post = get_object_or_404(Answer, id=id)
    revisions = list(post.revisions.all())
    revisions.reverse()
    for i, revision in enumerate(revisions):
        revision.html = ANSWER_REVISION_TEMPLATE % {
            'html': sanitize_html(markdowner.convert(revision.text))
        }
        if i > 0:
            revisions[i].diff = htmldiff(revisions[i-1].html, revision.html)
        else:
            revisions[i].diff = revisions[i].text
            revisions[i].summary = _('initial version')
    return render_to_response('revisions_answer.html', {
                              'post': post,
                              'revisions': revisions,
                              }, context_instance=RequestContext(request))
コード例 #6
0
ファイル: subscriptions.py プロジェクト: viikasgarg/osqa
def revision_posted(action, new):
    post = action.node

    if post.node_type =="question":
        question = post

    else:
        question = post.abs_parent

    revisions = list(post.revisions.order_by('revised_at'))
    rev_ctx = []

    for i, revision in enumerate(revisions):
        rev_ctx.append(dict(inst=revision, html=template.loader.get_template('node/revision.html').render(template.Context({
        'title': revision.title,
        'html': revision.html,
        'category':revision.category_name(),
        'tags': revision.tagname_list(),
#        'recipients':revision.recipientname_list(),
        }))))

        if i > 0:
            rev_ctx[i]['diff'] = mark_safe(htmldiff(rev_ctx[i-1]['html'], rev_ctx[i]['html']))
        else:
            rev_ctx[i]['diff'] = mark_safe(rev_ctx[i]['html'])

        if not (revision.summary):
            rev_ctx[i]['summary'] = _('Revision n. %(rev_number)d') % {'rev_number': revision.revision}
        else:
            rev_ctx[i]['summary'] = revision.summary

    rev_ctx.reverse()

    #update mailing list according to last revision of category

    if post.node_type =="question":
       prev_question = revisions[-2]
       present_question = revisions[-1]
       if (prev_question.category != present_question.category):
           ## remove previous category subscriptions
           _recipient_ids = ",".join([category.mail_recipients for category in OsqaCategory.objects.filter(id__in =  prev_question.category.split(','))]).split(",")
           recipient_ids =[ recipient.strip()  for recipient in _recipient_ids if recipient.strip() ]
           if len(recipient_ids):
               category_subscribers = User.objects.filter(id__in =recipient_ids ).distinct()
               for subscriber in category_subscribers:
                   remove_subscription_if_exists(question, subscriber)

           ## remove previous mailing subscriptions
       if (prev_question.recipientnames != present_question.recipientnames):
           recipient_list = [ recipient.strip()  for recipient in prev_question.recipientnames.split(',') if recipient.strip() ]
           if len(recipient_list):
               mailing_subscribers = User.objects.filter(id__in = recipient_list ).distinct()
               for subscriber in mailing_subscribers:
                   remove_subscription_if_exists(question, subscriber)

        ## Add present mailing subscriptions
       if (prev_question.recipientnames != present_question.recipientnames):
           recipient_list = [ recipient.strip()  for recipient in present_question.recipientnames.split(',') if recipient.strip() ]
           if len(recipient_list):
               mailing_subscribers = User.objects.filter(id__in = recipient_list ).distinct()
               for subscriber in mailing_subscribers:
                   create_subscription_if_not_exists(question, subscriber)



       if (prev_question.category != present_question.category):
        ## Add present category subscriptions
        _recipient_ids = ",".join([category.mail_recipients for category in OsqaCategory.objects.filter(id__in =  present_question.category.split(','))]).split(",")
        recipient_ids =[ recipient.strip()  for recipient in _recipient_ids if recipient.strip() ]
        if len(recipient_ids):
            category_subscribers = User.objects.filter(id__in =recipient_ids ).distinct()
            for subscriber in category_subscribers:
                create_subscription_if_not_exists(question, subscriber)


    if not post.is_notifiable or not question.is_notifiable:
        return

    subscribers = question.subscribers.all().distinct()
    '''
    addressbook_contacts = question.addressbook_contacts() ## query containing all users which are in address book
    if  addressbook_contacts.exists():
        if subscribers.exists():
             subscribers |= addressbook_contacts ## adding address book contacts
        else:
             subscribers = addressbook_contacts
    '''
    if subscribers.exists():
        subscribers = filter_subscribers(subscribers.exclude(id=post.author.id))


        try:
            sender_mail = User.objects.get(user = post.author).mail;
            sender = {'name':post.author.username,'email':sender_mail }
        except: ## Use Default forum mail address in case of error
            sender_mail = unicode(settings.DEFAULT_FROM_EMAIL)
            sender = u'%s <%s>' % (unicode(settings.APP_SHORT_NAME), unicode(settings.DEFAULT_FROM_EMAIL))

        if subscribers.exists():
            send_template_email(subscribers, "notifications/emailrevision.html", {'post': post, 'revisions' : rev_ctx,'question':question},sender = sender, reply_to = sender_mail)

    create_subscription_if_not_exists(question, post.author)