diff options
Diffstat (limited to 'coip/apps/name/models.py')
-rw-r--r-- | coip/apps/name/models.py | 31 |
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) |