Fix timestamps being wrong

This commit is contained in:
Zeva Rose 2022-03-26 03:25:57 -06:00
parent b81ea66d12
commit be6ce3ef8d
6 changed files with 52 additions and 27 deletions

View file

@ -1,5 +1,5 @@
"""JARVIS database models.""" """JARVIS database models."""
from datetime import datetime from datetime import datetime, timezone
from typing import Any, List from typing import Any, List
import marshmallow as ma import marshmallow as ma
@ -11,6 +11,11 @@ from jarvis_core.db.models.modlog import Action, Modlog, Note
from jarvis_core.db.models.twitter import TwitterAccount, TwitterFollow from jarvis_core.db.models.twitter import TwitterAccount, TwitterFollow
def get_now() -> datetime:
"""Get proper timestamp."""
return datetime.now(tz=timezone.utc)
class RawField(fields.BaseField, ma.fields.Raw): class RawField(fields.BaseField, ma.fields.Raw):
pass pass
@ -71,7 +76,7 @@ class Lock(Document):
guild: int = fields.IntegerField(required=True) guild: int = fields.IntegerField(required=True)
reason: str = fields.StringField(required=True) reason: str = fields.StringField(required=True)
original_perms: Permission = fields.EmbeddedField(Permission, required=False) original_perms: Permission = fields.EmbeddedField(Permission, required=False)
created_at: datetime = fields.DateTimeField(default=datetime.utcnow) created_at: datetime = fields.DateTimeField(default=get_now)
@JARVIS_INST.register @JARVIS_INST.register
@ -84,7 +89,7 @@ class Lockdown(Document):
guild: int = fields.IntegerField(required=True) guild: int = fields.IntegerField(required=True)
reason: str = fields.StringField(required=True) reason: str = fields.StringField(required=True)
original_perms: int = fields.IntegerField(required=True) original_perms: int = fields.IntegerField(required=True)
created_at: datetime = fields.DateTimeField(default=datetime.utcnow) created_at: datetime = fields.DateTimeField(default=get_now)
@JARVIS_INST.register @JARVIS_INST.register
@ -95,7 +100,7 @@ class Purge(Document):
channel: int = fields.IntegerField(required=True) channel: int = fields.IntegerField(required=True)
guild: int = fields.IntegerField(required=True) guild: int = fields.IntegerField(required=True)
count: int = fields.IntegerField(default=10) count: int = fields.IntegerField(default=10)
created_at: datetime = fields.DateTimeField(default=datetime.utcnow) created_at: datetime = fields.DateTimeField(default=get_now)
@JARVIS_INST.register @JARVIS_INST.register
@ -108,7 +113,7 @@ class Reminder(Document):
channel: int = fields.IntegerField(required=True) channel: int = fields.IntegerField(required=True)
message: str = fields.StringField(required=True) message: str = fields.StringField(required=True)
remind_at: datetime = fields.DateTimeField(required=True) remind_at: datetime = fields.DateTimeField(required=True)
created_at: datetime = fields.DateTimeField(default=datetime.utcnow) created_at: datetime = fields.DateTimeField(default=get_now)
private: bool = fields.BooleanField(default=False) private: bool = fields.BooleanField(default=False)
@ -137,7 +142,7 @@ class Roleping(Document):
guild: int = fields.IntegerField(required=True) guild: int = fields.IntegerField(required=True)
admin: int = fields.IntegerField(required=True) admin: int = fields.IntegerField(required=True)
bypass: Bypass = fields.EmbeddedField(Bypass) bypass: Bypass = fields.EmbeddedField(Bypass)
created_at: datetime = fields.DateTimeField(default=datetime.utcnow) created_at: datetime = fields.DateTimeField(default=get_now)
@JARVIS_INST.register @JARVIS_INST.register
@ -161,7 +166,7 @@ class Star(Document):
guild: int = fields.IntegerField(required=True) guild: int = fields.IntegerField(required=True)
admin: int = fields.IntegerField(required=True) admin: int = fields.IntegerField(required=True)
star: int = fields.IntegerField(required=True) star: int = fields.IntegerField(required=True)
created_at: datetime = fields.DateTimeField(default=datetime.utcnow) created_at: datetime = fields.DateTimeField(default=get_now)
@JARVIS_INST.register @JARVIS_INST.register
@ -171,4 +176,4 @@ class Starboard(Document):
channel: int = fields.IntegerField(required=True) channel: int = fields.IntegerField(required=True)
guild: int = fields.IntegerField(required=True) guild: int = fields.IntegerField(required=True)
admin: int = fields.IntegerField(required=True) admin: int = fields.IntegerField(required=True)
created_at: datetime = fields.DateTimeField(default=datetime.utcnow) created_at: datetime = fields.DateTimeField(default=get_now)

View file

@ -1,11 +1,16 @@
"""User action models.""" """User action models."""
from datetime import datetime from datetime import datetime, timezone
from umongo import Document, fields from umongo import Document, fields
from jarvis_core.db import JARVIS_INST from jarvis_core.db import JARVIS_INST
def get_now() -> datetime:
"""Get proper timestamp."""
return datetime.now(tz=timezone.utc)
@JARVIS_INST.register @JARVIS_INST.register
class Ban(Document): class Ban(Document):
active: bool = fields.BooleanField(default=True) active: bool = fields.BooleanField(default=True)
@ -13,11 +18,11 @@ class Ban(Document):
user: int = fields.IntegerField(required=True) user: int = fields.IntegerField(required=True)
username: str = fields.StringField(required=True) username: str = fields.StringField(required=True)
discrim: int = fields.IntegerField(required=True) discrim: int = fields.IntegerField(required=True)
duration: int = fields.IntegerField(required=False) duration: int = fields.IntegerField(required=False, default=None)
guild: int = fields.IntegerField(required=True) guild: int = fields.IntegerField(required=True)
type: str = fields.StringField(default="perm") type: str = fields.StringField(default="perm")
reason: str = fields.StringField(required=True) reason: str = fields.StringField(required=True)
created_at: datetime = fields.DateTimeField(default=datetime.utcnow) created_at: datetime = fields.DateTimeField(default=get_now)
@JARVIS_INST.register @JARVIS_INST.register
@ -28,7 +33,7 @@ class Kick(Document):
guild: int = fields.IntegerField(required=True) guild: int = fields.IntegerField(required=True)
reason: str = fields.StringField(required=True) reason: str = fields.StringField(required=True)
user: int = fields.IntegerField(required=True) user: int = fields.IntegerField(required=True)
created_at: datetime = fields.DateTimeField(default=datetime.utcnow) created_at: datetime = fields.DateTimeField(default=get_now)
@JARVIS_INST.register @JARVIS_INST.register
@ -41,7 +46,7 @@ class Mute(Document):
duration: int = fields.IntegerField(default=10) duration: int = fields.IntegerField(default=10)
guild: int = fields.IntegerField(required=True) guild: int = fields.IntegerField(required=True)
reason: str = fields.StringField(required=True) reason: str = fields.StringField(required=True)
created_at: datetime = fields.DateTimeField(default=datetime.utcnow) created_at: datetime = fields.DateTimeField(default=get_now)
@JARVIS_INST.register @JARVIS_INST.register
@ -54,7 +59,7 @@ class Unban(Document):
guild: int = fields.IntegerField(required=True) guild: int = fields.IntegerField(required=True)
admin: int = fields.IntegerField(required=True) admin: int = fields.IntegerField(required=True)
reason: str = fields.StringField(required=True) reason: str = fields.StringField(required=True)
created_at: datetime = fields.DateTimeField(default=datetime.utcnow) created_at: datetime = fields.DateTimeField(default=get_now)
@JARVIS_INST.register @JARVIS_INST.register
@ -67,4 +72,4 @@ class Warning(Document):
guild: int = fields.IntegerField(required=True) guild: int = fields.IntegerField(required=True)
duration: int = fields.IntegerField(default=24) duration: int = fields.IntegerField(default=24)
reason: str = fields.StringField(required=True) reason: str = fields.StringField(required=True)
created_at: datetime = fields.DateTimeField(default=datetime.utcnow) created_at: datetime = fields.DateTimeField(default=get_now)

View file

@ -1,5 +1,5 @@
"""Modlog database models.""" """Modlog database models."""
from datetime import datetime from datetime import datetime, timezone
from typing import List from typing import List
from bson import ObjectId from bson import ObjectId
@ -8,6 +8,11 @@ from umongo import Document, EmbeddedDocument, fields
from jarvis_core.db import JARVIS_INST from jarvis_core.db import JARVIS_INST
def get_now() -> datetime:
"""Get proper timestamp."""
return datetime.now(tz=timezone.utc)
@JARVIS_INST.register @JARVIS_INST.register
class Action(EmbeddedDocument): class Action(EmbeddedDocument):
"""Modlog embedded action document.""" """Modlog embedded action document."""
@ -22,7 +27,7 @@ class Note(EmbeddedDocument):
admin: int = fields.IntegerField(required=True) admin: int = fields.IntegerField(required=True)
content: str = fields.StrField(required=True) content: str = fields.StrField(required=True)
created_at: datetime = fields.DateTimeField(default=datetime.utcnow) created_at: datetime = fields.DateTimeField(default=get_now)
@JARVIS_INST.register @JARVIS_INST.register
@ -33,5 +38,5 @@ class Modlog(Document):
admin: int = fields.IntegerField(required=True) admin: int = fields.IntegerField(required=True)
actions: List[Action] = fields.ListField(fields.EmbeddedField(Action), factory=list) actions: List[Action] = fields.ListField(fields.EmbeddedField(Action), factory=list)
open: bool = fields.BoolField(default=True) open: bool = fields.BoolField(default=True)
created_at: datetime = fields.DateTimeField(default=datetime.utcnow) created_at: datetime = fields.DateTimeField(default=get_now)
notes: List[Note] = fields.ListField(fields.EmbeddedField(Note), factory=list) notes: List[Note] = fields.ListField(fields.EmbeddedField(Note), factory=list)

View file

@ -1,11 +1,16 @@
"""Twitter database models.""" """Twitter database models."""
from datetime import datetime from datetime import datetime, timezone
from umongo import Document, fields from umongo import Document, fields
from jarvis_core.db import JARVIS_INST from jarvis_core.db import JARVIS_INST
def get_now() -> datetime:
"""Get proper timestamp."""
return datetime.now(tz=timezone.utc)
@JARVIS_INST.register @JARVIS_INST.register
class TwitterAccount(Document): class TwitterAccount(Document):
"""Twitter Account object.""" """Twitter Account object."""
@ -13,7 +18,7 @@ class TwitterAccount(Document):
handle: str = fields.StringField(required=True) handle: str = fields.StringField(required=True)
twitter_id: int = fields.IntegerField(required=True) twitter_id: int = fields.IntegerField(required=True)
last_tweet: int = fields.IntegerField(required=True) last_tweet: int = fields.IntegerField(required=True)
last_sync: datetime = fields.DateTimeField(default=datetime.utcnow) last_sync: datetime = fields.DateTimeField(default=get_now)
class Meta: class Meta:
collection_name = "twitteraccount" collection_name = "twitteraccount"
@ -29,7 +34,7 @@ class TwitterFollow(Document):
guild: int = fields.IntegerField(required=True) guild: int = fields.IntegerField(required=True)
retweets: bool = fields.BooleanField(default=True) retweets: bool = fields.BooleanField(default=True)
admin: int = fields.IntegerField(required=True) admin: int = fields.IntegerField(required=True)
created_at: datetime = fields.DateTimeField(default=datetime.utcnow) created_at: datetime = fields.DateTimeField(default=get_now)
class Meta: class Meta:
collection_name = "twitterfollow" collection_name = "twitterfollow"

View file

@ -6,6 +6,8 @@ FORMAT = "[%(asctime)s] [%(name)s] [%(levelname)8s] %(message)s"
handler = logging.StreamHandler() handler = logging.StreamHandler()
LOGGER = None
def get_logger(name: str, fmt: Optional[str] = FORMAT) -> logging.Logger: def get_logger(name: str, fmt: Optional[str] = FORMAT) -> logging.Logger:
""" """
@ -14,8 +16,11 @@ def get_logger(name: str, fmt: Optional[str] = FORMAT) -> logging.Logger:
Args: Args:
name: Name of the logger name: Name of the logger
""" """
logger = logging.getLogger(name) global LOGGER
formatter = logging.Formatter(fmt) if not (logger := LOGGER):
handler.setFormatter(formatter) logger = logging.getLogger(name)
logger.addHandler(handler) formatter = logging.Formatter(fmt)
handler.setFormatter(formatter)
logger.addHandler(handler)
LOGGER = logger
return logger return logger

4
poetry.lock generated
View file

@ -538,7 +538,7 @@ python-versions = "*"
name = "wrapt" name = "wrapt"
version = "1.14.0" version = "1.14.0"
description = "Module for decorators, wrappers and monkey patching." description = "Module for decorators, wrappers and monkey patching."
category = "main" category = "dev"
optional = false optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
@ -565,7 +565,7 @@ multidict = ">=4.0"
[metadata] [metadata]
lock-version = "1.1" lock-version = "1.1"
python-versions = "^3.10" python-versions = "^3.10"
content-hash = "a07e2ba142cae04f133b170017335e96cb4076f0eff2ccbf6a37e080f865505d" content-hash = "8edf07b473e9615a836f71510d792021c6760ef94abe4b720f9ff12a37c5dce5"
[metadata.files] [metadata.files]
aiohttp = [ aiohttp = [