Skip to content

Commit

Permalink
Migrate data from journal.postrow to posts.postrow
Browse files Browse the repository at this point in the history
  • Loading branch information
danielzeljko committed Jul 21, 2023
1 parent 4c53ecd commit 68d770c
Show file tree
Hide file tree
Showing 4 changed files with 107 additions and 3 deletions.
7 changes: 6 additions & 1 deletion langcorrect/posts/admin.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from django.contrib import admin

from langcorrect.posts.models import Post
from langcorrect.posts.models import Post, PostRow


@admin.register(Post)
Expand All @@ -18,3 +18,8 @@ class PostAdmin(admin.ModelAdmin):
"created",
]
search_fields = ["title", "user__username"]


@admin.register(PostRow)
class PostRowAdmin(admin.ModelAdmin):
list_display = ["user", "post", "sentence", "is_actual", "order"]
49 changes: 49 additions & 0 deletions langcorrect/posts/migrations/0002_postrow.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# Generated by Django 4.2.3 on 2023-07-21 02:37

from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
import model_utils.fields


class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
("posts", "0001_initial"),
]

operations = [
migrations.CreateModel(
name="PostRow",
fields=[
("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
(
"created",
model_utils.fields.AutoCreatedField(
default=django.utils.timezone.now, editable=False, verbose_name="created"
),
),
(
"modified",
model_utils.fields.AutoLastModifiedField(
default=django.utils.timezone.now, editable=False, verbose_name="modified"
),
),
("is_removed", models.BooleanField(default=False)),
("sentence", models.TextField()),
("is_actual", models.BooleanField(default=True)),
("order", models.IntegerField(default=None, null=True)),
(
"post",
models.ForeignKey(
blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to="posts.post"
),
),
("user", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
options={
"abstract": False,
},
),
]
8 changes: 8 additions & 0 deletions langcorrect/posts/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,3 +50,11 @@ def save(self, *args, **kwargs):
self.slug = generated_slug

super().save(*args, **kwargs)


class PostRow(TimeStampedModel, SoftDeletableModel):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
post = models.ForeignKey(Post, on_delete=models.CASCADE, null=True, blank=True)
sentence = models.TextField()
is_actual = models.BooleanField(default=True)
order = models.IntegerField(default=None, null=True)
46 changes: 44 additions & 2 deletions migrate_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

from langcorrect.challenges.models import Challenge # noqa: E402
from langcorrect.languages.models import Language, LanguageLevel # noqa: E402
from langcorrect.posts.models import Post # noqa: E402
from langcorrect.posts.models import Post, PostRow # noqa: E402
from langcorrect.prompts.models import Prompt # noqa: E402

User = get_user_model()
Expand Down Expand Up @@ -243,13 +243,55 @@ def migrate_posts():
post.save()


def migrate_post_rows():
print("migrating post rows...")

with open("./temp_data/postrows_data.json") as file:
data = json.load(file)

total_count = len(data)
curr_count = 0

for entry in data:
pk = entry["pk"]
created = entry["fields"]["created"]
modified = entry["fields"]["modified"]
is_removed = entry["fields"]["is_removed"]
user_pk = entry["fields"]["user"]
post_pk = entry["fields"]["post"]
sentence = entry["fields"]["sentence"]
is_actual = entry["fields"]["is_actual"]
order = entry["fields"]["order"]

try:
post = Post.all_objects.get(pk=post_pk) if post_pk else None
except Post.DoesNotExist:
post = None

PostRow.objects.create(
pk=pk,
created=created,
modified=modified,
is_removed=is_removed,
user=User.objects.get(pk=user_pk),
post=post,
sentence=sentence,
is_actual=is_actual,
order=order,
)

curr_count += 1
print(f"Finished importing postrow {curr_count}/{total_count}")


def main():
# migrate_users()
# migrate_languages() # load fixture instead
# migrate_language_levels()
# migrate_challenges()
# migrate_prompts()
migrate_posts()
# migrate_posts()
migrate_post_rows()


main()

0 comments on commit 68d770c

Please sign in to comment.