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

Initial implementation of labels.

parent b0307d67
No related branches found
No related tags found
No related merge requests found
#from gracedb.gracedb.models import Analysis, Group, User
from models import Event, EventLog, User, Group
from models import Label, Labelling
from django.contrib import admin
#class AnalysisAdmin(admin.ModelAdmin):
......@@ -10,4 +11,6 @@ admin.site.register(Event)
admin.site.register(EventLog)
admin.site.register(User)
admin.site.register(Group)
admin.site.register(Label)
admin.site.register(Labelling)
......@@ -30,6 +30,12 @@ class Group(models.Model):
def __unicode__(self):
return self.name
class Label(models.Model):
name = models.CharField(max_length=20)
# XXX really, does this belong here? probably not.
defaultColor = models.CharField(max_length=20, default="black")
def __unicode__(self):
return self.name
class Event(models.Model):
ANALYSIS_TYPE_CHOICES = (
......@@ -64,6 +70,8 @@ class Event(models.Model):
# old date encoded uids.
uid = models.CharField(max_length=20, unique=False, default="")
labels = models.ManyToManyField(Label, through="Labelling")
tags = TagField()
def get_tags(self):
......@@ -119,6 +127,12 @@ class EventLog(models.Model):
else:
return None
class Labelling(models.Model):
event = models.ForeignKey(Event)
label = models.ForeignKey(Label)
creator = models.ForeignKey(User)
created = models.DateTimeField(auto_now_add=True)
class Approval(models.Model):
COLLABORATION_CHOICES = ( ('L','LIGO'), ('V','Virgo'), )
approver = models.ForeignKey(User)
......
......@@ -8,7 +8,7 @@ from django.contrib.sites.models import Site
from django.views.generic.list_detail import object_detail, object_list
from models import Event, Group, EventLog
from models import Event, Group, EventLog, Labelling, Label
from forms import CreateEventForm, EventSearchForm
from alert import issueAlert
from translator import handle_uploaded_data
......@@ -257,6 +257,32 @@ def cli_tag(request):
return response
def cli_label(request):
graceid = request.POST.get('graceid')
labelName = request.POST.get('label')
event = graceid and Event.getByGraceid(graceid)
try:
label = Label.objects.filter(name=labelName)[0]
except IndexError:
raise ValueError("No such Label '%s'" % labelName)
# Don't add a label more than once.
if label not in event.labels.all():
labelling = Labelling(
event = event,
label = label,
creator = request.ligouser
)
labelling.save()
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')
......
......@@ -26,11 +26,12 @@
<tr><th>Sumitter</th><td>{{ object.submitter.name }}</td></tr>
<tr><th>Created{{ "created"|timeselect:"utc" }}</th><td>{{ object.created|multiTime:"created" }}
</td></tr>
<tr><th>Tags</th><td>
{% for tag in object.get_tags %}
{{ tag.name }}
<tr><th>Labels</th><td>
{% for labelling in object.labelling_set.all %}
<span title="{{labelling.creator.name}} {{labelling.created|utc}}" style="color: {{labelling.label.defaultColor}}">{{ labelling.label.name }}</span>
{% endfor %}
</td></tr>
</table>
{% if object.eventlog_set.count %}
......
......@@ -19,6 +19,7 @@ urlpatterns = patterns('',
(r'^cli/log', 'gracedb.gracedb.views.log'),
(r'^cli/upload', 'gracedb.gracedb.views.upload'),
(r'^cli/tag', 'gracedb.gracedb.views.cli_tag'),
(r'^cli/label', 'gracedb.gracedb.views.cli_label'),
#(r'^cli/ping/(?P<arg>.*)', 'gracedb.gracedb.views.ping'),
(r'^feeds/(?P<url>.*)/$', 'django.contrib.syndication.views.feed',
{'feed_dict': feeds}),
......
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