less verbose localepack
[wolnelektury.git] / src / picture / models.py
index f496726..e10d2fa 100644 (file)
@@ -101,7 +101,7 @@ class Picture(models.Model):
         pass
 
     class Meta:
         pass
 
     class Meta:
-        ordering = ('sort_key',)
+        ordering = ('sort_key_author', 'sort_key')
 
         verbose_name = _('picture')
         verbose_name_plural = _('pictures')
 
         verbose_name = _('picture')
         verbose_name_plural = _('pictures')
@@ -112,8 +112,8 @@ class Picture(models.Model):
         self.sort_key = sortify(self.title)[:120]
 
         try:
         self.sort_key = sortify(self.title)[:120]
 
         try:
-            author = self.tags.filter(category='author')[0].sort_key
-        except IndexError:
+            author = self.authors().first().sort_key
+        except AttributeError:
             author = u''
         self.sort_key_author = author
 
             author = u''
         self.sort_key_author = author
 
@@ -124,11 +124,14 @@ class Picture(models.Model):
     def __unicode__(self):
         return self.title
 
     def __unicode__(self):
         return self.title
 
-    def author_str(self):
-        return ", ".join(str(t) for t in self.tags.filter(category='author'))
+    def authors(self):
+        return self.tags.filter(category='author')
+
+    def tag_unicode(self, category):
+        return ", ".join(self.tags.filter(category=category).values_list('name', flat=True))
 
     def author_unicode(self):
 
     def author_unicode(self):
-        return ", ".join(unicode(t) for t in self.tags.filter(category='author'))
+        return self.tag_unicode('author')
 
     @permalink
     def get_absolute_url(self):
 
     @permalink
     def get_absolute_url(self):
@@ -316,7 +319,7 @@ class Picture(models.Model):
             pics_by_author[tag] = []
 
         for pic in pics.iterator():
             pics_by_author[tag] = []
 
         for pic in pics.iterator():
-            authors = list(pic.tags.filter(category='author'))
+            authors = list(pic.authors().only('pk'))
             if authors:
                 for author in authors:
                     pics_by_author[author].append(pic)
             if authors:
                 for author in authors:
                     pics_by_author[author].append(pic)
@@ -335,9 +338,7 @@ class Picture(models.Model):
         return self._info
 
     def pretty_title(self, html_links=False):
         return self._info
 
     def pretty_title(self, html_links=False):
-        picture = self
-        names = [(tag.name, tag.get_absolute_url())
-                 for tag in self.tags.filter(category='author')]
+        names = [(tag.name, tag.get_absolute_url()) for tag in self.authors().only('name', 'category', 'slug')]
         names.append((self.title, self.get_absolute_url()))
 
         if html_links:
         names.append((self.title, self.get_absolute_url()))
 
         if html_links: