Some further cleanup.

- Legacy-Id: 4292
This commit is contained in:
Ole Laursen 2012-04-20 12:24:31 +00:00
parent d166ef284b
commit 0970082178
6 changed files with 29 additions and 161 deletions

View file

@ -0,0 +1,3 @@
{# Copyright The IETF Trust 2011, All Rights Reserved #}
{% load ietf_filters %}
<p>{{ obj.desc|safe|linebreaksbr }}</p>

View file

@ -1,35 +0,0 @@
{# Copyright The IETF Trust 2011, All Rights Reserved #}
{% load ietf_filters %}
<p>{{ obj.info.text|safe|linebreaksbr }}</p>
{% with obj.group as wg %}
<p>
WG name: {{ wg.name }}<br/>
WG acronym: {{ wg.acronym }}<br/>
IETF area: {{ wg.parent|default:"-" }}<br/>
</p>
<p>
WG chairs: {% for n in obj.chairs %}{{ n }}{% if not forloop.last %}, {% endif %}{% endfor %}<br/>
WG secretaries: {% for n in obj.secr %}{{ n }}{% if not forloop.last %}, {% endif %}{% endfor %}<br/>
WG technical advisors: {% for n in obj.techadv %}{{ n }}{% if not forloop.last %}, {% endif %}{% endfor %}<br/>
Assigned AD: {{ wg.ad }}<br/>
</p>
<p>
Mailing list: {{ wg.list_email }}<br/>
Mailing list subscribe {{ wg.list_subscribe }}<br/>
Mailing list archive: {{ wg.list_archive }}<br/>
Other web sites: {% for a in wg.groupurl_set.all %}{{ a.url }} {% if a.name %}({{ a.name }}){% endif %}{% if not forloop.last %}, {% endif %}{% endfor %}<br/>
</p>
<p>
WG State: {{ wg.state|safe }}<br/>
Charter State: {% if wg.charter %}{{ wg.charter.get_state|safe }}{% endif %}<br/>
</p>
{% if obj.rev %}
{{ obj.charter|safe }}
{% else %}
The WG does not yet have a charter
{% endif %}
{% endwith %}

View file

@ -1 +0,0 @@
{% load ietf_filters %}WG Charter for {{obj.group.name}} ({{ obj.group.acronym|safe }})

View file

@ -9,7 +9,7 @@ from ietf.idtracker.feeds import DocumentComments, InLastCall
from ietf.ipr.feeds import LatestIprDisclosures
from ietf.proceedings.feeds import LatestWgProceedingsActivity
from ietf.liaisons.feeds import Liaisons
from ietf.wgcharter.feeds import GroupEvents
from ietf.wgcharter.feeds import GroupChanges
from ietf.idtracker.sitemaps import IDTrackerMap, DraftMap
from ietf.liaisons.sitemaps import LiaisonMap
@ -25,7 +25,7 @@ feeds = {
'iesg-agenda': IESGAgenda,
'last-call': InLastCall,
'comments': DocumentComments,
'wgchanges': GroupEvents,
'group-changes': GroupChanges,
'ipr': LatestIprDisclosures,
'liaison': Liaisons,
'wg-proceedings' : LatestWgProceedingsActivity

View file

@ -5,72 +5,24 @@ import datetime, re, os
from django.conf import settings
from django.contrib.syndication.feeds import Feed, FeedDoesNotExist
from django.utils.feedgenerator import Atom1Feed
from django.core.exceptions import ObjectDoesNotExist
from django.core.urlresolvers import reverse as urlreverse
from django.template.defaultfilters import truncatewords_html
from django.utils.html import strip_tags
from django.utils.text import truncate_words
from ietf.idtracker.templatetags.ietf_filters import format_textarea, fill
from ietf.wgcharter.utils import *
from ietf.utils.history import find_history_active_at
from ietf.group.models import Group
from ietf.idrfc.views_doc import _get_html
from ietf.group.models import Group, GroupEvent
from ietf.doc.models import DocEvent
def _get_history(wg, versions=None):
results = []
for e in wg.charter.docevent_set.all().order_by('-time'):
info = {}
charter_history = find_history_active_at(wg.charter, e.time)
info['version'] = charter_history.rev if charter_history else wg.charter.rev
info['text'] = e.desc
info['by'] = e.by.plain_name()
info['textSnippet'] = truncatewords_html(format_textarea(fill(info['text'], 80)), 25)
info['snipped'] = info['textSnippet'][-3:] == "..."
if e.type == "new_revision":
if charter_history:
charter = get_charter_for_revision(wg.charter, charter_history.rev)
group = get_group_for_revision(wg, charter_history.rev)
else:
charter = get_charter_for_revision(wg.charter, wg.charter.rev)
group = get_group_for_revision(wg, wg.charter.rev)
if versions:
vl = [x['rev'] for x in versions]
if vl:
prev_charter = get_charter_for_revision(wg.charter, vl[vl.index(charter.rev) - 1])
else:
prev_charter = get_charter_for_revision(wg.charter, prev_revision(charter.rev))
prev_group = get_group_for_revision(wg, prev_revision(charter.rev))
results.append({'comment':e, 'info':info, 'date':e.time, 'group': group,
'charter': charter, 'prev_charter': prev_charter,
'prev_group': prev_group,
'txt_url': settings.CHARTER_TXT_URL,
'is_rev':True})
else:
results.append({'comment':e, 'info':info, 'date':e.time, 'group': wg, 'is_com':True})
# convert plain dates to datetimes (required for sorting)
for x in results:
if not isinstance(x['date'], datetime.datetime):
if x['date']:
x['date'] = datetime.datetime.combine(x['date'], datetime.time(0,0,0))
else:
x['date'] = datetime.datetime(1970,1,1)
results.sort(key=lambda x: x['date'])
results.reverse()
return results
class GroupEvents(Feed):
class GroupChanges(Feed):
feed_type = Atom1Feed
title_template = "feeds/wg_charter_title.html"
description_template = "feeds/wg_charter_description.html"
description_template = "feeds/group_description.html"
def get_object(self, bits):
if len(bits) != 1:
raise Group.DoesNotExist
return Group.objects.get(acronym=bits[0])
def title(self, obj):
return "WG changes for %s" % obj.acronym
return u"Changes for %s %s" % (obj.acronym, obj.type)
def link(self, obj):
if not obj:
@ -81,34 +33,26 @@ class GroupEvents(Feed):
return self.title(obj)
def items(self, obj):
history = _get_history(obj)
for h in history:
gh = find_history_active_at(obj, h['date'])
if gh:
h['chairs'] = [x.person.plain_name() for x in gh.rolehistory_set.filter(name__slug="chair")]
h['secr'] = [x.person.plain_name() for x in gh.rolehistory_set.filter(name__slug="secr")]
h['techadv'] = [x.person.plain_name() for x in gh.rolehistory_set.filter(name__slug="techadv")]
else:
h['chairs'] = [x.person.plain_name() for x in obj.role_set.filter(name__slug="chair")]
h['secr'] = [x.person.plain_name() for x in obj.role_set.filter(name__slug="secr")]
h['techadv'] = [x.person.plain_name() for x in obj.role_set.filter(name__slug="techadv")]
dh = find_history_active_at(obj.charter, h['date'])
if dh:
h['rev'] = dh.rev
h['charter'] = _get_html(
str(dh.name)+"-"+str(dh.rev)+",html",
os.path.join(dh.get_file_path(), dh.name+"-"+dh.rev+".txt"), False)
else:
h['rev'] = obj.charter.rev
h['charter'] = _get_html(
"charter-ietf-"+str(obj.acronym)+"-"+str(obj.charter.rev)+",html",
os.path.join(obj.charter.get_file_path(), "charter-ietf-"+obj.acronym+"-"+obj.charter.rev+".txt"), False)
return history
events = list(obj.groupevent_set.all().select_related("group"))
if obj.charter:
events += list(obj.charter.docevent_set.all())
events.sort(key=lambda e: (e.time, e.id), reverse=True)
return events
def item_link(self, obj):
return urlreverse('wg_charter', kwargs={'acronym': obj['group'].acronym})
if isinstance(obj, DocEvent):
return urlreverse("doc_view", kwargs={'name': obj.doc_id })
elif isinstance(obj, GroupEvent):
return urlreverse('wg_charter', kwargs={'acronym': obj.group.acronym })
def item_pubdate(self, obj):
return obj['date']
return obj.time
def item_title(self, obj):
title = u"%s - %s" % (truncate_words(strip_tags(obj.desc), 10), obj.by)
if isinstance(obj, DocEvent):
title = u"Chartering: %s" % title
return title

View file

@ -15,49 +15,6 @@ def log_state_changed(request, doc, by, prev_state):
e.save()
return e
def get_charter_for_revision(charter, r):
if r == None:
return None
l = charter.history_set.filter(rev=r).order_by('-time')
if l:
return l[0]
# Get the lastest history entry
l = charter.history_set.all().order_by('-time')
if not l:
# no history, just return charter
return charter
class FakeHistory(object):
def __init__(self, name, rev, time):
self.name = name
self.rev = rev
self.time = time
return FakeHistory(l[0].name, charter.rev, charter.time)
def get_group_for_revision(wg, r):
if r == None:
return None
else:
l = list(wg.charter.history_set.filter(rev=r).order_by('-time'))
if l != []:
o = list(wg.history_set.filter(time__lte=l[0].time).order_by('-time'))
if o != []:
return o[0]
else:
return wg
else:
return wg
def prev_revision(rev):
m = re.match(r"(?P<major>[0-9][0-9])(-(?P<minor>[0-9][0-9]))?", rev)
if m.group('minor') and m.group('minor') != "00":
return "%s-%#02d" % (m.group('major'), int(m.group('minor')) - 1)
else:
return None
def next_revision(rev):
if rev == "":
return "00-00"