try timezones
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
from datetime import datetime, timedelta
|
||||
from datetime import datetime, timedelta, timezone
|
||||
import sqlalchemy as sa
|
||||
from sqlalchemy.orm import selectinload
|
||||
from sqlalchemy.sql.expression import desc, asc, select, case
|
||||
@@ -27,7 +27,7 @@ def apply_filters(q, filters, user=None):
|
||||
if filters.get("body"):
|
||||
q = q.filter(Shout.body.ilike(f'%{filters.get("body")}%s'))
|
||||
if filters.get("days"):
|
||||
before = datetime.now() - timedelta(days=int(filters.get("days")) or 30)
|
||||
before = datetime.now(tz=timezone.utc) - timedelta(days=int(filters.get("days")) or 30)
|
||||
q = q.filter(Shout.createdAt > before)
|
||||
return q
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
from typing import List
|
||||
from datetime import datetime, timedelta
|
||||
from datetime import datetime, timedelta, timezone
|
||||
from sqlalchemy import and_, func
|
||||
from sqlalchemy.orm import selectinload
|
||||
|
||||
@@ -203,10 +203,10 @@ async def load_authors_by(_, info, by, limit, offset):
|
||||
aaa = list(map(lambda a: a.slug, TopicStat.authors_by_topic.get(by["topic"])))
|
||||
aq = aq.filter(User.name._in(aaa))
|
||||
if by.get("lastSeen"): # in days
|
||||
days_before = datetime.now() - timedelta(days=by["lastSeen"])
|
||||
days_before = datetime.now(tz=timezone.utc) - timedelta(days=by["lastSeen"])
|
||||
aq = aq.filter(User.lastSeen > days_before)
|
||||
elif by.get("createdAt"): # in days
|
||||
days_before = datetime.now() - timedelta(days=by["createdAt"])
|
||||
days_before = datetime.now(tz=timezone.utc) - timedelta(days=by["createdAt"])
|
||||
aq = aq.filter(User.createdAt > days_before)
|
||||
aq = aq.group_by(
|
||||
User.id
|
||||
|
@@ -1,4 +1,4 @@
|
||||
from datetime import datetime, timedelta
|
||||
from datetime import datetime, timedelta, timezone
|
||||
from sqlalchemy import and_, asc, desc, select, text, func
|
||||
from sqlalchemy.orm import aliased
|
||||
|
||||
@@ -109,7 +109,7 @@ def check_to_hide(session, user, reaction):
|
||||
|
||||
def set_published(session, slug, publisher):
|
||||
s = session.query(Shout).where(Shout.slug == slug).first()
|
||||
s.publishedAt = datetime.now()
|
||||
s.publishedAt = datetime.now(tz=timezone.utc)
|
||||
s.publishedBy = publisher
|
||||
s.visibility = text('public')
|
||||
session.add(s)
|
||||
@@ -166,7 +166,7 @@ async def update_reaction(_, info, inp):
|
||||
if reaction.createdBy != user.slug:
|
||||
return {"error": "access denied"}
|
||||
reaction.body = inp["body"]
|
||||
reaction.updatedAt = datetime.now()
|
||||
reaction.updatedAt = datetime.now(tz=timezone.utc)
|
||||
if reaction.kind != inp["kind"]:
|
||||
# NOTE: change mind detection can be here
|
||||
pass
|
||||
@@ -191,7 +191,7 @@ async def delete_reaction(_, info, rid):
|
||||
return {"error": "invalid reaction id"}
|
||||
if reaction.createdBy != user.slug:
|
||||
return {"error": "access denied"}
|
||||
reaction.deletedAt = datetime.now()
|
||||
reaction.deletedAt = datetime.now(tz=timezone.utc)
|
||||
session.commit()
|
||||
return {}
|
||||
|
||||
@@ -240,7 +240,7 @@ async def load_reactions_by(_, _info, by, limit=50, offset=0):
|
||||
if by.get('search', 0) > 2:
|
||||
q = q.filter(Reaction.body.ilike(f'%{by["body"]}%'))
|
||||
if by.get("days"):
|
||||
after = datetime.now() - timedelta(days=int(by["days"]) or 30)
|
||||
after = datetime.now(tz=timezone.utc) - timedelta(days=int(by["days"]) or 30)
|
||||
q = q.filter(Reaction.createdAt > after)
|
||||
order_way = asc if by.get("sort", "").startswith("-") else desc
|
||||
order_field = by.get("sort") or Reaction.createdAt
|
||||
|
Reference in New Issue
Block a user