add to api: filter for app
[wolnelektury.git] / src / catalogue / migrations / 0016_auto_20171031_1232.py
diff --git a/src/catalogue/migrations/0016_auto_20171031_1232.py b/src/catalogue/migrations/0016_auto_20171031_1232.py
new file mode 100644 (file)
index 0000000..1dbee60
--- /dev/null
@@ -0,0 +1,37 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+def refresh_books(apps, schema_editor):
+    Book = apps.get_model('catalogue', 'Book')
+    TagRelation = apps.get_model('catalogue', 'TagRelation')
+    db_alias = schema_editor.connection.alias
+    for book in Book.objects.using(db_alias).all():
+        book.cached_author = ', '.join(
+            TagRelation.objects.filter(content_type__model='book', object_id=book.id, tag__category='author')
+            .values_list('tag__name', flat=True))
+        book.has_audience = 'audience' in book.extra_info
+        book.save()
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('catalogue', '0015_book_recommended'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='book',
+            name='cached_author',
+            field=models.CharField(db_index=True, max_length=240, blank=True),
+        ),
+        migrations.AddField(
+            model_name='book',
+            name='has_audience',
+            field=models.BooleanField(default=False),
+        ),
+        migrations.RunPython(refresh_books, lambda apps, schema_editor: None),
+    ]