from django.db.models.query import Prefetch
from django.dispatch import Signal
from django.urls import reverse
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import gettext_lazy as _
from newtagging.models import TagManager, TaggedItemManager
created_at = models.DateTimeField(_('creation date'), auto_now_add=True, db_index=True)
changed_at = models.DateTimeField(_('creation date'), auto_now=True, db_index=True)
- after_change = Signal(providing_args=['instance'])
+ plural = models.CharField(
+ 'liczba mnoga', max_length=255, blank=True,
+ help_text='dotyczy gatunków'
+ )
+ genre_epoch_specific = models.BooleanField(
+ default=False,
+ help_text='Po wskazaniu tego gatunku, dodanie epoki byłoby nadmiarowe, np. „dramat romantyczny”'
+ )
+ adjective_feminine_singular = models.CharField(
+ 'przymiotnik pojedynczy żeński', max_length=255, blank=True,
+ help_text='twórczość … Adama Mickiewicza; dotyczy epok'
+ )
+ adjective_nonmasculine_plural = models.CharField(
+ 'przymiotnik mnogi niemęskoosobowy', max_length=255, blank=True,
+ help_text='utwory … Adama Mickiewicza; dotyczy epok'
+ )
+ genitive = models.CharField(
+ 'dopełniacz', max_length=255, blank=True,
+ help_text='utwory … (czyje?); dotyczy autorów'
+ )
+ collective_noun = models.CharField(
+ 'określenie zbiorowe', max_length=255, blank=True,
+ help_text='np. „Liryka” albo „Twórczość dramatyczna”; dotyczy rodzajów'
+ )
+
+ after_change = Signal()
intermediary_table_model = TagRelation
objects = TagManager()
unique_together = (("slug", "category"),)
app_label = 'catalogue'
- def save(self, *args, **kwargs):
+ def save(self, *args, quick=False, **kwargs):
existing = self.pk and self.category != 'set'
ret = super(Tag, self).save(*args, **kwargs)
- if existing:
+ if existing and not quick:
self.after_change.send(sender=type(self), instance=self)
return ret
def get_absolute_gallery_url(self):
return reverse('tagged_object_list_gallery', args=[self.url_chunk])
+ def get_absolute_catalogue_url(self):
+ # TODO: remove magic.
+ return reverse(f'{self.category}_catalogue')
+
def has_description(self):
return len(self.description) > 0
has_description.short_description = _('description')
# For instance, Pictures do not have 'genre' field.
continue
for tag_name in tag_names:
- lang = getattr(tag_name, 'lang', settings.LANGUAGE_CODE)
+ lang = getattr(tag_name, 'lang', None) or settings.LANGUAGE_CODE
tag_sort_key = tag_name
if category == 'author':
tag_sort_key = ' '.join((tag_name.last_name,) + tag_name.first_names)
tag_name = tag_name.readable()
- if lang == settings.LANGUAGE_CODE:
- # Allow creating new tag, if it's in default language.
- tag, created = Tag.objects.get_or_create(slug=slugify(tag_name), category=category)
- if created:
- tag_name = str(tag_name)
- tag.name = tag_name
- setattr(tag, "name_%s" % lang, tag_name)
- tag.sort_key = sortify(tag_sort_key.lower())
- tag.save()
- meta_tags.append(tag)
- else:
- # Ignore unknown tags in non-default languages.
- try:
- tag = Tag.objects.get(category=category, **{"name_%s" % lang: tag_name})
- except Tag.DoesNotExist:
- pass
- else:
+ try:
+ tag = Tag.objects.get(category=category, **{"name_%s" % lang: tag_name})
+ except Tag.DoesNotExist:
+ if lang == settings.LANGUAGE_CODE:
+ # Allow creating new tag, if it's in default language.
+ tag, created = Tag.objects.get_or_create(slug=slugify(tag_name), category=category)
+ if created:
+ tag_name = str(tag_name)
+ tag.name = tag_name
+ setattr(tag, "name_%s" % lang, tag_name)
+ tag.sort_key = sortify(tag_sort_key.lower())
+ tag.save()
+
meta_tags.append(tag)
+ else:
+ meta_tags.append(tag)
return meta_tags