Fixed #716: empty theme error
[wolnelektury.git] / apps / catalogue / models.py
index a7e04f1..9228284 100644 (file)
@@ -403,25 +403,30 @@ class Book(models.Model):
             # Extract fragments
             closed_fragments, open_fragments = html.extract_fragments(book.html_file.path)
             for fragment in closed_fragments.values():
             # Extract fragments
             closed_fragments, open_fragments = html.extract_fragments(book.html_file.path)
             for fragment in closed_fragments.values():
-                text = fragment.to_string()
-                short_text = ''
-                if (len(MarkupString(text)) > 240):
-                    short_text = unicode(MarkupString(text)[:160])
-                new_fragment, created = Fragment.objects.get_or_create(anchor=fragment.id, book=book,
-                    defaults={'text': text, 'short_text': short_text})
-
                 try:
                     theme_names = [s.strip() for s in fragment.themes.split(',')]
                 except AttributeError:
                     continue
                 themes = []
                 for theme_name in theme_names:
                 try:
                     theme_names = [s.strip() for s in fragment.themes.split(',')]
                 except AttributeError:
                     continue
                 themes = []
                 for theme_name in theme_names:
+                    if not theme_name:
+                        continue
                     tag, created = Tag.objects.get_or_create(slug=slughifi(theme_name), category='theme')
                     if created:
                         tag.name = theme_name
                         tag.sort_key = slughifi(theme_name)
                         tag.save()
                     themes.append(tag)
                     tag, created = Tag.objects.get_or_create(slug=slughifi(theme_name), category='theme')
                     if created:
                         tag.name = theme_name
                         tag.sort_key = slughifi(theme_name)
                         tag.save()
                     themes.append(tag)
+                if not themes:
+                    continue
+
+                text = fragment.to_string()
+                short_text = ''
+                if (len(MarkupString(text)) > 240):
+                    short_text = unicode(MarkupString(text)[:160])
+                new_fragment, created = Fragment.objects.get_or_create(anchor=fragment.id, book=book,
+                    defaults={'text': text, 'short_text': short_text})
+
                 new_fragment.save()
                 new_fragment.tags = set(book_tags + themes + [book_tag])
 
                 new_fragment.save()
                 new_fragment.tags = set(book_tags + themes + [book_tag])