Skip to content
Snippets Groups Projects
Commit 5acca599 authored by Tanner Prestegard's avatar Tanner Prestegard Committed by GraceDB
Browse files

Adding new 'latest' page for events/superevents

New /latest/ page includes events and superevents. We also
move the old events 'latest' page to /events/latest/, changed the
view name, and fixed reverses to that page appropriately.
parent 42bb3693
No related branches found
No related tags found
No related merge requests found
......@@ -25,6 +25,9 @@ DEBUG = False
# Set to off by default
MAINTENANCE_MODE = False
# Number of results to show on latest page
LATEST_RESULTS_NUMBER = 50
# Used for running unit tests
TEST_RUNNER = 'django.test.runner.DiscoverRunner'
......
......@@ -36,7 +36,7 @@ urlpatterns = [
url(r'^reports/$', events.reports.histo, name="reports"),
url(r'^reports/cbc_report/(?P<format>(json|flex))?$',
events.reports.cbc_report, name="cbc_report"),
url(r'^latest', events.views.latest, name="latest"),
url(r'^latest/$', search.views.latest, name="latest"),
#(r'^reports/(?P<path>.+)$', 'django.views.static.serve',
# {'document_root': settings.LATENCY_REPORT_DEST_DIR}),
url(r'^search/$', search.views.search, name="mainsearch"),
......
......@@ -10,7 +10,6 @@ from . import views
urlpatterns = [
url(r'^$', views.index, name="home-events"),
url(r'^create/$', views.create, name="create"),
url(r'^search/(?P<format>(json|flex))?$', views.search, name="search"),
url(r'^(?P<graceid>[GEHMT]\d+)/view/$', views.view, name="view"),
url(r'^(?P<graceid>[GEHMT]\d+)/voevent/$', views.voevent, name="voevent"),
#url (r'^skyalert/(?P<graceid>[GEHMT]\d+)', 'skyalert', name="skyalert"),
......@@ -35,6 +34,11 @@ urlpatterns = [
url(r'^(?P<graceid>[GEHMT]\d+)/log/(?P<num>\d+)/tag/(?P<tagname>.*)$',
views.taglogentry, name="taglogentry"),
# old event-only searches
url(r'^latest/$', views.latest, name="eventlatest"),
url(r'^search/(?P<format>(json|flex))?$', views.search,
name="eventsearch"),
# Legacy URLs
url(r'^view/(?P<graceid>[GEHMT]\d+)', views.view, name="legacyview"),
url(r'^(?P<graceid>[GEHMT]\d+)$', views.view, name="legacyview2"),
......
from django import forms
from django.conf import settings
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render
from django.urls import reverse
......@@ -8,9 +10,12 @@ from .forms import MainSearchForm
from .utils import get_search_results_as_ligolw
from core.http import check_and_serve_file
from events.models import Event
from events.view_utils import flexigridResponse as events_flex
from superevents.models import Superevent
from superevents.search_flex import flexigridResponse as superevents_flex
import os
import logging
logger = logging.getLogger(__name__)
......@@ -64,3 +69,46 @@ def search(request):
context['form'] = form
return render(request, 'search/query.html', context=context)
@require_GET
def latest(request):
# Set up context
context = {}
if "query" in request.GET:
form = MainSearchForm(request.GET)
else:
form = MainSearchForm({'query': "", 'query_type': 'E'})
# Hide get_neighbors widget
form.fields['get_neighbors'].widget = forms.HiddenInput()
if form.is_valid():
objects = form.cleaned_data.get('query')
query_type = form.cleaned_data.get('query_type')
get_neighbors = form.cleaned_data.get('get_neighbors')
# TODO
# Add some select_related stuff here!!
# TODO:
# Filter objects for user
context['title'] = "Query results"
context['raw_query'] = request.GET.get('query')
context['get_neighbors'] = get_neighbors
# Determine object type and order by id (equivalent to
# ordering by creation time and might be faster)
if query_type == 'E':
objects_key = 'events'
elif query_type == 'S':
objects_key = 'superevents'
context[objects_key] = \
objects.order_by('-id')[:settings.LATEST_RESULTS_NUMBER]
# Update form to have query and errors (if they exist)
context['form'] = form
return render(request, 'search/latest.html', context=context)
......@@ -50,9 +50,9 @@
{
sortable: true,
{% if get_neighbors %}
url: '{% url "search" %}flex?query={{rawquery|urlencode}}&get_neighbors=true',
url: '{% url "eventsearch" %}flex?query={{rawquery|urlencode}}&get_neighbors=true',
{% else %}
url: '{% url "search" %}flex?query={{rawquery|urlencode}}',
url: '{% url "eventsearch" %}flex?query={{rawquery|urlencode}}',
{% endif %}
datatype: 'json',
mtype: "GET",
......@@ -121,8 +121,8 @@
<td>
<a onClick="toggle_visibility('hints');">Hints on querying</a>
{% if rawquery %}
| <a href="{% url "search" %}?query={{rawquery|urlencode}}">Link to current query</a>
| <a href="{% url "search" %}?query={{rawquery|urlencode}}&ligolw">Download LIGOLW File</a>
| <a href="{% url "eventsearch" %}?query={{rawquery|urlencode}}">Link to current query</a>
| <a href="{% url "eventsearch" %}?query={{rawquery|urlencode}}&ligolw">Download LIGOLW File</a>
{% endif %}
</td>
</tr>
......
......@@ -11,7 +11,7 @@
{% block jscript %}
{% if not error %}
<meta http-equiv="refresh" content="300;url={% url "latest" %}/?query={{rawquery|urlencode}}">
<meta http-equiv="refresh" content="300;url={% url "eventlatest" %}/?query={{rawquery|urlencode}}">
{% endif %}
{# http/https depending on this pages' protocol #}
......
......@@ -11,7 +11,7 @@
{% block jscript %}
{% if not error %}
<meta http-equiv="refresh" content="300;url={% url "latest" %}/?query={{rawquery|urlencode}}">
<meta http-equiv="refresh" content="300;url={% url "eventlatest" %}/?query={{rawquery|urlencode}}">
{% endif %}
{# http/https depending on this pages' protocol #}
......
{% extends "base.html" %}
{% load timeutil %}
{% load scientific %}
{% block title %}Latest{% endblock %}
{% block heading %}Latest &mdash; as of {% now "j F Y H:i:s T" %}{% endblock %}
{% block pageid %}latest{% endblock %}
{% block headcontents %}
{{ block.super }}
{% if not form.errors %}
<meta http-equiv="refresh" content="300;url={{ request.build_absolute_uri }}">
{% endif %}
{% endblock %}
{% block content %}
<!-- Search form -->
<form method="GET" name="search_form">
<table>
{{ form.as_table }}
<tr><td></td><td><input type="Submit" value="Search" class="searchButtonClass"></td></tr>
</table>
</form>
{% if events %}
<!-- Event listing -->
<table class="event">
<tr>
<th valign="top">UID</th>
<th>Labels</th>
<th>Group</th>
<th>Pipeline</th>
<th>Search</th>
<th>
{{ "gps"|timeselect:"gps" }}
Event Time
</th>
<th>Instruments</th>
<th>FAR (Hz)</th>
<th>Latency (sec)</th>
<th>
{{"created"|timeselect:"utc" }}
Created
</th>
</tr>
{% for ev in events %}
<tr class={% cycle 'odd' 'even' %}>
<td><a href="{% url "view" ev.graceid %}">{{ ev.graceid }}</a></td>
<td>
{% for labelling in ev.labelling_set.all %}
<span title="{{labelling.creator.name}} {{labelling.created|utc}}" style="color: {{labelling.label.defaultColor}}">{{ labelling.label.name }}</span>
{% endfor %}
</td>
<td>{{ ev.group.name }} </td>
<td>{{ ev.pipeline.name }} </td>
<td>{{ ev.search.name }} </td>
<td>{% if ev.gpstime%}
<!-- <span title="{{ ev.gpstime|gpsdate }}">{{ ev.gpstime }}</span> -->
{{ ev.gpstime|multiTimeMicroSeconds:"gps" }}
{% endif %}</td>
<!-- this is a bug. The far should be floored for display purposes. -->
<td>{{ ev.instruments }}</td>
{% if user_is_external %}
{% if ev.far and ev.far < far_floor %}
<td>&lt; {{ far_floor|scientific }}</td>
{% else %}
<td>{{ ev.far|scientific }}</td>
{% endif %}
{% else %}
<td>{{ ev.far|scientific }}</td>
{% endif %}
<td style="text-align:center">{{ ev.reportingLatency }}</td>
<td>{{ ev.created|multiTime:"created" }}</td>
</tr>
{% endfor %}
</table>
{% elif superevents %}
<!-- Superevent listing -->
<table class="event">
<tr>
<th valign="top">UID</th>
<th>Labels</th>
<th>Preferred Event</th>
<th>GW Events</th>
<th>t_start</th>
<th>t_0</th>
<th>t_end</th>
<th>Preferred event's FAR (Hz)</th>
<th>
{{"created"|timeselect:"utc" }}
Created
</th>
</tr>
{% for s in superevents %}
<tr class={% cycle 'odd' 'even' %}>
<td><a href="{% url "superevents:view" s.superevent_id %}">{{ s.superevent_id }}</a></td>
<td>
{% for labelling in s.labelling_set.all %}
<span title="{{labelling.creator.name}} {{labelling.created|utc}}" style="color: {{labelling.label.defaultColor}}">{{ labelling.label.name }}</span>
{% endfor %}
</td>
<td><a href="{% url "view" s.preferred_event.graceid %}">{{ s.preferred_event.graceid }}</a></td>
<td>
{% for ev in s.get_internal_events %}
{% if forloop.last %}
<a href="{% url "view" ev.graceid %}">{{ ev.graceid }}</a>
{% else %}
<a href="{% url "view" ev.graceid %}">{{ ev.graceid }}</a>,
{% endif %}
{% endfor %}
</td>
<td>{{ s.t_start }} </td>
<td>{{ s.t_0 }} </td>
<td>{{ s.t_end }} </td>
{% if user_is_external %}
{% if s.preferred_event.far and s.preferred_event.far < far_floor %}
<td>&lt; {{ far_floor|scientific }}</td>
{% else %}
<td>{{ s.preferred_event.far|scientific }}</td>
{% endif %}
{% else %}
<td>{{ s.preferred_event.far|scientific }}</td>
{% endif %}
<td>{{ s.created|multiTime:"created" }}</td>
</tr>
{% endfor %}
</table>
{% else %} <!-- !events -->
<h1>No results.</h1>
{% endif %} <!-- if eventss -->
{% endblock %}
......@@ -144,7 +144,7 @@ onload="document.search_form.query.focus();"
{{ form.as_table }}
<tr><td></td><td><input type="Submit" value="Search" class="searchButtonClass"></td></tr>
<tr><td></td><td><a onClick="toggle_visibility('hints');">Query help</a>
| <a href="{% url "search" %}">Link to old search page</a>
| <a href="{% url "eventsearch" %}">Link to old search page</a>
{% if raw_query %}
| <a href="{{ request.build_absolute_uri }}">Link to current query</a>
{% if query_type == 'E' %}
......
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