Merge lp:~mhall119/summit/fix-edit-meeting-link-1248193 into lp:summit

Proposed by Michael Hall
Status: Merged
Approved by: Michael Hall
Approved revision: 562
Merged at revision: 561
Proposed branch: lp:~mhall119/summit/fix-edit-meeting-link-1248193
Merge into: lp:summit
Diff against target: 131 lines (+95/-3)
2 files modified
summit/schedule/templates/schedule/virtual_meeting.html (+2/-3)
summit/schedule/tests/meeting_page.py (+93/-0)
To merge this branch: bzr merge lp:~mhall119/summit/fix-edit-meeting-link-1248193
Reviewer Review Type Date Requested Status
Chris Johnston Approve
Joe Talbott Approve
Review via email: mp+193946@code.launchpad.net

Commit message

Change virtual_meeting.html to display organizer edit link when the user is both the drafter and organizer

Description of the change

Change virtual_meeting.html to display organizer edit link when the user is both the drafter and organizer

To post a comment you must log in.
Revision history for this message
Joe Talbott (joetalbott) wrote :

Your description says "drafter and organizer" but the logic seems to be that someone could be organizer but not drafter and still get the organizer edit link based on the 'or' on L7.

I'd recommend adding a test that ensures the link isn't shown when it should not be as well.

Revision history for this message
Michael Hall (mhall119) wrote :

Yes, if the user is an organizer (whether they are drafter or not) they should get the organizer's link.

Revision history for this message
Joe Talbott (joetalbott) :
review: Approve
Revision history for this message
Chris Johnston (cjohnston) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'summit/schedule/templates/schedule/virtual_meeting.html'
2--- summit/schedule/templates/schedule/virtual_meeting.html 2013-05-14 14:21:15 +0000
3+++ summit/schedule/templates/schedule/virtual_meeting.html 2013-11-05 19:02:20 +0000
4@@ -39,10 +39,9 @@
5 <li><a class="sub-nav-item" href="{{ meeting.spec_url }}">Blueprint</a></li>
6 {% else %}
7 {% if summit_organizer or drafter %}
8- {% if not drafter %}
9+ {% if summit_organizer %}
10 <li><a class="sub-nav-item" href="{% url summit.schedule.views.organizer_edit_meeting summit.name, meeting.id, meeting.name|default:'-' %}">Edit meeting</a></li>
11- {% endif %}
12- {% if not summit_organizer %}
13+ {% else %}
14 <li><a class="sub-nav-item" href="{% url summit.schedule.views.edit_meeting summit.name, meeting.id, meeting.name|default:'-' %}">Edit meeting</a></li>
15 {% endif %}
16 <li><a class="sub-nav-item" href="{% url summit.schedule.views.attendee_review summit.name, meeting.id, meeting.name|default:'-' %}">Review attendees</a></li>
17
18=== modified file 'summit/schedule/tests/meeting_page.py'
19--- summit/schedule/tests/meeting_page.py 2013-02-27 03:29:31 +0000
20+++ summit/schedule/tests/meeting_page.py 2013-11-05 19:02:20 +0000
21@@ -19,6 +19,7 @@
22 from django import test as djangotest
23 from django.core.urlresolvers import reverse
24 from django.conf import settings
25+from django.contrib.auth.models import User
26
27 from model_mommy import mommy as factory
28 from summit.schedule.fields import NameField
29@@ -29,6 +30,9 @@
30 Meeting,
31 Room,
32 Agenda,
33+ Attendee,
34+ Track,
35+ Lead,
36 )
37
38 site_root = getattr(settings, 'SITE_ROOT', 'http://summit.ubuntu.com')
39@@ -99,3 +103,92 @@
40 ),
41 1
42 )
43+
44+ def test_edit_link_for_both_drafter_and_organizer(self):
45+ """ Tests that the edit meeting link is present when the user is both drafter and organizer """
46+ now = datetime.datetime.utcnow()
47+ one_hour = datetime.timedelta(0, 3600)
48+ summit = factory.make_one(Summit, name='uds-test', virtual_summit=True)
49+ summit.save()
50+ slot = factory.make_one(
51+ Slot,
52+ start_utc=now,
53+ end_utc=now+one_hour,
54+ type='open',
55+ summit=summit
56+ )
57+ slot.save()
58+
59+ room = factory.make_one(Room, summit=summit)
60+
61+ meeting = factory.make_one(
62+ Meeting,
63+ summit=summit,
64+ name='test-meeting',
65+ private=False
66+ )
67+ agenda = factory.make_one(
68+ Agenda,
69+ slot=slot,
70+ meeting=meeting,
71+ room=room
72+ )
73+
74+ user = factory.make_one(
75+ User,
76+ username='testuser',
77+ first_name='Test',
78+ last_name='User',
79+ is_active=True,
80+ is_staff=False,
81+ is_superuser=False,
82+ )
83+ user.set_password('password')
84+ user.save()
85+ attendee = factory.make_one(
86+ Attendee,
87+ summit=summit,
88+ user=user,
89+ start_utc=now,
90+ end_utc=now+one_hour
91+ )
92+ meeting.drafter = attendee
93+ meeting.save()
94+ track = factory.make_one(
95+ Track,
96+ summit=summit,
97+ )
98+ lead = factory.make_one(
99+ Lead,
100+ summit=summit,
101+ track=track,
102+ lead=attendee,
103+ )
104+
105+
106+ logged_in = self.client.login(username='testuser', password='password')
107+ self.assertTrue(logged_in)
108+
109+ # check meeting page url generation
110+ self.assertEquals(
111+ meeting.meeting_page_url,
112+ '/uds-test/meeting/%s/test-meeting/' % meeting.id
113+ )
114+
115+ # check meeting page url reverse lookup
116+ rev_args = ['uds-test', meeting.id, 'test-meeting']
117+ reverse_url = reverse('summit.schedule.views.meeting', args=rev_args)
118+ self.assertEquals(
119+ reverse_url,
120+ '/uds-test/meeting/%s/test-meeting/' % meeting.id
121+ )
122+
123+ # check meeting details page
124+ response = self.client.get(reverse_url)
125+ self.assertEquals(response.status_code, 200)
126+
127+ self.assertContains(
128+ response,
129+ 'Edit meeting',
130+ 1
131+ )

Subscribers

People subscribed via source and target branches