better ordering for tags
[redakcja.git] / apps / catalogue / models / tag.py
1 # -*- coding: utf-8 -*-
2 #
3 # This file is part of FNP-Redakcja, licensed under GNU Affero GPLv3 or later.
4 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
5 #
6 from __future__ import unicode_literals
7
8 from django.db import models
9 from django.utils.translation import ugettext_lazy as _
10
11
12 class Category(models.Model):
13     label = models.CharField(max_length=64, verbose_name=_('category'))
14     dc_tag = models.CharField(max_length=32)
15     multiple = models.BooleanField(default=False, verbose_name=_('multiple choice'))
16     tutorial = models.CharField(max_length=250, blank=True)
17     index = models.IntegerField()
18
19     class Meta:
20         ordering = ['index']
21         verbose_name = _('category')
22         verbose_name_plural = _('categories')
23
24     def set_tags_for(self, obj, tags):
25         obj.tags.remove(*obj.tags.filter(category=self))
26         obj.tags.add(*tags)
27
28     def __unicode__(self):
29         return self.label
30
31
32 class Tag(models.Model):
33     label = models.CharField(max_length=64, verbose_name=_('tag'))
34     dc_value = models.CharField(max_length=32)
35     category = models.ForeignKey(Category)
36     help_text = models.CharField(max_length=250, blank=True)
37     index = models.IntegerField()
38
39     class Meta:
40         ordering = ['category', 'index', 'label']
41         verbose_name = _('tag')
42         verbose_name_plural = _('tags')
43
44     def __unicode__(self):
45         return self.label