From 399d01555036c2d963b0f0f575e87a2a6d359e5e Mon Sep 17 00:00:00 2001 From: Brian Moe <lars@moe.phys.uwm.edu> Date: Tue, 10 Nov 2009 16:42:07 -0600 Subject: [PATCH] Basic tag functionality. cli_tag, non-functional form drop-down, show tags on event detail page. --- gracedb/forms.py | 6 ++++++ gracedb/models.py | 6 ++++++ gracedb/views.py | 15 +++++++++++++++ templates/gracedb/event_detail.html | 5 +++++ urls.py | 1 + 5 files changed, 33 insertions(+) diff --git a/gracedb/forms.py b/gracedb/forms.py index 4407d73e3..dcf191092 100644 --- a/gracedb/forms.py +++ b/gracedb/forms.py @@ -2,6 +2,8 @@ from django import forms from models import Event, User, Group +from tagging.models import Tag + class CreateEventForm(forms.Form): groupChoices = [("","")]+[(g.name, g.name) for g in Group.objects.all()] typeChoices= [("","")]+list(Event.ANALYSIS_TYPE_CHOICES) @@ -17,6 +19,8 @@ class EventSearchForm(forms.Form): submitterList = User.objects.filter(id__in=submitterIds).order_by('name') submitterChoices = [("","")]+ [ (u.id, u.name) for u in submitterList] + tagChoices = [(tag.name,tag.name) for tag in Tag.objects.all()] + graceidStart = forms.CharField(required=False) graceidEnd = forms.CharField(required=False) group = forms.ChoiceField(choices=groupChoices, required=False) @@ -25,6 +29,8 @@ class EventSearchForm(forms.Form): gpsEnd = forms.IntegerField(min_value=0, required=False, label="GPS End") submitter = forms.ChoiceField(choices=submitterChoices, required=False) + tags = forms.ChoiceField(choices=tagChoices, required=False) + ligoApproved = forms.BooleanField(initial=False, required=False, label="LIGO Approved Only") virgoApproved = forms.BooleanField(initial=False, required=False, label="Virgo Approved Only") diff --git a/gracedb/models.py b/gracedb/models.py index 2babcd7cc..acd19e4e4 100644 --- a/gracedb/models.py +++ b/gracedb/models.py @@ -6,6 +6,7 @@ import os from tagging.fields import TagField from tagging.models import Tag +from tagging.utils import get_tag_list from gracedb.ligolw.models import CoincEvent @@ -68,6 +69,11 @@ class Event(models.Model): def get_tags(self): return Tag.objects.get_for_object(self) + def add_tag(self, tag, must_already_exist=True): + if must_already_exist and not get_tag_list(tag): + raise ValueError("Tag '%s' does not exist." % tag) + Tag.objects.add_tag(self, tag) + class Meta: ordering = ["-id"] diff --git a/gracedb/views.py b/gracedb/views.py index 7786caa6b..b31e7c364 100644 --- a/gracedb/views.py +++ b/gracedb/views.py @@ -242,6 +242,21 @@ def upload(request): response['Content-length'] = len(msg) return response +def cli_tag(request): + graceid = request.POST.get('graceid') + tagname = request.POST.get('tag') + + event = graceid and Event.getByGraceid(graceid) + event.add_tag(tagname) + + msg = str({}) + response = HttpResponse(mimetype='application/json') + response.write(msg) + response['Content-length'] = len(msg) + + return response + + def log(request): message = request.POST.get('message') graceid = request.POST.get('graceid') diff --git a/templates/gracedb/event_detail.html b/templates/gracedb/event_detail.html index c6e8983fa..5070ecb80 100644 --- a/templates/gracedb/event_detail.html +++ b/templates/gracedb/event_detail.html @@ -24,6 +24,11 @@ <tr><th>Sumitter</th><td>{{ object.submitter.name }}</td></tr> <tr><th>Created</th><td>{{ object.created|utc }} </td></tr> + <tr><th>Tags</th><td> + {% for tag in object.get_tags %} + {{ tag.name }} + {% endfor %} + </td></tr> </table> {% if object.eventlog_set.count %} diff --git a/urls.py b/urls.py index e1b5f8f8c..6c9be2ed0 100644 --- a/urls.py +++ b/urls.py @@ -18,6 +18,7 @@ urlpatterns = patterns('', (r'^cli/ping', 'gracedb.gracedb.views.ping'), (r'^cli/log', 'gracedb.gracedb.views.log'), (r'^cli/upload', 'gracedb.gracedb.views.upload'), + (r'^cli/tag', 'gracedb.gracedb.views.cli_tag'), #(r'^cli/ping/(?P<arg>.*)', 'gracedb.gracedb.views.ping'), (r'^feeds/(?P<url>.*)/$', 'django.contrib.syndication.views.feed', {'feed_dict': feeds}), -- GitLab