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."""
from datetime import datetime
from datetime import datetime, timezone
from typing import Any, List
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
def get_now() -> datetime:
"""Get proper timestamp."""
return datetime.now(tz=timezone.utc)
class RawField(fields.BaseField, ma.fields.Raw):
pass
@ -71,7 +76,7 @@ class Lock(Document):
guild: int = fields.IntegerField(required=True)
reason: str = fields.StringField(required=True)
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
@ -84,7 +89,7 @@ class Lockdown(Document):
guild: int = fields.IntegerField(required=True)
reason: str = fields.StringField(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
@ -95,7 +100,7 @@ class Purge(Document):
channel: int = fields.IntegerField(required=True)
guild: int = fields.IntegerField(required=True)
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
@ -108,7 +113,7 @@ class Reminder(Document):
channel: int = fields.IntegerField(required=True)
message: str = fields.StringField(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)
@ -137,7 +142,7 @@ class Roleping(Document):
guild: int = fields.IntegerField(required=True)
admin: int = fields.IntegerField(required=True)
bypass: Bypass = fields.EmbeddedField(Bypass)
created_at: datetime = fields.DateTimeField(default=datetime.utcnow)
created_at: datetime = fields.DateTimeField(default=get_now)
@JARVIS_INST.register
@ -161,7 +166,7 @@ class Star(Document):
guild: int = fields.IntegerField(required=True)
admin: 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
@ -171,4 +176,4 @@ class Starboard(Document):
channel: int = fields.IntegerField(required=True)
guild: 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."""
from datetime import datetime
from datetime import datetime, timezone
from umongo import Document, fields
from jarvis_core.db import JARVIS_INST
def get_now() -> datetime:
"""Get proper timestamp."""
return datetime.now(tz=timezone.utc)
@JARVIS_INST.register
class Ban(Document):
active: bool = fields.BooleanField(default=True)
@ -13,11 +18,11 @@ class Ban(Document):
user: int = fields.IntegerField(required=True)
username: str = fields.StringField(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)
type: str = fields.StringField(default="perm")
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
@ -28,7 +33,7 @@ class Kick(Document):
guild: int = fields.IntegerField(required=True)
reason: str = fields.StringField(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
@ -41,7 +46,7 @@ class Mute(Document):
duration: int = fields.IntegerField(default=10)
guild: int = fields.IntegerField(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
@ -54,7 +59,7 @@ class Unban(Document):
guild: int = fields.IntegerField(required=True)
admin: int = fields.IntegerField(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
@ -67,4 +72,4 @@ class Warning(Document):
guild: int = fields.IntegerField(required=True)
duration: int = fields.IntegerField(default=24)
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."""
from datetime import datetime
from datetime import datetime, timezone
from typing import List
from bson import ObjectId
@ -8,6 +8,11 @@ from umongo import Document, EmbeddedDocument, fields
from jarvis_core.db import JARVIS_INST
def get_now() -> datetime:
"""Get proper timestamp."""
return datetime.now(tz=timezone.utc)
@JARVIS_INST.register
class Action(EmbeddedDocument):
"""Modlog embedded action document."""
@ -22,7 +27,7 @@ class Note(EmbeddedDocument):
admin: int = fields.IntegerField(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
@ -33,5 +38,5 @@ class Modlog(Document):
admin: int = fields.IntegerField(required=True)
actions: List[Action] = fields.ListField(fields.EmbeddedField(Action), factory=list)
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)

View file

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

View file

@ -6,6 +6,8 @@ FORMAT = "[%(asctime)s] [%(name)s] [%(levelname)8s] %(message)s"
handler = logging.StreamHandler()
LOGGER = None
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:
name: Name of the logger
"""
global LOGGER
if not (logger := LOGGER):
logger = logging.getLogger(name)
formatter = logging.Formatter(fmt)
handler.setFormatter(formatter)
logger.addHandler(handler)
LOGGER = logger
return logger

4
poetry.lock generated
View file

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