Merge lp:~mhall119/summit/search-private into lp:summit

Proposed by Chris Johnston
Status: Merged
Approved by: Chris Johnston
Approved revision: 489
Merged at revision: 489
Proposed branch: lp:~mhall119/summit/search-private
Merge into: lp:summit
Diff against target: 84 lines (+46/-11)
2 files modified
summit/schedule/tests/tests.py (+38/-2)
summit/schedule/views.py (+8/-9)
To merge this branch: bzr merge lp:~mhall119/summit/search-private
Reviewer Review Type Date Requested Status
Chris Johnston Approve
Review via email: mp+150706@code.launchpad.net

This proposal supersedes a proposal from 2012-10-28.

Commit message

Show private meetings in search results only if the attendee is participating in that meeting

Description of the change

Show private meetings in search results only if the attendee is participating in that meeting

To post a comment you must log in.
lp:~mhall119/summit/search-private updated
488. By Michael Hall

[r=daker] Don't expose hangout_url over the API

Revision history for this message
Chris Johnston (cjohnston) wrote :

Conflicts need to be fixed please.

review: Needs Fixing
lp:~mhall119/summit/search-private updated
489. By Michael Hall

Update from trunk

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
=== modified file 'summit/schedule/tests/tests.py'
--- summit/schedule/tests/tests.py 2013-02-26 20:00:45 +0000
+++ summit/schedule/tests/tests.py 2013-02-27 03:21:20 +0000
@@ -3221,8 +3221,8 @@
3221 self.room = factory.make_one(Room)3221 self.room = factory.make_one(Room)
32223222
3223 def tearDown(self):3223 def tearDown(self):
3224 pass3224 self.client.logout()
32253225
3226 def test_searchform_exists_on_summit_view(self):3226 def test_searchform_exists_on_summit_view(self):
3227 ''' Search form should appear on the summit view page '''3227 ''' Search form should appear on the summit view page '''
3228 response = self.client.get(3228 response = self.client.get(
@@ -3379,3 +3379,39 @@
3379 '<a href="%s">Test Title</a>' % meeting.get_meeting_page_url(),3379 '<a href="%s">Test Title</a>' % meeting.get_meeting_page_url(),
3380 13380 1
3381 )3381 )
3382
3383 def test_private_meeting_not_shown(self):
3384 ''' Private meetings should not be in the results if the attendee is not attending it'''
3385 now = datetime.datetime.now()
3386 week = datetime.timedelta(days=7)
3387 meeting = factory.make_one(Meeting, summit=self.summit, name='test-name', title='Test Title', requires_dial_in=False, private=True)
3388 user = factory.make_one(User, username='testuser', first_name='Test', last_name='User', is_active=True)
3389 user.set_password('password')
3390 user.save()
3391 attendee = factory.make_one(Attendee, summit=self.summit, user=user, start_utc=now, end_utc=now+week)
3392 participant = factory.make_one(Participant, meeting=meeting, attendee=attendee, participation='ATTENDING', from_launchpad=False)
3393
3394 # Attempt to match 'name' against 'test-name' in Meeting.name
3395 response = self.client.get(reverse('summit.schedule.views.search', args=[self.summit.name]), {'q': 'test'})
3396 self.assertContains(response, self.form_html, 1)
3397 self.assertContains(response, '<a href="%s">Test Title</a>' % meeting.get_meeting_page_url(), 0)
3398
3399 def test_private_meeting_with_attendee_shown(self):
3400 ''' Private meetings should be in the results if the attendee is attending it'''
3401 now = datetime.datetime.now()
3402 week = datetime.timedelta(days=7)
3403 meeting = factory.make_one(Meeting, summit=self.summit, name='test-name', title='Test Title', requires_dial_in=False, private=True)
3404 user = factory.make_one(User, username='testuser', first_name='Test', last_name='User', is_active=True)
3405 user.set_password('password')
3406 user.save()
3407 attendee = factory.make_one(Attendee, summit=self.summit, user=user, start_utc=now, end_utc=now+week)
3408 participant = factory.make_one(Participant, meeting=meeting, attendee=attendee, participation='ATTENDING', from_launchpad=False)
3409
3410 logged_in = self.client.login(username='testuser', password='password')
3411 self.assertTrue(logged_in)
3412
3413 # Attempt to match 'name' against 'test-name' in Meeting.name
3414 response = self.client.get(reverse('summit.schedule.views.search', args=[self.summit.name]), {'q': 'test'})
3415 self.assertContains(response, self.form_html, 1)
3416 self.assertContains(response, '<a href="%s">Test Title</a>' % meeting.get_meeting_page_url(), 1)
3417
33823418
=== modified file 'summit/schedule/views.py'
--- summit/schedule/views.py 2013-02-26 20:00:45 +0000
+++ summit/schedule/views.py 2013-02-27 03:21:20 +0000
@@ -83,17 +83,16 @@
83 return render_to_response("schedule/summit.html", context,83 return render_to_response("schedule/summit.html", context,
84 context_instance=RequestContext(request))84 context_instance=RequestContext(request))
8585
8686@summit_required
87@summit_only_required87def search(request, summit, attendee):
88def search(request, summit):
89 query = request.GET.get('q', None)88 query = request.GET.get('q', None)
89 meetings = []
90 if query:90 if query:
91 meetings = summit.meeting_set.filter(91 matches = summit.meeting_set.filter(Q(name__icontains=query) | Q(title__icontains=query))
92 Q(name__icontains=query) | Q(title__icontains=query)92 for m in matches:
93 )93 if not m.private or m.can_view_pm(attendee):
94 else:94 meetings.append(m)
95 meetings = []95
96
97 context = {96 context = {
98 'summit': summit,97 'summit': summit,
99 'query': query,98 'query': query,

Subscribers

People subscribed via source and target branches