Add machine-readable ballot information (tsv and json) for all drafts: /doc/<draftname>/ballot.tsv and /doc/<draftname>/ballot.json.

- Legacy-Id: 2254
This commit is contained in:
Henrik Levkowetz 2010-05-11 13:36:38 +00:00
parent 8f74caf7d2
commit d0c929d352
3 changed files with 33 additions and 7 deletions

View file

@ -41,5 +41,7 @@ urlpatterns = patterns('',
(r'^(?P<name>[^/]+)/$', views_doc.document_main),
(r'^(?P<name>[^/]+)/_debug.data$', views_doc.document_debug),
(r'^(?P<name>[^/]+)/_ballot.data$', views_doc.document_ballot),
(r'^(?P<name>[^/]+)/ballot.tsv$', views_doc.ballot_tsv),
(r'^(?P<name>[^/]+)/ballot.json$', views_doc.ballot_json),
(r'^ad/(?P<name>[^/]+)/$', views_search.by_ad)
)

View file

@ -32,19 +32,25 @@
import re, os
from datetime import datetime, time
try:
import json
except ImportError:
import simplejson as json
from django.http import HttpResponse, Http404
from django.shortcuts import render_to_response, get_object_or_404
from ietf.idtracker.models import InternetDraft, IDInternal, BallotInfo, DocumentComment
from ietf.idrfc.models import RfcIndex, DraftVersions
from ietf.idrfc.idrfc_wrapper import BallotWrapper, IdWrapper, RfcWrapper
from ietf.idrfc import markup_txt
from ietf import settings
from django.template import RequestContext
from django.template.loader import render_to_string
from django.template.defaultfilters import truncatewords_html
from ietf.idtracker.templatetags.ietf_filters import format_textarea, fill
from django.utils.decorators import decorator_from_middleware
from django.middleware.gzip import GZipMiddleware
from ietf import settings
from ietf.idtracker.models import InternetDraft, IDInternal, BallotInfo, DocumentComment
from ietf.idtracker.templatetags.ietf_filters import format_textarea, fill
from ietf.idrfc import markup_txt
from ietf.idrfc.models import RfcIndex, DraftVersions
from ietf.idrfc.idrfc_wrapper import BallotWrapper, IdWrapper, RfcWrapper
def document_debug(request, name):
r = re.compile("^rfc([1-9][0-9]*)$")
@ -198,7 +204,7 @@ def _get_versions(draft, include_replaced=True):
ov.append({"draft_name":d.filename, "revision":v.revision, "date":v.revision_date})
return ov
def document_ballot(request, name):
def get_ballot(name):
r = re.compile("^rfc([1-9][0-9]*)$")
m = r.match(name)
if m:
@ -216,5 +222,21 @@ def document_ballot(request, name):
raise Http404
ballot = BallotWrapper(id)
return ballot, doc
def document_ballot(request, name):
ballot, doc = get_ballot(name)
return render_to_response('idrfc/doc_ballot.html', {'ballot':ballot, 'doc':doc}, context_instance=RequestContext(request))
def ballot_tsv(request, name):
ballot, doc = get_ballot(name)
return HttpResponse(render_to_string('idrfc/ballot.tsv', {'ballot':ballot}, RequestContext(request)), content_type="text/plain")
def ballot_json(request, name):
ballot, doc = get_ballot(name)
response = HttpResponse(mimetype='application/json')
ballot_json = {}
for key in ballot.position_values:
ballot_json[key] = [ pos["ad_name"] for pos in ballot.get(key) ]
response.write(json.dumps(ballot_json))
return response

View file

@ -0,0 +1,2 @@
#Discuss Yes No Objection Abstain Recuse No Record
{% for p in ballot.get_discuss %}{{p.ad_name}}, {% endfor %} {% for p in ballot.get_yes %}{{p.ad_name}}, {% endfor %} {% for p in ballot.get_no_objection %}{{p.ad_name}}, {% endfor %} {% for p in ballot.get_abstain %}{{p.ad_name}}, {% endfor %} {% for p in ballot.get_recuse %}{{p.ad_name}}, {% endfor %} {% for p in ballot.get_no_record %}{{p.ad_name}}, {% endfor %}
Can't render this file because it has a wrong number of fields in line 2.