Merge lp:~mhall119/summit/fix-period-in-url into lp:summit

Proposed by Michael Hall
Status: Merged
Approved by: James Westby
Approved revision: 164
Merged at revision: 164
Proposed branch: lp:~mhall119/summit/fix-period-in-url
Merge into: lp:summit
Diff against target: 124 lines (+71/-8)
4 files modified
summit/schedule/models/meetingmodel.py (+1/-1)
summit/schedule/models/summitmodel.py (+0/-1)
summit/schedule/tests.py (+64/-0)
summit/urls.py (+6/-6)
To merge this branch: bzr merge lp:~mhall119/summit/fix-period-in-url
Reviewer Review Type Date Requested Status
James Westby (community) Approve
Review via email: mp+75284@code.launchpad.net

Commit message

Fix to allow periods in records names

Description of the change

Overview
========
Fix to allow periods in records names

Details
=======
Previous URLconf regex matching didn't support periods in the matched part of the url, which meant that any record who's name was used as part of the url couldn't contain a period. This patch fixes the urls, and adds a test for each of the affected schedule app urls.

To post a comment you must log in.
Revision history for this message
James Westby (james-w) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'summit/schedule/models/meetingmodel.py'
2--- summit/schedule/models/meetingmodel.py 2011-09-12 19:53:23 +0000
3+++ summit/schedule/models/meetingmodel.py 2011-09-14 00:45:24 +0000
4@@ -138,7 +138,7 @@
5 if self.name is None or self.name == '':
6 name = '-'
7 else:
8- name = self.name.replace('.','-')
9+ name = self.name
10 args = [self.summit.name, self.id, name]
11 return reverse('summit.schedule.views.meeting', args=args)
12 meeting_page_url = property(get_meeting_page_url)
13
14=== modified file 'summit/schedule/models/summitmodel.py'
15--- summit/schedule/models/summitmodel.py 2011-09-02 23:33:15 +0000
16+++ summit/schedule/models/summitmodel.py 2011-09-14 00:45:24 +0000
17@@ -237,7 +237,6 @@
18 name = elem.get("name", "")
19 if not name:
20 return
21- name = name.replace('.','-')
22
23 print "meeting %s" % name
24 meeting = ""
25
26=== modified file 'summit/schedule/tests.py'
27--- summit/schedule/tests.py 2011-09-12 20:37:07 +0000
28+++ summit/schedule/tests.py 2011-09-14 00:45:24 +0000
29@@ -153,6 +153,70 @@
30 self.assertEquals(response.status_code, 200)
31 self.assertContains(response, 'URL:http://summit.ubuntu.com/uds-test/meeting/%s/test-meeting/' % meeting.id, 1)
32
33+
34+class ReverseUrlLookupTestCase(djangotest.TestCase):
35+
36+ def setUp(self):
37+ now = datetime.datetime.utcnow()
38+ one_hour = datetime.timedelta(0, 3600)
39+ self.summit = factory.make_one(Summit, name='uds-test')
40+ self.summit.save()
41+ self.slot = factory.make_one(
42+ Slot,
43+ start_utc=now,
44+ end_utc=now+one_hour,
45+ type='open',
46+ summit=self.summit)
47+ self.slot.save()
48+
49+ def test_meeting_name_with_period(self):
50+ ''' Test the following Meeting urlconf
51+ (r'^(?P<summit_name>[\w-]+)/meeting/(?P<meeting_id>\d+)/(?P<meeting_slug>[\.\w-]+)/$', 'meeting'),
52+ '''
53+ meeting = factory.make_one(Meeting, summit=self.summit, name='test.meeting')
54+
55+ rev_args = ['uds-test', meeting.id, 'test.meeting']
56+ reverse_url = reverse('summit.schedule.views.meeting', args=rev_args)
57+ self.assertEquals(reverse_url, '/uds-test/meeting/%s/test.meeting/' % meeting.id)
58+
59+ def test_room_name_with_period(self):
60+ ''' Test the following Room urlconfs
61+ (r'^(?P<summit_name>[\w-]+)/(?P<room_name>[\w-]+)/$', 'by_room'),
62+ (r'^(?P<summit_name>[\w-]+)/room/(?P<room_name>[\w-]+).ical$', 'room_ical'),
63+ '''
64+ room = factory.make_one(Room, summit=self.summit, name='test.room')
65+
66+ rev_args = ['uds-test', 'test.room']
67+ reverse_url = reverse('summit.schedule.views.by_room', args=rev_args)
68+ self.assertEquals(reverse_url, '/uds-test/test.room/')
69+
70+ reverse_url = reverse('summit.schedule.views.room_ical', args=rev_args)
71+ self.assertEquals(reverse_url, '/uds-test/room/test.room.ical')
72+
73+ def test_track_name_with_period(self):
74+ ''' Test the following Track urlconfs
75+ (r'^(?P<summit_name>[\w-]+)/track/(?P<track_slug>[\w-]+)/$', 'by_track'),
76+ (r'^(?P<summit_name>[\w-]+)/track/(?P<track_slug>[\w-]+).ical$', 'track_ical'),
77+ '''
78+ track = factory.make_one(Track, summit=self.summit, slug='test.track')
79+
80+ rev_args = ['uds-test', 'test.track']
81+ reverse_url = reverse('summit.schedule.views.by_track', args=rev_args)
82+ self.assertEquals(reverse_url, '/uds-test/track/test.track/')
83+
84+ reverse_url = reverse('summit.schedule.views.track_ical', args=rev_args)
85+ self.assertEquals(reverse_url, '/uds-test/track/test.track.ical')
86+
87+ def test_participant_name_with_period(self):
88+ ''' Test the following User urlconf
89+ (r'^(?P<summit_name>[\w-]+)/participant/(?P<username>[\w-]+)\.ical$', 'user_ical'),
90+ '''
91+ user = factory.make_one(User, username='test.user')
92+
93+ rev_args = ['uds-test', 'test.user']
94+ reverse_url = reverse('summit.schedule.views.user_ical', args=rev_args)
95+ self.assertEquals(reverse_url, '/uds-test/participant/test.user.ical')
96+
97 class EtherpadEditUrl(djangotest.TestCase):
98
99 def setUp(self):
100
101=== modified file 'summit/urls.py'
102--- summit/urls.py 2011-08-12 14:25:33 +0000
103+++ summit/urls.py 2011-09-14 00:45:24 +0000
104@@ -62,14 +62,14 @@
105
106 (r'^(?P<summit_name>[\w-]+)/next$', 'next_session'),
107 (r'^(?P<summit_name>[\w-]+)/(?P<date>[\d-]+)/$', 'by_date'),
108- (r'^(?P<summit_name>[\w-]+)/(?P<room_name>[\w-]+)/$', 'by_room'),
109- (r'^(?P<summit_name>[\w-]+)/track/(?P<track_slug>[\w-]+)/$', 'by_track'),
110- (r'^(?P<summit_name>[\w-]+)/meeting/(?P<meeting_id>\d+)/(?P<meeting_slug>[\w-]+)/$', 'meeting'),
111+ (r'^(?P<summit_name>[\w-]+)/(?P<room_name>[\.\w-]+)/$', 'by_room'),
112+ (r'^(?P<summit_name>[\w-]+)/track/(?P<track_slug>[\.\w-]+)/$', 'by_track'),
113+ (r'^(?P<summit_name>[\w-]+)/meeting/(?P<meeting_id>\d+)/(?P<meeting_slug>[\.\w-]+)/$', 'meeting'),
114 (r'^(?P<summit_name>[\w-]+)\.csv$', 'csv'),
115 (r'^(?P<summit_name>[\w-]+)\.ical$', 'ical'),
116- (r'^(?P<summit_name>[\w-]+)/participant/(?P<username>[\w-]+)\.ical$', 'user_ical'),
117- (r'^(?P<summit_name>[\w-]+)/room/(?P<room_name>[\w-]+).ical$', 'room_ical'),
118- (r'^(?P<summit_name>[\w-]+)/track/(?P<track_slug>[\w-]+).ical$', 'track_ical'),
119+ (r'^(?P<summit_name>[\w-]+)/participant/(?P<username>[\.\w-]+)\.ical$', 'user_ical'),
120+ (r'^(?P<summit_name>[\w-]+)/room/(?P<room_name>[\.\w-]+).ical$', 'room_ical'),
121+ (r'^(?P<summit_name>[\w-]+)/track/(?P<track_slug>[\.\w-]+).ical$', 'track_ical'),
122 )
123
124 if settings.DEBUG or settings.SERVE_STATIC:

Subscribers

People subscribed via source and target branches