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: 5509
This commit is contained in:
parent
d8c765e72c
commit
7ef255b0b1
|
@ -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()
|
||||
|
|
|
@ -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__()]
|
||||
|
||||
|
||||
|
|
|
@ -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 %}
|
||||
|
|
Loading…
Reference in a new issue