Skip to content
Snippets Groups Projects
Commit aa71578e authored by istmxrein's avatar istmxrein
Browse files

fix encoding of reservation objects

parent 724f897e
No related branches found
No related tags found
No related merge requests found
import functools
import json
from json import JSONEncoder
import logging
import threading
import time
import traceback
from collections import Counter
from datetime import datetime
from datetime import datetime, date
from zoneinfo import ZoneInfo
from typing import List, Callable, Optional, Dict
......@@ -26,9 +27,16 @@ class Reservation(BaseModel):
endtime: datetime
extraUsers: Optional[List[str]] = None
reason: str
pass
class DateTimeEncoder(JSONEncoder):
# Override the default method
def default(self, obj):
if isinstance(obj, (date, datetime)):
return obj.isoformat()
return super().default(obj)
def send_event(event: Reservation):
routing_key = f"res.cube.{event.cube_id}"
try:
......@@ -43,7 +51,7 @@ def send_event(event: Reservation):
arguments={"x-queue-type": "stream"}
)
event_serialized = json.dumps(event.dict()).encode('utf-8')
event_serialized = json.dumps(event.dict(), cls=DateTimeEncoder).encode('utf-8')
channel.basic_publish(
exchange='',
......@@ -212,6 +220,10 @@ class ReservationConsumer(threading.Thread):
self.callback(reservation)
self._channel.basic_ack(basic_deliver.delivery_tag)
logger.debug(f"Event processed successful")
except TypeError as e:
traceback.print_exc()
self._channel.basic_ack(basic_deliver.delivery_tag)
logger.debug(f"Event format could no get parsed")
except Exception as e:
traceback.print_exc()
logger.error(f"Failed to process Event; message {e}")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment