viewed fixed
This commit is contained in:
parent
2cb152bdb1
commit
c6128ac641
|
@ -176,7 +176,7 @@ async def login(_, info, email: str, password: str = "", lang: str = "ru"):
|
||||||
}
|
}
|
||||||
except InvalidPassword:
|
except InvalidPassword:
|
||||||
print(f"[auth] {email}: invalid password")
|
print(f"[auth] {email}: invalid password")
|
||||||
raise InvalidPassword("invalid passoword") # contains webserver status
|
raise InvalidPassword("invalid password") # contains webserver status
|
||||||
# return {"error": "invalid password"}
|
# return {"error": "invalid password"}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -31,6 +31,7 @@ def apply_filters(q, filters, user=None):
|
||||||
q = q.filter(Shout.createdAt > before)
|
q = q.filter(Shout.createdAt > before)
|
||||||
return q
|
return q
|
||||||
|
|
||||||
|
|
||||||
@query.field("loadShout")
|
@query.field("loadShout")
|
||||||
async def load_shout(_, info, slug):
|
async def load_shout(_, info, slug):
|
||||||
with local_session() as session:
|
with local_session() as session:
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
from sqlalchemy import and_, asc, desc, select, text, func, column
|
from sqlalchemy import and_, asc, desc, select, text, func
|
||||||
from sqlalchemy.orm import aliased
|
from sqlalchemy.orm import aliased
|
||||||
|
|
||||||
from auth.authenticate import login_required
|
from auth.authenticate import login_required
|
||||||
|
@ -23,12 +23,10 @@ async def get_reaction_stat(reaction_id):
|
||||||
def reactions_follow(user: User, slug: str, auto=False):
|
def reactions_follow(user: User, slug: str, auto=False):
|
||||||
with local_session() as session:
|
with local_session() as session:
|
||||||
following = (
|
following = (
|
||||||
session.query(ShoutReactionsFollower)
|
session.query(ShoutReactionsFollower).where(and_(
|
||||||
.where(and_(
|
|
||||||
ShoutReactionsFollower.follower == user.slug,
|
ShoutReactionsFollower.follower == user.slug,
|
||||||
ShoutReactionsFollower.shout == slug
|
ShoutReactionsFollower.shout == slug
|
||||||
))
|
)).first()
|
||||||
.first()
|
|
||||||
)
|
)
|
||||||
if not following:
|
if not following:
|
||||||
following = ShoutReactionsFollower.create(
|
following = ShoutReactionsFollower.create(
|
||||||
|
@ -43,12 +41,10 @@ def reactions_follow(user: User, slug: str, auto=False):
|
||||||
def reactions_unfollow(user, slug):
|
def reactions_unfollow(user, slug):
|
||||||
with local_session() as session:
|
with local_session() as session:
|
||||||
following = (
|
following = (
|
||||||
session.query(ShoutReactionsFollower)
|
session.query(ShoutReactionsFollower).where(and_(
|
||||||
.where(and_(
|
|
||||||
ShoutReactionsFollower.follower == user.slug,
|
ShoutReactionsFollower.follower == user.slug,
|
||||||
ShoutReactionsFollower.shout == slug
|
ShoutReactionsFollower.shout == slug
|
||||||
))
|
)).first()
|
||||||
.first()
|
|
||||||
)
|
)
|
||||||
if following:
|
if following:
|
||||||
session.delete(following)
|
session.delete(following)
|
||||||
|
@ -199,6 +195,7 @@ async def delete_reaction(_, info, rid):
|
||||||
session.commit()
|
session.commit()
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
|
|
||||||
def map_result_item(result_item):
|
def map_result_item(result_item):
|
||||||
reaction = result_item[0]
|
reaction = result_item[0]
|
||||||
user = result_item[1]
|
user = result_item[1]
|
||||||
|
|
|
@ -23,10 +23,12 @@ class UserStorage:
|
||||||
async def get_user(id):
|
async def get_user(id):
|
||||||
with local_session() as session:
|
with local_session() as session:
|
||||||
user = (
|
user = (
|
||||||
session.query(User)
|
session.query(User).options(
|
||||||
.options(selectinload(User.roles), selectinload(User.ratings))
|
selectinload(User.roles),
|
||||||
.filter(User.id == id)
|
selectinload(User.ratings)
|
||||||
.one()
|
).filter(
|
||||||
|
User.id == id
|
||||||
|
).one()
|
||||||
)
|
)
|
||||||
|
|
||||||
return user
|
return user
|
||||||
|
|
|
@ -35,7 +35,7 @@ class ReactedStorage:
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
async def get_shout_stat(slug):
|
async def get_shout_stat(slug):
|
||||||
viewed = await ViewedStorage.get_shout(slug)
|
viewed = int(await ViewedStorage.get_shout(slug))
|
||||||
print(viewed)
|
print(viewed)
|
||||||
return {
|
return {
|
||||||
"viewed": viewed,
|
"viewed": viewed,
|
||||||
|
|
|
@ -3,7 +3,7 @@ from datetime import timedelta, timezone, datetime
|
||||||
from gql import Client, gql
|
from gql import Client, gql
|
||||||
from gql.transport.aiohttp import AIOHTTPTransport
|
from gql.transport.aiohttp import AIOHTTPTransport
|
||||||
from base.orm import local_session
|
from base.orm import local_session
|
||||||
from sqlalchemy import func, select
|
from sqlalchemy import func
|
||||||
from orm.shout import ShoutTopic
|
from orm.shout import ShoutTopic
|
||||||
from orm.viewed import ViewedEntry
|
from orm.viewed import ViewedEntry
|
||||||
from ssl import create_default_context
|
from ssl import create_default_context
|
||||||
|
@ -119,12 +119,14 @@ class ViewedStorage:
|
||||||
if not shout_views:
|
if not shout_views:
|
||||||
shout_views = 0
|
shout_views = 0
|
||||||
with local_session() as session:
|
with local_session() as session:
|
||||||
shout_views_q = select(func.sum(ViewedEntry.amount)).where(
|
try:
|
||||||
|
shout_views = session.query(func.sum(ViewedEntry.amount)).where(
|
||||||
ViewedEntry.shout == shout_slug
|
ViewedEntry.shout == shout_slug
|
||||||
)
|
).all()[0][0]
|
||||||
shout_views = session.execute(shout_views_q)
|
|
||||||
self.by_shouts[shout_slug] = shout_views
|
self.by_shouts[shout_slug] = shout_views
|
||||||
self.update_topics(session, shout_slug)
|
self.update_topics(session, shout_slug)
|
||||||
|
except Exception as e:
|
||||||
|
raise e
|
||||||
|
|
||||||
return shout_views
|
return shout_views
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user