Skip to content

Commit cee8005

Browse files
committed
Merged in [11766] from rjsparks@nostrum.com:
add status reports to proceedings. add a view for the applicable status report for a given meeting. - Legacy-Id: 11799 Note: SVN reference [11766] has been migrated to Git commit 9b2d73b
2 parents 8317e18 + 9b2d73b commit cee8005

8 files changed

Lines changed: 67 additions & 1 deletion

File tree

ietf/group/models.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,14 @@ def liaison_approvers(self):
157157
return self.role_set.filter(**role_kwargs)
158158
return self.role_set.none()
159159

160+
def status_for_meeting(self,meeting):
161+
end_date = meeting.end_date()+datetime.timedelta(days=1)
162+
previous_meeting = meeting.previous_meeting()
163+
status_events = self.groupevent_set.filter(type='status_update',time__lte=end_date).order_by('-time')
164+
if previous_meeting:
165+
status_events = status_events.filter(time__gte=previous_meeting.end_date()+datetime.timedelta(days=1))
166+
return status_events.first()
167+
160168
class GroupHistory(GroupInfo):
161169
group = models.ForeignKey(Group, related_name='history_set')
162170
acronym = models.CharField(max_length=40)

ietf/group/tests_info.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1193,6 +1193,17 @@ def test_view_all_status_updates(self):
11931193
url = urlreverse('ietf.group.views.all_status')
11941194
response = self.client.get(url)
11951195
self.assertEqual(response.status_code,200)
1196+
1197+
def test_view_status_update_for_meeting(self):
1198+
chair = RoleFactory(name_id='chair',group__type_id='wg')
1199+
GroupEventFactory(type='status_update',group=chair.group)
1200+
sess = SessionFactory.create(meeting__type_id='ietf',group=chair.group,meeting__date=datetime.datetime.today()-datetime.timedelta(days=1))
1201+
url = urlreverse('ietf.group.views.group_about_status_meeting',kwargs={'acronym':chair.group.acronym,'num':sess.meeting.number})
1202+
response = self.client.get(url)
1203+
self.assertEqual(response.status_code,200)
1204+
url = urlreverse('ietf.group.views.group_about_status_meeting',kwargs={'acronym':chair.group.acronym,'num':sess.meeting.number, 'group_type':'wg'})
1205+
response = self.client.get(url)
1206+
self.assertEqual(response.status_code,200)
11961207

11971208
class GroupParentLoopTests(TestCase):
11981209

ietf/group/urls_info_details.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
(r'^about/$', 'ietf.group.views.group_about', None, 'group_about'),
1515
(r'^about/status/$', 'ietf.group.views.group_about_status'),
1616
(r'^about/status/edit/$', 'ietf.group.views.group_about_status_edit'),
17+
(r'^about/status/meeting/(?P<num>\d+)/$', 'ietf.group.views.group_about_status_meeting'),
1718
(r'^history/$','ietf.group.views.history'),
1819
(r'^email/$', 'ietf.group.views.email'),
1920
(r'^deps/(?P<output_type>[\w-]+)/$', 'ietf.group.views.dependencies'),

ietf/group/views.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@
6767
from ietf.mailtrigger.utils import gather_relevant_expansions
6868
from ietf.ietfauth.utils import has_role
6969
from ietf.meeting.utils import group_sessions
70+
from ietf.meeting.helpers import get_meeting
7071

7172
def roles(group, role_name):
7273
return Role.objects.filter(group=group, name=role_name).select_related("email", "person")
@@ -534,6 +535,17 @@ def group_about_status(request, acronym, group_type=None):
534535
}
535536
)
536537

538+
def group_about_status_meeting(request, acronym, num, group_type=None):
539+
meeting = get_meeting(num)
540+
group = get_group_or_404(acronym, group_type)
541+
status_update = group.status_for_meeting(meeting)
542+
return render(request, 'group/group_about_status_meeting.html',
543+
{ 'group' : group,
544+
'status_update': status_update,
545+
'meeting': meeting,
546+
}
547+
)
548+
537549
class StatusUpdateForm(forms.Form):
538550
content = forms.CharField(widget=forms.Textarea, label='Status update', help_text = 'Edit the status update', required=False)
539551
txt = forms.FileField(label='.txt format', help_text='Or upload a .txt file', required=False)

ietf/meeting/models.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,9 @@ def updated(self):
282282
ts = tz.localize(ts)
283283
return ts
284284

285+
def previous_meeting(self):
286+
return Meeting.objects.filter(type=self.type,date__lt=self.date).order_by('-date').first()
287+
285288
class Meta:
286289
ordering = ["-date", "id"]
287290

ietf/meeting/templatetags/proceedings_filters.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,7 @@ def hack_recording_title(recording,add_timestamp=False):
1212
return hacked_title
1313
else:
1414
return recording.title
15+
16+
@register.filter
17+
def status_for_meeting(group,meeting):
18+
return group.status_for_meeting(meeting)
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{% extends "base.html" %}
2+
{# Copyright The IETF Trust 2015, All Rights Reserved #}
3+
{% load origin %}
4+
{% load staticfiles %}
5+
{% load bootstrap3 %}
6+
{% load ietf_filters %}
7+
8+
{% block title %}
9+
Status update for {{ group.type.name }} {{ group.acronym }} at {{meeting}}
10+
{% endblock %}
11+
12+
{% block content %}
13+
{% origin %}
14+
<h1>
15+
Status update for {{ group.type.name }} {{ group.acronym }} at {{meeting}}
16+
</h1>
17+
18+
<pre class="pasted">{{ status_update.desc|default:"(none)"|escape|urlize }}</pre>
19+
20+
<a class="btn btn-default pull-right" href="{% url "ietf.meeting.views.proceedings" num=meeting.number %}">Back</a>
21+
22+
{% endblock %}

ietf/templates/meeting/group_proceedings.html

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,18 @@
3838
{% endif %}
3939
{% if session.all_meeting_bluesheets %}
4040
{% if session.all_meeting_bluesheets|length == 1 %}
41-
<a href="{{session.all_meeting_bluesheets.0.get_absolute_url}}">Bluesheets</a></br>
41+
<a href="{{session.all_meeting_bluesheets.0.get_absolute_url}}">Bluesheets</a><br>
4242
{% else %}
4343
{% for bs in session.all_meeting_bluesheets %}
4444
<a href="{{bs.get_absolute_url}}">Bluesheets {{bs.sessionpresentation_set.first.session.official_timeslotassignment.timeslot.time|date:"D G:i"}}</a></br>
4545
{% endfor %}
4646
{% endif %}
4747
{% endif %}
48+
{% with session.group|status_for_meeting:meeting as status %}
49+
{% if status %}
50+
<a href="{% url 'ietf.group.views.group_about_status_meeting' acronym=session.group.acronym num=meeting.number %}">Status</a><br>
51+
{% endif %}
52+
{% endwith %}
4853

4954
</td>
5055
<td>

0 commit comments

Comments
 (0)