audio fix
[wolnelektury.git] / src / catalogue / models / tag.py
index 4046d34..13d8a64 100644 (file)
@@ -1,5 +1,5 @@
-# This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
-# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
+# This file is part of Wolne Lektury, licensed under GNU Affero GPLv3 or later.
+# Copyright © Fundacja Wolne Lektury. See NOTICE for more information.
 #
 from django.conf import settings
 from django.contrib.contenttypes.fields import GenericForeignKey
 #
 from django.conf import settings
 from django.contrib.contenttypes.fields import GenericForeignKey
@@ -23,7 +23,6 @@ TAG_CATEGORIES = (
     ('genre', _('gatunek')),
     ('theme', _('motyw')),
     ('set', _('półka')),
     ('genre', _('gatunek')),
     ('theme', _('motyw')),
     ('set', _('półka')),
-    ('thing', _('obiekt')),  # things shown on pictures
 )
 
 
 )
 
 
@@ -58,9 +57,6 @@ class Tag(models.Model):
         'kategoria', max_length=50, blank=False, null=False, db_index=True, choices=TAG_CATEGORIES)
     description = models.TextField('opis', blank=True)
 
         'kategoria', max_length=50, blank=False, null=False, db_index=True, choices=TAG_CATEGORIES)
     description = models.TextField('opis', blank=True)
 
-    for_books = models.BooleanField(default=False)
-    for_pictures = models.BooleanField(default=False)
-
     user = models.ForeignKey(User, models.CASCADE, blank=True, null=True)
     gazeta_link = models.CharField(blank=True, max_length=240)
     culturepl_link = models.CharField(blank=True, max_length=240)
     user = models.ForeignKey(User, models.CASCADE, blank=True, null=True)
     gazeta_link = models.CharField(blank=True, max_length=240)
     culturepl_link = models.CharField(blank=True, max_length=240)
@@ -113,7 +109,6 @@ class Tag(models.Model):
         'gatunek': 'genre',
         'motyw': 'theme',
         'polka': 'set',
         'gatunek': 'genre',
         'motyw': 'theme',
         'polka': 'set',
-        'obiekt': 'thing',
     }
     categories_dict = dict((item[::-1] for item in categories_rev.items()))
 
     }
     categories_dict = dict((item[::-1] for item in categories_rev.items()))
 
@@ -152,15 +147,10 @@ class Tag(models.Model):
     def get_absolute_url(self):
         return reverse('tagged_object_list', args=[self.url_chunk])
 
     def get_absolute_url(self):
         return reverse('tagged_object_list', args=[self.url_chunk])
 
-    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.
         if self.category == 'set':
             return reverse('social_my_shelf')
     def get_absolute_catalogue_url(self):
         # TODO: remove magic.
         if self.category == 'set':
             return reverse('social_my_shelf')
-        elif self.category == 'thing':
-            return ''
         else:
             return reverse(f'{self.category}_catalogue')
 
         else:
             return reverse(f'{self.category}_catalogue')
 
@@ -213,16 +203,20 @@ class Tag(models.Model):
         from slugify import slugify
         from sortify import sortify
         meta_tags = []
         from slugify import slugify
         from sortify import sortify
         meta_tags = []
-        categories = (('kinds', 'kind'), ('genres', 'genre'), ('authors', 'author'), ('epochs', 'epoch'))
-        for field_name, category in categories:
+        categories = (
+            # BookInfo field names, Tag category, relationship
+            ('kinds', 'kind', None),
+            ('genres', 'genre', None),
+            ('epochs', 'epoch', None),
+            ('authors', 'author', None),
+            ('translators', 'author', 'translator'),
+        )
+        for field_name, category, relationship in categories:
             try:
                 tag_names = getattr(info, field_name)
             except (AttributeError, KeyError):  # TODO: shouldn't be KeyError here at all.
             try:
                 tag_names = getattr(info, field_name)
             except (AttributeError, KeyError):  # TODO: shouldn't be KeyError here at all.
-                try:
-                    tag_names = [getattr(info, category)]
-                except KeyError:
-                    # For instance, Pictures do not have 'genre' field.
-                    continue
+                # For instance, Pictures do not have 'genre' field.
+                continue
             for tag_name in tag_names:
                 lang = getattr(tag_name, 'lang', None) or settings.LANGUAGE_CODE
                 tag_sort_key = tag_name
             for tag_name in tag_names:
                 lang = getattr(tag_name, 'lang', None) or settings.LANGUAGE_CODE
                 tag_sort_key = tag_name
@@ -243,9 +237,9 @@ class Tag(models.Model):
                             tag.sort_key = sortify(tag_sort_key.lower())
                             tag.save()
 
                             tag.sort_key = sortify(tag_sort_key.lower())
                             tag.save()
 
-                        meta_tags.append(tag)
+                        meta_tags.append((tag, relationship))
                 else:
                 else:
-                    meta_tags.append(tag)
+                    meta_tags.append((tag, relationship))
         return meta_tags
 
 
         return meta_tags