migrate user rating; remove unused user column
This commit is contained in:
parent
1c38d51113
commit
8092d8a262
|
@ -5,6 +5,7 @@ import base64
|
|||
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.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
|
||||
|
@ -48,6 +49,7 @@ def users(users_by_oid, users_by_slug, users_data):
|
|||
if len(sys.argv) > 2: limit = int(sys.argv[2])
|
||||
print('migrating %d users...' % limit)
|
||||
counter = 0
|
||||
id_map = {}
|
||||
for entry in users_data:
|
||||
oid = entry['_id']
|
||||
user = migrateUser(entry)
|
||||
|
@ -59,8 +61,10 @@ def users(users_by_oid, users_by_slug, users_data):
|
|||
del user['username']
|
||||
del user['email']
|
||||
users_by_slug[user['slug']] = user # public
|
||||
id_map[user['old_id']] = user['id']
|
||||
counter += 1
|
||||
export_authors = dict(sorted(users_by_slug.items(), key=lambda item: item[1]['rating'])[-10:])
|
||||
for entry in users_data:
|
||||
migrateUser_2stage(entry, id_map)
|
||||
try:
|
||||
open('migration/data/users.old_id.json', 'w').write(json.dumps(users_by_oid, cls=DateTimeEncoder)) # NOTE: by old_id
|
||||
open('migration/data/users.slug.json', 'w').write(json.dumps(users_by_slug, cls=DateTimeEncoder)) # NOTE: by slug
|
||||
|
|
|
@ -4,9 +4,7 @@ from dateutil.parser import parse
|
|||
from migration.html2text import html2text
|
||||
from orm.base import local_session
|
||||
|
||||
counter = 0
|
||||
|
||||
def migrate(entry, limit=668):
|
||||
def migrate(entry):
|
||||
'''
|
||||
|
||||
type User {
|
||||
|
@ -21,7 +19,6 @@ def migrate(entry, limit=668):
|
|||
emailConfirmed: Boolean # should contain all emails too
|
||||
id: Int!
|
||||
muted: Boolean
|
||||
rating: Int
|
||||
roles: [Role]
|
||||
updatedAt: DateTime
|
||||
wasOnlineAt: DateTime
|
||||
|
@ -40,7 +37,6 @@ def migrate(entry, limit=668):
|
|||
res['wasOnlineAt'] = parse(entry.get('loggedInAt', entry['createdAt']))
|
||||
res['emailConfirmed'] = entry['emails'][0]['verified']
|
||||
res['createdAt'] = parse(entry['createdAt'])
|
||||
res['rating'] = entry['rating'] # number
|
||||
res['roles'] = [] # entry['roles'] # roles by community
|
||||
res['ratings'] = [] # entry['ratings']
|
||||
res['notifications'] = []
|
||||
|
@ -89,22 +85,23 @@ def migrate(entry, limit=668):
|
|||
old = res['old_id']
|
||||
user = User.create(**res.copy())
|
||||
res['id'] = user.id
|
||||
res['ratings'] = []
|
||||
for user_rating_old in entry.get('ratings',[]):
|
||||
with local_session() as session:
|
||||
rater = session.query(User).filter(old == user_rating_old['createdBy']).first()
|
||||
if rater:
|
||||
user_rating_dict = {
|
||||
'value': user_rating_old['value'],
|
||||
'rater_id': rater.id,
|
||||
'user_id': user.id
|
||||
}
|
||||
cts = user_rating_old.get('createdAt')
|
||||
if cts: user_rating_dict['createdAt'] = date_parse(cts)
|
||||
try:
|
||||
user_rating = UserRating.create(**user_rating_dict)
|
||||
res['ratings'].append(user_rating_dict)
|
||||
except Exception as e:
|
||||
print(comment_rating_dict)
|
||||
raise e
|
||||
|
||||
return res
|
||||
|
||||
def migrate_2stage(entry, id_map):
|
||||
for rating_entry in entry.get('ratings',[]):
|
||||
rater_old_id = rating_entry['createdBy']
|
||||
rater_id = id_map.get(rater_old_id)
|
||||
if not rater_id:
|
||||
continue
|
||||
old_id = entry['_id']
|
||||
user_rating_dict = {
|
||||
'value': rating_entry['value'],
|
||||
'rater_id': rater_id,
|
||||
'user_id': id_map.get(old_id)
|
||||
}
|
||||
with local_session() as session:
|
||||
try:
|
||||
user_rating = UserRating.create(**user_rating_dict)
|
||||
except Exception as e:
|
||||
print(e)
|
||||
|
|
|
@ -49,12 +49,12 @@ class User(Base):
|
|||
bio: str = Column(String, nullable=True, comment="Bio")
|
||||
userpic: str = Column(String, nullable=True, comment="Userpic")
|
||||
name: str = Column(String, nullable=True, comment="Display name")
|
||||
rating: int = Column(Integer, nullable=True, comment="Rating")
|
||||
slug: str = Column(String, unique=True, comment="User's slug")
|
||||
muted: bool = Column(Boolean, default=False)
|
||||
emailConfirmed: bool = Column(Boolean, default=False)
|
||||
createdAt: DateTime = Column(DateTime, nullable=False, default = datetime.now, comment="Created at")
|
||||
wasOnlineAt: DateTime = Column(DateTime, nullable=False, default = datetime.now, comment="Was online at")
|
||||
deletedAt: DateTime = Column(DateTime, nullable=True, comment="Deleted at")
|
||||
links: JSONType = Column(JSONType, nullable=True, comment="Links")
|
||||
oauth: str = Column(String, nullable=True)
|
||||
notifications = relationship(lambda: UserNotifications)
|
||||
|
|
|
@ -8,7 +8,7 @@ from auth.authorize import Authorize
|
|||
from auth.identity import Identity
|
||||
from auth.password import Password
|
||||
from auth.email import send_confirm_email, send_auth_email
|
||||
from orm import User
|
||||
from orm import User, UserStorage
|
||||
from orm.base import local_session
|
||||
from resolvers.base import mutation, query
|
||||
from exceptions import InvalidPassword
|
||||
|
@ -40,13 +40,13 @@ async def register(*_, email: str, password: str = ""):
|
|||
if not password:
|
||||
user = User.create(**user_dict)
|
||||
await send_confirm_email(user)
|
||||
UserStorage.add_user(user)
|
||||
await UserStorage.add_user(user)
|
||||
return { "user": user }
|
||||
|
||||
user_dict["password"] = Password.encode(password)
|
||||
user = User.create(**user_dict)
|
||||
token = await Authorize.authorize(user)
|
||||
UserStorage.add_user(user)
|
||||
await UserStorage.add_user(user)
|
||||
return {"user": user, "token": token }
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user