Moves review re-structing into separate migration
This commit is contained in:
@@ -1,35 +1,7 @@
|
||||
# Generated by Django 3.0.7 on 2021-01-01 19:05
|
||||
|
||||
from django.db.models.fields.reverse_related import ManyToOneRel
|
||||
from django.db.models import Q
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
from bookwyrm.management.commands.deduplicate_book_data import update_related
|
||||
|
||||
|
||||
def convert_review_rating(app_registry, schema_editor):
|
||||
''' take reviews with no content and turn them into ratings '''
|
||||
db_alias = schema_editor.connection.alias
|
||||
reviews = app_registry.get_model('bookwyrm', 'Review')
|
||||
review_ratings = app_registry.get_model('bookwyrm', 'ReviewRating')
|
||||
ratings = reviews.objects.using(db_alias).filter(
|
||||
Q(content__isnull=True) | Q(content=''))
|
||||
# replace the old review with the rating
|
||||
for review in ratings:
|
||||
rating = review_ratings.objects.create(
|
||||
user=review.user, rating=review.rating, book=review.book)
|
||||
for field in review._meta.get_fields():
|
||||
if isinstance(field, ManyToOneRel) or field.name == 'status_ptr':
|
||||
continue
|
||||
value = getattr(review, field.name)
|
||||
print(review, rating, field.name, value)
|
||||
try:
|
||||
setattr(rating, field.name, value)
|
||||
except TypeError:
|
||||
getattr(rating, field.name).set(value.all())
|
||||
rating.save()
|
||||
update_related(rating, review)
|
||||
review.delete()
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
@@ -48,5 +20,4 @@ class Migration(migrations.Migration):
|
||||
},
|
||||
bases=('bookwyrm.review',),
|
||||
),
|
||||
migrations.RunPython(convert_review_rating),
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user