src/core/models/term.py
changeset 61 0048668779c0
parent 55 bcbd95da9be2
child 62 33fd91a414cc
--- a/src/core/models/term.py	Wed Jul 10 18:16:59 2013 +0200
+++ b/src/core/models/term.py	Thu Jul 04 17:57:26 2013 +0200
@@ -9,6 +9,7 @@
 from django.contrib.auth import get_user_model
 from django.db import models
 from django.utils.translation import ugettext as _
+from mptt.models import MPTTModel, TreeForeignKey
 import datetime
 import logging
 
@@ -79,7 +80,7 @@
         return self.label
 
 
-class Term(models.Model):
+class Term(MPTTModel):
     label = models.CharField(max_length=1024, unique=False, blank=False, null=False, db_index=True)
     lang = models.CharField(max_length=128, unique=False, blank=True, null=True, db_index=True)
     uri = models.URLField(max_length=2048, blank=True, null=True, db_index=True)
@@ -104,6 +105,8 @@
     nb_notice = models.IntegerField(blank=False, null=False, default=0, db_index=True, editable=False)
     notices = models.ManyToManyField('core.Notice', related_name="terms+", through="core.NoticeTerm")
     
+    parent = TreeForeignKey('self', null=True, blank=True, related_name='children')
+    
     @property
     def alternative_labels_str(self):
         return " | ".join([l.label for l in self.alternative_labels.all() if l.label != self.label])
@@ -140,6 +143,9 @@
     
     class Meta:
         app_label = 'core'
+        
+    class MPTTMeta:
+        order_insertion_by = ['normalized_label']
 
 class TermLabel(models.Model):
     label = models.CharField(max_length=1024, unique=False, blank=False, null=False, db_index=True)