diff --git a/gracedb/views.py b/gracedb/views.py index e4fe34b3544d15fb7b6bd7333edf4dba87978195..2789ed3325ccec158c16f8de24a2acd49aa2e7cc 100644 --- a/gracedb/views.py +++ b/gracedb/views.py @@ -592,12 +592,32 @@ def search(request, format=""): elif format == "jqgrid": return jqgridResponse(request, objects) elif 'ligolw' in request.POST: - response = HttpResponse(mimetype='application/javascript') - response = HttpResponse(mimetype='text/plain') - msg = 'oh hai' - response['Content-length'] = len(msg) - response.write(msg) + + if objects.count() > 1000: + # XXX Make this -- Better. + return HttpResponse("No more than 1000 events currently allowed.") + + from glue.ligolw import ligolw + # lsctables MUST be loaded before utils. + from glue.ligolw import lsctables + from glue.ligolw import utils + from glue.ligolw.utils import ligolw_add + from settings import GRACEDB_DATA_DIR + + xmldoc = ligolw.Document() + for obj in objects: + fname = os.path.join(GRACEDB_DATA_DIR, obj.graceid(), "private", "coinc.xml") + utils.load_filename(fname, xmldoc=xmldoc) + + ligolw_add.reassign_ids(xmldoc) + ligolw_add.merge_ligolws(xmldoc) + ligolw_add.merge_compatible_tables(xmldoc) + + response = HttpResponse(mimetype='application/xml') + response['Content-Disposition'] = 'attachment; filename=gracedb-query.xml' + utils.write_fileobj(xmldoc, response) return response + else: #objects = objects[:limit] #if objects.count() >= limit: diff --git a/templates/gracedb/query.html b/templates/gracedb/query.html index 213c212ac3c31b27cf9e2cb5e23e4d06373e9ace..7cf2fce80288e7855a6890f43558b6a4bfc4108e 100644 --- a/templates/gracedb/query.html +++ b/templates/gracedb/query.html @@ -31,7 +31,7 @@ onload="document.search_form.query.focus();" </tr> <tr><td/><td>{% include "gracedb/query_help_frag.html" %}</td></tr> </table> - <input type="Submit" name="Submit" value="submit"/> + <input type="Submit" name="submit" value="Submit"/> <input type="Submit" name="ligolw" value="LigoLW"/> </form>