diff --git a/ietf/idtracker/models.py b/ietf/idtracker/models.py index 3352de23d..4bccac7e0 100644 --- a/ietf/idtracker/models.py +++ b/ietf/idtracker/models.py @@ -111,7 +111,7 @@ class IDIntendedStatus(models.Model): class InternetDraft(models.Model): id_document_tag = models.AutoField(primary_key=True) - id_document_name = models.CharField(maxlength=255) + title = models.CharField(maxlength=255, db_column='id_document_name') id_document_key = models.CharField(maxlength=255, editable=False) group = models.ForeignKey(Acronym, db_column='group_acronym_id') filename = models.CharField(maxlength=255, unique=True) @@ -143,7 +143,7 @@ class InternetDraft(models.Model): expired_tombstone = models.BooleanField() idinternal = FKAsOneToOne('idinternal', reverse=True, query=models.Q(rfc_flag = 0)) def save(self): - self.id_document_key = self.id_document_name.upper() + self.id_document_key = self.title.upper() super(InternetDraft, self).save() def displayname(self): return "%s-%s.txt" % ( self.filename, self.revision ) @@ -304,7 +304,7 @@ class RfcStatus(models.Model): class Rfc(models.Model): rfc_number = models.IntegerField(primary_key=True) - rfc_name = models.CharField(maxlength=200) + title = models.CharField(maxlength=200, db_column='rfc_name') rfc_name_key = models.CharField(maxlength=200, editable=False) group_acronym = models.CharField(blank=True, maxlength=8) area_acronym = models.CharField(blank=True, maxlength=8) @@ -328,7 +328,7 @@ class Rfc(models.Model): def __str__(self): return "RFC%04d" % ( self.rfc_number ) def save(self): - self.rfc_name_key = self.rfc_name.upper() + self.rfc_name_key = self.title.upper() super(Rfc, self).save() def displayname(self): return "rfc%d.txt" % ( self.rfc_number ) @@ -339,8 +339,8 @@ class Rfc(models.Model): verbose_name = 'RFC' verbose_name_plural = 'RFCs' class Admin: - search_fields = ['rfc_name', 'group', 'area'] - list_display = ['rfc_number', 'rfc_name'] + search_fields = ['title', 'group', 'area'] + list_display = ['rfc_number', 'title'] pass class RfcAuthor(models.Model): @@ -408,9 +408,8 @@ class IDInternal(models.Model): """ draft = models.ForeignKey(InternetDraft, primary_key=True, unique=True, db_column='id_document_tag') rfc_flag = models.IntegerField(null=True) - #ballot_id = models.IntegerField() ballot = models.ForeignKey(BallotInfo, related_name='drafts', db_column="ballot_id") - primary_flag = models.IntegerField() + primary_flag = models.IntegerField(blank=True, null=True) group_flag = models.IntegerField(blank=True) token_name = models.CharField(blank=True, maxlength=25) token_email = models.CharField(blank=True, maxlength=255) @@ -457,7 +456,9 @@ class IDInternal(models.Model): def comments(self): return self.documentcomment_set.all().filter(rfc_flag=self.rfc_flag).order_by('-comment_date','-comment_time') def ballot_set(self): - return IDInternal.objects.filter(ballot=self.ballot) + return IDInternal.objects.filter(ballot=self.ballot_id) + def ballot_others(self): + return IDInternal.objects.filter(models.Q(primary_flag=0)|models.Q(primary_flag__isnull=True), ballot=self.ballot_id) class Meta: db_table = 'id_internal' verbose_name = 'IDTracker Draft' diff --git a/ietf/idtracker/urls.py b/ietf/idtracker/urls.py index 1836ab11e..e3c15f0f4 100644 --- a/ietf/idtracker/urls.py +++ b/ietf/idtracker/urls.py @@ -23,6 +23,8 @@ urlpatterns = patterns('django.views.generic.simple', ) urlpatterns += patterns('', (r'^send_email/$', views.send_email), + (r'^status/$', views.status), + (r'^last_call/$', views.last_call), ) urlpatterns += patterns('django.views.generic.list_detail', (r'^rfc(?P\d+)/$', 'object_detail', rfc_dict), diff --git a/ietf/idtracker/views.py b/ietf/idtracker/views.py index 7d6d6128d..8368172d1 100644 --- a/ietf/idtracker/views.py +++ b/ietf/idtracker/views.py @@ -4,7 +4,7 @@ from django import newforms as forms from django.template import RequestContext, Context, loader from django.shortcuts import get_object_or_404, render_to_response from django.db.models import Q -from django.views.generic.list_detail import object_detail +from django.views.generic.list_detail import object_detail, object_list from ietf.idtracker.models import InternetDraft, IDInternal, IDState, IDSubState from ietf.idtracker.forms import EmailFeedback from ietf.utils.mail import send_mail_text @@ -135,3 +135,10 @@ def send_email(request): return render_to_response('idtracker/email_form.html', {'category': cat, 'form': form}, context_instance=RequestContext(request)) +def status(request): + queryset = IDInternal.objects.filter(primary_flag=1).exclude(cur_state__state__in=('AD is watching', 'Dead')).order_by('cur_state', 'status_date', 'ballot_id') + return object_list(request, template_name="idtracker/status_of_items.html", queryset=queryset, extra_context={'title': 'IESG Status of Items'}) + +def last_call(request): + 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') + return object_list(request, template_name="idtracker/status_of_items.html", queryset=queryset, extra_context={'title': 'Documents in Last Call'}) diff --git a/ietf/templates/idtracker/document_entry.html b/ietf/templates/idtracker/document_entry.html new file mode 100644 index 000000000..73fdb9b3e --- /dev/null +++ b/ietf/templates/idtracker/document_entry.html @@ -0,0 +1,24 @@ +{% load ietf_filters %} +{% if doc.primary_flag %} + {{ doc.area_acronym.area_acronym.acronym.upper }} + + {% ifequal doc.cur_state.state "In Last Call" %} + {% if doc.document.lc_expiration_date %} + {{ doc.document.lc_expiration_date }} + {% endif %} + {% else %} + {% if doc.status_date %} + {{ doc.status_date|date:"M j" }} + {% endif %} + {% endifequal %} +{% else %} + +{% endif %} +{{ doc.document.title }} ({{ doc.document.intended_status }}) +{{ doc.document.displayname }} +{% if doc.primary_flag %} +Token:{{ doc.token_name }} +{% if doc.note %} +Note:{{ doc.note|urlize }} +{% endif %} +{% endif %} diff --git a/ietf/templates/idtracker/status_of_items.html b/ietf/templates/idtracker/status_of_items.html new file mode 100644 index 000000000..37c6109ff --- /dev/null +++ b/ietf/templates/idtracker/status_of_items.html @@ -0,0 +1,39 @@ +{% extends "base.html" %} + +{% block title %}{{ title }}{% endblock %} + +{% block content %} +

{{ title }}

+Generated {% now "M j, Y" %}
+{# no hit counter #} +
+ +{% regroup object_list by cur_state_id as grouped %} +{% for state in grouped %} +

{{ state.list.0.cur_state }}

+ + +{% for doc in state.list %} +{% include "idtracker/document_entry.html" %} +{% if doc.ballot_others %} +{% for doc in doc.ballot_others %} +{% include "idtracker/document_entry.html" %} +{% endfor %} +{% endif %} +{% endfor %} +
Area{% ifequal state.list.0.cur_state.state "In Last Call" %}Expires at{% else %}Date{% endifequal %}
+{% endfor %} + +
+RFC Editor Queue +

+ + + +


+ +This page produced by the IETF Secretariat +for the IESG +

+ +{% endblock %}