collab invite/remove author, topics migration fix
This commit is contained in:
parent
ace22f5e8b
commit
f92be99bce
18
migrate.py
18
migrate.py
|
@ -83,6 +83,14 @@ def topics(export_topics, topics_by_slug, topics_by_oid, cats_data, tags_data):
|
||||||
if len(sys.argv) > 2: limit = int(sys.argv[2])
|
if len(sys.argv) > 2: limit = int(sys.argv[2])
|
||||||
print('migrating %d topics...' % limit)
|
print('migrating %d topics...' % limit)
|
||||||
counter = 0
|
counter = 0
|
||||||
|
for tag in tags_data:
|
||||||
|
old_id = tag["createdBy"]
|
||||||
|
tag["createdBy"] = user_id_map.get(old_id, 0)
|
||||||
|
topic = migrateTag(tag)
|
||||||
|
topics_by_title[topic['title']] = topic
|
||||||
|
topics_by_oid[topic['tag_id']] = topic
|
||||||
|
if not topics_by_slug.get(topic['slug']): topics_by_slug[topic['slug']] = topic
|
||||||
|
counter += 1
|
||||||
for cat in cats_data:
|
for cat in cats_data:
|
||||||
old_id = cat["createdBy"]
|
old_id = cat["createdBy"]
|
||||||
# cat["createdBy"] = user_id_map[old_id]
|
# cat["createdBy"] = user_id_map[old_id]
|
||||||
|
@ -90,15 +98,9 @@ def topics(export_topics, topics_by_slug, topics_by_oid, cats_data, tags_data):
|
||||||
except Exception as e: raise e
|
except Exception as e: raise e
|
||||||
topics_by_oid[topic['cat_id']] = topic
|
topics_by_oid[topic['cat_id']] = topic
|
||||||
topics_by_slug[topic['slug']] = topic
|
topics_by_slug[topic['slug']] = topic
|
||||||
|
topics_by_title[topic['title']] = topic
|
||||||
counter += 1
|
counter += 1
|
||||||
for tag in tags_data:
|
export_topics = dict(topics_by_title.items())
|
||||||
old_id = tag["createdBy"]
|
|
||||||
tag["createdBy"] = user_id_map.get(old_id, 0)
|
|
||||||
topic = migrateTag(tag)
|
|
||||||
topics_by_oid[topic['tag_id']] = topic
|
|
||||||
if not topics_by_slug.get(topic['slug']): topics_by_slug[topic['slug']] = topic
|
|
||||||
counter += 1
|
|
||||||
export_topics = dict(topics_by_slug.items()) # sorted(topics_by_slug.items(), key=lambda item: str(item[1]['createdAt']))) # NOTE: sorting does not work :)
|
|
||||||
|
|
||||||
def shouts(content_data, shouts_by_slug, shouts_by_oid):
|
def shouts(content_data, shouts_by_slug, shouts_by_oid):
|
||||||
''' migrating content items one by one '''
|
''' migrating content items one by one '''
|
||||||
|
|
BIN
migration/content/.DS_Store
vendored
BIN
migration/content/.DS_Store
vendored
Binary file not shown.
|
@ -7,7 +7,8 @@ from resolvers.topics import topic_subscribe, topic_unsubscribe, topics_by_autho
|
||||||
topics_by_community, topics_by_slugs
|
topics_by_community, topics_by_slugs
|
||||||
from resolvers.comments import create_comment, delete_comment, update_comment, rate_comment
|
from resolvers.comments import create_comment, delete_comment, update_comment, rate_comment
|
||||||
from resolvers.collab import get_shout_proposals, create_proposal, delete_proposal, \
|
from resolvers.collab import get_shout_proposals, create_proposal, delete_proposal, \
|
||||||
update_proposal, rate_proposal, decline_proposal, disable_proposal, accept_proposal
|
update_proposal, rate_proposal, decline_proposal, disable_proposal, accept_proposal, \
|
||||||
|
invite_author, remove_author
|
||||||
from resolvers.editor import create_shout, delete_shout, update_shout
|
from resolvers.editor import create_shout, delete_shout, update_shout
|
||||||
from resolvers.community import create_community, delete_community, get_community, get_communities
|
from resolvers.community import create_community, delete_community, get_community, get_communities
|
||||||
|
|
||||||
|
@ -72,5 +73,7 @@ __all__ = [
|
||||||
"disable_proposal",
|
"disable_proposal",
|
||||||
"accept_proposal",
|
"accept_proposal",
|
||||||
"decline_proposal",
|
"decline_proposal",
|
||||||
"delete_proposal"
|
"delete_proposal",
|
||||||
|
"invite_author",
|
||||||
|
"remove_author"
|
||||||
]
|
]
|
||||||
|
|
|
@ -189,3 +189,56 @@ async def decline_proposal(_, info, id):
|
||||||
await ProposalStorage.put(result)
|
await ProposalStorage.put(result)
|
||||||
|
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
|
|
||||||
|
@mutation.field("inviteAuthor")
|
||||||
|
@login_required
|
||||||
|
async def invite_author(_, author_slug, shout):
|
||||||
|
auth = info.context["request"].auth
|
||||||
|
user_id = auth.user_id
|
||||||
|
|
||||||
|
with local_session() as session:
|
||||||
|
shout = session.query(Shout).filter(Shout.slug == shout).first()
|
||||||
|
if not shout:
|
||||||
|
return {"error": "invalid shout slug"}
|
||||||
|
authors = [author.id for author in shout.authors]
|
||||||
|
if user_id not in authors:
|
||||||
|
return {"error": "access denied"}
|
||||||
|
author = session.query(User).filter(User.slug == author_slug).first()
|
||||||
|
if author.id in authors:
|
||||||
|
return {"error": "already added"}
|
||||||
|
shout.authors.append(author)
|
||||||
|
session.commit()
|
||||||
|
|
||||||
|
# result = Result("INVITED")
|
||||||
|
# FIXME: await ShoutStorage.put(result)
|
||||||
|
|
||||||
|
# TODO: email notify
|
||||||
|
|
||||||
|
return {}
|
||||||
|
|
||||||
|
@mutation.field("removeAuthor")
|
||||||
|
@login_required
|
||||||
|
async def invite_author(_, author_slug, shout):
|
||||||
|
auth = info.context["request"].auth
|
||||||
|
user_id = auth.user_id
|
||||||
|
|
||||||
|
with local_session() as session:
|
||||||
|
shout = session.query(Shout).filter(Shout.slug == shout).first()
|
||||||
|
if not shout:
|
||||||
|
return {"error": "invalid shout slug"}
|
||||||
|
authors = [author.id for author in shout.authors]
|
||||||
|
if user_id not in authors:
|
||||||
|
return {"error": "access denied"}
|
||||||
|
author = session.query(User).filter(User.slug == author_slug).first()
|
||||||
|
if author.id not in authors:
|
||||||
|
return {"error": "not in authors"}
|
||||||
|
shout.authors.remove(author)
|
||||||
|
session.commit()
|
||||||
|
|
||||||
|
# result = Result("INVITED")
|
||||||
|
# FIXME: await ShoutStorage.put(result)
|
||||||
|
|
||||||
|
# TODO: email notify
|
||||||
|
|
||||||
|
return {}
|
|
@ -137,6 +137,10 @@ type Mutation {
|
||||||
updateCommunity(community: CommunityInput!): Community!
|
updateCommunity(community: CommunityInput!): Community!
|
||||||
deleteCommunity(id: Int!): Result!
|
deleteCommunity(id: Int!): Result!
|
||||||
|
|
||||||
|
# collab
|
||||||
|
inviteAuthor(author: String!, shout: String!): Result!
|
||||||
|
removeAuthor(author: String!, shout: String!): Result!
|
||||||
|
|
||||||
# proposal
|
# proposal
|
||||||
createProposal(body: String!, range: String): Proposal!
|
createProposal(body: String!, range: String): Proposal!
|
||||||
updateProposal(body: String!, range: String): Proposal!
|
updateProposal(body: String!, range: String): Proposal!
|
||||||
|
|
Loading…
Reference in New Issue
Block a user