Skip to content

Commit 6a927fb

Browse files
committed
Port iesg.feeds
- Legacy-Id: 3126
1 parent f22e864 commit 6a927fb

3 files changed

Lines changed: 25 additions & 9 deletions

File tree

ietf/iesg/feeds.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# Copyright The IETF Trust 2007, 2008, All Rights Reserved
22

3+
from django.conf import settings
34
from django.contrib.syndication.feeds import Feed
45
from django.utils.feedgenerator import Atom1Feed
56
from ietf.idtracker.models import IDInternal
@@ -11,12 +12,24 @@ class IESGAgenda(Feed):
1112
feed_type = Atom1Feed
1213

1314
def items(self):
14-
return IDInternal.objects.filter(agenda=1).order_by('telechat_date')
15+
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
16+
from doc.models import TelechatEvent
17+
drafts = IDInternal.objects.filter(event__telechatevent__telechat_date__gte=datetime.date.min).distinct()
18+
for d in drafts:
19+
d.latest_telechat_event = d.latest_event(TelechatEvent, type="scheduled_for_telechat")
20+
drafts = [d for d in drafts if d.latest_telechat_event.telechat_date]
21+
drafts.sort(key=lambda d: d.latest_telechat_event.telechat_date)
22+
return drafts
23+
24+
return IDInternal.objects.filter(agenda=1).order_by('telechat_date')
1525

1626
def item_categories(self, item):
1727
return [ str(item.telechat_date) ]
1828

1929
def item_pubdate(self, item):
30+
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
31+
return item.latest_telechat_event.time
32+
2033
f = item.comments().filter(comment_text__startswith='Placed on agenda for telechat')
2134
try:
2235
comment = f[0]
@@ -28,4 +41,7 @@ def item_pubdate(self, item):
2841
def item_author_name(self, item):
2942
return str( item.job_owner )
3043
def item_author_email(self, item):
44+
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
45+
return item.ad.address
46+
3147
return item.job_owner.person.email()[1]

redesign/doc/proxy.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -344,13 +344,13 @@ def prev_state(self):
344344
def mark_by(self):
345345
e = self.latest_event()
346346
from person.proxy import IESGLogin as IESGLoginProxy
347-
return IESGLoginProxy(e.by) if e else None
347+
return IESGLoginProxy().from_object(e.by) if e else None
348348

349349
# job_owner = models.ForeignKey(IESGLogin, db_column='job_owner', related_name='documents')
350350
@property
351351
def job_owner(self):
352352
from person.proxy import IESGLogin as IESGLoginProxy
353-
return IESGLoginProxy(self.ad) if self.ad else None
353+
return IESGLoginProxy().from_object(self.ad) if self.ad else None
354354

355355
#event_date = models.DateField(null=True)
356356
@property
@@ -441,7 +441,7 @@ def noproblem(self):
441441
def resurrect_requested_by(self):
442442
e = self.latest_event(type__in=("requested_resurrect", "completed_resurrect"))
443443
from person.proxy import IESGLogin as IESGLoginProxy
444-
return IESGLoginProxy(e.by) if e and e.type == "requested_resurrect" else None
444+
return IESGLoginProxy().from_object(e.by) if e and e.type == "requested_resurrect" else None
445445

446446
#approved_in_minute = models.IntegerField(null=True, blank=True)
447447
@property
@@ -450,7 +450,7 @@ def approved_in_minute(self):
450450

451451

452452
def get_absolute_url(self):
453-
if self.rfc_flag:
453+
if self.rfc_flag and self.rfc_number:
454454
return "/doc/rfc%d/" % self.rfc_number
455455
else:
456456
return "/doc/%s/" % self.name
@@ -502,7 +502,7 @@ def an_sent_date(self):
502502
def an_sent_by(self):
503503
e = self.latest_event(type="iesg_approved")
504504
from person.proxy import IESGLogin as IESGLoginProxy
505-
return IESGLoginProxy(e.by) if e else None
505+
return IESGLoginProxy().from_object(e.by) if e else None
506506

507507
#defer = models.BooleanField()
508508
@property
@@ -515,7 +515,7 @@ def defer(self):
515515
def defer_by(self):
516516
e = self.latest_event(type="changed_document", desc__startswith="State changed to <b>IESG Evaluation - Defer</b>")
517517
from person.proxy import IESGLogin as IESGLoginProxy
518-
return IESGLoginProxy(e.by) if e else None
518+
return IESGLoginProxy().from_object(e.by) if e else None
519519

520520
#defer_date = models.DateField(null=True, blank=True)
521521
@property
@@ -556,7 +556,7 @@ def active_positions(self):
556556
res = []
557557
def add(ad, pos):
558558
from person.proxy import IESGLogin as IESGLoginProxy
559-
res.append(dict(ad=IESGLoginProxy(ad), pos=Position().from_object(pos) if pos else None))
559+
res.append(dict(ad=IESGLoginProxy().from_object(ad), pos=Position().from_object(pos) if pos else None))
560560

561561
found = set()
562562
for pos in BallotPositionEvent.objects.filter(doc=self, type="changed_ballot_position", ad__in=active_ads).select_related('ad').order_by("-time", "-id"):

redesign/person/proxy.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from models import *
22

33
class IESGLogin(Email):
4-
def __init__(self, base):
4+
def from_object(self, base):
55
for f in base._meta.fields:
66
setattr(self, f.name, getattr(base, f.name))
77

0 commit comments

Comments
 (0)