Ronnie has proposed merging lp:~ronnie.vd.c/loco-directory/rss into
lp:loco-directory.
Requested reviews:
loco-directory-dev (loco-directory-dev)
For more details, see:
https://code.launchpad.net/~ronnie.vd.c/loco-directory/rss/+merge/51800
RSS feeds are now using syndication framework
--
https://code.launchpad.net/~ronnie.vd.c/loco-directory/rss/+merge/51800
Your team loco-directory-dev is requested to review the proposed merge of
lp:~ronnie.vd.c/loco-directory/rss into lp:loco-directory.
=== added file 'loco_directory/events/feeds.py'
--- loco_directory/events/feeds.py 1970-01-01 00:00:00 +0000
+++ loco_directory/events/feeds.py 2011-03-01 19:19:39 +0000
@@ -0,0 +1,66 @@
+from django.core.exceptions import ObjectDoesNotExist
+from django.core.urlresolvers import reverse
+from django.contrib.syndication.feeds import Feed, FeedDoesNotExist
+from django.utils.translation import ugettext as _
+from events.models import TeamEvent, GlobalEvent
+from teams.models import Team
+
+import datetime
+
+class TeamEventFeed(Feed):
+ def get_object(self, bits):
+ if len(bits) >= 1:
+ if bits[0] == 'all':
+ return 'all'
+ else:
+ try:
+ return Team.objects.get(lp_name=bits[0])
+ except:
+ raise ObjectDoesNotExist
+ return None
+
+ def items(self, obj):
+ if isinstance(obj, Team):
+ return TeamEvent.objects.filter(teams=obj, date_end__gt=datetime.datetime.now()).order_by('-date_begin')[:15]
+ else:
+ return TeamEvent.objects.filter(date_end__gt=datetime.datetime.now())[:15]
+
+ def title(self, obj):
+ if isinstance(obj, Team):
+ return _('Upcoming Events for %(teamname)s' % {'teamname': obj.name})
+ else:
+ return _('Upcoming Events')
+
+ def link(self, obj):
+ if isinstance(obj, Team):
+ return reverse('team-event-list', kwargs={'team_slug': obj.lp_name})
+ else:
+ return reverse('event-list')
+
+
+class GlobalEventFeed(Feed):
+ def get_object(self, bits):
+ if len(bits) >= 1:
+ if bits[0] == 'all':
+ return 'all'
+ else:
+ try:
+ return Team.objects.get(lp_name=bits[0])
+ except:
+ raise ObjectDoesNotExist
+ return None
+
+ def items(self, obj):
+ if isinstance(obj, Team):
+ return GlobalEvent.objects.filter(teamevent__teams=obj, date_end__gt=datetime.datetime.now()).order_by('-date_begin')[:15]
+ else:
+ return GlobalEvent.objects.filter(date_end__gt=datetime.datetime.now())[:15]
+
+ def title(self, obj):
+ if isinstance(obj, Team):
+ return _('Upcoming Global Events where %(teamname)s is participating' % {'teamname': obj.name})
+ else:
+ return _('Upcoming Global Events')
+
+ def link(self, obj):
+ return reverse('event-list')
=== modified file 'loco_directory/events/urls.py'
--- loco_directory/events/urls.py 2011-02-17 20:05:03 +0000
+++ loco_directory/events/urls.py 2011-03-01 19:19:39 +0000
@@ -15,7 +15,6 @@
url(r'^team/(?P<team_event_id>\d+)/comment/$', 'events.views.team_event_comment_new', name='team-event-comment-new'),
url(r'^team/(?P<team_event_id>\d+)/copy/$', 'events.views.team_event_copy', name='team-event-copy'),
url(r'^team/(?P<team_slug>[a-zA-Z0-9\-\.\+?]+)/add/$', 'events.views.team_event_new', name='team-event-new'),
- url(r'^team/(?P<team_slug>[a-zA-Z0-9\-\.\+?]+)/rss/$', 'events.views.team_events_rss', name='team-events-rss'),
url(r'^team/(?P<team_slug>[a-zA-Z0-9\-\.\+?]+)/ical/$', 'events.views.team_event_list_ical', name='team-event-list-ical'),
url(r'^team/add/$', 'events.views.team_event_select', name='team-event-select'),
#global events
@@ -25,5 +24,4 @@
url(r'^global/(?P<global_event_id>\d+)/update/$', 'events.views.global_event_update', name='global-event-update'),
url(r'^global/(?P<global_event_id>\d+)/locations/$', 'events.views.global_event_locations', name='global-event-locations'),
url(r'^global/add/$', 'events.views.global_event_new', name='global-event-new'),
-
)
=== added file 'loco_directory/meetings/feeds.py'
--- loco_directory/meetings/feeds.py 1970-01-01 00:00:00 +0000
+++ loco_directory/meetings/feeds.py 2011-03-01 19:19:39 +0000
@@ -0,0 +1,40 @@
+from django.core.exceptions import ObjectDoesNotExist
+from django.core.urlresolvers import reverse
+from django.contrib.syndication.feeds import Feed, FeedDoesNotExist
+from django.utils.translation import ugettext as _
+from meetings.models import TeamMeeting
+from teams.models import Team
+
+import datetime
+
+
+class TeamMeetingFeed(Feed):
+ def get_object(self, bits):
+ if len(bits) >= 1:
+ if bits[0] == 'all':
+ return 'all'
+ else:
+ try:
+ return Team.objects.get(lp_name=bits[0])
+ except:
+ raise ObjectDoesNotExist
+ return None
+
+ def items(self, obj):
+ if isinstance(obj, Team):
+ return TeamMeeting.objects.filter(teams=obj, date_end__gt=datetime.datetime.now()).order_by('-date_begin')[:15]
+ else:
+ return TeamMeeting.objects.filter(date_end__gt=datetime.datetime.now())[:15]
+
+ def title(self, obj):
+ if isinstance(obj, Team):
+ return _('Upcoming Meetings for %(teamname)s' % {'teamname': obj.name})
+ else:
+ return _('Upcoming Meetings')
+
+ def link(self, obj):
+ if isinstance(obj, Team):
+ return reverse('team-meeting-list', kwargs={'team_slug': obj.lp_name})
+ else:
+ return reverse('meeting-list')
+
=== modified file 'loco_directory/meetings/urls.py'
--- loco_directory/meetings/urls.py 2011-01-23 02:17:54 +0000
+++ loco_directory/meetings/urls.py 2011-03-01 19:19:39 +0000
@@ -12,7 +12,6 @@
url(r'^team/(?P<team_meeting_id>\d+)/update/$', 'meetings.views.team_meeting_update', name='team-meeting-update'),
url(r'^team/(?P<team_meeting_id>\d+)/copy/$', 'meetings.views.team_meeting_copy', name='team-meeting-copy'),
url(r'^team/(?P<team_slug>[a-zA-Z0-9\-\.\+?]+)/add/$', 'meetings.views.team_meeting_new', name='team-meeting-new'),
- url(r'^team/(?P<team_slug>[a-zA-Z0-9\-\.\+?]+)/rss/$', 'meetings.views.team_meetings_rss', name='team-meetings-rss'),
url(r'^team/(?P<team_slug>[a-zA-Z0-9\-\.\+?]+)/ical/$', 'meetings.views.team_meeting_list_ical', name='team-meeting-list-ical'),
url(r'^team/add/$', 'meetings.views.team_meeting_select', name='team-meeting-select'),
=== modified file 'loco_directory/teams/views.py'
--- loco_directory/teams/views.py 2011-02-17 21:16:56 +0000
+++ loco_directory/teams/views.py 2011-03-01 19:19:39 +0000
@@ -78,15 +78,43 @@
return render_to_response('teams/team_list.html', context,
RequestContext(request))
+def get_events_and_meetings(team_object):
+ team_events = list(TeamEvent.objects.filter(teams=team_object))
+ team_meetings = list(TeamMeeting.objects.filter(teams=team_object))
+ team_events.extend(team_meetings)
+ return team_events
+
def team_ical(request, team_slug):
"""
Return a ical list with the events and meetings in ical format.
"""
team_object = get_object_or_404(Team, lp_name=team_slug)
- team_events = list(TeamEvent.objects.filter(teams__lp_name=team_slug))
- team_meetings = list(TeamMeeting.objects.filter(teams__lp_name=team_slug))
- team_events.extend(team_meetings)
- return as_ical(team_events, team_object.name)
+ return as_ical(get_events_and_meetings(team_object), team_object.name)
+
+def team_rss(request, team_slug):
+ """
+ Return a RSS list with the events and meetings in RSS format.
+ """
+ team_object = get_object_or_404(Team, lp_name=team_slug)
+ events_and_meetings = get_events_and_meetings(team_object)
+
+ if request.META.has_key('wsgi.url_scheme'):
+ scheme = request.META.get('wsgi.url_scheme')
+ else:
+ scheme = 'http'
+
+ if request.META.has_key('HTTP_HOST'):
+ host = request.META.get('HTTP_HOST')
+ else:
+ host = request.META.get('SERVER_NAME')
+
+ if request.META.get('SERVER_PORT', 80) == 80 or request.META.get('SERVER_PORT', 80) == 0:
+ base = '%s://%s' % (scheme, host)
+ else:
+ base = '%s://%s:%s' % (scheme, host, request.META.get('SERVER_PORT', 80))
+
+ context = {'team_object': team_object, 'events_and_meetings': events_and_meetings, 'base':base}
+ return render_to_response('teams/team_rss.xml', context, RequestContext(request), mimetype='application/xhtml+xml')
def team_event_list(request, team_slug):
"""
=== removed file 'loco_directory/templates/events/team_events_rss.xml'
--- loco_directory/templates/events/team_events_rss.xml 2010-08-17 08:48:39 +0000
+++ loco_directory/templates/events/team_events_rss.xml 1970-01-01 00:00:00 +0000
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-{% load i18n %}
-<rss version="2.0">
- <channel>
- <title>{% blocktrans with team_object.name as team_name %}Upcoming Events for {{team_name}}{% endblocktrans %}</title>
- <link>{{base}}{% url team-event-list team_object.lp_name %}</link>
-
- {% for e in events %}
- <item>
- <title> {{ e.name }}</title>
- <link>{{base}}{% url team-event-detail e.id %}</link>
- <description>{% trans "When:" %} {% spaceless %}
- {% ifequal e.date_begin|date e.date_end|date %}
- {{ e.date_begin|date:"D, d N Y H:i" }} - {{ e.date_end|date:"H:i O" }}
- {% else %}
- {{ e.date_begin|date:"D, d N Y H:i" }} - {{ e.date_end|date:"D, d N Y H:i O" }}
- {% endifequal %}
- {% endspaceless %}{% if e.venue.name %} | {% trans "Where:" %} {{ e.venue.name }}{% endif %}
- {% if e.description %} | {% trans "Description:" %} {{ e.description }}{% endif %}</description>
- <guid>{{base}}{% url team-event-detail e.id %}</guid>
- </item>
- {% endfor %}
- </channel>
-</rss>
=== added directory 'loco_directory/templates/feeds'
=== added file 'loco_directory/templates/feeds/events_description.html'
--- loco_directory/templates/feeds/events_description.html 1970-01-01 00:00:00 +0000
+++ loco_directory/templates/feeds/events_description.html 2011-03-01 19:19:39 +0000
@@ -0,0 +1,10 @@
+{% load i18n %}
+{% trans "When:" %} {% spaceless %}
+{% ifequal obj.date_begin|date obj.date_end|date %}
+ {{ obj.date_begin|date:"D, d N Y H:i" }} - {{ obj.date_end|date:"H:i O" }}
+{% else %}
+ {{ obj.date_begin|date:"D, d N Y H:i" }} - {{ obj.date_end|date:"D, d N Y H:i O" }}
+{% endifequal %}
+{% endspaceless %}
+{% if obj.venue.name %} | {% trans "Where:" %} {{ obj.venue.name }}{% endif %}
+{% if obj.description %} | {% trans "Description:" %} {{ obj.description }}{% endif %}
=== added file 'loco_directory/templates/feeds/events_title.html'
--- loco_directory/templates/feeds/events_title.html 1970-01-01 00:00:00 +0000
+++ loco_directory/templates/feeds/events_title.html 2011-03-01 19:19:39 +0000
@@ -0,0 +1,1 @@
+{{ obj.name }}
=== added file 'loco_directory/templates/feeds/globalevents_description.html'
--- loco_directory/templates/feeds/globalevents_description.html 1970-01-01 00:00:00 +0000
+++ loco_directory/templates/feeds/globalevents_description.html 2011-03-01 19:19:39 +0000
@@ -0,0 +1,9 @@
+{% load i18n %}
+{% trans "When:" %} {% spaceless %}
+{% ifequal obj.date_begin|date obj.date_end|date %}
+ {{ obj.date_begin|date:"D, d N Y H:i" }} - {{ obj.date_end|date:"H:i O" }}
+{% else %}
+ {{ obj.date_begin|date:"D, d N Y H:i" }} - {{ obj.date_end|date:"D, d N Y H:i O" }}
+{% endifequal %}
+{% endspaceless %}
+{% if obj.description %} | {% trans "Description:" %} {{ obj.description }}{% endif %}
=== added file 'loco_directory/templates/feeds/globalevents_title.html'
--- loco_directory/templates/feeds/globalevents_title.html 1970-01-01 00:00:00 +0000
+++ loco_directory/templates/feeds/globalevents_title.html 2011-03-01 19:19:39 +0000
@@ -0,0 +1,1 @@
+{{ obj.name }}
=== added file 'loco_directory/templates/feeds/meetings_description.html'
--- loco_directory/templates/feeds/meetings_description.html 1970-01-01 00:00:00 +0000
+++ loco_directory/templates/feeds/meetings_description.html 2011-03-01 19:19:39 +0000
@@ -0,0 +1,8 @@
+{% load i18n %}
+{% trans "When:" %} {% spaceless %}
+{% ifequal obj.date_begin|date obj.date_end|date %}
+ {{ obj.date_begin|date:"D, d N Y H:i" }} - {{ obj.date_end|date:"H:i O" }}
+{% else %}
+ {{ obj.date_begin|date:"D, d N Y H:i" }} - {{ obj.date_end|date:"D, d N Y H:i O" }}
+{% endifequal %}
+{% endspaceless %}
=== added file 'loco_directory/templates/feeds/meetings_title.html'
--- loco_directory/templates/feeds/meetings_title.html 1970-01-01 00:00:00 +0000
+++ loco_directory/templates/feeds/meetings_title.html 2011-03-01 19:19:39 +0000
@@ -0,0 +1,1 @@
+{{ obj.name }}
=== removed file 'loco_directory/templates/meetings/team_meetings_rss.xml'
--- loco_directory/templates/meetings/team_meetings_rss.xml 2010-12-02 07:56:46 +0000
+++ loco_directory/templates/meetings/team_meetings_rss.xml 1970-01-01 00:00:00 +0000
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-{% load i18n %}
-<rss version="2.0">
- <channel>
- <title>{% blocktrans with team_object.name as team_name %}Upcoming Meetings for {{team_name}}{% endblocktrans %}</title>
- <link>{{base}}{% url team-meeting-list team_object.lp_name %}</link>
-
- {% for e in meetings %}
- <item>
- <title> {{ e.name }}</title>
- <link>{{base}}{% url team-meeting-detail e.id %}</link>
- <description>{% trans "When:" %} {% spaceless %}
- {% ifequal e.date_begin|date e.date_end|date %}
- {{ e.date_begin|date:"D, d N Y H:i" }} - {{ e.date_end|date:"H:i O" }}
- {% else %}
- {{ e.date_begin|date:"D, d N Y H:i" }} - {{ e.date_end|date:"D, d N Y H:i O" }}
- {% endifequal %}
- {% endspaceless %}</description>
- <guid>{{base}}{% url team-meeting-detail e.id %}</guid>
- </item>
- {% endfor %}
- </channel>
-</rss>
=== modified file 'loco_directory/templates/teams/team_detail.html'
--- loco_directory/templates/teams/team_detail.html 2011-02-19 14:16:30 +0000
+++ loco_directory/templates/teams/team_detail.html 2011-03-01 19:19:39 +0000
@@ -89,7 +89,7 @@
}
</style>
{% endif %}
-<link type="application/rss+xml" rel="alternate" title="{% trans "Team Events (RSS)" %}" href="{% url team-events-rss team.lp_name %}" />
+<link type="application/rss+xml" rel="alternate" title="{% trans "Team Events (RSS)" %}" href="/feeds/events/{{ team.lp_name }}" />
{% endblock %}
{% block content %}
@@ -183,7 +183,7 @@
<li style="font-size:0.98em"><a href="{% url team-event-list team.lp_name %}">{% trans "All Events" %}</a></li>
<li style="font-size:0.98em"><a href="{% url team-meeting-list team.lp_name %}">{% trans "All Meetings" %}</a></li>
<li style="font-size:0.98em"><a href="{% url team-event-history team.lp_name %}">{% trans "Past Events" %}</a></li>
- <li style="font-size:0.98em"><a href="{% url team-events-rss team.lp_name %}">{% trans "RSS Feed" %}</a></li>
+ <li style="font-size:0.98em"><a href="/feeds/events/{{ team.lp_name }}">{% trans "RSS Feed" %}</a></li>
<li style="font-size:0.98em"><a href="{% url team-calendar team.lp_name %}">{% trans "iCal Feed" %}</a></li>
</ul>
{% if team.next_5_events_and_meetings %}
=== modified file 'loco_directory/templates/teams/team_event_list.html'
--- loco_directory/templates/teams/team_event_list.html 2010-11-20 17:25:50 +0000
+++ loco_directory/templates/teams/team_event_list.html 2011-03-01 19:19:39 +0000
@@ -6,12 +6,12 @@
{% block sub_nav_links %}
<a class="sub-nav-item" href="{% url team-detail team_object.lp_name %}">{% trans "Back to Team Details" %}</a>
<a class="sub-nav-item" href="{% url team-event-history team_object.lp_name %}">{% trans "Past Events" %}</a>
-<a class="sub-nav-item" href="{% url team-events-rss team_object.lp_name %}" title="{% trans "Team Events (RSS)" %}"">{% trans "Team Events (RSS)" %}</a>
+<a class="sub-nav-item" href="/feeds/events/{{ team_object.lp_name }}" title="{% trans "Team Events (RSS)" %}"">{% trans "Team Events (RSS)" %}</a>
{% endblock %}
{% block extrahead %}{{ block.super }}
-<link type="application/rss+xml" rel="alternate" title="Team Events (RSS)" href="{% url team-events-rss team_object.lp_name %}" />
+<link type="application/rss+xml" rel="alternate" title="Team Events (RSS)" href="/feeds/events/{{ team_object.lp_name }}" />
{% endblock %}
{% block content %}
=== modified file 'loco_directory/templates/teams/team_meeting_list.html'
--- loco_directory/templates/teams/team_meeting_list.html 2010-12-02 09:12:22 +0000
+++ loco_directory/templates/teams/team_meeting_list.html 2011-03-01 19:19:39 +0000
@@ -6,12 +6,12 @@
{% block sub_nav_links %}
<a class="sub-nav-item" href="{% url team-detail team_object.lp_name %}">{% trans "Back to Team Details" %}</a>
<a class="sub-nav-item" href="{% url team-meeting-history team_object.lp_name %}">{% trans "Past Meetings" %}</a>
-<a class="sub-nav-item" href="{% url team-meetings-rss team_object.lp_name %}" title="{% trans "Team Meetings (RSS)" %}"">{% trans "Team Meetings (RSS)" %}</a>
+<a class="sub-nav-item" href="/feeds/meetings/{{ team_object.lp_name }}" title="{% trans "Team Meetings (RSS)" %}"">{% trans "Team Meetings (RSS)" %}</a>
{% endblock %}
{% block extrahead %}{{ block.super }}
-<link type="application/rss+xml" rel="alternate" title="Team Meetings (RSS)" href="{% url team-meetings-rss team_object.lp_name %}" />
+<link type="application/rss+xml" rel="alternate" title="Team Meetings (RSS)" href="/feeds/meetings/{{ team_object.lp_name }}" />
{% endblock %}
{% block content %}
=== modified file 'loco_directory/urls.py'
--- loco_directory/urls.py 2010-12-02 09:12:22 +0000
+++ loco_directory/urls.py 2011-03-01 19:19:39 +0000
@@ -5,6 +5,15 @@
admin.autodiscover()
+from events.feeds import TeamEventFeed, GlobalEventFeed
+from meetings.feeds import TeamMeetingFeed
+
+feeds = {
+ 'events': TeamEventFeed,
+ 'globalevents': GlobalEventFeed,
+ 'meetings': TeamMeetingFeed,
+}
+
urlpatterns = patterns('',
url(r'^$', 'common.views.index', name='home'),
url(r'^language/', 'common.views.set_language', name='set_language'),
@@ -25,6 +34,7 @@
url(r'^jsi18n', 'django.views.i18n.javascript_catalog', name='jsi18n'),
url(r'^services/', include('services.urls')),
url(r'^search/', 'common.views.site_search', name='site_search'),
+ url(r'^feeds/(?P<url>.*)/$', 'django.contrib.syndication.views.feed', {'feed_dict': feeds}, name='feed_view'),
)
if settings.STATIC_SERVE:
_______________________________________________
Mailing list: https://launchpad.net/~loco-directory-dev
Post to : [email protected]
Unsubscribe : https://launchpad.net/~loco-directory-dev
More help : https://help.launchpad.net/ListHelp