diff -r 0aaf74c6305b -r 0048668779c0 src/core/models/term.py --- 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)