This commit is contained in:
Igor Lobanov 2022-12-01 14:24:05 +01:00
parent 6e80360d98
commit 8464398aaf
8 changed files with 21 additions and 23 deletions

View File

@ -8,7 +8,7 @@ from starlette.requests import HTTPConnection
from auth.credentials import AuthCredentials, AuthUser
from base.orm import local_session
from orm.user import User, Role, UserRole
from orm.user import User, Role
from settings import SESSION_TOKEN_HEADER
from auth.tokenstorage import SessionToken
@ -40,11 +40,10 @@ class JWTAuthenticate(AuthenticationBackend):
try:
user = (
session.query(User).options(
joinedload(User.roles),
joinedload(Role.permissions),
joinedload(User.roles).options(joinedload(Role.permissions)),
joinedload(User.ratings)
).filter(
User.id == id
User.id == payload.user_id
).one()
)
except exc.NoResultFound:
@ -53,7 +52,7 @@ class JWTAuthenticate(AuthenticationBackend):
if not user:
return AuthCredentials(scopes=[]), AuthUser(user_id=None)
scopes = [] # user.get_permission()
scopes = user.get_permission()
return (
AuthCredentials(
@ -61,7 +60,7 @@ class JWTAuthenticate(AuthenticationBackend):
scopes=scopes,
logged_in=True
),
user,
AuthUser(user_id=user.id),
)
else:
InvalidToken("please try again")

View File

@ -41,6 +41,7 @@ async def start_up():
async def dev_start_up():
if exists(DEV_SERVER_STATUS_FILE_NAME):
await redis.connect()
return
else:
with open(DEV_SERVER_STATUS_FILE_NAME, 'w', encoding='utf-8') as f:
@ -71,6 +72,7 @@ app.mount("/", GraphQL(schema, debug=True))
dev_app = app = Starlette(
debug=True,
on_startup=[dev_start_up],
on_shutdown=[shutdown],
middleware=middleware,
routes=routes,
)

View File

@ -9,7 +9,6 @@ from orm.shout import ShoutReactionsFollower
from orm.topic import TopicFollower
from orm.user import User
from orm.shout import Shout
# from services.stat.reacted import ReactedStorage
ts = datetime.now(tz=timezone.utc)
@ -84,7 +83,6 @@ def migrate_ratings(session, entry, reaction_dict):
)
session.add(following2)
session.add(rr)
# await ReactedStorage.react(rr)
except Exception as e:
print("[migration] comment rating error: %r" % re_reaction_dict)

View File

@ -9,7 +9,6 @@ from orm.reaction import Reaction, ReactionKind
from orm.shout import Shout, ShoutTopic, ShoutReactionsFollower
from orm.user import User
from orm.topic import TopicFollower, Topic
# from services.stat.reacted import ReactedStorage
from services.stat.viewed import ViewedStorage
import re
@ -365,7 +364,6 @@ async def content_ratings_to_reactions(entry, slug):
else:
rea = Reaction.create(**reaction_dict)
session.add(rea)
# await ReactedStorage.react(rea)
# shout_dict['ratings'].append(reaction_dict)
session.commit()

View File

@ -101,7 +101,7 @@ class User(Base):
session.commit()
User.default_user = default
async def get_permission(self):
def get_permission(self):
scope = {}
for role in self.roles:
for p in role.permissions:

View File

@ -24,13 +24,15 @@ from settings import SESSION_TOKEN_HEADER, FRONTEND_URL
@mutation.field("getSession")
@login_required
async def get_current_user(_, info):
user = info.context["request"].user
token = info.context["request"].headers.get("Authorization")
if user and token:
user.lastSeen = datetime.now(tz=timezone.utc)
context_user = info.context["request"].user
token = info.context["request"].headers.get(SESSION_TOKEN_HEADER)
if context_user and token:
with local_session() as session:
session.add(user)
user = session.query(User).where(User.id == context_user.user_id).one()
user.lastSeen = datetime.now(tz=timezone.utc)
session.commit()
return {
"token": token,
"user": user,

View File

@ -40,11 +40,10 @@ def add_author_stat_columns(q):
# func.sum(user_rating_aliased.value).label('rating_stat')
# )
# q = q.add_columns(literal(0).label('commented_stat'))
q = q.outerjoin(Reaction, and_(Reaction.createdBy == User.id, Reaction.body.is_not(None))).add_columns(
func.count(distinct(Reaction.id)).label('commented_stat')
)
q = q.add_columns(literal(0).label('commented_stat'))
# q = q.outerjoin(Reaction, and_(Reaction.createdBy == User.id, Reaction.body.is_not(None))).add_columns(
# func.count(distinct(Reaction.id)).label('commented_stat')
# )
q = q.group_by(User.id)

View File

@ -115,7 +115,7 @@ async def update_topic(_, _info, inp):
return {"topic": topic}
async def topic_follow(user, slug):
def topic_follow(user, slug):
with local_session() as session:
topic = session.query(Topic).where(Topic.slug == slug).one()
@ -124,7 +124,7 @@ async def topic_follow(user, slug):
session.commit()
async def topic_unfollow(user, slug):
def topic_unfollow(user, slug):
with local_session() as session:
sub = (
session.query(TopicFollower).join(Topic).filter(