[System][Plugin] Allow military timezone names for datetime
This commit is contained in:
parent
56a0a8e06a
commit
22499b7ece
|
@ -1,4 +1,4 @@
|
||||||
from flaschengeist.hook import Hook
|
from flaschengeist.utils.hook import Hook
|
||||||
from flaschengeist.models.user import User, Role
|
from flaschengeist.models.user import User, Role
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
from flask import current_app
|
from flask import current_app
|
||||||
from werkzeug.exceptions import NotFound, BadRequest
|
from werkzeug.exceptions import NotFound, BadRequest
|
||||||
|
|
||||||
from flaschengeist.hook import Hook
|
from flaschengeist.utils.hook import Hook
|
||||||
from flaschengeist.models.user import User, Role
|
from flaschengeist.models.user import User, Role
|
||||||
from flaschengeist.database import db
|
from flaschengeist.database import db
|
||||||
from flaschengeist import logger
|
from flaschengeist import logger
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import pkg_resources
|
import pkg_resources
|
||||||
from werkzeug.exceptions import MethodNotAllowed
|
from werkzeug.exceptions import MethodNotAllowed
|
||||||
|
|
||||||
from flaschengeist.hook import HookCall
|
from flaschengeist.utils.hook import HookCall
|
||||||
|
|
||||||
send_message_hook = HookCall("send_message")
|
send_message_hook = HookCall("send_message")
|
||||||
"""Hook decorator for sending messages, register to send the message
|
"""Hook decorator for sending messages, register to send the message
|
||||||
|
|
|
@ -7,17 +7,16 @@ from http.client import NO_CONTENT
|
||||||
from datetime import datetime, timezone
|
from datetime import datetime, timezone
|
||||||
from flask import Blueprint, jsonify, request
|
from flask import Blueprint, jsonify, request
|
||||||
from werkzeug.exceptions import Forbidden, BadRequest
|
from werkzeug.exceptions import Forbidden, BadRequest
|
||||||
from backports.datetime_fromisoformat import MonkeyPatch
|
|
||||||
|
|
||||||
from flaschengeist import logger
|
from flaschengeist import logger
|
||||||
from flaschengeist.models.session import Session
|
from flaschengeist.models.session import Session
|
||||||
|
from flaschengeist.utils.datetime import from_iso_format
|
||||||
from flaschengeist.decorator import login_required
|
from flaschengeist.decorator import login_required
|
||||||
from flaschengeist.controller import userController
|
from flaschengeist.controller import userController
|
||||||
from flaschengeist.plugins import Plugin, update_user_hook
|
from flaschengeist.plugins import Plugin, update_user_hook
|
||||||
|
|
||||||
from . import balance_controller, permissions, models
|
from . import balance_controller, permissions, models
|
||||||
|
|
||||||
MonkeyPatch.patch_fromisoformat()
|
|
||||||
balance_bp = Blueprint("balance", __name__)
|
balance_bp = Blueprint("balance", __name__)
|
||||||
|
|
||||||
|
|
||||||
|
@ -36,6 +35,7 @@ class BalancePlugin(Plugin):
|
||||||
|
|
||||||
def install(self):
|
def install(self):
|
||||||
from flaschengeist.database import db
|
from flaschengeist.database import db
|
||||||
|
|
||||||
db.create_all()
|
db.create_all()
|
||||||
|
|
||||||
|
|
||||||
|
@ -115,13 +115,13 @@ def get_balance(userid, current_session: Session):
|
||||||
|
|
||||||
start = request.args.get("from")
|
start = request.args.get("from")
|
||||||
if start:
|
if start:
|
||||||
start = datetime.fromisoformat(start).replace(tzinfo=timezone.utc)
|
start = from_iso_format(start)
|
||||||
else:
|
else:
|
||||||
start = datetime.fromtimestamp(0, tz=timezone.utc)
|
start = datetime.fromtimestamp(0, tz=timezone.utc)
|
||||||
|
|
||||||
end = request.args.get("to")
|
end = request.args.get("to")
|
||||||
if end:
|
if end:
|
||||||
end = datetime.fromisoformat(end).replace(tzinfo=timezone.utc)
|
end = from_iso_format(end)
|
||||||
else:
|
else:
|
||||||
end = datetime.now(tz=timezone.utc)
|
end = datetime.now(tz=timezone.utc)
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
import datetime
|
||||||
|
from backports.datetime_fromisoformat import MonkeyPatch
|
||||||
|
MonkeyPatch.patch_fromisoformat()
|
||||||
|
|
||||||
|
|
||||||
|
def from_iso_format(date_str):
|
||||||
|
"""Z-suffix aware version of `datetime.datetime.fromisoformat`"""
|
||||||
|
time = datetime.datetime.fromisoformat(date_str.replace('Z', '+00:00'))
|
||||||
|
if time.tzinfo:
|
||||||
|
return time.astimezone(tzinfo=datetime.timezone.utc)
|
||||||
|
return time.replace(tzinfo=datetime.timezone.utc)
|
Loading…
Reference in New Issue