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

Reply via email to