Skip to content

Commit 12ed190

Browse files
committed
merging forward
- Legacy-Id: 10738
2 parents 04cc29d + cb778b9 commit 12ed190

28 files changed

Lines changed: 466 additions & 157 deletions

ietf/doc/mails.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -475,7 +475,8 @@ def email_charter_internal_review(request, charter):
475475
charter_url=settings.IDTRACKER_BASE_URL + charter.get_absolute_url(),
476476
chairs=charter.group.role_set.filter(name="chair"),
477477
secr=charter.group.role_set.filter(name="secr"),
478-
ads=charter.group.role_set.filter(name='ad').values_list('person__name',flat=True),
478+
ads=charter.group.role_set.filter(name='ad'),
479+
parent_ads=charter.group.parent.role_set.filter(name='ad'),
479480
techadv=charter.group.role_set.filter(name="techadv"),
480481
milestones=charter.group.groupmilestone_set.filter(state="charter"),
481482
),
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# -*- coding: utf-8 -*-
2+
from __future__ import unicode_literals
3+
4+
from django.db import migrations
5+
from django.db.models import F
6+
7+
def reverse(apps, schema_editor):
8+
pass
9+
10+
def forward(apps, schema_editor):
11+
Document = apps.get_model('doc','Document')
12+
for doc in Document.objects.filter(type__in=['recording','liaison','liai-att']).exclude(docalias__name=F('name')):
13+
doc.docalias_set.create(name=doc.name)
14+
15+
class Migration(migrations.Migration):
16+
17+
dependencies = [
18+
('doc', '0010_auto_20150930_0251'),
19+
]
20+
21+
operations = [
22+
migrations.RunPython(forward,reverse)
23+
]

ietf/doc/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ def active_ballot(self):
234234

235235
def meeting_related(self):
236236
answer = False
237-
if self.type_id in ("agenda","minutes","bluesheets","slides"):
237+
if self.type_id in ("agenda","minutes","bluesheets","slides","recording"):
238238
answer = (self.name.split("-")[1] == "interim"
239239
or (self if isinstance(self, Document) else self.doc).session_set.exists())
240240
if self.type_id in ("slides",):

ietf/doc/tests.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -558,6 +558,9 @@ def test_document_primary_and_history_views(self):
558558
"agenda-42-mars",
559559
"minutes-42-mars",
560560
"slides-42-mars-1",
561+
# TODO: add
562+
#"bluesheets-42-mars-1",
563+
#"recording-42-mars-1-00",
561564
]:
562565
doc = Document.objects.get(name=docname)
563566
# give it some history

ietf/doc/tests_charter.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ def find_event(t):
111111
for word in ["Chairs", "Ames Man <ameschairman@ietf.org>",
112112
"Secretaries", "Secretary <amessecretary@ietf.org>",
113113
"Assigned Area Director", "Areað Irector <aread@ietf.org>",
114-
"Area Directors", "Mailing list", "ames-wg@ietf.org",
114+
"Mailing list", "ames-wg@ietf.org",
115115
"Charter", "Milestones"]:
116116
self.assertIn(word, body)
117117

ietf/doc/utils_charter.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,8 @@ def default_action_text(group, charter, by):
111111
chairs=group.role_set.filter(name="chair"),
112112
secr=group.role_set.filter(name="secr"),
113113
techadv=group.role_set.filter(name="techadv"),
114+
ads=group.role_set.filter(name='ad'),
115+
parent_ads=group.parent.role_set.filter(name='ad'),
114116
milestones=group.groupmilestone_set.filter(state="charter"),
115117
action_type=action,
116118
to=addrs.to,
@@ -145,6 +147,8 @@ def default_review_text(group, charter, by):
145147
charter_text=read_charter_text(charter),
146148
chairs=group.role_set.filter(name="chair"),
147149
secr=group.role_set.filter(name="secr"),
150+
ads=group.role_set.filter(name='ad'),
151+
parent_ads=group.parent.role_set.filter(name='ad'),
148152
techadv=group.role_set.filter(name="techadv"),
149153
milestones=group.groupmilestone_set.filter(state="charter"),
150154
review_date=(datetime.date.today() + datetime.timedelta(weeks=1)).isoformat(),

ietf/doc/views_doc.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -522,6 +522,8 @@ def document_main(request, name, rev=None):
522522
),
523523
context_instance=RequestContext(request))
524524

525+
# TODO : Add "recording", and "bluesheets" here when those documents are appropriately
526+
# created and content is made available on disk
525527
if doc.type_id in ("slides", "agenda", "minutes"):
526528
can_manage_material = can_manage_materials(request.user, doc.group)
527529
presentations = None

ietf/doc/views_search.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ class SearchForm(forms.Form):
7070

7171
sort = forms.ChoiceField(choices=(("document", "Document"), ("title", "Title"), ("date", "Date"), ("status", "Status"), ("ipr", "Ipr"), ("ad", "AD")), required=False, widget=forms.HiddenInput)
7272

73-
doctypes = DocTypeName.objects.exclude(slug='draft').order_by('name');
73+
doctypes = DocTypeName.objects.filter(used=True).exclude(slug='draft').order_by('name');
7474

7575
def __init__(self, *args, **kwargs):
7676
super(SearchForm, self).__init__(*args, **kwargs)

ietf/group/info.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import itertools
3737
import re
3838
from tempfile import mkstemp
39+
import datetime
3940
from collections import OrderedDict
4041

4142
from django.shortcuts import render, redirect
@@ -333,6 +334,8 @@ def construct_group_menu_context(request, group, selected, group_type, others):
333334
entries.append(("About", urlreverse("group_about", kwargs=kwargs)))
334335
if group.features.has_materials and get_group_materials(group).exists():
335336
entries.append(("Materials", urlreverse("ietf.group.info.materials", kwargs=kwargs)))
337+
if group.type_id in ('rg','wg'):
338+
entries.append(("Meetings", urlreverse("ietf.group.info.meetings", kwargs=kwargs)))
336339
entries.append(("Email expansions", urlreverse("ietf.group.info.email", kwargs=kwargs)))
337340
entries.append(("History", urlreverse("ietf.group.info.history", kwargs=kwargs)))
338341
if group.features.has_documents:
@@ -724,3 +727,47 @@ def email_aliases(request, acronym=None, group_type=None):
724727

725728
return render(request,'group/email_aliases.html',{'aliases':aliases,'ietf_domain':settings.IETF_DOMAIN,'group':group})
726729

730+
def meetings(request, acronym=None, group_type=None):
731+
group = get_group_or_404(acronym,group_type) if acronym else None
732+
733+
four_years_ago = datetime.datetime.now()-datetime.timedelta(days=4*365)
734+
735+
sessions = group.session_set.filter(status__in=['sched','schedw','appr','canceled'],meeting__date__gt=four_years_ago)
736+
737+
def sort_key(session):
738+
if session.meeting.type.slug=='ietf':
739+
official_sessions = session.timeslotassignments.filter(schedule=session.meeting.agenda)
740+
if official_sessions:
741+
return official_sessions.first().timeslot.time
742+
elif session.meeting.date:
743+
return datetime.datetime.combine(session.meeting.date,datetime.datetime.min.time())
744+
else:
745+
return session.requested
746+
else:
747+
# TODO: use timeslots for interims once they have them
748+
return datetime.datetime.combine(session.meeting.date,datetime.datetime.min.time())
749+
750+
for s in sessions:
751+
s.time=sort_key(s)
752+
753+
sessions = sorted(sessions,key=lambda s:s.time,reverse=True)
754+
755+
today = datetime.date.today()
756+
future = []
757+
in_progress = []
758+
past = []
759+
for s in sessions:
760+
if s.meeting.date > today:
761+
future.append(s)
762+
elif s.meeting.end_date() >= today:
763+
in_progress.append(s)
764+
else:
765+
past.append(s)
766+
767+
return render(request,'group/meetings.html',
768+
construct_group_menu_context(request, group, "meetings", group_type, {
769+
'group':group,
770+
'future':future,
771+
'in_progress':in_progress,
772+
'past':past,
773+
}))

ietf/group/tests_info.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
from ietf.utils.mail import outbox, empty_outbox
2323
from ietf.utils.test_data import make_test_data
2424
from ietf.utils.test_utils import login_testing_unauthorized
25+
from ietf.group.factories import GroupFactory
26+
from ietf.meeting.factories import SessionFactory
2527

2628
class GroupPagesTests(TestCase):
2729
def setUp(self):
@@ -988,3 +990,29 @@ def test_group_menu_data(self):
988990
mars_wg = Group.objects.get(acronym="mars")
989991
self.assertEqual(mars_wg_data["name"], mars_wg.name)
990992

993+
class MeetingInfoTests(TestCase):
994+
995+
def setUp(self):
996+
self.group = GroupFactory.create(type_id='wg')
997+
today = datetime.date.today()
998+
SessionFactory.create(meeting__type_id='ietf',group=self.group,meeting__date=today-datetime.timedelta(days=90))
999+
self.inprog = SessionFactory.create(meeting__type_id='ietf',group=self.group,meeting__date=today-datetime.timedelta(days=1))
1000+
SessionFactory.create(meeting__type_id='ietf',group=self.group,meeting__date=today+datetime.timedelta(days=90))
1001+
SessionFactory.create(meeting__type_id='interim',group=self.group,meeting__date=today+datetime.timedelta(days=45))
1002+
1003+
1004+
def test_meeting_info(self):
1005+
url = urlreverse('ietf.group.info.meetings',kwargs={'acronym':self.group.acronym})
1006+
response = self.client.get(url)
1007+
self.assertEqual(response.status_code, 200)
1008+
q = PyQuery(response.content)
1009+
self.assertTrue(q('#inprogressmeets'))
1010+
self.assertTrue(q('#futuremeets'))
1011+
self.assertTrue(q('#pastmeets'))
1012+
1013+
self.group.session_set.filter(id=self.inprog.id).delete()
1014+
response = self.client.get(url)
1015+
self.assertEqual(response.status_code, 200)
1016+
q = PyQuery(response.content)
1017+
self.assertFalse(q('#inprogressmeets'))
1018+

0 commit comments

Comments
 (0)