From 72347011b4fec02cb6b50c5af0c74f8f838e93e0 Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 19 Dec 2022 19:08:41 -0500 Subject: [PATCH] preserve created_time in migration --- journal/models.py | 4 +-- legacy/management/commands/migrate_journal.py | 25 ++++++++++++------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/journal/models.py b/journal/models.py index af62ea14..9c348b38 100644 --- a/journal/models.py +++ b/journal/models.py @@ -23,8 +23,8 @@ class Piece(PolymorphicModel, UserOwnedObjectMixin): uid = models.UUIDField(default=uuid.uuid4, editable=False, db_index=True) owner = models.ForeignKey(User, on_delete=models.PROTECT) visibility = models.PositiveSmallIntegerField(default=0) # 0: Public / 1: Follower only / 2: Self only - created_time = models.DateTimeField(auto_now_add=True) - edited_time = models.DateTimeField(auto_now=True) + created_time = models.DateTimeField(default=timezone.now) # auto_now_add=True FIXME revert this after migration + edited_time = models.DateTimeField(default=timezone.now) # auto_now=True FIXME revert this after migration metadata = models.JSONField(default=dict) attached_to = models.ForeignKey(User, null=True, default=None, on_delete=models.SET_NULL, related_name="attached_with") diff --git a/legacy/management/commands/migrate_journal.py b/legacy/management/commands/migrate_journal.py index 0a878228..075ffa8f 100644 --- a/legacy/management/commands/migrate_journal.py +++ b/legacy/management/commands/migrate_journal.py @@ -80,10 +80,10 @@ class Command(BaseCommand): for user in tqdm(User.objects.filter(is_active=True)): user.shelf_manager.initialize() - def clear(self): - print("Deleting all migrated user pieces") + def clear(self, classes): + print("Deleting migrated user pieces") # Piece.objects.all().delete() - for cls in [Review, Comment, Rating, TagMember, Tag, ShelfLogEntry, ShelfMember]: # Collection + for cls in classes: # Collection print(cls) cls.objects.all().delete() @@ -138,7 +138,7 @@ class Command(BaseCommand): try: item_link = LinkModel.objects.get(old_id=entity.item.id) item = Item.objects.get(uid=item_link.new_uid) - Review.review_item_by_user(item, entity.owner, entity.title, entity.content, {'shared_link': entity.shared_link}, entity.visibility) + Review.objects.create(owner=entity.owner, item=item, title=entity.title, body=entity.content, metadata={'shared_link': entity.shared_link}, visibility=entity.visibility, created_time=entity.created_time, edited_time=entity.edited_time) except Exception as e: print(f'Convert failed for {typ} {entity.id}: {e}') if options['failstop']: @@ -219,12 +219,19 @@ class Command(BaseCommand): def handle(self, *args, **options): if options['initshelf']: self.initshelf() - elif options['clear']: - self.clear() elif options['collection']: - self.collection(options) + if options['clear']: + self.clear([Collection]) + else: + self.collection(options) elif options['review']: - self.review(options) + if options['clear']: + self.clear([Review]) + else: + self.review(options) elif options['mark']: - self.mark(options) + if options['clear']: + self.clear([Comment, Rating, TagMember, Tag, ShelfLogEntry, ShelfMember]) + else: + self.mark(options) self.stdout.write(self.style.SUCCESS(f'Done.'))