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