fixed-queries

This commit is contained in:
tonyrewin 2022-11-15 19:49:38 +03:00
parent a09daedaac
commit db3617c80d
2 changed files with 8 additions and 5 deletions

View File

@ -1,5 +1,5 @@
from datetime import datetime, timedelta from datetime import datetime, timedelta
from sqlalchemy import and_, desc, select from sqlalchemy import and_, desc, select, text
from sqlalchemy.orm import selectinload from sqlalchemy.orm import selectinload
from auth.authenticate import login_required from auth.authenticate import login_required
@ -115,14 +115,14 @@ def set_published(session, slug, publisher):
s = session.query(Shout).where(Shout.slug == slug).first() s = session.query(Shout).where(Shout.slug == slug).first()
s.publishedAt = datetime.now() s.publishedAt = datetime.now()
s.publishedBy = publisher s.publishedBy = publisher
s.visibility = 'public' s.visibility = text('public')
session.add(s) session.add(s)
session.commit() session.commit()
def set_hidden(session, slug): def set_hidden(session, slug):
s = session.query(Shout).where(Shout.slug == slug).first() s = session.query(Shout).where(Shout.slug == slug).first()
s.visibility = 'authors' s.visibility = text('authors')
s.publishedAt = None # TODO: discuss s.publishedAt = None # TODO: discuss
s.publishedBy = None # TODO: store changes history in git s.publishedBy = None # TODO: store changes history in git
session.add(s) session.add(s)

View File

@ -1,7 +1,7 @@
from datetime import datetime, timedelta from datetime import datetime, timedelta
from sqlalchemy.orm import selectinload from sqlalchemy.orm import selectinload
from sqlalchemy.sql.expression import desc, select from sqlalchemy.sql.expression import or_, desc, select
from auth.authenticate import login_required from auth.authenticate import login_required
from base.orm import local_session from base.orm import local_session
@ -50,7 +50,10 @@ async def load_shouts_by(_, info, by, amount=50, offset=0):
user = info.context["request"].user user = info.context["request"].user
q = q.filter(Reaction.createdBy == user.slug) q = q.filter(Reaction.createdBy == user.slug)
if by.get("visibility"): if by.get("visibility"):
q = q.filter(Shout.visibility == by.get("visibility") or "public") q = q.filter(or_(
Shout.visibility.ilike(f"%{by.get('visibility')}%"),
Shout.visibility.ilike(f"%{'public'}%"),
))
if by.get("layout"): if by.get("layout"):
q = q.filter(Shout.layout == by["layout"]) q = q.filter(Shout.layout == by["layout"])
if by.get("author"): if by.get("author"):