Port idtracker/feeds.py
- Legacy-Id: 3119
This commit is contained in:
parent
8764a1db11
commit
e12cd7d662
|
@ -1,5 +1,6 @@
|
|||
# Copyright The IETF Trust 2007, All Rights Reserved
|
||||
|
||||
from django.conf import settings
|
||||
from django.contrib.syndication.feeds import Feed, FeedDoesNotExist
|
||||
from django.utils.feedgenerator import Atom1Feed
|
||||
from ietf.idtracker.models import IDInternal
|
||||
|
@ -12,6 +13,9 @@ class DocumentComments(Feed):
|
|||
if len(bits) != 1:
|
||||
raise IDInternal.DoesNotExist
|
||||
rfc = re.match('rfc(\d+)', bits[0])
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
return IDInternal.objects.get(docalias__name=bits[0])
|
||||
|
||||
if rfc:
|
||||
return IDInternal.objects.get(draft=int(rfc.group(1)), rfc_flag=1)
|
||||
else:
|
||||
|
@ -21,6 +25,9 @@ class DocumentComments(Feed):
|
|||
# filename is a function for RFCs and an attribute for I-Ds.
|
||||
# This works transparently for templates but is not transparent
|
||||
# for python.
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
return "I-D Tracker comments for %s" % obj.filename
|
||||
|
||||
if obj.rfc_flag:
|
||||
filename = obj.document().filename()
|
||||
else:
|
||||
|
@ -39,8 +46,7 @@ class DocumentComments(Feed):
|
|||
return obj.public_comments().order_by("-date","-id")
|
||||
|
||||
def item_pubdate(self, item):
|
||||
time = datetime.time(*[(t and int(t) or 0) for t in item.time.split(":")])
|
||||
return datetime.datetime.combine(item.date, time)
|
||||
return item.datetime()
|
||||
|
||||
def item_author_name(self, item):
|
||||
return item.get_author()
|
||||
|
@ -52,7 +58,10 @@ class InLastCall(Feed):
|
|||
link = "/idtracker/status/last-call/"
|
||||
|
||||
def items(self):
|
||||
ret = list(IDInternal.objects.filter(primary_flag=1).filter(cur_state__state='In Last Call'))
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
ret = list(IDInternal.objects.filter(iesg_state='lc'))
|
||||
else:
|
||||
ret = list(IDInternal.objects.filter(primary_flag=1).filter(cur_state__state='In Last Call'))
|
||||
ret.sort(key=lambda item: (item.document().lc_expiration_date or datetime.date.today()))
|
||||
return ret
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@ class InternetDraft(Document):
|
|||
@property
|
||||
def group(self):
|
||||
from group.proxy import Acronym as AcronymProxy
|
||||
g = super(self.__class__, self).group
|
||||
g = super(InternetDraft, self).group
|
||||
return AcronymProxy(g) if g else None
|
||||
#filename = models.CharField(max_length=255, unique=True)
|
||||
@property
|
||||
|
@ -138,7 +138,7 @@ class InternetDraft(Document):
|
|||
return int(aliases[0].name[3:]) if aliases else None
|
||||
|
||||
#comments = models.TextField(blank=True) # unused
|
||||
|
||||
|
||||
#last_modified_date = models.DateField()
|
||||
@property
|
||||
def last_modified_date(self):
|
||||
|
@ -362,7 +362,7 @@ class InternetDraft(Document):
|
|||
@property
|
||||
def area_acronym(self):
|
||||
from group.proxy import Area
|
||||
g = super(self.__class__, self).group # be careful with group which is proxied
|
||||
g = super(InternetDraft, self).group # be careful with group which is proxied
|
||||
if g and g.type_id != "individ":
|
||||
return Area().from_object(g.parent)
|
||||
elif self.ad:
|
||||
|
@ -461,6 +461,9 @@ class InternetDraft(Document):
|
|||
def comments(self):
|
||||
return DocumentComment.objects.filter(doc=self).order_by('-time')
|
||||
|
||||
def public_comments(self):
|
||||
return self.comments()
|
||||
|
||||
def ballot_set(self):
|
||||
return [self]
|
||||
def ballot_primary(self):
|
||||
|
@ -721,6 +724,7 @@ class IDAuthor(DocumentAuthor):
|
|||
|
||||
class DocumentComment(Event):
|
||||
objects = TranslatingManager(dict(comment_text="desc",
|
||||
date="time"
|
||||
))
|
||||
|
||||
BALLOT_DISCUSS = 1
|
||||
|
@ -741,21 +745,30 @@ class DocumentComment(Event):
|
|||
return self.time.date()
|
||||
#time = models.CharField(db_column='comment_time', max_length=20, default=lambda: datetime.datetime.now().strftime("%H:%M:%S"))
|
||||
#version = models.CharField(blank=True, max_length=3)
|
||||
@property
|
||||
def version(self):
|
||||
e = self.doc.latest_event(NewRevisionEvent, type="new_revision", time__lte=self.time)
|
||||
return e.rev if e else "0"
|
||||
#comment_text = models.TextField(blank=True)
|
||||
@property
|
||||
def comment_text(self):
|
||||
return self.desc
|
||||
#created_by = BrokenForeignKey(IESGLogin, db_column='created_by', null=True, null_values=(0, 999))
|
||||
#result_state = BrokenForeignKey(IDState, db_column='result_state', null=True, related_name="comments_leading_to_state", null_values=(0, 99))
|
||||
#origin_state = models.ForeignKey(IDState, db_column='origin_state', null=True, related_name="comments_coming_from_state")
|
||||
#ballot = models.IntegerField(null=True, choices=BALLOT_CHOICES)
|
||||
def get_absolute_url(self):
|
||||
return "/idtracker/%d/comment/%d/" % (self.doc.name, self.id)
|
||||
return "/doc/%s/" % self.doc.name
|
||||
def get_author(self):
|
||||
return unicode(self.by)
|
||||
return self.by.get_name()
|
||||
def get_username(self):
|
||||
return unicode(self.by)
|
||||
def get_fullname(self):
|
||||
return unicode(self.by)
|
||||
return self.by.get_name()
|
||||
def datetime(self):
|
||||
return self.time
|
||||
def __str__(self):
|
||||
return "\"%s...\" by %s" % (self.comment_text[:20], self.get_author())
|
||||
|
||||
class Meta:
|
||||
proxy = True
|
||||
|
|
Loading…
Reference in a new issue