Skip to content
Snippets Groups Projects
Commit 4ca44ce0 authored by Brian Moe's avatar Brian Moe
Browse files

Added RSS feeds and view page

parent 2a0c599f
No related branches found
No related tags found
No related merge requests found
from django.contrib.syndication.feeds import FeedDoesNotExist
from django.core.exceptions import ObjectDoesNotExist
from django.contrib.syndication.feeds import Feed
from django.core.urlresolvers import reverse
from django.template import RequestContext
from django.shortcuts import render_to_response
from models import Event, Group
from views import view
class EventFeed(Feed):
def get_object(self, bits):
# [] , ['cbc'], ['cbc','lowmass']
if len(bits) not in [0,1,2]:
raise FeedDoesNotExist
if not bits:
title = "GraCEDB Events"
objs = Event.objects.order_by("-id")
else:
group = Group.objects.filter(name__iexact=bits[0])
if not group.count():
raise FeedDoesNotExist
group = group[0]
objs = Event.objects.filter(group=group)
if len(bits) == 1:
title = "GraCEDB Events for %s Group" % group.name
else:
requestedtype = bits[1]
type = [(c,t) for (c,t) in Event.ANALYSIS_TYPE_CHOICES \
if t.lower() == requestedtype]
if not type:
raise FeedDoesNotExist
typecode, type = type[0]
title = "GraCEDB Events for %s / %s" % (group.name, type)
objs = objs.filter(analysisType=typecode)
return title, objs[:10]
def title(self, obj):
title, _ = obj
return title
def link(self, obj):
# XXX WHAT is THIS??
# Breaks the feed if it's not there. Appears in <link> tags. Eh?
return "/linky"
def item_link(self, obj):
return reverse(view, args=[obj.graceid()])
def description(self, obj):
# XXX Descriptive text for the feed itself.
# I don't know what to put here
return ""
def items(self, obj):
_, x = obj
return x
def feedview(request):
return render_to_response(
'feeds/index.html',
{},
context_instance=RequestContext(request))
......@@ -45,7 +45,7 @@ class Event(models.Model):
("Q", "Q"),
("X", "X"),
("CWB", "CWB"),
("MBTA", "MBTA Online"),
("MBTA", "MBTAOnline"),
)
submitter = models.ForeignKey(User)
created = models.DateTimeField(auto_now_add=True)
......@@ -81,6 +81,13 @@ class Event(models.Model):
def virgoApproved(self):
return self.approval_set.filter(approvingCollaboration='V').count()
@classmethod
def getByGraceid(cls, id):
if not id: return None
if id[0] == "G":
return cls.objects.get(id=int(id[1:]))
return cls.objects.get(uid=id)
class Approval(models.Model):
COLLABORATION_CHOICES = ( ('L','LIGO'), ('V','Virgo'), )
approver = models.ForeignKey(User)
......
......@@ -7,6 +7,8 @@ urlpatterns = patterns('gracedb.gracedb.views',
(r'^$', 'index'),
url (r'^create/$', 'create', name="create"),
url (r'^search/$', 'search', name="search"),
url (r'^view/(?P<graceid>[\w\d]+)', 'view', name="view"),
# (r'^view/(?P<uid>[\w\d]+)', 'view'),
# (r'^edit/(?P<uid>[\w\d]+)', 'edit'),
# (r'^request_archive/(?P<uid>[\w\d]+)(?P<rescind>/rescind)?', 'request_archive'),
......
......@@ -16,7 +16,6 @@ def index(request):
# assert request.ligouser
return render_to_response(
'gracedb/index.html',
# {'hi':request.ligouser},
{},
context_instance=RequestContext(request))
......@@ -102,6 +101,16 @@ def create(request):
{ 'form' : form },
context_instance=RequestContext(request))
def view(request, graceid):
context = {}
a = Event.getByGraceid(graceid)
if not a:
return HttpResponseNotFound()
context['object'] = a
return render_to_response(
'gracedb/event_detail.html',
context,
context_instance=RequestContext(request))
def search(request):
assert request.ligouser
......
......@@ -93,6 +93,6 @@ INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
#'django.contrib.sites',
'gracedb.gracedb',
)
......@@ -90,6 +90,6 @@ INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
#'django.contrib.sites',
'gracedb.gracedb',
)
{% extends "base.html" %}
{% block title %}RSS Feeds{% endblock %}
{% block heading %}GraceDB{% endblock %}
{% block content %}
<h2>RSS Feeds</h2>
<p>
<a href="/gracedb/feeds/latest/">All Latest Events</a>
<ul>
<li><a href="/gracedb/feeds/latest/burst/">Burst</a></li>
<ul>
<li><a href="/gracedb/feeds/latest/burst/omega">Omega</a></li>
<li><a href="/gracedb/feeds/latest/burst/q">Q</a></li>
<li><a href="/gracedb/feeds/latest/burst/x">X</a></li>
</ul>
</ul>
<ul>
<li><a href="/gracedb/feeds/latest/cbc/">CBC</a></li>
<ul>
<li><a href="/gracedb/feeds/latest/cbc/lowmass">Low Mass</a></li>
<li><a href="/gracedb/feeds/latest/cbc/highmass">High Mass</a></li>
<li><a href="/gracedb/feeds/latest/cbc/grb">GRB</a></li>
<li><a href="/gracedb/feeds/latest/cbc/ringdown">Ringdown</a></li>
<li><a href="/gracedb/feeds/latest/cbs/mbtaonline">MBTA Online</a></li>
</ul>
</ul>
<ul>
<li><a href="/gracedb/feeds/latest/stochastic/">Stochastic</a></li>
<ul>
<li><a href="/gracedb/feeds/latest/stochastic/cwb">CWB</a></li>
</ul>
</ul>
</p>
{% endblock %}
<ul>
<li><a href="{{ obj.weburl }}">Data</a></li>
<li><a href="{{ obj.wikiurl }}">TWiki</a></li>
</ul>
Sumbmitter: {{ obj.submitter.name }}<br/>
Created: {{ obj.created }}
{{ obj.graceid }} {{ obj.group.name }} / {{ obj.get_analysisType_display }}
{% extends "base.html" %}
{% block title %}View {{ object.graceid }}{% endblock %}
{% block heading %}View {{ object.graceid }}{% endblock %}
{% block content %}
<p>{{ message }}</p>
<table>
<tr><th>ID</th><td>{{ object.graceid }}</td></tr>
<tr><th>Data</th><td>
<a href="{{ object.weburl }}">{{ object.weburl }}</a>
</td></tr>
<tr><th>TWiki</th><td>
<a href="{{ object.wikiurl }}">{{ object.wikiurl }}</a>
</td></tr>
<tr><th>Sumitter</th><td>{{ object.submitter.name }}</td></tr>
<tr><th>Created</th><td>{{ object.created }}</td></tr>
</table>
{% endblock %}
......@@ -4,13 +4,20 @@ from django.conf.urls.defaults import *
from django.contrib import admin
admin.autodiscover()
from gracedb.feeds import EventFeed, feedview
feeds = {
'latest' : EventFeed
}
urlpatterns = patterns('',
# Example:
# (r'^gracedb/', include('gracedb.foo.urls')),
(r'^$', 'gracedb.gracedb.views.index'),
(r'^events/', include('gracedb.gracedb.urls')),
(r'^cli/create', 'gracedb.gracedb.views.create'),
(r'^feeds/(?P<url>.*)/$', 'django.contrib.syndication.views.feed',
{'feed_dict': feeds}),
(r'^feeds/$', feedview),
# Uncomment the admin/doc line below and add 'django.contrib.admindocs'
# to INSTALLED_APPS to enable admin documentation:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment