diff options
Diffstat (limited to 'ishtar_common/models_common.py')
| -rw-r--r-- | ishtar_common/models_common.py | 18 | 
1 files changed, 17 insertions, 1 deletions
diff --git a/ishtar_common/models_common.py b/ishtar_common/models_common.py index 0345eada2..bde457a3c 100644 --- a/ishtar_common/models_common.py +++ b/ishtar_common/models_common.py @@ -629,6 +629,22 @@ class GeneralType(Cached, models.Model):                  ):                      yield child +    def set_txt_idx(self): +        base_q = self.__class__.objects +        if self.pk: +            base_q = base_q.exclude(pk=self.pk) +        count, txt_idx = True, None +        idx = 0 +        while count: +            if not txt_idx: +                txt_idx = slugify(self.label)[:100] +            else: +                txt_idx = txt_idx[:-5] + f"{idx:05d}" +            q = base_q.filter(txt_idx=txt_idx) +            count = q.count() +            idx += 1 +        self.txt_idx = txt_idx +      def save(self, *args, **kwargs):          ItemKey = apps.get_model("ishtar_common", "ItemKey")          if not self.id and not self.label: @@ -638,7 +654,7 @@ class GeneralType(Cached, models.Model):                  self.txt_idx = txt_idx              self.label = " ".join(" ".join(self.txt_idx.split("-")).split("_")).title()          if not self.txt_idx: -            self.txt_idx = slugify(self.label)[:100] +            self.set_txt_idx()          # clean old keys          if self.pk:  | 
