summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeif Johansson <leifj@sunet.se>2012-05-09 19:52:01 +0200
committerLeif Johansson <leifj@sunet.se>2012-05-09 19:52:01 +0200
commit6b3c0873859e6cd7c85c7840722464d6806267bf (patch)
treeb359eebc109b69b621817741032bb50936d2f354
parent644454d002ca062b142045865b441aa3ee5bbba5 (diff)
annotation - for service labels
-rw-r--r--coip/apps/name/models.py31
1 files changed, 30 insertions, 1 deletions
diff --git a/coip/apps/name/models.py b/coip/apps/name/models.py
index 94e9acd..76b3b0a 100644
--- a/coip/apps/name/models.py
+++ b/coip/apps/name/models.py
@@ -4,6 +4,7 @@ Created on Jun 24, 2010
@author: leifj
'''
from django.db import models
+from django.db.models import Q
import re
from pprint import pformat
from django.contrib.auth.models import User
@@ -233,7 +234,35 @@ class NameLink(models.Model):
def __unicode__(self):
return "%s -> %s [%s %s]" % (self.src,self.dst,self.type,self.data)
-
+
+class NameAnnotation(models.Model):
+ name = models.ForeignKey(Name,related_name='annotation')
+ label = models.CharField(max_length=64)
+ data = models.CharField(max_length=256)
+ timecreated = models.DateTimeField(auto_now_add=True)
+ lastupdated = models.DateTimeField(auto_now=True)
+
+ class Meta:
+ unique_together = ('name','label')
+
+def annotate(name,label,data=None):
+ a = NameAnnotation.objects.get_or_create(name=name,label=label)
+ if a.data == None:
+ a.delete()
+ else:
+ a.data = data
+ a.save()
+ return data
+
+def annotation(name,label):
+ qs = NameAnnotation.objects.find(name=name,label=label)
+ if not qs or len(qs) == 0:
+ return ""
+ return qs[0].data
+
+def annotated(label,data):
+ return Name.objects.filter(Q(name__annotation__data=data) & Q(name__annotation__label=label))
+
def roots():
return Name.objects.filter(parent=None)