summaryrefslogtreecommitdiff
path: root/coip/apps/name/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'coip/apps/name/models.py')
-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)