From 3dec3fdd6260ed5f96f8c5f3ab8d5e55aadd3be5 Mon Sep 17 00:00:00 2001
From: Branson Stephens <branson.stephens@ligo.org>
Date: Thu, 21 Aug 2014 15:12:55 -0500
Subject: [PATCH] Changed weburl method on event to return a nicer file list
 view.

---
 gracedb/models.py                     |  5 +++--
 gracedb/urls.py                       |  1 +
 gracedb/views.py                      | 25 ++++++++++++++++++++++++-
 templates/gracedb/event_filelist.html | 15 +++++++++++++++
 4 files changed, 43 insertions(+), 3 deletions(-)
 create mode 100644 templates/gracedb/event_filelist.html

diff --git a/gracedb/models.py b/gracedb/models.py
index 429321c70..17912f837 100644
--- a/gracedb/models.py
+++ b/gracedb/models.py
@@ -113,8 +113,9 @@ class Event(models.Model):
 
     def weburl(self):
         # XXX Not good.  But then, it never was.
-        return "https://gracedb.ligo.org/gracedb-files/%s" % self.graceid()
-        return "https://ldas-jobs.phys.uwm.edu/gracedb/data/%s" % self.graceid()
+        #return "https://ldas-jobs.phys.uwm.edu/gracedb/data/%s" % self.graceid()
+        #return "https://gracedb.ligo.org/gracedb-files/%s" % self.graceid()
+        return reverse('file_list', args=[self.graceid()])
 
     # XXX This should be considered deprecated. (Branson, July 22, 2014.)
     def clusterurl(self):
diff --git a/gracedb/urls.py b/gracedb/urls.py
index e2856b4f0..a77fc45a3 100644
--- a/gracedb/urls.py
+++ b/gracedb/urls.py
@@ -16,6 +16,7 @@ urlpatterns = patterns('gracedb.views',
     url (r'^skyalert/(?P<graceid>[GEHT]\d+)', 'skyalert', name="skyalert"),
     url (r'^neighbors/(?P<graceid>[GEHT]\d+)/\(?(?P<delta1>[-+]?\d+)(,(?P<delta2>[-+]?\d+)\)?)?', 'neighbors', name="neighbors"),
     url (r'^(?P<graceid>[GEHT]\d+)$', 'view', name="view2"),
+    url (r'^(?P<graceid>[GEHT]\d+)/files/$', 'file_list', name="file_list"),
     url (r'^(?P<graceid>[GEHT]\d+)/files/(?P<filename>.*)$', download, name="file"),
     url (r'^(?P<graceid>[GEHT]\d+)/log/(?P<num>([\d]*|preview))$', 'logentry', name="logentry"),
     url (r'^(?P<graceid>[GEHT]\d+)/log/(?P<num>\d+)/tag/(?P<tagname>\w+)$', 'taglogentry', name="taglogentry"),
diff --git a/gracedb/views.py b/gracedb/views.py
index e9f6036a5..2131e92df 100644
--- a/gracedb/views.py
+++ b/gracedb/views.py
@@ -1285,4 +1285,27 @@ def performance(request):
             'gracedb/performance.html',
             context,
             context_instance=RequestContext(request))
- 
+
+# A view for the list of files associated with an event.
+# We're deliberately leaving out the /general directory.
+# The idea is to get rid of that horrible /gracedb-files/ url.
+def file_list(request, graceid):
+    try:
+        event = Event.getByGraceid(graceid)
+    except Event.DoesNotExist:
+        return HttpResponseNotFound("Event not found")
+
+    f = []
+    for dirname, dirnames, filenames in os.walk(event.datadir()):
+        f.extend(filenames)
+        break
+
+    context = {}
+    context['file_list'] = f
+    context['title'] = 'Files for %s' % graceid 
+    context['graceid'] = graceid 
+        
+    return render_to_response(
+        'gracedb/event_filelist.html',
+        context,
+        context_instance=RequestContext(request)) 
diff --git a/templates/gracedb/event_filelist.html b/templates/gracedb/event_filelist.html
new file mode 100644
index 000000000..1f413294a
--- /dev/null
+++ b/templates/gracedb/event_filelist.html
@@ -0,0 +1,15 @@
+{% extends "base.html" %}
+{% block title %}{{ title }}{% endblock %}
+{% block heading %}{{ title }}{% endblock %}
+{% block pageid %}event files{% endblock %}
+
+{% block content %}
+<p>{{ message }}</p>
+
+<ul>
+{% for filename in file_list %}
+<li><a href="{% url "file" graceid filename %}">{{ filename }}</a></li>
+{% endfor %}
+</ul>
+
+{% endblock %}
-- 
GitLab