timezones fixed once again (#107)

Co-authored-by: Igor Lobanov <igor.lobanov@onetwotrip.com>
This commit is contained in:
Ilya Y 2023-11-14 14:56:41 +03:00 committed by GitHub
parent 34e18317a2
commit b63b6e7ee7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 55 additions and 38 deletions

View File

@ -1,6 +1,4 @@
from datetime import datetime from sqlalchemy import Column, DateTime, ForeignKey, String, func
from sqlalchemy import Column, DateTime, ForeignKey, String
from base.orm import Base from base.orm import Base
@ -20,6 +18,6 @@ class Collection(Base):
title = Column(String, nullable=False, comment="Title") title = Column(String, nullable=False, comment="Title")
body = Column(String, nullable=True, comment="Body") body = Column(String, nullable=True, comment="Body")
pic = Column(String, nullable=True, comment="Picture") pic = Column(String, nullable=True, comment="Picture")
createdAt = Column(DateTime, default=datetime.now, comment="Created At") createdAt = Column(DateTime(timezone=True), server_default=func.now(), comment="Created At")
createdBy = Column(ForeignKey("user.id"), comment="Created By") createdBy = Column(ForeignKey("user.id"), comment="Created By")
publishedAt = Column(DateTime, default=datetime.now, comment="Published At") publishedAt = Column(DateTime(timezone=True), server_default=func.now(), comment="Published At")

View File

@ -1,6 +1,4 @@
from datetime import datetime from sqlalchemy import Column, DateTime, ForeignKey, String, func
from sqlalchemy import Column, DateTime, ForeignKey, String
from base.orm import Base, local_session from base.orm import Base, local_session
@ -11,7 +9,9 @@ class CommunityFollower(Base):
id = None id = None
follower: Column = Column(ForeignKey("user.id"), primary_key=True) follower: Column = Column(ForeignKey("user.id"), primary_key=True)
community: Column = Column(ForeignKey("community.id"), primary_key=True) community: Column = Column(ForeignKey("community.id"), primary_key=True)
joinedAt = Column(DateTime, nullable=False, default=datetime.now, comment="Created at") joinedAt = Column(
DateTime(timezone=True), nullable=False, server_default=func.now(), comment="Created at"
)
# role = Column(ForeignKey(Role.id), nullable=False, comment="Role for member") # role = Column(ForeignKey(Role.id), nullable=False, comment="Role for member")
@ -22,7 +22,9 @@ class Community(Base):
slug = Column(String, nullable=False, unique=True, comment="Slug") slug = Column(String, nullable=False, unique=True, comment="Slug")
desc = Column(String, nullable=False, default="") desc = Column(String, nullable=False, default="")
pic = Column(String, nullable=False, default="") pic = Column(String, nullable=False, default="")
createdAt = Column(DateTime, nullable=False, default=datetime.now, comment="Created at") createdAt = Column(
DateTime(timezone=True), nullable=False, server_default=func.now(), comment="Created at"
)
@staticmethod @staticmethod
def init_table(): def init_table():

View File

@ -1,7 +1,6 @@
from datetime import datetime
from enum import Enum as Enumeration from enum import Enum as Enumeration
from sqlalchemy import Boolean, Column, DateTime, Enum, ForeignKey, Integer from sqlalchemy import Boolean, Column, DateTime, Enum, ForeignKey, Integer, func
from sqlalchemy.dialects.postgresql import JSONB from sqlalchemy.dialects.postgresql import JSONB
from base.orm import Base from base.orm import Base
@ -18,7 +17,9 @@ class Notification(Base):
shout: Column = Column(ForeignKey("shout.id"), index=True) shout: Column = Column(ForeignKey("shout.id"), index=True)
reaction: Column = Column(ForeignKey("reaction.id"), index=True) reaction: Column = Column(ForeignKey("reaction.id"), index=True)
user: Column = Column(ForeignKey("user.id"), index=True) user: Column = Column(ForeignKey("user.id"), index=True)
createdAt = Column(DateTime, nullable=False, default=datetime.now, index=True) createdAt = Column(
DateTime(timezone=True), nullable=False, server_default=func.now(), index=True
)
seen = Column(Boolean, nullable=False, default=False, index=True) seen = Column(Boolean, nullable=False, default=False, index=True)
type = Column(Enum(NotificationType), nullable=False) type = Column(Enum(NotificationType), nullable=False)
data = Column(JSONB, nullable=True) data = Column(JSONB, nullable=True)

View File

@ -1,7 +1,6 @@
from datetime import datetime
from enum import Enum as Enumeration from enum import Enum as Enumeration
from sqlalchemy import Column, DateTime, Enum, ForeignKey, String from sqlalchemy import Column, DateTime, Enum, ForeignKey, String, func
from base.orm import Base from base.orm import Base
@ -27,13 +26,15 @@ class ReactionKind(Enumeration):
class Reaction(Base): class Reaction(Base):
__tablename__ = "reaction" __tablename__ = "reaction"
body = Column(String, nullable=True, comment="Reaction Body") body = Column(String, nullable=True, comment="Reaction Body")
createdAt = Column(DateTime, nullable=False, default=datetime.now, comment="Created at") createdAt = Column(
DateTime(timezone=True), nullable=False, server_default=func.now(), comment="Created at"
)
createdBy: Column = Column(ForeignKey("user.id"), nullable=False, index=True, comment="Sender") createdBy: Column = Column(ForeignKey("user.id"), nullable=False, index=True, comment="Sender")
updatedAt = Column(DateTime, nullable=True, comment="Updated at") updatedAt = Column(DateTime(timezone=True), nullable=True, comment="Updated at")
updatedBy: Column = Column( updatedBy: Column = Column(
ForeignKey("user.id"), nullable=True, index=True, comment="Last Editor" ForeignKey("user.id"), nullable=True, index=True, comment="Last Editor"
) )
deletedAt = Column(DateTime, nullable=True, comment="Deleted at") deletedAt = Column(DateTime(timezone=True), nullable=True, comment="Deleted at")
deletedBy: Column = Column( deletedBy: Column = Column(
ForeignKey("user.id"), nullable=True, index=True, comment="Deleted by" ForeignKey("user.id"), nullable=True, index=True, comment="Deleted by"
) )

View File

@ -1,6 +1,13 @@
from datetime import datetime from sqlalchemy import (
JSON,
from sqlalchemy import JSON, Boolean, Column, DateTime, ForeignKey, Integer, String Boolean,
Column,
DateTime,
ForeignKey,
Integer,
String,
func,
)
from sqlalchemy.orm import column_property, relationship from sqlalchemy.orm import column_property, relationship
from base.orm import Base, local_session from base.orm import Base, local_session
@ -24,8 +31,10 @@ class ShoutReactionsFollower(Base):
follower: Column = Column(ForeignKey("user.id"), primary_key=True, index=True) follower: Column = Column(ForeignKey("user.id"), primary_key=True, index=True)
shout: Column = Column(ForeignKey("shout.id"), primary_key=True, index=True) shout: Column = Column(ForeignKey("shout.id"), primary_key=True, index=True)
auto = Column(Boolean, nullable=False, default=False) auto = Column(Boolean, nullable=False, default=False)
createdAt = Column(DateTime, nullable=False, default=datetime.now, comment="Created at") createdAt = Column(
deletedAt = Column(DateTime, nullable=True) DateTime(timezone=True), nullable=False, server_default=func.now(), comment="Created at"
)
deletedAt = Column(DateTime(timezone=True), nullable=True)
class ShoutAuthor(Base): class ShoutAuthor(Base):
@ -41,10 +50,12 @@ class Shout(Base):
__tablename__ = "shout" __tablename__ = "shout"
# timestamps # timestamps
createdAt = Column(DateTime, nullable=False, default=datetime.now, comment="Created at") createdAt = Column(
updatedAt = Column(DateTime, nullable=True, comment="Updated at") DateTime(timezone=True), nullable=False, server_default=func.now(), comment="Created at"
publishedAt = Column(DateTime, nullable=True) )
deletedAt = Column(DateTime, nullable=True) updatedAt = Column(DateTime(timezone=True), nullable=True, comment="Updated at")
publishedAt = Column(DateTime(timezone=True), nullable=True)
deletedAt = Column(DateTime(timezone=True), nullable=True)
createdBy: Column = Column(ForeignKey("user.id"), comment="Created By") createdBy: Column = Column(ForeignKey("user.id"), comment="Created By")
deletedBy: Column = Column(ForeignKey("user.id"), nullable=True) deletedBy: Column = Column(ForeignKey("user.id"), nullable=True)

View File

@ -1,6 +1,4 @@
from datetime import datetime from sqlalchemy import Boolean, Column, DateTime, ForeignKey, String, func
from sqlalchemy import Boolean, Column, DateTime, ForeignKey, String
from base.orm import Base from base.orm import Base
@ -11,7 +9,9 @@ class TopicFollower(Base):
id = None id = None
follower: Column = Column(ForeignKey("user.id"), primary_key=True, index=True) follower: Column = Column(ForeignKey("user.id"), primary_key=True, index=True)
topic: Column = Column(ForeignKey("topic.id"), primary_key=True, index=True) topic: Column = Column(ForeignKey("topic.id"), primary_key=True, index=True)
createdAt = Column(DateTime, nullable=False, default=datetime.now, comment="Created at") createdAt = Column(
DateTime(timezone=True), nullable=False, server_default=func.now(), comment="Created at"
)
auto = Column(Boolean, nullable=False, default=False) auto = Column(Boolean, nullable=False, default=False)

View File

@ -1,7 +1,5 @@
from datetime import datetime
from sqlalchemy import JSON as JSONType from sqlalchemy import JSON as JSONType
from sqlalchemy import Boolean, Column, DateTime, ForeignKey, Integer, String from sqlalchemy import Boolean, Column, DateTime, ForeignKey, Integer, String, func
from sqlalchemy.orm import relationship from sqlalchemy.orm import relationship
from base.orm import Base, local_session from base.orm import Base, local_session
@ -35,7 +33,9 @@ class AuthorFollower(Base):
id = None id = None
follower: Column = Column(ForeignKey("user.id"), primary_key=True, index=True) follower: Column = Column(ForeignKey("user.id"), primary_key=True, index=True)
author: Column = Column(ForeignKey("user.id"), primary_key=True, index=True) author: Column = Column(ForeignKey("user.id"), primary_key=True, index=True)
createdAt = Column(DateTime, nullable=False, default=datetime.now, comment="Created at") createdAt = Column(
DateTime(timezone=True), nullable=False, server_default=func.now(), comment="Created at"
)
auto = Column(Boolean, nullable=False, default=False) auto = Column(Boolean, nullable=False, default=False)
@ -53,9 +53,13 @@ class User(Base):
slug = Column(String, unique=True, comment="User's slug") slug = Column(String, unique=True, comment="User's slug")
muted = Column(Boolean, default=False) muted = Column(Boolean, default=False)
emailConfirmed = Column(Boolean, default=False) emailConfirmed = Column(Boolean, default=False)
createdAt = Column(DateTime, nullable=False, default=datetime.now, comment="Created at") createdAt = Column(
lastSeen = Column(DateTime, nullable=False, default=datetime.now, comment="Was online at") DateTime(timezone=True), nullable=False, server_default=func.now(), comment="Created at"
deletedAt = Column(DateTime, nullable=True, comment="Deleted at") )
lastSeen = Column(
DateTime(timezone=True), nullable=False, server_default=func.now(), comment="Was online at"
)
deletedAt = Column(DateTime(timezone=True), nullable=True, comment="Deleted at")
links = Column(JSONType, nullable=True, comment="Links") links = Column(JSONType, nullable=True, comment="Links")
oauth = Column(String, nullable=True) oauth = Column(String, nullable=True)
ratings = relationship(UserRating, foreign_keys=UserRating.user) ratings = relationship(UserRating, foreign_keys=UserRating.user)