From 9558a1afaa4109608ee0207517fa97393fc92988 Mon Sep 17 00:00:00 2001 From: knst-kotov Date: Sat, 4 Jun 2022 09:34:19 +0300 Subject: [PATCH] add email subscription table --- migrate.py | 12 ++++++++++++ migration/tables/users.py | 8 ++++++++ orm/user.py | 7 +++++++ 3 files changed, 27 insertions(+) diff --git a/migrate.py b/migrate.py index 0b3eb537..7f70dcc1 100644 --- a/migrate.py +++ b/migrate.py @@ -6,6 +6,7 @@ import re import frontmatter from migration.tables.users import migrate as migrateUser from migration.tables.users import migrate_2stage as migrateUser_2stage +from migration.tables.users import migrate_email_subscription from migration.tables.content_items import get_metadata, migrate as migrateShout from migration.tables.content_item_categories import migrate as migrateCategory from migration.tables.tags import migrate as migrateTag @@ -194,6 +195,11 @@ def comments(comments_data): migrateComment_2stage(comment, id_map) print(str(len(id_map)) + ' comments exported') +def export_email_subscriptions(email_subscriptions_data): + for data in email_subscriptions_data: + migrate_email_subscription(data) + print(str(len(email_subscriptions_data)) + ' email subscriptions exported') + def export_finish(export_articles = {}, export_authors = {}, export_topics = {}, export_comments = {}): open('../src/data/authors.json', 'w').write(json.dumps(export_authors, @@ -274,6 +280,9 @@ if __name__ == '__main__': comments_by_post[cid].append(old_comment) print(str(len(comments_by_post.keys())) + ' articles with comments') + email_subscriptions_data = json.loads(open('migration/data/email_subscriptions.json').read()) + print(str(len(email_subscriptions_data)) + ' email subscriptions loaded') + export_articles = {} # slug: shout export_authors = {} # slug: user export_comments = {} # shout-slug: comment[] (list) @@ -291,11 +300,14 @@ if __name__ == '__main__': comments(comments_data) elif cmd == "export_shouts": export_shouts(shouts_by_slug, export_articles, export_authors, content_dict) + elif cmd == "email_subscriptions": + export_email_subscriptions(email_subscriptions_data) elif cmd == "all": users(users_by_oid, users_by_slug, users_data) topics(export_topics, topics_by_slug, topics_by_oid, cats_data, tags_data) shouts(content_data, shouts_by_slug, shouts_by_oid) comments(comments_data) + export_email_subscriptions(email_subscriptions_data) elif cmd == 'slug': export_slug(sys.argv[2], export_articles, export_authors, content_dict) #export_finish(export_articles, export_authors, export_topics, export_comments) diff --git a/migration/tables/users.py b/migration/tables/users.py index fd0f8cac..f7c30cef 100644 --- a/migration/tables/users.py +++ b/migration/tables/users.py @@ -1,4 +1,5 @@ from orm import User, Role, UserRating +from orm.user import EmailSubscription import frontmatter from dateutil.parser import parse from migration.html2text import html2text @@ -88,6 +89,13 @@ def migrate(entry): return res +def migrate_email_subscription(entry): + res = {} + res["email"] = entry["email"] + res["createdAt"] = parse(entry["createdAt"]) + + subscription = EmailSubscription.create(**res) + def migrate_2stage(entry, id_map): for rating_entry in entry.get('ratings',[]): rater_old_id = rating_entry['createdBy'] diff --git a/orm/user.py b/orm/user.py index febf6a22..4114b8c8 100644 --- a/orm/user.py +++ b/orm/user.py @@ -41,6 +41,13 @@ class AuthorSubscription(Base): author = Column(ForeignKey('user.slug'), primary_key = True) createdAt = Column(DateTime, nullable=False, default = datetime.now, comment="Created at") +class EmailSubscription(Base): + __tablename__ = "email_subscription" + + id = None + email = Column(String, primary_key = True) + createdAt = Column(DateTime, nullable=False, default = datetime.now, comment="Created at") + class User(Base): __tablename__ = "user"