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

CLI file download. Begin transition to RESTier API

parent ff04a660
No related branches found
No related tags found
No related merge requests found
from django.http import HttpResponse, HttpResponseNotFound
from gracedb.models import Event
import os
def download(request, graceid, filename=None):
#response = HttpResponse(buildVOEvent(event), content_type="application/xml")
if not filename:
response = HttpResponseNotFound("Not Implemented.")
response.status_code = 404
try:
event = Event.getByGraceid(graceid)
filepath = os.path.join(event.datadir(), filename)
if not os.path.exists(filepath):
response = HttpResponseNotFound("File does not exist")
elif not os.access(filepath, os.R_OK):
response = HttpResponseNotFound("File not readable")
else:
response = HttpResponse(open(filepath, "r"), content_type="application/octet-stream")
response['Content-Disposition'] = 'attachment; filename=%s' % os.path.basename(filename)
except Event.DoesNotExist:
response = HttpResponseNotFound("Event does not exist")
return response
......@@ -95,6 +95,10 @@ class Event(models.Model):
#return "pcdev1.phys.uwm.edu:/archive/gracedb/data/%s" % self.graceid()
return "file://pcdev1.phys.uwm.edu/archive/gracedb/data/%s" % self.graceid()
def datadir(self):
# Move to this. Not the (more) ad hoc crap that's floating around.
return os.path.join(settings.GRACEDB_DATA_DIR, self.graceid(), "private")
def ligoApproved(self):
return self.approval_set.filter(approvingCollaboration='L').count()
......
from django.conf.urls.defaults import *
urlpatterns = patterns('gracedb.api',
url (r'^event/(?P<graceid>[\w\d]+)/files/(?P<filename>.+)?$', 'download', name="download"),
)
......@@ -16,6 +16,7 @@ urlpatterns = patterns('',
url (r'^$', 'gracedb.views.index', name="home"),
(r'^events/', include('gracedb.urls')),
(r'^api/', include('gracedb.urls_rest')),
(r'^options/', include('userprofile.urls')),
(r'^cli/create', 'gracedb.views.create'),
(r'^cli/ping', 'gracedb.views.ping'),
......
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