Merged [5509] from ietf@augustcellars.com:

Add new rules to the atom tracker for picking up documents in specific states
Add new rules to the atom tracker for picking up RFCs
Change the header fields on the RFC table so that they reflect RFC descriptions rather than I-D descriptions.
 - Legacy-Id: 5561
Note: SVN reference [5509] has been migrated to Git commit 7ef255b0b1
This commit is contained in:
Henrik Levkowetz 2013-03-13 15:31:36 +00:00
parent 2697c196c9
commit 8d80e3b392
3 changed files with 168 additions and 1 deletions
ietf
community
templates/community

View file

@ -11,6 +11,7 @@ class DisplayField(object):
codename = ''
description = ''
rfcDescription = ''
def get_value(self, document, raw=False):
return None
@ -19,6 +20,7 @@ class DisplayField(object):
class FilenameField(DisplayField):
codename = 'filename'
description = 'I-D filename'
rfcDescription = 'RFC Number'
def get_value(self, document, raw=False):
if not raw:
@ -30,6 +32,7 @@ class FilenameField(DisplayField):
class TitleField(DisplayField):
codename = 'title'
description = 'I-D title'
rfcDescription = 'RFC Title'
def get_value(self, document, raw=False):
return document.title
@ -38,6 +41,7 @@ class TitleField(DisplayField):
class DateField(DisplayField):
codename = 'date'
description = 'Date of current I-D'
rfcDescription = 'Date of RFC'
def get_value(self, document, raw=False):
date = document.latest_event(type='new_revision')
@ -49,6 +53,7 @@ class DateField(DisplayField):
class StatusField(DisplayField):
codename = 'status'
description = 'Status in the IETF process'
rfcDescription = description
def get_value(self, document, raw=False):
draft_state = document.get_state('draft')
@ -79,6 +84,7 @@ class StatusField(DisplayField):
class WGField(DisplayField):
codename = 'wg_rg'
description = 'Associated WG or RG'
rfcDescription = description
def get_value(self, document, raw=False):
if raw:
@ -90,6 +96,7 @@ class WGField(DisplayField):
class ADField(DisplayField):
codename = 'ad'
description = 'Associated AD, if any'
rfcDescription = description
def get_value(self, document, raw=False):
return document.ad or ''
@ -98,6 +105,7 @@ class ADField(DisplayField):
class OneDayField(DisplayField):
codename = '1_day'
description = 'Changed within the last 1 day'
rfcDescription = description
def get_value(self, document, raw=False):
now = datetime.datetime.now()
@ -110,6 +118,7 @@ class OneDayField(DisplayField):
class TwoDaysField(DisplayField):
codename = '2_days'
description = 'Changed within the last 2 days'
rfcDescription = description
def get_value(self, document, raw=False):
now = datetime.datetime.now()
@ -122,6 +131,7 @@ class TwoDaysField(DisplayField):
class SevenDaysField(DisplayField):
codename = '7_days'
description = 'Changed within the last 7 days'
rfcDescription = description
def get_value(self, document, raw=False):
now = datetime.datetime.now()

View file

@ -3,6 +3,7 @@ from django.db.models import Q
from ietf.doc.models import Document
from ietf.group.models import Group
from ietf.person.models import Person
from ietf.doc.models import State
class RuleManager(object):
@ -133,5 +134,161 @@ class WithTextRule(RuleManager):
def get_documents(self):
return Document.objects.filter(type='draft', states__slug='active').filter(name__icontains=self.value).distinct()
class IABInState(RuleManager):
codename = 'in_iab_state'
description = 'All I-Ds that are in a particular IAB state'
def get_documents(self):
return Document.objects.filter(states__type='draft-stream-iab', states__slug=self.value).distinct()
def options(self):
return [(i.slug, i.name) for i in State.objects.filter(type='draft-stream-iab').order_by('name')]
def show_value(self):
try:
return State.objects.get(type='draft-stream-iab', slug=self.value).name
except State.DoesNotExist:
return self.value
class IANAInState(RuleManager):
codename = 'in_iana_state'
description = 'All I-Ds that are in a particular IANA state'
def get_documents(self):
return Document.objects.filter(states__type='draft-iana-review', states__slug=self.value).distinct()
def options(self):
return [(i.slug, i.name) for i in State.objects.filter(type='draft-iana-review').order_by('name')]
def show_value(self):
try:
return State.objects.get(type='draft-iana-review', slug=self.value).name
except State.DoesNotExist:
return self.value
class IESGInState(RuleManager):
codename = 'in_iesg_state'
description = 'All I-Ds that are in a particular IESG state'
def get_documents(self):
return Document.objects.filter(states__type='draft-iesg', states__slug=self.value).distinct()
def options(self):
return [(i.slug, i.name) for i in State.objects.filter(type='draft-iesg').order_by('name')]
def show_value(self):
try:
return State.objects.get(type='draft-iesg', slug=self.value).name
except State.DoesNotExist:
return self.value
class IRTFInState(RuleManager):
codename = 'in_irtf_state'
description = 'All I-Ds that are in a particular IRTF state'
def get_documents(self):
return Document.objects.filter(states__type='draft-stream-irtf', states__slug=self.value).distinct()
def options(self):
return [(i.slug, i.name) for i in State.objects.filter(type='draft-stream-irtf').order_by('name')]
def show_value(self):
try:
return State.objects.get(type='draft-stream-irtf', slug=self.value).name
except State.DoesNotExist:
return self.value
class ISEInState(RuleManager):
codename = 'in_ise_state'
description = 'All I-Ds that are in a particular ISE state'
def get_documents(self):
return Document.objects.filter(states__type='draft-stream-ise', states__slug=self.value).distinct()
def options(self):
return [(i.slug, i.name) for i in State.objects.filter(type='draft-stream-ise').order_by('name')]
def show_value(self):
try:
return State.objects.get(type='draft-stream-ise', slug=self.value).name
except State.DoesNotExist:
return self.value
class RfcEditorInState(RuleManager):
codename = 'in_rfcEdit_state'
description = 'All I-Ds that are in a particular RFC Editor state'
def get_documents(self):
return Document.objects.filter(states__type='draft-rfceditor', states__slug=self.value).distinct()
def options(self):
return [(i.slug, i.type_id + ": " + i.name) for i in State.objects.filter(type='draft-rfceditor').order_by('name')]
def show_value(self):
try:
return State.objects.get(type='draft-rfceditor', slug=self.value).name
except State.DoesNotExist:
return self.value
class WGInState(RuleManager):
codename = 'in_wg_state'
description = 'All I-Ds that are in a particular Working Group state'
def get_documents(self):
return Document.objects.filter(states__type='draft-stream-ietf', states__slug=self.value).distinct()
def options(self):
return [(i.slug, i.type_id + ": " + i.name) for i in State.objects.filter(type='draft-stream-ietf').order_by('name')]
def show_value(self):
try:
return State.objects.get(type='draft-stream-ietf', slug=self.value).name
except State.DoesNotExist:
return self.value
class RfcWgAsociatedRule(RuleManager):
codename = 'wg_asociated_rfc'
description = 'All RFCs associated with a particular WG'
def get_documents(self):
return Document.objects.filter(type='draft', states__slug='rfc').filter(group__acronym=self.value).distinct()
def options(self):
return [(i.acronym, "%s — %s"%(i.acronym, i.name)) for i in Group.objects.filter(type='wg').distinct().order_by('acronym')]
def show_value(self):
try:
return Group.objects.get(type='draft', acronym=self.value).name
except Group.DoesNotExist:
return self.value
class RfcAreaAsociatedRule(RuleManager):
codename = 'area_asociated_rfc'
description = 'All RFCs associated with all WGs in a particular Area'
def get_documents(self):
return Document.objects.filter(type='draft', states__slug='rfc').filter(group__parent__acronym=self.value, group__parent__type='area').distinct()
def options(self):
return [(i.acronym, "%s — %s"%(i.acronym, i.name)) for i in Group.objects.filter(type='area').distinct().order_by('name')]
def show_value(self):
try:
return Group.objects.get(type='draft', acronym=self.value).name
except Group.DoesNotExist:
return self.value
class RfcAuthorRule(RuleManager):
codename = 'author_rfc'
description = 'All RFCs with a particular author'
def get_documents(self):
return Document.objects.filter(type='draft', states__slug='rfc').filter(authors__person__name__icontains=self.value).distinct()
TYPES_OF_RULES = [(i.codename, i.description) for i in RuleManager.__subclasses__()]

View file

@ -26,7 +26,7 @@
<table class="ietf-table">
<tr>
{% for field in fields %}
<th>{{ field.description }}</th>
<th>{{ field.rfcDescription }}</th>
{% endfor %}
</tr>
{% for doc in documents.0 %}