following manager works
This commit is contained in:
@@ -21,23 +21,23 @@ async def follow(_, info, what, slug):
|
||||
|
||||
try:
|
||||
if what == "AUTHOR":
|
||||
author_follow(auth.user_id, slug)
|
||||
result = FollowingResult("NEW", 'author', slug)
|
||||
await FollowingManager.put('author', result)
|
||||
if author_follow(auth.user_id, slug):
|
||||
result = FollowingResult("NEW", 'author', slug)
|
||||
await FollowingManager.push('author', result)
|
||||
elif what == "TOPIC":
|
||||
topic_follow(auth.user_id, slug)
|
||||
result = FollowingResult("NEW", 'topic', slug)
|
||||
await FollowingManager.put('topic', result)
|
||||
if topic_follow(auth.user_id, slug):
|
||||
result = FollowingResult("NEW", 'topic', slug)
|
||||
await FollowingManager.push('topic', result)
|
||||
elif what == "COMMUNITY":
|
||||
# community_follow(user, slug)
|
||||
# result = FollowingResult("NEW", 'community', slug)
|
||||
# await FollowingManager.put('community', result)
|
||||
pass
|
||||
if False: # TODO: use community_follow(auth.user_id, slug):
|
||||
result = FollowingResult("NEW", 'community', slug)
|
||||
await FollowingManager.push('community', result)
|
||||
elif what == "REACTIONS":
|
||||
reactions_follow(auth.user_id, slug)
|
||||
result = FollowingResult("NEW", 'shout', slug)
|
||||
await FollowingManager.put('shout', result)
|
||||
if reactions_follow(auth.user_id, slug):
|
||||
result = FollowingResult("NEW", 'shout', slug)
|
||||
await FollowingManager.push('shout', result)
|
||||
except Exception as e:
|
||||
print(Exception(e))
|
||||
return {"error": str(e)}
|
||||
|
||||
return {}
|
||||
@@ -50,22 +50,21 @@ async def unfollow(_, info, what, slug):
|
||||
|
||||
try:
|
||||
if what == "AUTHOR":
|
||||
author_unfollow(auth.user_id, slug)
|
||||
result = FollowingResult("DELETED", 'author', slug)
|
||||
await FollowingManager.put('author', result)
|
||||
if author_unfollow(auth.user_id, slug):
|
||||
result = FollowingResult("DELETED", 'author', slug)
|
||||
await FollowingManager.push('author', result)
|
||||
elif what == "TOPIC":
|
||||
topic_unfollow(auth.user_id, slug)
|
||||
result = FollowingResult("DELETED", 'topic', slug)
|
||||
await FollowingManager.put('topic', result)
|
||||
if topic_unfollow(auth.user_id, slug):
|
||||
result = FollowingResult("DELETED", 'topic', slug)
|
||||
await FollowingManager.push('topic', result)
|
||||
elif what == "COMMUNITY":
|
||||
# community_unfollow(user, slug)
|
||||
# result = FollowingResult("DELETED", 'community', slug)
|
||||
# await FollowingManager.put('community', result)
|
||||
pass
|
||||
if False: # TODO: use community_unfollow(auth.user_id, slug):
|
||||
result = FollowingResult("DELETED", 'community', slug)
|
||||
await FollowingManager.push('community', result)
|
||||
elif what == "REACTIONS":
|
||||
reactions_unfollow(auth.user_id, slug)
|
||||
result = FollowingResult("DELETED", 'shout', slug)
|
||||
await FollowingManager.put('shout', result)
|
||||
if reactions_unfollow(auth.user_id, slug):
|
||||
result = FollowingResult("DELETED", 'shout', slug)
|
||||
await FollowingManager.push('shout', result)
|
||||
except Exception as e:
|
||||
return {"error": str(e)}
|
||||
|
||||
|
@@ -198,11 +198,15 @@ async def rate_user(_, info, rated_userslug, value):
|
||||
|
||||
# for mutation.field("follow")
|
||||
def author_follow(user_id, slug):
|
||||
with local_session() as session:
|
||||
author = session.query(User).where(User.slug == slug).one()
|
||||
af = AuthorFollower.create(follower=user_id, author=author.id)
|
||||
session.add(af)
|
||||
session.commit()
|
||||
try:
|
||||
with local_session() as session:
|
||||
author = session.query(User).where(User.slug == slug).one()
|
||||
af = AuthorFollower.create(follower=user_id, author=author.id)
|
||||
session.add(af)
|
||||
session.commit()
|
||||
return True
|
||||
except:
|
||||
return False
|
||||
|
||||
|
||||
# for mutation.field("unfollow")
|
||||
@@ -217,14 +221,11 @@ def author_unfollow(user_id, slug):
|
||||
)
|
||||
).first()
|
||||
)
|
||||
if not flw:
|
||||
return {
|
||||
"error": "Follower is not exist, cant unfollow"
|
||||
}
|
||||
else:
|
||||
if flw:
|
||||
session.delete(flw)
|
||||
session.commit()
|
||||
return {}
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
@query.field("authorsAll")
|
||||
|
@@ -40,40 +40,49 @@ def add_reaction_stat_columns(q):
|
||||
|
||||
|
||||
def reactions_follow(user_id, shout_id: int, auto=False):
|
||||
with local_session() as session:
|
||||
shout = session.query(Shout).where(Shout.id == shout_id).one()
|
||||
try:
|
||||
with local_session() as session:
|
||||
shout = session.query(Shout).where(Shout.id == shout_id).one()
|
||||
|
||||
following = (
|
||||
session.query(ShoutReactionsFollower).where(and_(
|
||||
ShoutReactionsFollower.follower == user_id,
|
||||
ShoutReactionsFollower.shout == shout.id,
|
||||
)).first()
|
||||
)
|
||||
|
||||
if not following:
|
||||
following = ShoutReactionsFollower.create(
|
||||
follower=user_id,
|
||||
shout=shout.id,
|
||||
auto=auto
|
||||
following = (
|
||||
session.query(ShoutReactionsFollower).where(and_(
|
||||
ShoutReactionsFollower.follower == user_id,
|
||||
ShoutReactionsFollower.shout == shout.id,
|
||||
)).first()
|
||||
)
|
||||
session.add(following)
|
||||
session.commit()
|
||||
|
||||
if not following:
|
||||
following = ShoutReactionsFollower.create(
|
||||
follower=user_id,
|
||||
shout=shout.id,
|
||||
auto=auto
|
||||
)
|
||||
session.add(following)
|
||||
session.commit()
|
||||
return True
|
||||
except:
|
||||
return False
|
||||
|
||||
|
||||
def reactions_unfollow(user_id: int, shout_id: int):
|
||||
with local_session() as session:
|
||||
shout = session.query(Shout).where(Shout.id == shout_id).one()
|
||||
try:
|
||||
with local_session() as session:
|
||||
shout = session.query(Shout).where(Shout.id == shout_id).one()
|
||||
|
||||
following = (
|
||||
session.query(ShoutReactionsFollower).where(and_(
|
||||
ShoutReactionsFollower.follower == user_id,
|
||||
ShoutReactionsFollower.shout == shout.id
|
||||
)).first()
|
||||
)
|
||||
following = (
|
||||
session.query(ShoutReactionsFollower).where(and_(
|
||||
ShoutReactionsFollower.follower == user_id,
|
||||
ShoutReactionsFollower.shout == shout.id
|
||||
)).first()
|
||||
)
|
||||
|
||||
if following:
|
||||
session.delete(following)
|
||||
session.commit()
|
||||
if following:
|
||||
session.delete(following)
|
||||
session.commit()
|
||||
return True
|
||||
except:
|
||||
pass
|
||||
return False
|
||||
|
||||
|
||||
def is_published_author(session, user_id):
|
||||
|
@@ -117,29 +117,36 @@ async def update_topic(_, _info, inp):
|
||||
|
||||
|
||||
def topic_follow(user_id, slug):
|
||||
with local_session() as session:
|
||||
topic = session.query(Topic).where(Topic.slug == slug).one()
|
||||
try:
|
||||
with local_session() as session:
|
||||
topic = session.query(Topic).where(Topic.slug == slug).one()
|
||||
|
||||
following = TopicFollower.create(topic=topic.id, follower=user_id)
|
||||
session.add(following)
|
||||
session.commit()
|
||||
following = TopicFollower.create(topic=topic.id, follower=user_id)
|
||||
session.add(following)
|
||||
session.commit()
|
||||
return True
|
||||
except:
|
||||
return False
|
||||
|
||||
|
||||
def topic_unfollow(user_id, slug):
|
||||
with local_session() as session:
|
||||
sub = (
|
||||
session.query(TopicFollower).join(Topic).filter(
|
||||
and_(
|
||||
TopicFollower.follower == user_id,
|
||||
Topic.slug == slug
|
||||
)
|
||||
).first()
|
||||
)
|
||||
if not sub:
|
||||
raise Exception("[resolvers.topics] follower not exist")
|
||||
else:
|
||||
session.delete(sub)
|
||||
session.commit()
|
||||
try:
|
||||
with local_session() as session:
|
||||
sub = (
|
||||
session.query(TopicFollower).join(Topic).filter(
|
||||
and_(
|
||||
TopicFollower.follower == user_id,
|
||||
Topic.slug == slug
|
||||
)
|
||||
).first()
|
||||
)
|
||||
if sub:
|
||||
session.delete(sub)
|
||||
session.commit()
|
||||
return True
|
||||
except:
|
||||
pass
|
||||
return False
|
||||
|
||||
|
||||
@query.field("topicsRandom")
|
||||
|
Reference in New Issue
Block a user