Skip to content

Commit 5f4d99a

Browse files
committed
Implement status_of_items and last_call.
(Oddly, this status_of_items shows more than the cgi one; I can't explain why. Also, the cgi one showed the wrong intended status for RFCs, and the wrong area for several documents.) - Legacy-Id: 186
1 parent 7d52fff commit 5f4d99a

5 files changed

Lines changed: 83 additions & 10 deletions

File tree

ietf/idtracker/models.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ class Admin:
111111

112112
class InternetDraft(models.Model):
113113
id_document_tag = models.AutoField(primary_key=True)
114-
id_document_name = models.CharField(maxlength=255)
114+
title = models.CharField(maxlength=255, db_column='id_document_name')
115115
id_document_key = models.CharField(maxlength=255, editable=False)
116116
group = models.ForeignKey(Acronym, db_column='group_acronym_id')
117117
filename = models.CharField(maxlength=255, unique=True)
@@ -143,7 +143,7 @@ class InternetDraft(models.Model):
143143
expired_tombstone = models.BooleanField()
144144
idinternal = FKAsOneToOne('idinternal', reverse=True, query=models.Q(rfc_flag = 0))
145145
def save(self):
146-
self.id_document_key = self.id_document_name.upper()
146+
self.id_document_key = self.title.upper()
147147
super(InternetDraft, self).save()
148148
def displayname(self):
149149
return "%s-%s.txt" % ( self.filename, self.revision )
@@ -304,7 +304,7 @@ class Admin:
304304

305305
class Rfc(models.Model):
306306
rfc_number = models.IntegerField(primary_key=True)
307-
rfc_name = models.CharField(maxlength=200)
307+
title = models.CharField(maxlength=200, db_column='rfc_name')
308308
rfc_name_key = models.CharField(maxlength=200, editable=False)
309309
group_acronym = models.CharField(blank=True, maxlength=8)
310310
area_acronym = models.CharField(blank=True, maxlength=8)
@@ -328,7 +328,7 @@ class Rfc(models.Model):
328328
def __str__(self):
329329
return "RFC%04d" % ( self.rfc_number )
330330
def save(self):
331-
self.rfc_name_key = self.rfc_name.upper()
331+
self.rfc_name_key = self.title.upper()
332332
super(Rfc, self).save()
333333
def displayname(self):
334334
return "rfc%d.txt" % ( self.rfc_number )
@@ -339,8 +339,8 @@ class Meta:
339339
verbose_name = 'RFC'
340340
verbose_name_plural = 'RFCs'
341341
class Admin:
342-
search_fields = ['rfc_name', 'group', 'area']
343-
list_display = ['rfc_number', 'rfc_name']
342+
search_fields = ['title', 'group', 'area']
343+
list_display = ['rfc_number', 'title']
344344
pass
345345

346346
class RfcAuthor(models.Model):
@@ -408,9 +408,8 @@ class IDInternal(models.Model):
408408
"""
409409
draft = models.ForeignKey(InternetDraft, primary_key=True, unique=True, db_column='id_document_tag')
410410
rfc_flag = models.IntegerField(null=True)
411-
#ballot_id = models.IntegerField()
412411
ballot = models.ForeignKey(BallotInfo, related_name='drafts', db_column="ballot_id")
413-
primary_flag = models.IntegerField()
412+
primary_flag = models.IntegerField(blank=True, null=True)
414413
group_flag = models.IntegerField(blank=True)
415414
token_name = models.CharField(blank=True, maxlength=25)
416415
token_email = models.CharField(blank=True, maxlength=255)
@@ -457,7 +456,9 @@ def document(self):
457456
def comments(self):
458457
return self.documentcomment_set.all().filter(rfc_flag=self.rfc_flag).order_by('-comment_date','-comment_time')
459458
def ballot_set(self):
460-
return IDInternal.objects.filter(ballot=self.ballot)
459+
return IDInternal.objects.filter(ballot=self.ballot_id)
460+
def ballot_others(self):
461+
return IDInternal.objects.filter(models.Q(primary_flag=0)|models.Q(primary_flag__isnull=True), ballot=self.ballot_id)
461462
class Meta:
462463
db_table = 'id_internal'
463464
verbose_name = 'IDTracker Draft'

ietf/idtracker/urls.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
)
2424
urlpatterns += patterns('',
2525
(r'^send_email/$', views.send_email),
26+
(r'^status/$', views.status),
27+
(r'^last_call/$', views.last_call),
2628
)
2729
urlpatterns += patterns('django.views.generic.list_detail',
2830
(r'^rfc(?P<object_id>\d+)/$', 'object_detail', rfc_dict),

ietf/idtracker/views.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from django.template import RequestContext, Context, loader
55
from django.shortcuts import get_object_or_404, render_to_response
66
from django.db.models import Q
7-
from django.views.generic.list_detail import object_detail
7+
from django.views.generic.list_detail import object_detail, object_list
88
from ietf.idtracker.models import InternetDraft, IDInternal, IDState, IDSubState
99
from ietf.idtracker.forms import EmailFeedback
1010
from ietf.utils.mail import send_mail_text
@@ -135,3 +135,10 @@ def send_email(request):
135135
return render_to_response('idtracker/email_form.html', {'category': cat, 'form': form},
136136
context_instance=RequestContext(request))
137137

138+
def status(request):
139+
queryset = IDInternal.objects.filter(primary_flag=1).exclude(cur_state__state__in=('AD is watching', 'Dead')).order_by('cur_state', 'status_date', 'ballot_id')
140+
return object_list(request, template_name="idtracker/status_of_items.html", queryset=queryset, extra_context={'title': 'IESG Status of Items'})
141+
142+
def last_call(request):
143+
queryset = IDInternal.objects.filter(primary_flag=1).filter(cur_state__state__in=('In Last Call', 'Waiting for Writeup', 'Waiting for AD Go-Ahead')).order_by('cur_state', 'status_date', 'ballot_id')
144+
return object_list(request, template_name="idtracker/status_of_items.html", queryset=queryset, extra_context={'title': 'Documents in Last Call'})
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{% load ietf_filters %}
2+
<tr>{% if doc.primary_flag %}
3+
<td>{{ doc.area_acronym.area_acronym.acronym.upper }}</td>
4+
<td nowrap>
5+
{% ifequal doc.cur_state.state "In Last Call" %}
6+
{% if doc.document.lc_expiration_date %}
7+
{{ doc.document.lc_expiration_date }}
8+
{% endif %}
9+
{% else %}
10+
{% if doc.status_date %}
11+
{{ doc.status_date|date:"M j" }}
12+
{% endif %}
13+
{% endifequal %}</td>
14+
{% else %}
15+
<td></td><td></td>
16+
{% endif %}
17+
<td>{{ doc.document.title }} ({{ doc.document.intended_status }})</td></tr>
18+
<tr><td></td><td></td><td><a href="{{ doc.document.doclink }}">{{ doc.document.displayname }}</a></td></tr>
19+
{% if doc.primary_flag %}
20+
<tr><td></td><td>Token:</td><td><a href="mailto:{{ doc.token_email|urlencode }}">{{ doc.token_name }}</a></td></tr>
21+
{% if doc.note %}
22+
<tr><td></td><td>Note:</td><td>{{ doc.note|urlize }}</td></tr>
23+
{% endif %}
24+
{% endif %}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
{% extends "base.html" %}
2+
3+
{% block title %}{{ title }}{% endblock %}
4+
5+
{% block content %}
6+
<center><h1>{{ title }}</h1></center>
7+
<i>Generated {% now "M j, Y" %}<br>
8+
{# no hit counter #}
9+
</i>
10+
11+
{% regroup object_list by cur_state_id as grouped %}
12+
{% for state in grouped %}
13+
<a name="grp{{ state.list.0.cur_state }}"><h2>{{ state.list.0.cur_state }}</h2></a>
14+
<table>
15+
<tr><th>Area</th><th>{% ifequal state.list.0.cur_state.state "In Last Call" %}Expires at{% else %}Date{% endifequal %}</th></tr>
16+
{% for doc in state.list %}
17+
{% include "idtracker/document_entry.html" %}
18+
{% if doc.ballot_others %}
19+
{% for doc in doc.ballot_others %}
20+
{% include "idtracker/document_entry.html" %}
21+
{% endfor %}
22+
{% endif %}
23+
{% endfor %}
24+
</table>
25+
{% endfor %}
26+
27+
<HR>
28+
<b><A href="http://www.rfc-editor.org/queue.html">RFC Editor Queue</a></b>
29+
<p>
30+
31+
32+
<!-- begin new footer -->
33+
<HR>
34+
35+
<i>This page produced by the <A HREF="mailto:iesg-secretary@ietf.org">IETF Secretariat</a>
36+
for the <A HREF="mailto:iesg@ietf.org">IESG</A></i>
37+
<p>
38+
39+
{% endblock %}

0 commit comments

Comments
 (0)