Merge lp:~daker/loco-team-portal/fix.rss-feeds into lp:loco-team-portal
- fix.rss-feeds
- Merge into 0.2
Proposed by
Adnane Belmadiaf
Status: | Merged |
---|---|
Approved by: | Adnane Belmadiaf |
Approved revision: | 565 |
Merged at revision: | 566 |
Proposed branch: | lp:~daker/loco-team-portal/fix.rss-feeds |
Merge into: | lp:loco-team-portal |
Diff against target: |
781 lines (+258/-150) 20 files modified
loco_directory/events/feeds.py (+55/-0) loco_directory/events/views.py (+6/-25) loco_directory/meetings/feeds.py (+40/-0) loco_directory/meetings/views.py (+35/-54) loco_directory/teams/feeds.py (+56/-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/-15) loco_directory/templates/teams/team_event_list.html (+2/-2) loco_directory/templates/teams/team_meeting_list.html (+2/-3) loco_directory/urls.py (+12/-0) |
To merge this branch: | bzr merge lp:~daker/loco-team-portal/fix.rss-feeds |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
LoCo Team Portal Developers | Pending | ||
Review via email: mp+136294@code.launchpad.net |
Commit message
* RSS feeds are now using syndication framework
* Old URLs feed now redirect to the new ones
Description of the change
To post a comment you must log in.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
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 2012-11-26 23:13:22 +0000 | |||
4 | @@ -0,0 +1,55 @@ | |||
5 | 1 | from django.core.exceptions import ObjectDoesNotExist | ||
6 | 2 | from django.core.urlresolvers import reverse | ||
7 | 3 | from django.contrib.syndication.feeds import Feed, FeedDoesNotExist | ||
8 | 4 | from django.utils.translation import ugettext as _ | ||
9 | 5 | from events.models import TeamEvent, GlobalEvent | ||
10 | 6 | from teams.models import Team | ||
11 | 7 | |||
12 | 8 | import datetime | ||
13 | 9 | |||
14 | 10 | class TeamEventFeed(Feed): | ||
15 | 11 | def get_object(self, bits): | ||
16 | 12 | if len(bits) >= 1: | ||
17 | 13 | if bits[0] == 'all': | ||
18 | 14 | return 'all' | ||
19 | 15 | else: | ||
20 | 16 | try: | ||
21 | 17 | return Team.objects.get(lp_name=bits[0]) | ||
22 | 18 | except: | ||
23 | 19 | raise ObjectDoesNotExist | ||
24 | 20 | return None | ||
25 | 21 | |||
26 | 22 | def items(self, obj): | ||
27 | 23 | if isinstance(obj, Team): | ||
28 | 24 | return TeamEvent.objects.filter(teams=obj, date_end__gt=datetime.datetime.now()).order_by('-date_begin')[:15] | ||
29 | 25 | else: | ||
30 | 26 | return TeamEvent.objects.filter(date_end__gt=datetime.datetime.now()).order_by('-date_begin')[:15] | ||
31 | 27 | |||
32 | 28 | def title(self, obj): | ||
33 | 29 | if isinstance(obj, Team): | ||
34 | 30 | return _('Upcoming Events for %(teamname)s' % {'teamname': obj.name}) | ||
35 | 31 | else: | ||
36 | 32 | return _('Upcoming Events') | ||
37 | 33 | |||
38 | 34 | def link(self, obj): | ||
39 | 35 | if isinstance(obj, Team): | ||
40 | 36 | return reverse('team-event-list', kwargs={'team_slug': obj.lp_name}) | ||
41 | 37 | else: | ||
42 | 38 | return reverse('event-list') | ||
43 | 39 | |||
44 | 40 | |||
45 | 41 | class GlobalEventFeed(TeamEventFeed): | ||
46 | 42 | def items(self, obj): | ||
47 | 43 | if isinstance(obj, Team): | ||
48 | 44 | return GlobalEvent.objects.filter(teamevent__teams=obj, date_end__gt=datetime.datetime.now()).order_by('-date_begin')[:15] | ||
49 | 45 | else: | ||
50 | 46 | return GlobalEvent.objects.filter(date_end__gt=datetime.datetime.now()).order_by('-date_begin')[:15] | ||
51 | 47 | |||
52 | 48 | def title(self, obj): | ||
53 | 49 | if isinstance(obj, Team): | ||
54 | 50 | return _('Upcoming Global Events where %(teamname)s is participating' % {'teamname': obj.name}) | ||
55 | 51 | else: | ||
56 | 52 | return _('Upcoming Global Events') | ||
57 | 53 | |||
58 | 54 | def link(self, obj): | ||
59 | 55 | return reverse('event-list') | ||
60 | 0 | 56 | ||
61 | === modified file 'loco_directory/events/views.py' | |||
62 | --- loco_directory/events/views.py 2012-11-05 21:16:15 +0000 | |||
63 | +++ loco_directory/events/views.py 2012-11-26 23:13:22 +0000 | |||
64 | @@ -217,26 +217,7 @@ | |||
65 | 217 | 217 | ||
66 | 218 | 218 | ||
67 | 219 | def team_events_rss(request, team_slug): | 219 | def team_events_rss(request, team_slug): |
88 | 220 | team_object = get_object_or_404(Team, lp_name=team_slug) | 220 | return redirect('/feeds/events/%s/' % team_slug, permanent=True) |
69 | 221 | events = TeamEvent.objects.filter(teams__lp_name=team_slug, date_end__gt=datetime.datetime.now()).order_by('date_begin')[:15] | ||
70 | 222 | |||
71 | 223 | if request.META.has_key('wsgi.url_scheme'): | ||
72 | 224 | scheme = request.META.get('wsgi.url_scheme') | ||
73 | 225 | else: | ||
74 | 226 | scheme = 'http' | ||
75 | 227 | |||
76 | 228 | if request.META.has_key('HTTP_HOST'): | ||
77 | 229 | host = request.META.get('HTTP_HOST') | ||
78 | 230 | else: | ||
79 | 231 | host = request.META.get('SERVER_NAME') | ||
80 | 232 | |||
81 | 233 | if request.META.get('SERVER_PORT', 80) == 80 or request.META.get('SERVER_PORT', 80) == 0: | ||
82 | 234 | base = '%s://%s' % (scheme, host) | ||
83 | 235 | else: | ||
84 | 236 | base = '%s://%s:%s' % (scheme, host, request.META.get('SERVER_PORT', 80)) | ||
85 | 237 | |||
86 | 238 | context = {'team_object': team_object, 'events': events, 'base': base} | ||
87 | 239 | return render_to_response('events/team_events_rss.xml', context, RequestContext(request), mimetype='application/xhtml+xml') | ||
89 | 240 | 221 | ||
90 | 241 | 222 | ||
91 | 242 | @login_required | 223 | @login_required |
92 | @@ -383,8 +364,8 @@ | |||
93 | 383 | create a comment for a team event | 364 | create a comment for a team event |
94 | 384 | """ | 365 | """ |
95 | 385 | team_event_object = get_object_or_404(TeamEvent, pk=team_event_id) | 366 | team_event_object = get_object_or_404(TeamEvent, pk=team_event_id) |
98 | 386 | 367 | ||
99 | 387 | if request.method == 'POST': | 368 | if request.method == 'POST': |
100 | 388 | form = TeamEventCommentForm(data=request.POST) | 369 | form = TeamEventCommentForm(data=request.POST) |
101 | 389 | if form.is_valid(): | 370 | if form.is_valid(): |
102 | 390 | team_event_comment = form.save(commit=False) | 371 | team_event_comment = form.save(commit=False) |
103 | @@ -397,7 +378,7 @@ | |||
104 | 397 | return redirect( team_event_object ) | 378 | return redirect( team_event_object ) |
105 | 398 | else: | 379 | else: |
106 | 399 | form = TeamEventCommentForm() | 380 | form = TeamEventCommentForm() |
108 | 400 | 381 | ||
109 | 401 | context = { | 382 | context = { |
110 | 402 | 'team_event_object': team_event_object, | 383 | 'team_event_object': team_event_object, |
111 | 403 | 'form': form, | 384 | 'form': form, |
112 | @@ -596,7 +577,7 @@ | |||
113 | 596 | """ | 577 | """ |
114 | 597 | update a comment for a team event | 578 | update a comment for a team event |
115 | 598 | """ | 579 | """ |
117 | 599 | if request.method == 'POST': | 580 | if request.method == 'POST': |
118 | 600 | response_dict = {} | 581 | response_dict = {} |
119 | 601 | id = request.POST.get('id', False) | 582 | id = request.POST.get('id', False) |
120 | 602 | comment = request.POST.get('comment', False) | 583 | comment = request.POST.get('comment', False) |
121 | @@ -614,7 +595,7 @@ | |||
122 | 614 | else: | 595 | else: |
123 | 615 | response_dict.update({'success': False, 'response': _('Missing arguments.') }) | 596 | response_dict.update({'success': False, 'response': _('Missing arguments.') }) |
124 | 616 | else: | 597 | else: |
126 | 617 | response_dict.update({'success': False, 'response': _('You can\'t edit this comment using this method.') }) | 598 | response_dict.update({'success': False, 'response': _('You can\'t edit this comment using this method.') }) |
127 | 618 | return HttpResponse(simplejson.dumps(response_dict), mimetype='application/json') | 599 | return HttpResponse(simplejson.dumps(response_dict), mimetype='application/json') |
128 | 619 | 600 | ||
129 | 620 | @login_required | 601 | @login_required |
130 | 621 | 602 | ||
131 | === added file 'loco_directory/meetings/feeds.py' | |||
132 | --- loco_directory/meetings/feeds.py 1970-01-01 00:00:00 +0000 | |||
133 | +++ loco_directory/meetings/feeds.py 2012-11-26 23:13:22 +0000 | |||
134 | @@ -0,0 +1,40 @@ | |||
135 | 1 | from django.core.exceptions import ObjectDoesNotExist | ||
136 | 2 | from django.core.urlresolvers import reverse | ||
137 | 3 | from django.contrib.syndication.feeds import Feed, FeedDoesNotExist | ||
138 | 4 | from django.utils.translation import ugettext as _ | ||
139 | 5 | from meetings.models import TeamMeeting | ||
140 | 6 | from teams.models import Team | ||
141 | 7 | |||
142 | 8 | import datetime | ||
143 | 9 | |||
144 | 10 | |||
145 | 11 | class TeamMeetingFeed(Feed): | ||
146 | 12 | def get_object(self, bits): | ||
147 | 13 | if len(bits) >= 1: | ||
148 | 14 | if bits[0] == 'all': | ||
149 | 15 | return 'all' | ||
150 | 16 | else: | ||
151 | 17 | try: | ||
152 | 18 | return Team.objects.get(lp_name=bits[0]) | ||
153 | 19 | except: | ||
154 | 20 | raise ObjectDoesNotExist | ||
155 | 21 | return None | ||
156 | 22 | |||
157 | 23 | def items(self, obj): | ||
158 | 24 | if isinstance(obj, Team): | ||
159 | 25 | return TeamMeeting.objects.filter(teams=obj, date_end__gt=datetime.datetime.now()).order_by('-date_begin')[:15] | ||
160 | 26 | else: | ||
161 | 27 | return TeamMeeting.objects.filter(date_end__gt=datetime.datetime.now()).order_by('-date_begin')[:15] | ||
162 | 28 | |||
163 | 29 | def title(self, obj): | ||
164 | 30 | if isinstance(obj, Team): | ||
165 | 31 | return _('Upcoming Meetings for %(teamname)s' % {'teamname': obj.name}) | ||
166 | 32 | else: | ||
167 | 33 | return _('Upcoming Meetings') | ||
168 | 34 | |||
169 | 35 | def link(self, obj): | ||
170 | 36 | if isinstance(obj, Team): | ||
171 | 37 | return reverse('team-meeting-list', kwargs={'team_slug': obj.lp_name}) | ||
172 | 38 | else: | ||
173 | 39 | return reverse('meeting-list') | ||
174 | 40 | |||
175 | 0 | 41 | ||
176 | === modified file 'loco_directory/meetings/views.py' | |||
177 | --- loco_directory/meetings/views.py 2012-07-14 20:07:11 +0000 | |||
178 | +++ loco_directory/meetings/views.py 2012-11-26 23:13:22 +0000 | |||
179 | @@ -50,9 +50,9 @@ | |||
180 | 50 | for meeting in meetings: | 50 | for meeting in meetings: |
181 | 51 | meeting.as_ical(calendar) | 51 | meeting.as_ical(calendar) |
182 | 52 | response.write(calendar.serialize()) | 52 | response.write(calendar.serialize()) |
184 | 53 | 53 | ||
185 | 54 | return response | 54 | return response |
187 | 55 | 55 | ||
188 | 56 | 56 | ||
189 | 57 | def meeting_ical(request, team_slug, team_meeting_id): | 57 | def meeting_ical(request, team_slug, team_meeting_id): |
190 | 58 | """ | 58 | """ |
191 | @@ -126,7 +126,7 @@ | |||
192 | 126 | 'team_meeting_object': team_meeting_object, | 126 | 'team_meeting_object': team_meeting_object, |
193 | 127 | 'user_is_team_member': is_member, | 127 | 'user_is_team_member': is_member, |
194 | 128 | } | 128 | } |
196 | 129 | return render_to_response('meetings/team_meeting_detail.html', | 129 | return render_to_response('meetings/team_meeting_detail.html', |
197 | 130 | context, RequestContext(request)) | 130 | context, RequestContext(request)) |
198 | 131 | 131 | ||
199 | 132 | @login_required | 132 | @login_required |
200 | @@ -135,7 +135,7 @@ | |||
201 | 135 | delete a meeting | 135 | delete a meeting |
202 | 136 | """ | 136 | """ |
203 | 137 | team_meeting_object = get_object_or_404(TeamMeeting, pk=team_meeting_id) | 137 | team_meeting_object = get_object_or_404(TeamMeeting, pk=team_meeting_id) |
205 | 138 | 138 | ||
206 | 139 | is_on_lc = launchpad.is_user_on_loco_council(request.user) | 139 | is_on_lc = launchpad.is_user_on_loco_council(request.user) |
207 | 140 | #check if user is admin or owner of a team | 140 | #check if user is admin or owner of a team |
208 | 141 | is_contact = False | 141 | is_contact = False |
209 | @@ -145,7 +145,7 @@ | |||
210 | 145 | break | 145 | break |
211 | 146 | 146 | ||
212 | 147 | if is_on_lc or is_contact: | 147 | if is_on_lc or is_contact: |
214 | 148 | if request.method == 'POST': | 148 | if request.method == 'POST': |
215 | 149 | team_meeting_object.delete() | 149 | team_meeting_object.delete() |
216 | 150 | request.user.message_set.create(message=_('Team Meeting removed.')) | 150 | request.user.message_set.create(message=_('Team Meeting removed.')) |
217 | 151 | return redirect( 'meeting-list' ) | 151 | return redirect( 'meeting-list' ) |
218 | @@ -172,26 +172,7 @@ | |||
219 | 172 | return render_to_response('meetings/team_meeting_new_select.html', context, RequestContext(request)) | 172 | return render_to_response('meetings/team_meeting_new_select.html', context, RequestContext(request)) |
220 | 173 | 173 | ||
221 | 174 | def team_meetings_rss(request, team_slug): | 174 | def team_meetings_rss(request, team_slug): |
242 | 175 | team_object = get_object_or_404(Team, lp_name=team_slug) | 175 | return redirect('/feeds/meetings/%s/' % team_slug, permanent=True) |
223 | 176 | meetings = TeamMeeting.objects.filter(teams__lp_name=team_slug, date_end__gt=datetime.datetime.now()).order_by('date_begin')[:15] | ||
224 | 177 | |||
225 | 178 | if request.META.has_key('wsgi.url_scheme'): | ||
226 | 179 | scheme = request.META.get('wsgi.url_scheme') | ||
227 | 180 | else: | ||
228 | 181 | scheme = 'http' | ||
229 | 182 | |||
230 | 183 | if request.META.has_key('HTTP_HOST'): | ||
231 | 184 | host = request.META.get('HTTP_HOST') | ||
232 | 185 | else: | ||
233 | 186 | host = request.META.get('SERVER_NAME') | ||
234 | 187 | |||
235 | 188 | if request.META.get('SERVER_PORT', 80) == 80 or request.META.get('SERVER_PORT', 80) == 0: | ||
236 | 189 | base = '%s://%s' % (scheme, host) | ||
237 | 190 | else: | ||
238 | 191 | base = '%s://%s:%s' % (scheme, host, request.META.get('SERVER_PORT', 80)) | ||
239 | 192 | |||
240 | 193 | context = {'team_object': team_object, 'meetings': meetings, 'base':base} | ||
241 | 194 | return render_to_response('meetings/team_meetings_rss.xml', context, RequestContext(request), mimetype='application/xhtml+xml') | ||
243 | 195 | 176 | ||
244 | 196 | @login_required | 177 | @login_required |
245 | 197 | def team_meeting_new(request, team_slug): | 178 | def team_meeting_new(request, team_slug): |
246 | @@ -199,11 +180,11 @@ | |||
247 | 199 | new team meeting | 180 | new team meeting |
248 | 200 | """ | 181 | """ |
249 | 201 | team_object = get_object_or_404(Team, lp_name=team_slug) | 182 | team_object = get_object_or_404(Team, lp_name=team_slug) |
251 | 202 | 183 | ||
252 | 203 | is_on_lc = launchpad.is_user_on_loco_council(request.user) | 184 | is_on_lc = launchpad.is_user_on_loco_council(request.user) |
253 | 204 | is_member = launchpad.is_team_member(request.user, team_object) | 185 | is_member = launchpad.is_team_member(request.user, team_object) |
256 | 205 | 186 | ||
257 | 206 | team_meeting_object = TeamMeeting(chair=team_object.owner_profile, | 187 | team_meeting_object = TeamMeeting(chair=team_object.owner_profile, |
258 | 207 | channel=team_object.irc_chan) | 188 | channel=team_object.irc_chan) |
259 | 208 | if is_on_lc or is_member: | 189 | if is_on_lc or is_member: |
260 | 209 | if request.method == 'POST': | 190 | if request.method == 'POST': |
261 | @@ -211,16 +192,16 @@ | |||
262 | 211 | if form.is_valid(): | 192 | if form.is_valid(): |
263 | 212 | team_meeting = form.save() | 193 | team_meeting = form.save() |
264 | 213 | team_meeting.teams.add(team_object) | 194 | team_meeting.teams.add(team_object) |
266 | 214 | team_meeting_id = team_meeting.id | 195 | team_meeting_id = team_meeting.id |
267 | 215 | return HttpResponseRedirect(team_meeting_object.get_absolute_url()) | 196 | return HttpResponseRedirect(team_meeting_object.get_absolute_url()) |
268 | 216 | else: | 197 | else: |
269 | 217 | form = TeamMeetingForm(teams=[team_object], instance=team_meeting_object) | 198 | form = TeamMeetingForm(teams=[team_object], instance=team_meeting_object) |
271 | 218 | 199 | ||
272 | 219 | context = { | 200 | context = { |
273 | 220 | 'team_object': team_object, | 201 | 'team_object': team_object, |
274 | 221 | 'form': form, | 202 | 'form': form, |
275 | 222 | } | 203 | } |
277 | 223 | return render_to_response('meetings/team_meeting_new.html', | 204 | return render_to_response('meetings/team_meeting_new.html', |
278 | 224 | context, RequestContext(request)) | 205 | context, RequestContext(request)) |
279 | 225 | else: | 206 | else: |
280 | 226 | # XXX: Once we move to a new ACL system, this needs fixing. | 207 | # XXX: Once we move to a new ACL system, this needs fixing. |
281 | @@ -232,13 +213,13 @@ | |||
282 | 232 | """ | 213 | """ |
283 | 233 | copy team meeting | 214 | copy team meeting |
284 | 234 | """ | 215 | """ |
286 | 235 | 216 | ||
287 | 236 | team_meeting = get_object_or_404(TeamMeeting, pk=team_meeting_id) | 217 | team_meeting = get_object_or_404(TeamMeeting, pk=team_meeting_id) |
288 | 237 | team_object = team_meeting.teams.all()[0] | 218 | team_object = team_meeting.teams.all()[0] |
289 | 238 | 219 | ||
290 | 239 | is_on_lc = launchpad.is_user_on_loco_council(request.user) | 220 | is_on_lc = launchpad.is_user_on_loco_council(request.user) |
291 | 240 | is_member = launchpad.is_team_member(request.user, team_object) | 221 | is_member = launchpad.is_team_member(request.user, team_object) |
293 | 241 | 222 | ||
294 | 242 | if is_on_lc or is_member: | 223 | if is_on_lc or is_member: |
295 | 243 | if request.method == 'POST': | 224 | if request.method == 'POST': |
296 | 244 | form = TeamMeetingForm(instance=team_meeting, data=request.POST, teams=team_meeting.teams.all()) | 225 | form = TeamMeetingForm(instance=team_meeting, data=request.POST, teams=team_meeting.teams.all()) |
297 | @@ -246,16 +227,16 @@ | |||
298 | 246 | if form.is_valid(): | 227 | if form.is_valid(): |
299 | 247 | team_meeting = form.save() | 228 | team_meeting = form.save() |
300 | 248 | team_meeting.teams.add(team_object) | 229 | team_meeting.teams.add(team_object) |
302 | 249 | team_meeting_id = team_meeting.id | 230 | team_meeting_id = team_meeting.id |
303 | 250 | return HttpResponseRedirect(team_meeting.get_absolute_url()) | 231 | return HttpResponseRedirect(team_meeting.get_absolute_url()) |
304 | 251 | else: | 232 | else: |
305 | 252 | form = TeamMeetingForm(instance=team_meeting, teams=team_meeting.teams.all()) | 233 | form = TeamMeetingForm(instance=team_meeting, teams=team_meeting.teams.all()) |
307 | 253 | 234 | ||
308 | 254 | context = { | 235 | context = { |
309 | 255 | 'team_object': team_object, | 236 | 'team_object': team_object, |
310 | 256 | 'form': form, | 237 | 'form': form, |
311 | 257 | } | 238 | } |
313 | 258 | return render_to_response('meetings/team_meeting_new.html', | 239 | return render_to_response('meetings/team_meeting_new.html', |
314 | 259 | context, RequestContext(request)) | 240 | context, RequestContext(request)) |
315 | 260 | else: | 241 | else: |
316 | 261 | # XXX: Once we move to a new ACL system, this needs fixing. | 242 | # XXX: Once we move to a new ACL system, this needs fixing. |
317 | @@ -274,11 +255,11 @@ | |||
318 | 274 | if launchpad.is_team_member(request.user, team): | 255 | if launchpad.is_team_member(request.user, team): |
319 | 275 | is_member = True | 256 | is_member = True |
320 | 276 | break | 257 | break |
322 | 277 | 258 | ||
323 | 278 | is_on_lc = launchpad.is_user_on_loco_council(request.user) | 259 | is_on_lc = launchpad.is_user_on_loco_council(request.user) |
325 | 279 | 260 | ||
326 | 280 | if is_on_lc or is_member: | 261 | if is_on_lc or is_member: |
328 | 281 | if request.method == 'POST': | 262 | if request.method == 'POST': |
329 | 282 | form = TeamMeetingForm(data=request.POST, instance=team_meeting_object) | 263 | form = TeamMeetingForm(data=request.POST, instance=team_meeting_object) |
330 | 283 | if form.is_valid(): | 264 | if form.is_valid(): |
331 | 284 | form.save() | 265 | form.save() |
332 | @@ -286,11 +267,11 @@ | |||
333 | 286 | return redirect( team_meeting_object ) | 267 | return redirect( team_meeting_object ) |
334 | 287 | else: | 268 | else: |
335 | 288 | form = TeamMeetingForm(instance=team_meeting_object) | 269 | form = TeamMeetingForm(instance=team_meeting_object) |
337 | 289 | 270 | ||
338 | 290 | context = { | 271 | context = { |
339 | 291 | 'form': form, | 272 | 'form': form, |
340 | 292 | } | 273 | } |
342 | 293 | return render_to_response('meetings/team_meeting_update.html', | 274 | return render_to_response('meetings/team_meeting_update.html', |
343 | 294 | context, RequestContext(request)) | 275 | context, RequestContext(request)) |
344 | 295 | else: | 276 | else: |
345 | 296 | request.user.message_set.create(message='%s %s' % (_('You can not update this team meeting.'), _('You are not a member of the team or on the LoCo Council.'))) | 277 | request.user.message_set.create(message='%s %s' % (_('You can not update this team meeting.'), _('You are not a member of the team or on the LoCo Council.'))) |
346 | @@ -304,11 +285,11 @@ | |||
347 | 304 | team_meeting_object = get_object_or_404(TeamMeeting, pk=team_meeting_id) | 285 | team_meeting_object = get_object_or_404(TeamMeeting, pk=team_meeting_id) |
348 | 305 | try: | 286 | try: |
349 | 306 | user = UserProfile.objects.get(user=request.user) | 287 | user = UserProfile.objects.get(user=request.user) |
351 | 307 | agenda_item_object = AgendaItem(meeting=team_meeting_object, | 288 | agenda_item_object = AgendaItem(meeting=team_meeting_object, |
352 | 308 | owner=user, | 289 | owner=user, |
353 | 309 | created_date=datetime.datetime.now()) | 290 | created_date=datetime.datetime.now()) |
354 | 310 | except UserProfile.DoesNotExist: | 291 | except UserProfile.DoesNotExist: |
356 | 311 | agenda_item_object = AgendaItem(meeting=team_meeting_object, | 292 | agenda_item_object = AgendaItem(meeting=team_meeting_object, |
357 | 312 | created_date=datetime.datetime.now()) | 293 | created_date=datetime.datetime.now()) |
358 | 313 | is_member = False | 294 | is_member = False |
359 | 314 | for team in team_meeting_object.teams.all(): | 295 | for team in team_meeting_object.teams.all(): |
360 | @@ -316,7 +297,7 @@ | |||
361 | 316 | is_member = True | 297 | is_member = True |
362 | 317 | break | 298 | break |
363 | 318 | is_on_lc = launchpad.is_user_on_loco_council(request.user) | 299 | is_on_lc = launchpad.is_user_on_loco_council(request.user) |
365 | 319 | 300 | ||
366 | 320 | if is_on_lc or is_member: | 301 | if is_on_lc or is_member: |
367 | 321 | if request.method == 'POST': | 302 | if request.method == 'POST': |
368 | 322 | form = AgendaItemForm(data=request.POST, instance=agenda_item_object) | 303 | form = AgendaItemForm(data=request.POST, instance=agenda_item_object) |
369 | @@ -326,12 +307,12 @@ | |||
370 | 326 | return redirect( team_meeting_object ) | 307 | return redirect( team_meeting_object ) |
371 | 327 | else: | 308 | else: |
372 | 328 | form = AgendaItemForm(instance=agenda_item_object) | 309 | form = AgendaItemForm(instance=agenda_item_object) |
374 | 329 | 310 | ||
375 | 330 | context = { | 311 | context = { |
376 | 331 | 'team_meeting_object': team_meeting_object, | 312 | 'team_meeting_object': team_meeting_object, |
377 | 332 | 'form': form, | 313 | 'form': form, |
378 | 333 | } | 314 | } |
380 | 334 | return render_to_response('meetings/agenda_item_new.html', | 315 | return render_to_response('meetings/agenda_item_new.html', |
381 | 335 | context, RequestContext(request)) | 316 | context, RequestContext(request)) |
382 | 336 | else: | 317 | else: |
383 | 337 | # XXX: Once we move to a new ACL system, this needs fixing. | 318 | # XXX: Once we move to a new ACL system, this needs fixing. |
384 | @@ -351,11 +332,11 @@ | |||
385 | 351 | if launchpad.is_team_member(request.user, team): | 332 | if launchpad.is_team_member(request.user, team): |
386 | 352 | is_member = True | 333 | is_member = True |
387 | 353 | break | 334 | break |
389 | 354 | 335 | ||
390 | 355 | is_on_lc = launchpad.is_user_on_loco_council(request.user) | 336 | is_on_lc = launchpad.is_user_on_loco_council(request.user) |
392 | 356 | 337 | ||
393 | 357 | if is_on_lc or is_member: | 338 | if is_on_lc or is_member: |
395 | 358 | if request.method == 'POST': | 339 | if request.method == 'POST': |
396 | 359 | form = AgendaItemForm(data=request.POST, instance=agenda_item_object) | 340 | form = AgendaItemForm(data=request.POST, instance=agenda_item_object) |
397 | 360 | if form.is_valid(): | 341 | if form.is_valid(): |
398 | 361 | form.save() | 342 | form.save() |
399 | @@ -363,13 +344,13 @@ | |||
400 | 363 | return redirect( team_meeting_object ) | 344 | return redirect( team_meeting_object ) |
401 | 364 | else: | 345 | else: |
402 | 365 | form = AgendaItemForm(instance=agenda_item_object) | 346 | form = AgendaItemForm(instance=agenda_item_object) |
404 | 366 | 347 | ||
405 | 367 | context = { | 348 | context = { |
406 | 368 | 'team_meeting_object': team_meeting_object, | 349 | 'team_meeting_object': team_meeting_object, |
407 | 369 | 'agenda_item_object': agenda_item_object, | 350 | 'agenda_item_object': agenda_item_object, |
408 | 370 | 'form': form, | 351 | 'form': form, |
409 | 371 | } | 352 | } |
411 | 372 | return render_to_response('meetings/agenda_item_update.html', | 353 | return render_to_response('meetings/agenda_item_update.html', |
412 | 373 | context, RequestContext(request)) | 354 | context, RequestContext(request)) |
413 | 374 | else: | 355 | else: |
414 | 375 | request.user.message_set.create(message='%s %s' % (_('You can not update this team meeting agenda.'), _('You are not a member of the team or on the LoCo Council.'))) | 356 | request.user.message_set.create(message='%s %s' % (_('You can not update this team meeting agenda.'), _('You are not a member of the team or on the LoCo Council.'))) |
415 | @@ -388,11 +369,11 @@ | |||
416 | 388 | if launchpad.is_team_member(request.user, team): | 369 | if launchpad.is_team_member(request.user, team): |
417 | 389 | is_member = True | 370 | is_member = True |
418 | 390 | break | 371 | break |
420 | 391 | 372 | ||
421 | 392 | is_on_lc = launchpad.is_user_on_loco_council(request.user) | 373 | is_on_lc = launchpad.is_user_on_loco_council(request.user) |
423 | 393 | 374 | ||
424 | 394 | if is_on_lc or is_member: | 375 | if is_on_lc or is_member: |
426 | 395 | if request.method == 'POST': | 376 | if request.method == 'POST': |
427 | 396 | agenda_item_object.delete() | 377 | agenda_item_object.delete() |
428 | 397 | request.user.message_set.create(message=_('Agenda Item removed.')) | 378 | request.user.message_set.create(message=_('Agenda Item removed.')) |
429 | 398 | return redirect( team_meeting_object ) | 379 | return redirect( team_meeting_object ) |
430 | 399 | 380 | ||
431 | === added file 'loco_directory/teams/feeds.py' | |||
432 | --- loco_directory/teams/feeds.py 1970-01-01 00:00:00 +0000 | |||
433 | +++ loco_directory/teams/feeds.py 2012-11-26 23:13:22 +0000 | |||
434 | @@ -0,0 +1,56 @@ | |||
435 | 1 | # -*- coding: utf-8 -*- | ||
436 | 2 | from django.core.exceptions import ObjectDoesNotExist | ||
437 | 3 | from django.core.urlresolvers import reverse | ||
438 | 4 | from django.contrib.syndication.feeds import Feed, FeedDoesNotExist | ||
439 | 5 | from django.utils.translation import ugettext as _ | ||
440 | 6 | from meetings.models import TeamMeeting | ||
441 | 7 | from events.models import TeamEvent | ||
442 | 8 | from teams.models import Team | ||
443 | 9 | |||
444 | 10 | import datetime | ||
445 | 11 | |||
446 | 12 | |||
447 | 13 | class TeamFeed(Feed): | ||
448 | 14 | def get_object(self, bits): | ||
449 | 15 | if len(bits) >= 1: | ||
450 | 16 | if bits[0] == 'all': | ||
451 | 17 | return 'all' | ||
452 | 18 | else: | ||
453 | 19 | try: | ||
454 | 20 | return Team.objects.get(lp_name=bits[0]) | ||
455 | 21 | except: | ||
456 | 22 | raise ObjectDoesNotExist | ||
457 | 23 | return None | ||
458 | 24 | |||
459 | 25 | def items(self, obj): | ||
460 | 26 | if isinstance(obj, Team): | ||
461 | 27 | meetings = TeamMeeting.objects.filter(teams=obj, date_end__gt=datetime.datetime.now()).order_by('-date_begin') | ||
462 | 28 | events = TeamEvent.objects.filter(teams=obj, date_end__gt=datetime.datetime.now()).order_by('-date_begin') | ||
463 | 29 | else: | ||
464 | 30 | meetings = TeamMeeting.objects.filter(date_end__gt=datetime.datetime.now()).order_by('-date_begin') | ||
465 | 31 | events = TeamEvent.objects.filter(date_end__gt=datetime.datetime.now()).order_by('-date_begin') | ||
466 | 32 | |||
467 | 33 | events_and_meetings = [] | ||
468 | 34 | events = events[:15].iterator() | ||
469 | 35 | meetings = meetings[:15].iterator() | ||
470 | 36 | for event in events: | ||
471 | 37 | events_and_meetings.append(event) | ||
472 | 38 | for meeting in meetings: | ||
473 | 39 | events_and_meetings.append(meeting) | ||
474 | 40 | |||
475 | 41 | events_and_meetings.sort(key=lambda event: event.date_begin) | ||
476 | 42 | return events_and_meetings | ||
477 | 43 | |||
478 | 44 | def title(self, obj): | ||
479 | 45 | if isinstance(obj, Team): | ||
480 | 46 | return _('Upcoming Events and Meetings for %(teamname)s' % {'teamname': obj.name}) | ||
481 | 47 | else: | ||
482 | 48 | return _('Upcoming Events and Meetings') | ||
483 | 49 | |||
484 | 50 | def link(self, obj): | ||
485 | 51 | if isinstance(obj, Team): | ||
486 | 52 | return obj.get_absolute_url() | ||
487 | 53 | else: | ||
488 | 54 | return '/' | ||
489 | 55 | |||
490 | 56 | |||
491 | 0 | 57 | ||
492 | === modified file 'loco_directory/teams/views.py' | |||
493 | --- loco_directory/teams/views.py 2012-11-18 22:02:56 +0000 | |||
494 | +++ loco_directory/teams/views.py 2012-11-26 23:13:22 +0000 | |||
495 | @@ -83,15 +83,18 @@ | |||
496 | 83 | return render_to_response('teams/team_list.html', context, | 83 | return render_to_response('teams/team_list.html', context, |
497 | 84 | RequestContext(request)) | 84 | RequestContext(request)) |
498 | 85 | 85 | ||
499 | 86 | def get_events_and_meetings(team_object): | ||
500 | 87 | team_events = list(TeamEvent.objects.filter(teams=team_object)) | ||
501 | 88 | team_meetings = list(TeamMeeting.objects.filter(teams=team_object)) | ||
502 | 89 | team_events.extend(team_meetings) | ||
503 | 90 | return team_events | ||
504 | 91 | |||
505 | 86 | def team_ical(request, team_slug): | 92 | def team_ical(request, team_slug): |
506 | 87 | """ | 93 | """ |
507 | 88 | Return a ical list with the events and meetings in ical format. | 94 | Return a ical list with the events and meetings in ical format. |
508 | 89 | """ | 95 | """ |
509 | 90 | team_object = get_object_or_404(Team, lp_name=team_slug) | 96 | team_object = get_object_or_404(Team, lp_name=team_slug) |
514 | 91 | team_events = list(TeamEvent.objects.filter(teams__lp_name=team_slug)) | 97 | return as_ical(get_events_and_meetings(team_object), team_object.name) |
511 | 92 | team_meetings = list(TeamMeeting.objects.filter(teams__lp_name=team_slug)) | ||
512 | 93 | team_events.extend(team_meetings) | ||
513 | 94 | return as_ical(team_events, team_object.name) | ||
515 | 95 | 98 | ||
516 | 96 | def team_event_list(request, team_slug): | 99 | def team_event_list(request, team_slug): |
517 | 97 | """ | 100 | """ |
518 | 98 | 101 | ||
519 | === removed file 'loco_directory/templates/events/team_events_rss.xml' | |||
520 | --- loco_directory/templates/events/team_events_rss.xml 2011-03-16 17:20:55 +0000 | |||
521 | +++ loco_directory/templates/events/team_events_rss.xml 1970-01-01 00:00:00 +0000 | |||
522 | @@ -1,24 +0,0 @@ | |||
523 | 1 | <?xml version="1.0" encoding="UTF-8"?> | ||
524 | 2 | {% load i18n %} | ||
525 | 3 | <rss version="2.0"> | ||
526 | 4 | <channel> | ||
527 | 5 | <title>{% blocktrans with team_object.name as team_name %}Upcoming Events for {{team_name}}{% endblocktrans %}</title> | ||
528 | 6 | <link>{{base}}{% url team-event-list team_object.lp_name %}</link> | ||
529 | 7 | |||
530 | 8 | {% for e in events %} | ||
531 | 9 | <item> | ||
532 | 10 | <title> {{ e.name }}</title> | ||
533 | 11 | <link>{{base}}{% url team-event-detail e.first_team.lp_name e.id %}</link> | ||
534 | 12 | <description>{% trans "When:" %} {% spaceless %} | ||
535 | 13 | {% ifequal e.date_begin|date e.date_end|date %} | ||
536 | 14 | {{ e.date_begin|date:"D, d N Y H:i" }} - {{ e.date_end|date:"H:i O" }} | ||
537 | 15 | {% else %} | ||
538 | 16 | {{ e.date_begin|date:"D, d N Y H:i" }} - {{ e.date_end|date:"D, d N Y H:i O" }} | ||
539 | 17 | {% endifequal %} | ||
540 | 18 | {% endspaceless %}{% if e.venue.name %} | {% trans "Where:" %} {{ e.venue.name }}{% endif %} | ||
541 | 19 | {% if e.description %} | {% trans "Description:" %} {{ e.description }}{% endif %}</description> | ||
542 | 20 | <guid>{{base}}{% url team-event-detail e.first_team.lp_name e.id %}</guid> | ||
543 | 21 | </item> | ||
544 | 22 | {% endfor %} | ||
545 | 23 | </channel> | ||
546 | 24 | </rss> | ||
547 | 25 | 0 | ||
548 | === added directory 'loco_directory/templates/feeds' | |||
549 | === added file 'loco_directory/templates/feeds/events_description.html' | |||
550 | --- loco_directory/templates/feeds/events_description.html 1970-01-01 00:00:00 +0000 | |||
551 | +++ loco_directory/templates/feeds/events_description.html 2012-11-26 23:13:22 +0000 | |||
552 | @@ -0,0 +1,10 @@ | |||
553 | 1 | {% load i18n %} | ||
554 | 2 | {% trans "When:" %} {% spaceless %} | ||
555 | 3 | {% ifequal obj.date_begin|date obj.date_end|date %} | ||
556 | 4 | {{ obj.date_begin|date:"D, d N Y H:i" }} - {{ obj.date_end|date:"H:i O" }} | ||
557 | 5 | {% else %} | ||
558 | 6 | {{ obj.date_begin|date:"D, d N Y H:i" }} - {{ obj.date_end|date:"D, d N Y H:i O" }} | ||
559 | 7 | {% endifequal %} | ||
560 | 8 | {% endspaceless %} | ||
561 | 9 | {% if obj.venue.name %} | {% trans "Where:" %} {{ obj.venue.name }}{% endif %} | ||
562 | 10 | {% if obj.description %} | {% trans "Description:" %} {{ obj.description }}{% endif %} | ||
563 | 0 | 11 | ||
564 | === added file 'loco_directory/templates/feeds/events_title.html' | |||
565 | --- loco_directory/templates/feeds/events_title.html 1970-01-01 00:00:00 +0000 | |||
566 | +++ loco_directory/templates/feeds/events_title.html 2012-11-26 23:13:22 +0000 | |||
567 | @@ -0,0 +1,1 @@ | |||
568 | 1 | {{ obj.name }} | ||
569 | 0 | 2 | ||
570 | === added file 'loco_directory/templates/feeds/globalevents_description.html' | |||
571 | --- loco_directory/templates/feeds/globalevents_description.html 1970-01-01 00:00:00 +0000 | |||
572 | +++ loco_directory/templates/feeds/globalevents_description.html 2012-11-26 23:13:22 +0000 | |||
573 | @@ -0,0 +1,9 @@ | |||
574 | 1 | {% load i18n %} | ||
575 | 2 | {% trans "When:" %} {% spaceless %} | ||
576 | 3 | {% ifequal obj.date_begin|date obj.date_end|date %} | ||
577 | 4 | {{ obj.date_begin|date:"D, d N Y H:i" }} - {{ obj.date_end|date:"H:i O" }} | ||
578 | 5 | {% else %} | ||
579 | 6 | {{ obj.date_begin|date:"D, d N Y H:i" }} - {{ obj.date_end|date:"D, d N Y H:i O" }} | ||
580 | 7 | {% endifequal %} | ||
581 | 8 | {% endspaceless %} | ||
582 | 9 | {% if obj.description %} | {% trans "Description:" %} {{ obj.description }}{% endif %} | ||
583 | 0 | 10 | ||
584 | === added file 'loco_directory/templates/feeds/globalevents_title.html' | |||
585 | --- loco_directory/templates/feeds/globalevents_title.html 1970-01-01 00:00:00 +0000 | |||
586 | +++ loco_directory/templates/feeds/globalevents_title.html 2012-11-26 23:13:22 +0000 | |||
587 | @@ -0,0 +1,1 @@ | |||
588 | 1 | {{ obj.name }} | ||
589 | 0 | 2 | ||
590 | === added file 'loco_directory/templates/feeds/meetings_description.html' | |||
591 | --- loco_directory/templates/feeds/meetings_description.html 1970-01-01 00:00:00 +0000 | |||
592 | +++ loco_directory/templates/feeds/meetings_description.html 2012-11-26 23:13:22 +0000 | |||
593 | @@ -0,0 +1,8 @@ | |||
594 | 1 | {% load i18n %} | ||
595 | 2 | {% trans "When:" %} {% spaceless %} | ||
596 | 3 | {% ifequal obj.date_begin|date obj.date_end|date %} | ||
597 | 4 | {{ obj.date_begin|date:"D, d N Y H:i" }} - {{ obj.date_end|date:"H:i O" }} | ||
598 | 5 | {% else %} | ||
599 | 6 | {{ obj.date_begin|date:"D, d N Y H:i" }} - {{ obj.date_end|date:"D, d N Y H:i O" }} | ||
600 | 7 | {% endifequal %} | ||
601 | 8 | {% endspaceless %} | ||
602 | 0 | 9 | ||
603 | === added file 'loco_directory/templates/feeds/meetings_title.html' | |||
604 | --- loco_directory/templates/feeds/meetings_title.html 1970-01-01 00:00:00 +0000 | |||
605 | +++ loco_directory/templates/feeds/meetings_title.html 2012-11-26 23:13:22 +0000 | |||
606 | @@ -0,0 +1,1 @@ | |||
607 | 1 | {{ obj.name }} | ||
608 | 0 | 2 | ||
609 | === added file 'loco_directory/templates/feeds/teams_description.html' | |||
610 | --- loco_directory/templates/feeds/teams_description.html 1970-01-01 00:00:00 +0000 | |||
611 | +++ loco_directory/templates/feeds/teams_description.html 2012-11-26 23:13:22 +0000 | |||
612 | @@ -0,0 +1,10 @@ | |||
613 | 1 | {% load i18n %} | ||
614 | 2 | {% trans "When:" %} {% spaceless %} | ||
615 | 3 | {% ifequal obj.date_begin|date obj.date_end|date %} | ||
616 | 4 | {{ obj.date_begin|date:"D, d N Y H:i" }} - {{ obj.date_end|date:"H:i O" }} | ||
617 | 5 | {% else %} | ||
618 | 6 | {{ obj.date_begin|date:"D, d N Y H:i" }} - {{ obj.date_end|date:"D, d N Y H:i O" }} | ||
619 | 7 | {% endifequal %} | ||
620 | 8 | {% endspaceless %} | ||
621 | 9 | {% if obj.venue.name %} | {% trans "Where:" %} {{ obj.venue.name }}{% endif %} | ||
622 | 10 | {% if obj.description %} | {% trans "Description:" %} {{ obj.description }}{% endif %} | ||
623 | 0 | 11 | ||
624 | === added file 'loco_directory/templates/feeds/teams_title.html' | |||
625 | --- loco_directory/templates/feeds/teams_title.html 1970-01-01 00:00:00 +0000 | |||
626 | +++ loco_directory/templates/feeds/teams_title.html 2012-11-26 23:13:22 +0000 | |||
627 | @@ -0,0 +1,1 @@ | |||
628 | 1 | {{ obj.name }} | ||
629 | 0 | 2 | ||
630 | === removed file 'loco_directory/templates/meetings/team_meetings_rss.xml' | |||
631 | --- loco_directory/templates/meetings/team_meetings_rss.xml 2011-06-17 17:10:41 +0000 | |||
632 | +++ loco_directory/templates/meetings/team_meetings_rss.xml 1970-01-01 00:00:00 +0000 | |||
633 | @@ -1,23 +0,0 @@ | |||
634 | 1 | <?xml version="1.0" encoding="UTF-8"?> | ||
635 | 2 | {% load i18n %} | ||
636 | 3 | <rss version="2.0"> | ||
637 | 4 | <channel> | ||
638 | 5 | <title>{% blocktrans with team_object.name as team_name %}Upcoming Meetings for {{team_name}}{% endblocktrans %}</title> | ||
639 | 6 | <link>{{base}}{% url team-meeting-list team_object.lp_name %}</link> | ||
640 | 7 | |||
641 | 8 | {% for e in meetings %} | ||
642 | 9 | <item> | ||
643 | 10 | <title> {{ e.name }}</title> | ||
644 | 11 | <link>{{base}}{% url team-meeting-detail e.first_team.lp_name e.id %}</link> | ||
645 | 12 | <description>{% trans "When:" %} {% spaceless %} | ||
646 | 13 | {% ifequal e.date_begin|date e.local_date_end|date %} | ||
647 | 14 | {{ e.local_date_begin|date:"D, d N Y H:i" }} - {{ e.local_date_end|date:"H:i T" }} | ||
648 | 15 | {% else %} | ||
649 | 16 | {{ e.local_date_begin|date:"D, d N Y H:i" }} - {{ e.local_date_end|date:"D, d N Y H:i T" }} | ||
650 | 17 | {% endifequal %} | ||
651 | 18 | {% endspaceless %}</description> | ||
652 | 19 | <guid>{{base}}{% url team-meeting-detail e.first_team.lp_name e.id %}</guid> | ||
653 | 20 | </item> | ||
654 | 21 | {% endfor %} | ||
655 | 22 | </channel> | ||
656 | 23 | </rss> | ||
657 | 24 | 0 | ||
658 | === modified file 'loco_directory/templates/teams/team_detail.html' | |||
659 | --- loco_directory/templates/teams/team_detail.html 2012-11-12 20:25:25 +0000 | |||
660 | +++ loco_directory/templates/teams/team_detail.html 2012-11-26 23:13:22 +0000 | |||
661 | @@ -3,10 +3,6 @@ | |||
662 | 3 | 3 | ||
663 | 4 | {% block page_name %}{% trans team.name %}{% endblock %} | 4 | {% block page_name %}{% trans team.name %}{% endblock %} |
664 | 5 | 5 | ||
665 | 6 | {% block page_banner %} | ||
666 | 7 | <img src="{{MEDIA_URL}}img/banner.png" title="Test Banner"/> | ||
667 | 8 | {% endblock %} | ||
668 | 9 | |||
669 | 10 | {% block sub_nav_links %} | 6 | {% block sub_nav_links %} |
670 | 11 | <li><a class="sub-nav-item" href="{% url team-list %}" title="{% trans "Back to Teams List" %}">{% trans "Back to Teams List" %}</a></li> | 7 | <li><a class="sub-nav-item" href="{% url team-list %}" title="{% trans "Back to Teams List" %}">{% trans "Back to Teams List" %}</a></li> |
671 | 12 | {% if is_member %}{% else %}<li><a class="sub-nav-item" href="https://launchpad.net/~{{ team.lp_name }}/+join">{% trans "Join This Team!" %}</a></li>{% endif %} | 8 | {% if is_member %}{% else %}<li><a class="sub-nav-item" href="https://launchpad.net/~{{ team.lp_name }}/+join">{% trans "Join This Team!" %}</a></li>{% endif %} |
672 | @@ -46,30 +42,21 @@ | |||
673 | 46 | 'http://search.twitter.com/', | 42 | 'http://search.twitter.com/', |
674 | 47 | ] | 43 | ] |
675 | 48 | }); | 44 | }); |
676 | 49 | |||
677 | 50 | {% if team.flickr_id %} | 45 | {% if team.flickr_id %} |
678 | 51 | $('#flickr').flickr({ key: "{{ flickr_api_key }}", id: "{{ team.flickr_id }}", amount: perPage }); | 46 | $('#flickr').flickr({ key: "{{ flickr_api_key }}", id: "{{ team.flickr_id }}", amount: perPage }); |
679 | 52 | {% endif %} | 47 | {% endif %} |
680 | 53 | |||
681 | 54 | {% if team.picasa_id %} | 48 | {% if team.picasa_id %} |
682 | 55 | $('#picasa').picasa({ id: "{{ team.picasa_id }}", amount: perPage }); | 49 | $('#picasa').picasa({ id: "{{ team.picasa_id }}", amount: perPage }); |
683 | 56 | {% endif %} | 50 | {% endif %} |
684 | 57 | |||
685 | 58 | {% if team.pixie_id %} | 51 | {% if team.pixie_id %} |
686 | 59 | $('#pixie').pixie({ key: "{{ pixie_api_key }}", id: "{{ team.pixie_id }}", amount: perPage }); | 52 | $('#pixie').pixie({ key: "{{ pixie_api_key }}", id: "{{ team.pixie_id }}", amount: perPage }); |
687 | 60 | {% endif %} | 53 | {% endif %} |
688 | 61 | |||
689 | 62 | if ($(location).attr('hash') == "#chat") { | ||
690 | 63 | $('#webchat').show('fast', function() { | ||
691 | 64 | $(window).scrollTop($('#webchat').position().top); | ||
692 | 65 | }); | ||
693 | 66 | } | ||
694 | 67 | }); | 54 | }); |
695 | 68 | </script> | 55 | </script> |
696 | 69 | {% if team.flickr_id or team.picasa_id or team.pixie_id %} | 56 | {% if team.flickr_id or team.picasa_id or team.pixie_id %} |
697 | 70 | 57 | ||
698 | 71 | {% endif %} | 58 | {% endif %} |
700 | 72 | <link type="application/rss+xml" rel="alternate" title="{% trans "Team Events (RSS)" %}" href="{% url team-events-rss team.lp_name %}" /> | 59 | <link type="application/rss+xml" rel="alternate" title="{% trans "Team (RSS)" %}" href="/feeds/teams/{{ team.lp_name }}" /> |
701 | 73 | {% endblock %} | 60 | {% endblock %} |
702 | 74 | 61 | ||
703 | 75 | {% block content %} | 62 | {% block content %} |
704 | @@ -189,7 +176,7 @@ | |||
705 | 189 | <a href="{% url team-event-history team.lp_name %}" title="{% trans "Past Events" %}">{% trans "Past Events" %}</a> | 176 | <a href="{% url team-event-history team.lp_name %}" title="{% trans "Past Events" %}">{% trans "Past Events" %}</a> |
706 | 190 | </span> | 177 | </span> |
707 | 191 | <span> | 178 | <span> |
709 | 192 | <a class="pictogram rss action" href="{% url team-events-rss team.lp_name %}" title="{% trans "RSS Feed" %}"></a> | 179 | <a class="pictogram rss action" href="/feeds/teams/{{ team.lp_name }}" title="{% trans "RSS Feed" %}"></a> |
710 | 193 | </span> | 180 | </span> |
711 | 194 | <span> | 181 | <span> |
712 | 195 | <a class="pictogram ical action" href="{% url team-calendar team.lp_name %}" title="{% trans "iCal Feed" %}"></a> | 182 | <a class="pictogram ical action" href="{% url team-calendar team.lp_name %}" title="{% trans "iCal Feed" %}"></a> |
713 | 196 | 183 | ||
714 | === modified file 'loco_directory/templates/teams/team_event_list.html' | |||
715 | --- loco_directory/templates/teams/team_event_list.html 2012-06-02 11:50:27 +0000 | |||
716 | +++ loco_directory/templates/teams/team_event_list.html 2012-11-26 23:13:22 +0000 | |||
717 | @@ -6,13 +6,13 @@ | |||
718 | 6 | {% block sub_nav_links %} | 6 | {% block sub_nav_links %} |
719 | 7 | <li><a class="sub-nav-item" href="{% url team-detail team_object.lp_name %}">{% trans "Back to Team Details" %}</a></li> | 7 | <li><a class="sub-nav-item" href="{% url team-detail team_object.lp_name %}">{% trans "Back to Team Details" %}</a></li> |
720 | 8 | <li><a class="sub-nav-item" href="{% url team-event-history team_object.lp_name %}">{% trans "Past Events" %}</a></li> | 8 | <li><a class="sub-nav-item" href="{% url team-event-history team_object.lp_name %}">{% trans "Past Events" %}</a></li> |
722 | 9 | <li><a class="sub-nav-item" href="{% url team-events-rss team_object.lp_name %}" title="{% trans "Team Events (RSS)" %}"">{% trans "Team Events (RSS)" %}</a></li> | 9 | <li><a class="sub-nav-item" href="/feeds/events/{{ team_object.lp_name }}" title="{% trans "Team Events (RSS)" %}">{% trans "Team Events (RSS)" %}</a></li> |
723 | 10 | {% if is_member %}<li><a class="sub-nav-item" href="{% url team-event-new team_object.lp_name %}" title="{% trans "Add New Event" %}">{% trans "Add New Event" %}</a></li>{% endif %} | 10 | {% if is_member %}<li><a class="sub-nav-item" href="{% url team-event-new team_object.lp_name %}" title="{% trans "Add New Event" %}">{% trans "Add New Event" %}</a></li>{% endif %} |
724 | 11 | {% endblock %} | 11 | {% endblock %} |
725 | 12 | 12 | ||
726 | 13 | 13 | ||
727 | 14 | {% block extrahead %}{{ block.super }} | 14 | {% block extrahead %}{{ block.super }} |
729 | 15 | <link type="application/rss+xml" rel="alternate" title="Team Events (RSS)" href="{% url team-events-rss team_object.lp_name %}" /> | 15 | <link type="application/rss+xml" rel="alternate" title="Team Events (RSS)" href="/feeds/events/{{ team_object.lp_name }}" /> |
730 | 16 | {% endblock %} | 16 | {% endblock %} |
731 | 17 | 17 | ||
732 | 18 | {% block content %} | 18 | {% block content %} |
733 | 19 | 19 | ||
734 | === modified file 'loco_directory/templates/teams/team_meeting_list.html' | |||
735 | --- loco_directory/templates/teams/team_meeting_list.html 2012-06-02 11:50:27 +0000 | |||
736 | +++ loco_directory/templates/teams/team_meeting_list.html 2012-11-26 23:13:22 +0000 | |||
737 | @@ -6,13 +6,12 @@ | |||
738 | 6 | {% block sub_nav_links %} | 6 | {% block sub_nav_links %} |
739 | 7 | <li><a class="sub-nav-item" href="{% url team-detail team_object.lp_name %}">{% trans "Back to Team Details" %}</a></li> | 7 | <li><a class="sub-nav-item" href="{% url team-detail team_object.lp_name %}">{% trans "Back to Team Details" %}</a></li> |
740 | 8 | <li><a class="sub-nav-item" href="{% url team-meeting-history team_object.lp_name %}">{% trans "Past Meetings" %}</a></li> | 8 | <li><a class="sub-nav-item" href="{% url team-meeting-history team_object.lp_name %}">{% trans "Past Meetings" %}</a></li> |
742 | 9 | <li><a class="sub-nav-item" href="{% url team-meetings-rss team_object.lp_name %}" title="{% trans "Team Meetings (RSS)" %}"">{% trans "Team Meetings (RSS)" %}</a></li> | 9 | <li><a class="sub-nav-item" href="/feeds/meetings/{{ team_object.lp_name }}" title="{% trans "Team Meetings (RSS)" %}">{% trans "Team Meetings (RSS)" %}</a></li> |
743 | 10 | {% endblock %} | 10 | {% endblock %} |
744 | 11 | 11 | ||
745 | 12 | 12 | ||
746 | 13 | {% block extrahead %}{{ block.super }} | 13 | {% block extrahead %}{{ block.super }} |
749 | 14 | <link type="application/rss+xml" rel="alternate" title="Team Meetings (RSS)" href="{% url team-meetings-rss team_object.lp_name %}" /> | 14 | <link type="application/rss+xml" rel="alternate" title="Team Meetings (RSS)" href="/feeds/meetings/{{ team_object.lp_name }}" />{% endblock %} |
748 | 15 | {% endblock %} | ||
750 | 16 | 15 | ||
751 | 17 | {% block content %} | 16 | {% block content %} |
752 | 18 | <div class="row"> | 17 | <div class="row"> |
753 | 19 | 18 | ||
754 | === modified file 'loco_directory/urls.py' | |||
755 | --- loco_directory/urls.py 2012-11-18 22:02:56 +0000 | |||
756 | +++ loco_directory/urls.py 2012-11-26 23:13:22 +0000 | |||
757 | @@ -7,6 +7,17 @@ | |||
758 | 7 | 7 | ||
759 | 8 | admin.autodiscover() | 8 | admin.autodiscover() |
760 | 9 | 9 | ||
761 | 10 | from events.feeds import TeamEventFeed, GlobalEventFeed | ||
762 | 11 | from meetings.feeds import TeamMeetingFeed | ||
763 | 12 | from teams.feeds import TeamFeed | ||
764 | 13 | |||
765 | 14 | feeds = { | ||
766 | 15 | 'teams': TeamFeed, | ||
767 | 16 | 'events': TeamEventFeed, | ||
768 | 17 | 'globalevents': GlobalEventFeed, | ||
769 | 18 | 'meetings': TeamMeetingFeed, | ||
770 | 19 | } | ||
771 | 20 | |||
772 | 10 | urlpatterns = patterns('', | 21 | urlpatterns = patterns('', |
773 | 11 | url(r'^$', 'common.views.index', name='home'), | 22 | url(r'^$', 'common.views.index', name='home'), |
774 | 12 | url(r'^language/', 'common.views.set_language', name='set_language'), | 23 | url(r'^language/', 'common.views.set_language', name='set_language'), |
775 | @@ -27,6 +38,7 @@ | |||
776 | 27 | url(r'^jsi18n', 'django.views.i18n.javascript_catalog', name='jsi18n'), | 38 | url(r'^jsi18n', 'django.views.i18n.javascript_catalog', name='jsi18n'), |
777 | 28 | url(r'^services/', include('services.urls')), | 39 | url(r'^services/', include('services.urls')), |
778 | 29 | url(r'^search/', 'common.views.site_search', name='site_search'), | 40 | url(r'^search/', 'common.views.site_search', name='site_search'), |
779 | 41 | url(r'^feeds/(?P<url>.*)/$', 'django.contrib.syndication.views.feed', {'feed_dict': feeds}, name='feed_view'), | ||
780 | 30 | url(r'', include('userprofiles.urls')), | 42 | url(r'', include('userprofiles.urls')), |
781 | 31 | ) | 43 | ) |
782 | 32 | 44 |