--- 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)