Merge lp:~ronnie.vd.c/loco-team-portal/rss into lp:loco-team-portal
- rss
- Merge into 0.2
Status: | Merged |
---|---|
Merge reported by: | Adnane Belmadiaf |
Merged at revision: | not available |
Proposed branch: | lp:~ronnie.vd.c/loco-team-portal/rss |
Merge into: | lp:loco-team-portal |
Diff against target: |
516 lines (+216/-104) 22 files modified
loco_directory/events/feeds.py (+55/-0) loco_directory/events/urls.py (+0/-2) loco_directory/events/views.py (+0/-22) loco_directory/meetings/feeds.py (+40/-0) loco_directory/meetings/urls.py (+0/-1) loco_directory/meetings/views.py (+0/-22) loco_directory/teams/feeds.py (+55/-0) loco_directory/teams/views.py (+7/-4) loco_directory/templates/events/team_events_rss.xml (+0/-24) loco_directory/templates/feeds/events_description.html (+10/-0) loco_directory/templates/feeds/events_title.html (+1/-0) loco_directory/templates/feeds/globalevents_description.html (+9/-0) loco_directory/templates/feeds/globalevents_title.html (+1/-0) loco_directory/templates/feeds/meetings_description.html (+8/-0) loco_directory/templates/feeds/meetings_title.html (+1/-0) loco_directory/templates/feeds/teams_description.html (+10/-0) loco_directory/templates/feeds/teams_title.html (+1/-0) loco_directory/templates/meetings/team_meetings_rss.xml (+0/-23) loco_directory/templates/teams/team_detail.html (+2/-2) loco_directory/templates/teams/team_event_list.html (+2/-2) loco_directory/templates/teams/team_meeting_list.html (+2/-2) loco_directory/urls.py (+12/-0) |
To merge this branch: | bzr merge lp:~ronnie.vd.c/loco-team-portal/rss |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Michael Hall (community) | Needs Fixing | ||
Adnane Belmadiaf | Approve | ||
Review via email: mp+51800@code.launchpad.net |
Commit message
Description of the change
RSS feeds are now using syndication framework
Ronnie (ronnie.vd.c) wrote : | # |
I forgot to remove some old code. The difference is now 100 lines of code.
Al lot of functionality is added.
1. We now have GlobalEvent Feeds
2. We now have combined TeamEvent/
3. Easy to add filter options
4. By using the framework we can supply atom and rss 1.0 feeds easily
5. Less clutter in the views.py because the rss is now in separate files (feeds.py)
Adnane Belmadiaf (daker) wrote : | # |
Look goods to me.
Michael Hall (mhall119) wrote : | # |
It looks like this has merge conflicts now. I'd also like to keep the old feed URLS, even if they're nothing more than a redirect to the new ones, so that we don't break anything.
Adnane Belmadiaf (daker) wrote : | # |
@Ronnie thanks for your work, i have a new MP with your code and fixes for @mhall remark https:/
Preview Diff
1 | === added file 'loco_directory/events/feeds.py' |
2 | --- loco_directory/events/feeds.py 1970-01-01 00:00:00 +0000 |
3 | +++ loco_directory/events/feeds.py 2011-03-13 10:44:24 +0000 |
4 | @@ -0,0 +1,55 @@ |
5 | +from django.core.exceptions import ObjectDoesNotExist |
6 | +from django.core.urlresolvers import reverse |
7 | +from django.contrib.syndication.feeds import Feed, FeedDoesNotExist |
8 | +from django.utils.translation import ugettext as _ |
9 | +from events.models import TeamEvent, GlobalEvent |
10 | +from teams.models import Team |
11 | + |
12 | +import datetime |
13 | + |
14 | +class TeamEventFeed(Feed): |
15 | + def get_object(self, bits): |
16 | + if len(bits) >= 1: |
17 | + if bits[0] == 'all': |
18 | + return 'all' |
19 | + else: |
20 | + try: |
21 | + return Team.objects.get(lp_name=bits[0]) |
22 | + except: |
23 | + raise ObjectDoesNotExist |
24 | + return None |
25 | + |
26 | + def items(self, obj): |
27 | + if isinstance(obj, Team): |
28 | + return TeamEvent.objects.filter(teams=obj, date_end__gt=datetime.datetime.now()).order_by('-date_begin')[:15] |
29 | + else: |
30 | + return TeamEvent.objects.filter(date_end__gt=datetime.datetime.now()).order_by('-date_begin')[:15] |
31 | + |
32 | + def title(self, obj): |
33 | + if isinstance(obj, Team): |
34 | + return _('Upcoming Events for %(teamname)s' % {'teamname': obj.name}) |
35 | + else: |
36 | + return _('Upcoming Events') |
37 | + |
38 | + def link(self, obj): |
39 | + if isinstance(obj, Team): |
40 | + return reverse('team-event-list', kwargs={'team_slug': obj.lp_name}) |
41 | + else: |
42 | + return reverse('event-list') |
43 | + |
44 | + |
45 | +class GlobalEventFeed(TeamEventFeed): |
46 | + def items(self, obj): |
47 | + if isinstance(obj, Team): |
48 | + return GlobalEvent.objects.filter(teamevent__teams=obj, date_end__gt=datetime.datetime.now()).order_by('-date_begin')[:15] |
49 | + else: |
50 | + return GlobalEvent.objects.filter(date_end__gt=datetime.datetime.now()).order_by('-date_begin')[:15] |
51 | + |
52 | + def title(self, obj): |
53 | + if isinstance(obj, Team): |
54 | + return _('Upcoming Global Events where %(teamname)s is participating' % {'teamname': obj.name}) |
55 | + else: |
56 | + return _('Upcoming Global Events') |
57 | + |
58 | + def link(self, obj): |
59 | + return reverse('event-list') |
60 | |
61 | === modified file 'loco_directory/events/urls.py' |
62 | --- loco_directory/events/urls.py 2011-02-17 20:05:03 +0000 |
63 | +++ loco_directory/events/urls.py 2011-03-13 10:44:24 +0000 |
64 | @@ -15,7 +15,6 @@ |
65 | url(r'^team/(?P<team_event_id>\d+)/comment/$', 'events.views.team_event_comment_new', name='team-event-comment-new'), |
66 | url(r'^team/(?P<team_event_id>\d+)/copy/$', 'events.views.team_event_copy', name='team-event-copy'), |
67 | url(r'^team/(?P<team_slug>[a-zA-Z0-9\-\.\+?]+)/add/$', 'events.views.team_event_new', name='team-event-new'), |
68 | - url(r'^team/(?P<team_slug>[a-zA-Z0-9\-\.\+?]+)/rss/$', 'events.views.team_events_rss', name='team-events-rss'), |
69 | url(r'^team/(?P<team_slug>[a-zA-Z0-9\-\.\+?]+)/ical/$', 'events.views.team_event_list_ical', name='team-event-list-ical'), |
70 | url(r'^team/add/$', 'events.views.team_event_select', name='team-event-select'), |
71 | #global events |
72 | @@ -25,5 +24,4 @@ |
73 | url(r'^global/(?P<global_event_id>\d+)/update/$', 'events.views.global_event_update', name='global-event-update'), |
74 | url(r'^global/(?P<global_event_id>\d+)/locations/$', 'events.views.global_event_locations', name='global-event-locations'), |
75 | url(r'^global/add/$', 'events.views.global_event_new', name='global-event-new'), |
76 | - |
77 | ) |
78 | |
79 | === modified file 'loco_directory/events/views.py' |
80 | --- loco_directory/events/views.py 2011-03-06 22:13:43 +0000 |
81 | +++ loco_directory/events/views.py 2011-03-13 10:44:24 +0000 |
82 | @@ -164,28 +164,6 @@ |
83 | context = {'teams': teams, 'global_event_id': request.GET.get('global_event_id', None)} |
84 | return render_to_response('events/team_event_new_select.html', context, RequestContext(request)) |
85 | |
86 | -def team_events_rss(request, team_slug): |
87 | - team_object = get_object_or_404(Team, lp_name=team_slug) |
88 | - events = TeamEvent.objects.filter(teams__lp_name=team_slug, date_end__gt=datetime.datetime.now()).order_by('date_begin')[:15] |
89 | - |
90 | - if request.META.has_key('wsgi.url_scheme'): |
91 | - scheme = request.META.get('wsgi.url_scheme') |
92 | - else: |
93 | - scheme = 'http' |
94 | - |
95 | - if request.META.has_key('HTTP_HOST'): |
96 | - host = request.META.get('HTTP_HOST') |
97 | - else: |
98 | - host = request.META.get('SERVER_NAME') |
99 | - |
100 | - if request.META.get('SERVER_PORT', 80) == 80 or request.META.get('SERVER_PORT', 80) == 0: |
101 | - base = '%s://%s' % (scheme, host) |
102 | - else: |
103 | - base = '%s://%s:%s' % (scheme, host, request.META.get('SERVER_PORT', 80)) |
104 | - |
105 | - context = {'team_object': team_object, 'events': events, 'base':base} |
106 | - return render_to_response('events/team_events_rss.xml', context, RequestContext(request), mimetype='application/xhtml+xml') |
107 | - |
108 | @login_required |
109 | def team_event_new(request, team_slug): |
110 | """ |
111 | |
112 | === added file 'loco_directory/meetings/feeds.py' |
113 | --- loco_directory/meetings/feeds.py 1970-01-01 00:00:00 +0000 |
114 | +++ loco_directory/meetings/feeds.py 2011-03-13 10:44:24 +0000 |
115 | @@ -0,0 +1,40 @@ |
116 | +from django.core.exceptions import ObjectDoesNotExist |
117 | +from django.core.urlresolvers import reverse |
118 | +from django.contrib.syndication.feeds import Feed, FeedDoesNotExist |
119 | +from django.utils.translation import ugettext as _ |
120 | +from meetings.models import TeamMeeting |
121 | +from teams.models import Team |
122 | + |
123 | +import datetime |
124 | + |
125 | + |
126 | +class TeamMeetingFeed(Feed): |
127 | + def get_object(self, bits): |
128 | + if len(bits) >= 1: |
129 | + if bits[0] == 'all': |
130 | + return 'all' |
131 | + else: |
132 | + try: |
133 | + return Team.objects.get(lp_name=bits[0]) |
134 | + except: |
135 | + raise ObjectDoesNotExist |
136 | + return None |
137 | + |
138 | + def items(self, obj): |
139 | + if isinstance(obj, Team): |
140 | + return TeamMeeting.objects.filter(teams=obj, date_end__gt=datetime.datetime.now()).order_by('-date_begin')[:15] |
141 | + else: |
142 | + return TeamMeeting.objects.filter(date_end__gt=datetime.datetime.now()).order_by('-date_begin')[:15] |
143 | + |
144 | + def title(self, obj): |
145 | + if isinstance(obj, Team): |
146 | + return _('Upcoming Meetings for %(teamname)s' % {'teamname': obj.name}) |
147 | + else: |
148 | + return _('Upcoming Meetings') |
149 | + |
150 | + def link(self, obj): |
151 | + if isinstance(obj, Team): |
152 | + return reverse('team-meeting-list', kwargs={'team_slug': obj.lp_name}) |
153 | + else: |
154 | + return reverse('meeting-list') |
155 | + |
156 | |
157 | === modified file 'loco_directory/meetings/urls.py' |
158 | --- loco_directory/meetings/urls.py 2011-01-23 02:17:54 +0000 |
159 | +++ loco_directory/meetings/urls.py 2011-03-13 10:44:24 +0000 |
160 | @@ -12,7 +12,6 @@ |
161 | url(r'^team/(?P<team_meeting_id>\d+)/update/$', 'meetings.views.team_meeting_update', name='team-meeting-update'), |
162 | url(r'^team/(?P<team_meeting_id>\d+)/copy/$', 'meetings.views.team_meeting_copy', name='team-meeting-copy'), |
163 | url(r'^team/(?P<team_slug>[a-zA-Z0-9\-\.\+?]+)/add/$', 'meetings.views.team_meeting_new', name='team-meeting-new'), |
164 | - url(r'^team/(?P<team_slug>[a-zA-Z0-9\-\.\+?]+)/rss/$', 'meetings.views.team_meetings_rss', name='team-meetings-rss'), |
165 | url(r'^team/(?P<team_slug>[a-zA-Z0-9\-\.\+?]+)/ical/$', 'meetings.views.team_meeting_list_ical', name='team-meeting-list-ical'), |
166 | url(r'^team/add/$', 'meetings.views.team_meeting_select', name='team-meeting-select'), |
167 | |
168 | |
169 | === modified file 'loco_directory/meetings/views.py' |
170 | --- loco_directory/meetings/views.py 2011-02-23 01:05:59 +0000 |
171 | +++ loco_directory/meetings/views.py 2011-03-13 10:44:24 +0000 |
172 | @@ -144,28 +144,6 @@ |
173 | context = {'teams': teams} |
174 | return render_to_response('meetings/team_meeting_new_select.html', context, RequestContext(request)) |
175 | |
176 | -def team_meetings_rss(request, team_slug): |
177 | - team_object = get_object_or_404(Team, lp_name=team_slug) |
178 | - meetings = TeamMeeting.objects.filter(teams__lp_name=team_slug, date_end__gt=datetime.datetime.now()).order_by('date_begin')[:15] |
179 | - |
180 | - if request.META.has_key('wsgi.url_scheme'): |
181 | - scheme = request.META.get('wsgi.url_scheme') |
182 | - else: |
183 | - scheme = 'http' |
184 | - |
185 | - if request.META.has_key('HTTP_HOST'): |
186 | - host = request.META.get('HTTP_HOST') |
187 | - else: |
188 | - host = request.META.get('SERVER_NAME') |
189 | - |
190 | - if request.META.get('SERVER_PORT', 80) == 80 or request.META.get('SERVER_PORT', 80) == 0: |
191 | - base = '%s://%s' % (scheme, host) |
192 | - else: |
193 | - base = '%s://%s:%s' % (scheme, host, request.META.get('SERVER_PORT', 80)) |
194 | - |
195 | - context = {'team_object': team_object, 'meetings': meetings, 'base':base} |
196 | - return render_to_response('meetings/team_meetings_rss.xml', context, RequestContext(request), mimetype='application/xhtml+xml') |
197 | - |
198 | @login_required |
199 | def team_meeting_new(request, team_slug): |
200 | """ |
201 | |
202 | === added file 'loco_directory/teams/feeds.py' |
203 | --- loco_directory/teams/feeds.py 1970-01-01 00:00:00 +0000 |
204 | +++ loco_directory/teams/feeds.py 2011-03-13 10:44:24 +0000 |
205 | @@ -0,0 +1,55 @@ |
206 | +from django.core.exceptions import ObjectDoesNotExist |
207 | +from django.core.urlresolvers import reverse |
208 | +from django.contrib.syndication.feeds import Feed, FeedDoesNotExist |
209 | +from django.utils.translation import ugettext as _ |
210 | +from meetings.models import TeamMeeting |
211 | +from events.models import TeamEvent |
212 | +from teams.models import Team |
213 | + |
214 | +import datetime |
215 | + |
216 | + |
217 | +class TeamFeed(Feed): |
218 | + def get_object(self, bits): |
219 | + if len(bits) >= 1: |
220 | + if bits[0] == 'all': |
221 | + return 'all' |
222 | + else: |
223 | + try: |
224 | + return Team.objects.get(lp_name=bits[0]) |
225 | + except: |
226 | + raise ObjectDoesNotExist |
227 | + return None |
228 | + |
229 | + def items(self, obj): |
230 | + if isinstance(obj, Team): |
231 | + meetings = TeamMeeting.objects.filter(teams=obj, date_end__gt=datetime.datetime.now()).order_by('-date_begin') |
232 | + events = TeamEvent.objects.filter(teams=obj, date_end__gt=datetime.datetime.now()).order_by('-date_begin') |
233 | + else: |
234 | + meetings = TeamMeeting.objects.filter(date_end__gt=datetime.datetime.now()).order_by('-date_begin') |
235 | + events = TeamEvent.objects.filter(date_end__gt=datetime.datetime.now()).order_by('-date_begin') |
236 | + |
237 | + events_and_meetings = [] |
238 | + events = events[:15].iterator() |
239 | + meetings = meetings[:15].iterator() |
240 | + for event in events: |
241 | + events_and_meetings.append(event) |
242 | + for meeting in meetings: |
243 | + events_and_meetings.append(meeting) |
244 | + |
245 | + events_and_meetings.sort(key=lambda event: event.date_begin) |
246 | + return events_and_meetings |
247 | + |
248 | + def title(self, obj): |
249 | + if isinstance(obj, Team): |
250 | + return _('Upcoming Events and Meetings for %(teamname)s' % {'teamname': obj.name}) |
251 | + else: |
252 | + return _('Upcoming Events and Meetings') |
253 | + |
254 | + def link(self, obj): |
255 | + if isinstance(obj, Team): |
256 | + return obj.get_absolute_url() |
257 | + else: |
258 | + return '/' |
259 | + |
260 | + |
261 | |
262 | === modified file 'loco_directory/teams/views.py' |
263 | --- loco_directory/teams/views.py 2011-02-17 21:16:56 +0000 |
264 | +++ loco_directory/teams/views.py 2011-03-13 10:44:24 +0000 |
265 | @@ -78,15 +78,18 @@ |
266 | return render_to_response('teams/team_list.html', context, |
267 | RequestContext(request)) |
268 | |
269 | +def get_events_and_meetings(team_object): |
270 | + team_events = list(TeamEvent.objects.filter(teams=team_object)) |
271 | + team_meetings = list(TeamMeeting.objects.filter(teams=team_object)) |
272 | + team_events.extend(team_meetings) |
273 | + return team_events |
274 | + |
275 | def team_ical(request, team_slug): |
276 | """ |
277 | Return a ical list with the events and meetings in ical format. |
278 | """ |
279 | team_object = get_object_or_404(Team, lp_name=team_slug) |
280 | - team_events = list(TeamEvent.objects.filter(teams__lp_name=team_slug)) |
281 | - team_meetings = list(TeamMeeting.objects.filter(teams__lp_name=team_slug)) |
282 | - team_events.extend(team_meetings) |
283 | - return as_ical(team_events, team_object.name) |
284 | + return as_ical(get_events_and_meetings(team_object), team_object.name) |
285 | |
286 | def team_event_list(request, team_slug): |
287 | """ |
288 | |
289 | === removed file 'loco_directory/templates/events/team_events_rss.xml' |
290 | --- loco_directory/templates/events/team_events_rss.xml 2010-08-17 08:48:39 +0000 |
291 | +++ loco_directory/templates/events/team_events_rss.xml 1970-01-01 00:00:00 +0000 |
292 | @@ -1,24 +0,0 @@ |
293 | -<?xml version="1.0" encoding="UTF-8"?> |
294 | -{% load i18n %} |
295 | -<rss version="2.0"> |
296 | - <channel> |
297 | - <title>{% blocktrans with team_object.name as team_name %}Upcoming Events for {{team_name}}{% endblocktrans %}</title> |
298 | - <link>{{base}}{% url team-event-list team_object.lp_name %}</link> |
299 | - |
300 | - {% for e in events %} |
301 | - <item> |
302 | - <title> {{ e.name }}</title> |
303 | - <link>{{base}}{% url team-event-detail e.id %}</link> |
304 | - <description>{% trans "When:" %} {% spaceless %} |
305 | - {% ifequal e.date_begin|date e.date_end|date %} |
306 | - {{ e.date_begin|date:"D, d N Y H:i" }} - {{ e.date_end|date:"H:i O" }} |
307 | - {% else %} |
308 | - {{ e.date_begin|date:"D, d N Y H:i" }} - {{ e.date_end|date:"D, d N Y H:i O" }} |
309 | - {% endifequal %} |
310 | - {% endspaceless %}{% if e.venue.name %} | {% trans "Where:" %} {{ e.venue.name }}{% endif %} |
311 | - {% if e.description %} | {% trans "Description:" %} {{ e.description }}{% endif %}</description> |
312 | - <guid>{{base}}{% url team-event-detail e.id %}</guid> |
313 | - </item> |
314 | - {% endfor %} |
315 | - </channel> |
316 | -</rss> |
317 | |
318 | === added directory 'loco_directory/templates/feeds' |
319 | === added file 'loco_directory/templates/feeds/events_description.html' |
320 | --- loco_directory/templates/feeds/events_description.html 1970-01-01 00:00:00 +0000 |
321 | +++ loco_directory/templates/feeds/events_description.html 2011-03-13 10:44:24 +0000 |
322 | @@ -0,0 +1,10 @@ |
323 | +{% load i18n %} |
324 | +{% trans "When:" %} {% spaceless %} |
325 | +{% ifequal obj.date_begin|date obj.date_end|date %} |
326 | + {{ obj.date_begin|date:"D, d N Y H:i" }} - {{ obj.date_end|date:"H:i O" }} |
327 | +{% else %} |
328 | + {{ obj.date_begin|date:"D, d N Y H:i" }} - {{ obj.date_end|date:"D, d N Y H:i O" }} |
329 | +{% endifequal %} |
330 | +{% endspaceless %} |
331 | +{% if obj.venue.name %} | {% trans "Where:" %} {{ obj.venue.name }}{% endif %} |
332 | +{% if obj.description %} | {% trans "Description:" %} {{ obj.description }}{% endif %} |
333 | |
334 | === added file 'loco_directory/templates/feeds/events_title.html' |
335 | --- loco_directory/templates/feeds/events_title.html 1970-01-01 00:00:00 +0000 |
336 | +++ loco_directory/templates/feeds/events_title.html 2011-03-13 10:44:24 +0000 |
337 | @@ -0,0 +1,1 @@ |
338 | +{{ obj.name }} |
339 | |
340 | === added file 'loco_directory/templates/feeds/globalevents_description.html' |
341 | --- loco_directory/templates/feeds/globalevents_description.html 1970-01-01 00:00:00 +0000 |
342 | +++ loco_directory/templates/feeds/globalevents_description.html 2011-03-13 10:44:24 +0000 |
343 | @@ -0,0 +1,9 @@ |
344 | +{% load i18n %} |
345 | +{% trans "When:" %} {% spaceless %} |
346 | +{% ifequal obj.date_begin|date obj.date_end|date %} |
347 | + {{ obj.date_begin|date:"D, d N Y H:i" }} - {{ obj.date_end|date:"H:i O" }} |
348 | +{% else %} |
349 | + {{ obj.date_begin|date:"D, d N Y H:i" }} - {{ obj.date_end|date:"D, d N Y H:i O" }} |
350 | +{% endifequal %} |
351 | +{% endspaceless %} |
352 | +{% if obj.description %} | {% trans "Description:" %} {{ obj.description }}{% endif %} |
353 | |
354 | === added file 'loco_directory/templates/feeds/globalevents_title.html' |
355 | --- loco_directory/templates/feeds/globalevents_title.html 1970-01-01 00:00:00 +0000 |
356 | +++ loco_directory/templates/feeds/globalevents_title.html 2011-03-13 10:44:24 +0000 |
357 | @@ -0,0 +1,1 @@ |
358 | +{{ obj.name }} |
359 | |
360 | === added file 'loco_directory/templates/feeds/meetings_description.html' |
361 | --- loco_directory/templates/feeds/meetings_description.html 1970-01-01 00:00:00 +0000 |
362 | +++ loco_directory/templates/feeds/meetings_description.html 2011-03-13 10:44:24 +0000 |
363 | @@ -0,0 +1,8 @@ |
364 | +{% load i18n %} |
365 | +{% trans "When:" %} {% spaceless %} |
366 | +{% ifequal obj.date_begin|date obj.date_end|date %} |
367 | + {{ obj.date_begin|date:"D, d N Y H:i" }} - {{ obj.date_end|date:"H:i O" }} |
368 | +{% else %} |
369 | + {{ obj.date_begin|date:"D, d N Y H:i" }} - {{ obj.date_end|date:"D, d N Y H:i O" }} |
370 | +{% endifequal %} |
371 | +{% endspaceless %} |
372 | |
373 | === added file 'loco_directory/templates/feeds/meetings_title.html' |
374 | --- loco_directory/templates/feeds/meetings_title.html 1970-01-01 00:00:00 +0000 |
375 | +++ loco_directory/templates/feeds/meetings_title.html 2011-03-13 10:44:24 +0000 |
376 | @@ -0,0 +1,1 @@ |
377 | +{{ obj.name }} |
378 | |
379 | === added file 'loco_directory/templates/feeds/teams_description.html' |
380 | --- loco_directory/templates/feeds/teams_description.html 1970-01-01 00:00:00 +0000 |
381 | +++ loco_directory/templates/feeds/teams_description.html 2011-03-13 10:44:24 +0000 |
382 | @@ -0,0 +1,10 @@ |
383 | +{% load i18n %} |
384 | +{% trans "When:" %} {% spaceless %} |
385 | +{% ifequal obj.date_begin|date obj.date_end|date %} |
386 | + {{ obj.date_begin|date:"D, d N Y H:i" }} - {{ obj.date_end|date:"H:i O" }} |
387 | +{% else %} |
388 | + {{ obj.date_begin|date:"D, d N Y H:i" }} - {{ obj.date_end|date:"D, d N Y H:i O" }} |
389 | +{% endifequal %} |
390 | +{% endspaceless %} |
391 | +{% if obj.venue.name %} | {% trans "Where:" %} {{ obj.venue.name }}{% endif %} |
392 | +{% if obj.description %} | {% trans "Description:" %} {{ obj.description }}{% endif %} |
393 | |
394 | === added file 'loco_directory/templates/feeds/teams_title.html' |
395 | --- loco_directory/templates/feeds/teams_title.html 1970-01-01 00:00:00 +0000 |
396 | +++ loco_directory/templates/feeds/teams_title.html 2011-03-13 10:44:24 +0000 |
397 | @@ -0,0 +1,1 @@ |
398 | +{{ obj.name }} |
399 | |
400 | === removed file 'loco_directory/templates/meetings/team_meetings_rss.xml' |
401 | --- loco_directory/templates/meetings/team_meetings_rss.xml 2010-12-02 07:56:46 +0000 |
402 | +++ loco_directory/templates/meetings/team_meetings_rss.xml 1970-01-01 00:00:00 +0000 |
403 | @@ -1,23 +0,0 @@ |
404 | -<?xml version="1.0" encoding="UTF-8"?> |
405 | -{% load i18n %} |
406 | -<rss version="2.0"> |
407 | - <channel> |
408 | - <title>{% blocktrans with team_object.name as team_name %}Upcoming Meetings for {{team_name}}{% endblocktrans %}</title> |
409 | - <link>{{base}}{% url team-meeting-list team_object.lp_name %}</link> |
410 | - |
411 | - {% for e in meetings %} |
412 | - <item> |
413 | - <title> {{ e.name }}</title> |
414 | - <link>{{base}}{% url team-meeting-detail e.id %}</link> |
415 | - <description>{% trans "When:" %} {% spaceless %} |
416 | - {% ifequal e.date_begin|date e.date_end|date %} |
417 | - {{ e.date_begin|date:"D, d N Y H:i" }} - {{ e.date_end|date:"H:i O" }} |
418 | - {% else %} |
419 | - {{ e.date_begin|date:"D, d N Y H:i" }} - {{ e.date_end|date:"D, d N Y H:i O" }} |
420 | - {% endifequal %} |
421 | - {% endspaceless %}</description> |
422 | - <guid>{{base}}{% url team-meeting-detail e.id %}</guid> |
423 | - </item> |
424 | - {% endfor %} |
425 | - </channel> |
426 | -</rss> |
427 | |
428 | === modified file 'loco_directory/templates/teams/team_detail.html' |
429 | --- loco_directory/templates/teams/team_detail.html 2011-03-02 22:34:34 +0000 |
430 | +++ loco_directory/templates/teams/team_detail.html 2011-03-13 10:44:24 +0000 |
431 | @@ -89,7 +89,7 @@ |
432 | } |
433 | </style> |
434 | {% endif %} |
435 | -<link type="application/rss+xml" rel="alternate" title="{% trans "Team Events (RSS)" %}" href="{% url team-events-rss team.lp_name %}" /> |
436 | +<link type="application/rss+xml" rel="alternate" title="{% trans "Team (RSS)" %}" href="/feeds/teams/{{ team.lp_name }}" /> |
437 | {% endblock %} |
438 | |
439 | {% block content %} |
440 | @@ -183,7 +183,7 @@ |
441 | <li style="font-size:0.98em"><a href="{% url team-event-list team.lp_name %}">{% trans "All Events" %}</a></li> |
442 | <li style="font-size:0.98em"><a href="{% url team-meeting-list team.lp_name %}">{% trans "All Meetings" %}</a></li> |
443 | <li style="font-size:0.98em"><a href="{% url team-event-history team.lp_name %}">{% trans "Past Events" %}</a></li> |
444 | - <li style="font-size:0.98em"><a href="{% url team-events-rss team.lp_name %}">{% trans "RSS Feed" %}</a></li> |
445 | + <li style="font-size:0.98em"><a href="/feeds/teams/{{ team.lp_name }}">{% trans "RSS Feed" %}</a></li> |
446 | <li style="font-size:0.98em"><a href="{% url team-calendar team.lp_name %}">{% trans "iCal Feed" %}</a></li> |
447 | </ul> |
448 | {% if team.next_5_events_and_meetings %} |
449 | |
450 | === modified file 'loco_directory/templates/teams/team_event_list.html' |
451 | --- loco_directory/templates/teams/team_event_list.html 2010-11-20 17:25:50 +0000 |
452 | +++ loco_directory/templates/teams/team_event_list.html 2011-03-13 10:44:24 +0000 |
453 | @@ -6,12 +6,12 @@ |
454 | {% block sub_nav_links %} |
455 | <a class="sub-nav-item" href="{% url team-detail team_object.lp_name %}">{% trans "Back to Team Details" %}</a> |
456 | <a class="sub-nav-item" href="{% url team-event-history team_object.lp_name %}">{% trans "Past Events" %}</a> |
457 | -<a class="sub-nav-item" href="{% url team-events-rss team_object.lp_name %}" title="{% trans "Team Events (RSS)" %}"">{% trans "Team Events (RSS)" %}</a> |
458 | +<a class="sub-nav-item" href="/feeds/events/{{ team_object.lp_name }}" title="{% trans "Team Events (RSS)" %}"">{% trans "Team Events (RSS)" %}</a> |
459 | {% endblock %} |
460 | |
461 | |
462 | {% block extrahead %}{{ block.super }} |
463 | -<link type="application/rss+xml" rel="alternate" title="Team Events (RSS)" href="{% url team-events-rss team_object.lp_name %}" /> |
464 | +<link type="application/rss+xml" rel="alternate" title="Team Events (RSS)" href="/feeds/events/{{ team_object.lp_name }}" /> |
465 | {% endblock %} |
466 | |
467 | {% block content %} |
468 | |
469 | === modified file 'loco_directory/templates/teams/team_meeting_list.html' |
470 | --- loco_directory/templates/teams/team_meeting_list.html 2010-12-02 09:12:22 +0000 |
471 | +++ loco_directory/templates/teams/team_meeting_list.html 2011-03-13 10:44:24 +0000 |
472 | @@ -6,12 +6,12 @@ |
473 | {% block sub_nav_links %} |
474 | <a class="sub-nav-item" href="{% url team-detail team_object.lp_name %}">{% trans "Back to Team Details" %}</a> |
475 | <a class="sub-nav-item" href="{% url team-meeting-history team_object.lp_name %}">{% trans "Past Meetings" %}</a> |
476 | -<a class="sub-nav-item" href="{% url team-meetings-rss team_object.lp_name %}" title="{% trans "Team Meetings (RSS)" %}"">{% trans "Team Meetings (RSS)" %}</a> |
477 | +<a class="sub-nav-item" href="/feeds/meetings/{{ team_object.lp_name }}" title="{% trans "Team Meetings (RSS)" %}"">{% trans "Team Meetings (RSS)" %}</a> |
478 | {% endblock %} |
479 | |
480 | |
481 | {% block extrahead %}{{ block.super }} |
482 | -<link type="application/rss+xml" rel="alternate" title="Team Meetings (RSS)" href="{% url team-meetings-rss team_object.lp_name %}" /> |
483 | +<link type="application/rss+xml" rel="alternate" title="Team Meetings (RSS)" href="/feeds/meetings/{{ team_object.lp_name }}" /> |
484 | {% endblock %} |
485 | |
486 | {% block content %} |
487 | |
488 | === modified file 'loco_directory/urls.py' |
489 | --- loco_directory/urls.py 2010-12-02 09:12:22 +0000 |
490 | +++ loco_directory/urls.py 2011-03-13 10:44:24 +0000 |
491 | @@ -5,6 +5,17 @@ |
492 | |
493 | admin.autodiscover() |
494 | |
495 | +from events.feeds import TeamEventFeed, GlobalEventFeed |
496 | +from meetings.feeds import TeamMeetingFeed |
497 | +from teams.feeds import TeamFeed |
498 | + |
499 | +feeds = { |
500 | + 'teams': TeamFeed, |
501 | + 'events': TeamEventFeed, |
502 | + 'globalevents': GlobalEventFeed, |
503 | + 'meetings': TeamMeetingFeed, |
504 | +} |
505 | + |
506 | urlpatterns = patterns('', |
507 | url(r'^$', 'common.views.index', name='home'), |
508 | url(r'^language/', 'common.views.set_language', name='set_language'), |
509 | @@ -25,6 +36,7 @@ |
510 | url(r'^jsi18n', 'django.views.i18n.javascript_catalog', name='jsi18n'), |
511 | url(r'^services/', include('services.urls')), |
512 | url(r'^search/', 'common.views.site_search', name='site_search'), |
513 | + url(r'^feeds/(?P<url>.*)/$', 'django.contrib.syndication.views.feed', {'feed_dict': feeds}, name='feed_view'), |
514 | ) |
515 | |
516 | if settings.STATIC_SERVE: |
This adds 190 lines of code, shouldn't using an existing framework require less code? What do we gain from this addition?