Port idindex to new schema, fixes #770.

- Legacy-Id: 3985
This commit is contained in:
Ole Laursen 2012-02-27 18:46:27 +00:00
parent 95fc209f6b
commit 6afceb835e
3 changed files with 31 additions and 29 deletions

View file

@ -495,6 +495,9 @@ class InternetDraft(Document):
def docstate(self): def docstate(self):
s = self.get_state("draft-iesg") s = self.get_state("draft-iesg")
if s: if s:
subs = self.cur_sub_state
if subs:
return "%s::%s" % (s.name, subs)
return s.name return s.name
else: else:
return "I-D Exists" return "I-D Exists"

View file

@ -17,7 +17,7 @@ urlpatterns = patterns('',
(r'^all_id(?:_txt)?.html$', 'django.views.generic.simple.redirect_to', { 'url': 'http://www.ietf.org/id/all_id.txt' }), (r'^all_id(?:_txt)?.html$', 'django.views.generic.simple.redirect_to', { 'url': 'http://www.ietf.org/id/all_id.txt' }),
) )
if settings.SERVER_MODE != 'production' and not settings.USE_DB_REDESIGN_PROXY_CLASSES: if settings.SERVER_MODE != 'production':
# these haven't been ported # these haven't been ported
urlpatterns += patterns('', urlpatterns += patterns('',
(r'^_test/all_id.txt$', views.test_all_id_txt), (r'^_test/all_id.txt$', views.test_all_id_txt),

View file

@ -43,16 +43,20 @@ import re
import sys import sys
def all_id_txt(): def all_id_txt():
all_ids = InternetDraft.objects.order_by('filename') # we need a distinct to prevent the queries below from multiplying the result
in_track_ids = all_ids.filter(idinternal__rfc_flag=0).exclude(idinternal__cur_state__in=IDInternal.INACTIVE_STATES) all_ids = InternetDraft.objects.order_by('name').exclude(name__startswith="rfc").distinct()
exclude_ids = [item.id_document_tag for item in in_track_ids]
not_in_track = all_ids.exclude(id_document_tag__in=exclude_ids) inactive_states = ["pub", "watching", "dead"]
active = not_in_track.filter(status__status_id=IDInternal.ACTIVE)
published = not_in_track.filter(status__status_id=IDInternal.PUBLISHED) in_track_ids = all_ids.exclude(states__type="draft", states__slug="rfc").filter(states__type="draft-iesg").exclude(states__type="draft-iesg", states__slug__in=inactive_states)
expired = not_in_track.filter(status__status_id=IDInternal.EXPIRED) not_in_track = all_ids.filter(states__type="draft", states__slug="rfc") | all_ids.exclude(states__type="draft-iesg") | all_ids.filter(states__type="draft-iesg", states__slug__in=inactive_states)
withdrawn_submitter = not_in_track.filter(status__status_id=IDInternal.WITHDRAWN_SUBMITTER)
withdrawn_ietf = not_in_track.filter(status__status_id=IDInternal.WITHDRAWN_IETF) active = not_in_track.filter(states__type="draft", states__slug="active")
replaced = not_in_track.filter(status__status_id=IDInternal.REPLACED) published = not_in_track.filter(states__type="draft", states__slug="rfc")
expired = not_in_track.filter(states__type="draft", states__slug="expired")
withdrawn_submitter = not_in_track.filter(states__type="draft", states__slug="auth-rm")
withdrawn_ietf = not_in_track.filter(states__type="draft", states__slug="ietf-rm")
replaced = not_in_track.filter(states__type="draft", states__slug="repl")
return loader.render_to_string("idindex/all_ids.txt", return loader.render_to_string("idindex/all_ids.txt",
{ 'in_track_ids':in_track_ids, { 'in_track_ids':in_track_ids,
@ -68,9 +72,9 @@ def all_id2_entry(id):
# 0 # 0
fields.append(id.filename+"-"+id.revision_display()) fields.append(id.filename+"-"+id.revision_display())
# 1 # 1
fields.append(id.id_document_tag) fields.append(-1) # this used to be id.id_document_tag, we don't have this identifier anymore
# 2 # 2
status = id.status.status status = str(id.get_state())
fields.append(status) fields.append(status)
# 3 # 3
iesgstate = id.idstate() if status=="Active" else "" iesgstate = id.idstate() if status=="Active" else ""
@ -92,24 +96,17 @@ def all_id2_entry(id):
# 8 # 8
area = "" area = ""
if id.idinternal: if id.group.type_id == "area":
try: area = id.group.acronym
area = id.idinternal.area_acronym elif id.group.type_id == "wg" and id.group.parent:
except Area.DoesNotExist: area = id.group.parent.acronym
pass
elif not group_acronym:
pass
else:
try:
area = id.group.ietfwg.area_acronym()
except IETFWG.DoesNotExist:
area = ""
fields.append(area) fields.append(area)
# 9 # 9
fields.append(id.idinternal.job_owner if id.idinternal else "") fields.append(id.idinternal.job_owner if id.idinternal else "")
# 10 # 10
if id.intended_status and id.intended_status.intended_status not in ("None","Request"): s = id.intended_status
fields.append(id.intended_status.intended_status) if s and str(s) not in ("None","Request"):
fields.append(str(s))
else: else:
fields.append("") fields.append("")
# 11 # 11
@ -132,11 +129,13 @@ def all_id2_entry(id):
except PersonOrOrgInfo.DoesNotExist: except PersonOrOrgInfo.DoesNotExist:
pass pass
fields.append(u", ".join(authors)) fields.append(u", ".join(authors))
return "\t".join([unicode(x) for x in fields]) return "\t".join([unicode(x) for x in fields])
def all_id2_txt(): def all_id2_txt():
all_ids = InternetDraft.objects.order_by('filename').select_related('status__status','group__acronym','intended_status__intended_status') all_ids = InternetDraft.objects.order_by('name').exclude(name__startswith="rfc").select_related('group', 'group__parent', 'ad')
data = "\n".join([all_id2_entry(id) for id in all_ids]) data = "\n".join(all_id2_entry(id) for id in all_ids)
return loader.render_to_string("idindex/all_id2.txt",{'data':data}) return loader.render_to_string("idindex/all_id2.txt",{'data':data})
def id_index_txt(): def id_index_txt():