Skip to content

Commit 0970082

Browse files
committed
Some further cleanup.
- Legacy-Id: 4292
1 parent d166ef2 commit 0970082

6 files changed

Lines changed: 29 additions & 161 deletions

File tree

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{# Copyright The IETF Trust 2011, All Rights Reserved #}
2+
{% load ietf_filters %}
3+
<p>{{ obj.desc|safe|linebreaksbr }}</p>

ietf/templates/feeds/wg_charter_description.html

Lines changed: 0 additions & 35 deletions
This file was deleted.

ietf/templates/feeds/wg_charter_title.html

Lines changed: 0 additions & 1 deletion
This file was deleted.

ietf/urls.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from ietf.ipr.feeds import LatestIprDisclosures
1010
from ietf.proceedings.feeds import LatestWgProceedingsActivity
1111
from ietf.liaisons.feeds import Liaisons
12-
from ietf.wgcharter.feeds import GroupEvents
12+
from ietf.wgcharter.feeds import GroupChanges
1313

1414
from ietf.idtracker.sitemaps import IDTrackerMap, DraftMap
1515
from ietf.liaisons.sitemaps import LiaisonMap
@@ -25,7 +25,7 @@
2525
'iesg-agenda': IESGAgenda,
2626
'last-call': InLastCall,
2727
'comments': DocumentComments,
28-
'wgchanges': GroupEvents,
28+
'group-changes': GroupChanges,
2929
'ipr': LatestIprDisclosures,
3030
'liaison': Liaisons,
3131
'wg-proceedings' : LatestWgProceedingsActivity

ietf/wgcharter/feeds.py

Lines changed: 24 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -5,72 +5,24 @@
55
from django.conf import settings
66
from django.contrib.syndication.feeds import Feed, FeedDoesNotExist
77
from django.utils.feedgenerator import Atom1Feed
8-
from django.core.exceptions import ObjectDoesNotExist
98
from django.core.urlresolvers import reverse as urlreverse
10-
from django.template.defaultfilters import truncatewords_html
9+
from django.utils.html import strip_tags
10+
from django.utils.text import truncate_words
1111

12-
from ietf.idtracker.templatetags.ietf_filters import format_textarea, fill
13-
from ietf.wgcharter.utils import *
1412
from ietf.utils.history import find_history_active_at
15-
from ietf.group.models import Group
16-
from ietf.idrfc.views_doc import _get_html
13+
from ietf.group.models import Group, GroupEvent
14+
from ietf.doc.models import DocEvent
1715

18-
def _get_history(wg, versions=None):
19-
results = []
20-
for e in wg.charter.docevent_set.all().order_by('-time'):
21-
info = {}
22-
charter_history = find_history_active_at(wg.charter, e.time)
23-
info['version'] = charter_history.rev if charter_history else wg.charter.rev
24-
info['text'] = e.desc
25-
info['by'] = e.by.plain_name()
26-
info['textSnippet'] = truncatewords_html(format_textarea(fill(info['text'], 80)), 25)
27-
info['snipped'] = info['textSnippet'][-3:] == "..."
28-
if e.type == "new_revision":
29-
if charter_history:
30-
charter = get_charter_for_revision(wg.charter, charter_history.rev)
31-
group = get_group_for_revision(wg, charter_history.rev)
32-
else:
33-
charter = get_charter_for_revision(wg.charter, wg.charter.rev)
34-
group = get_group_for_revision(wg, wg.charter.rev)
35-
36-
if versions:
37-
vl = [x['rev'] for x in versions]
38-
if vl:
39-
prev_charter = get_charter_for_revision(wg.charter, vl[vl.index(charter.rev) - 1])
40-
else:
41-
prev_charter = get_charter_for_revision(wg.charter, prev_revision(charter.rev))
42-
prev_group = get_group_for_revision(wg, prev_revision(charter.rev))
43-
results.append({'comment':e, 'info':info, 'date':e.time, 'group': group,
44-
'charter': charter, 'prev_charter': prev_charter,
45-
'prev_group': prev_group,
46-
'txt_url': settings.CHARTER_TXT_URL,
47-
'is_rev':True})
48-
else:
49-
results.append({'comment':e, 'info':info, 'date':e.time, 'group': wg, 'is_com':True})
50-
51-
# convert plain dates to datetimes (required for sorting)
52-
for x in results:
53-
if not isinstance(x['date'], datetime.datetime):
54-
if x['date']:
55-
x['date'] = datetime.datetime.combine(x['date'], datetime.time(0,0,0))
56-
else:
57-
x['date'] = datetime.datetime(1970,1,1)
58-
59-
results.sort(key=lambda x: x['date'])
60-
results.reverse()
61-
return results
62-
63-
class GroupEvents(Feed):
16+
class GroupChanges(Feed):
6417
feed_type = Atom1Feed
65-
title_template = "feeds/wg_charter_title.html"
66-
description_template = "feeds/wg_charter_description.html"
18+
description_template = "feeds/group_description.html"
6719
def get_object(self, bits):
6820
if len(bits) != 1:
6921
raise Group.DoesNotExist
7022
return Group.objects.get(acronym=bits[0])
7123

7224
def title(self, obj):
73-
return "WG changes for %s" % obj.acronym
25+
return u"Changes for %s %s" % (obj.acronym, obj.type)
7426

7527
def link(self, obj):
7628
if not obj:
@@ -81,34 +33,26 @@ def description(self, obj):
8133
return self.title(obj)
8234

8335
def items(self, obj):
84-
history = _get_history(obj)
85-
for h in history:
86-
gh = find_history_active_at(obj, h['date'])
87-
if gh:
88-
h['chairs'] = [x.person.plain_name() for x in gh.rolehistory_set.filter(name__slug="chair")]
89-
h['secr'] = [x.person.plain_name() for x in gh.rolehistory_set.filter(name__slug="secr")]
90-
h['techadv'] = [x.person.plain_name() for x in gh.rolehistory_set.filter(name__slug="techadv")]
91-
else:
92-
h['chairs'] = [x.person.plain_name() for x in obj.role_set.filter(name__slug="chair")]
93-
h['secr'] = [x.person.plain_name() for x in obj.role_set.filter(name__slug="secr")]
94-
h['techadv'] = [x.person.plain_name() for x in obj.role_set.filter(name__slug="techadv")]
95-
dh = find_history_active_at(obj.charter, h['date'])
96-
if dh:
97-
h['rev'] = dh.rev
98-
h['charter'] = _get_html(
99-
str(dh.name)+"-"+str(dh.rev)+",html",
100-
os.path.join(dh.get_file_path(), dh.name+"-"+dh.rev+".txt"), False)
101-
else:
102-
h['rev'] = obj.charter.rev
103-
h['charter'] = _get_html(
104-
"charter-ietf-"+str(obj.acronym)+"-"+str(obj.charter.rev)+",html",
105-
os.path.join(obj.charter.get_file_path(), "charter-ietf-"+obj.acronym+"-"+obj.charter.rev+".txt"), False)
106-
return history
36+
events = list(obj.groupevent_set.all().select_related("group"))
37+
if obj.charter:
38+
events += list(obj.charter.docevent_set.all())
39+
40+
events.sort(key=lambda e: (e.time, e.id), reverse=True)
41+
42+
return events
10743

10844
def item_link(self, obj):
109-
return urlreverse('wg_charter', kwargs={'acronym': obj['group'].acronym})
45+
if isinstance(obj, DocEvent):
46+
return urlreverse("doc_view", kwargs={'name': obj.doc_id })
47+
elif isinstance(obj, GroupEvent):
48+
return urlreverse('wg_charter', kwargs={'acronym': obj.group.acronym })
11049

11150
def item_pubdate(self, obj):
112-
return obj['date']
51+
return obj.time
11352

53+
def item_title(self, obj):
54+
title = u"%s - %s" % (truncate_words(strip_tags(obj.desc), 10), obj.by)
55+
if isinstance(obj, DocEvent):
56+
title = u"Chartering: %s" % title
11457

58+
return title

ietf/wgcharter/utils.py

Lines changed: 0 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -15,49 +15,6 @@ def log_state_changed(request, doc, by, prev_state):
1515
e.save()
1616
return e
1717

18-
def get_charter_for_revision(charter, r):
19-
if r == None:
20-
return None
21-
22-
l = charter.history_set.filter(rev=r).order_by('-time')
23-
if l:
24-
return l[0]
25-
26-
# Get the lastest history entry
27-
l = charter.history_set.all().order_by('-time')
28-
if not l:
29-
# no history, just return charter
30-
return charter
31-
32-
class FakeHistory(object):
33-
def __init__(self, name, rev, time):
34-
self.name = name
35-
self.rev = rev
36-
self.time = time
37-
38-
return FakeHistory(l[0].name, charter.rev, charter.time)
39-
40-
def get_group_for_revision(wg, r):
41-
if r == None:
42-
return None
43-
else:
44-
l = list(wg.charter.history_set.filter(rev=r).order_by('-time'))
45-
if l != []:
46-
o = list(wg.history_set.filter(time__lte=l[0].time).order_by('-time'))
47-
if o != []:
48-
return o[0]
49-
else:
50-
return wg
51-
else:
52-
return wg
53-
54-
def prev_revision(rev):
55-
m = re.match(r"(?P<major>[0-9][0-9])(-(?P<minor>[0-9][0-9]))?", rev)
56-
if m.group('minor') and m.group('minor') != "00":
57-
return "%s-%#02d" % (m.group('major'), int(m.group('minor')) - 1)
58-
else:
59-
return None
60-
6118
def next_revision(rev):
6219
if rev == "":
6320
return "00-00"

0 commit comments

Comments
 (0)