Skip to content
Snippets Groups Projects
Commit f268466b authored by Sara Savanovic Djordjevic's avatar Sara Savanovic Djordjevic
Browse files

fix: update_map endpoint, now working

parent d5377b42
No related branches found
No related tags found
1 merge request!1Server
No preview for this file type
from datetime import datetime
# Sensor contains data related to a single sensor
class Sensor:
def __init__(self, ID: int, type: enumerate, active: bool):
def __init__(self, ID: int, type: str, active: bool):
self.ID = ID
self.type = type
self.active = active
def to_dict(self):
return {
'ID': self.ID,
'type': self.type,
'active': self.active
}
# DateTime contains the date and time for a measurement
class DateAndTime:
def __init__(self, year: int, month: int, day: int, hour: int, minute: int):
self.year = year
self.month = month
self.day = day
self.hour = hour
self.minute = minute
def to_dict(self):
return {
'year': self.year,
'month': self.month,
'day': self.day,
'hour': self.hour,
'minute': self.minute
}
# Measurement contains geo-data related to a single measurement point at a given time
# Measurement contains geo-data related to a single measurement point at a given time. It includes an instance
# of the class Sensor.
class Measurement:
def __init__(self, longitude: float, latitude: float, datetime: datetime, precipitation: float, thickness: float,
def __init__(self, longitude: float, latitude: float, datetime: DateAndTime, sensor: Sensor, precipitation: float, thickness: float,
max_weight: float, safety_level: float, accuracy: float):
self.longitude = longitude
self.latitude = latitude
self.datetime = datetime
self.sensor = sensor
self.precipitation = precipitation
self.thickness = thickness
self.max_weight = max_weight
self.safety_level = safety_level
self.accuracy = accuracy
def to_dict(self):
return {
'longitude': self.longitude,
'latitude': self.latitude,
'datetime': self.datetime.to_dict(),
'sensor': self.sensor.to_dict(),
'precipitation': self.precipitation,
'thickness': self.thickness,
'max_weight': self.max_weight,
'safety_level': self.safety_level,
'accuracy': self.accuracy
}
# MarkerTemplate is a template for map marker data. It includes an instance of the
# DataPoint type.
class MarkerTemplate:
def __init__(self, geoData: Measurement, size: float, color: enumerate, radius: float):
def __init__(self, geoData: Measurement, size: float, color: str):
self.geoData = geoData
self.longitude = geoData.longitude
self.latitude = geoData.latitude
self.size = size
self.color = color
self.radius = radius
def to_dict(self):
return {
'geo_data': self.geoData.to_dict(),
'latitude': self.latitude,
'longitude': self.longitude,
'size': self.size,
'color': self.color,
'radius': self.radius
}
\ No newline at end of file
......@@ -35,7 +35,9 @@ class IceHTTP(BaseHTTPRequestHandler):
self.end_headers()
self.wfile.write(b"Root path hit!")
elif self.path == '/update_map':
# Update_map endpoint
elif self.path == '/update_map': # NB: should be POST?
# Fetch marker data
markers_data, resp_code = get_markers()
......@@ -45,7 +47,7 @@ class IceHTTP(BaseHTTPRequestHandler):
self.end_headers()
# Write the JSON data to response object
self.wfile.write(markers_data)
self.wfile.write(str(markers_data).encode('utf-8'))
# Listen for pressing of q key to terminate server
def on_key_press(server, event):
......@@ -73,6 +75,7 @@ if __name__ == "__main__":
# Register key press event handler
keyboard.on_press(lambda event: on_key_press(server, event))
# Run server indefinitely
server.serve_forever()
except Exception as e:
......
No preview for this file type
import os
import sys
from datetime import datetime
current_dir = os.path.dirname(__file__)
parent_dir = os.path.abspath(os.path.join(current_dir, '..'))
sys.path.append(parent_dir)
from data_structs import Measurement, Sensor, MarkerTemplate
from data_structs import Measurement, Sensor, MarkerTemplate, DateAndTime
from flask import json
# get_markers parses a list of MarkerTemplate objects to json, and returns either a successfully
......@@ -15,12 +14,16 @@ def get_markers():
sensor1 = Sensor(ID=1, type="Type1", active=True)
sensor2 = Sensor(ID=2, type="Type2", active=False)
measurement1 = Measurement(longitude=10.9771, latitude=60.7066, datetime=datetime(2023, 12, 31, 15, 43, 2),
sensor=sensor1, precipitation=0.0, thickness=0.0, max_weight=0.0, safety_level=0.0, accuracy=2.5),
measurement2 = Measurement(longitude=10.8171, latitude=60.6366, datetime=datetime(2024, 1, 7, 23, 59, 59),
sensor=sensor2, precipitation=0.0, thickness=0.0, max_weight=0.0, safety_level=0.0, accuracy=1.5),
measurement3 = Measurement(longitude=10.8471, latitude=60.7366, datetime=datetime(2024, 2, 3, 12, 00, 19),
sensor=sensor1, precipitation=0.0, thickness=0.0, max_weight=0.0, safety_level=0.0, accuracy=4.0),
datetime1 = DateAndTime(2023, 12, 31, 15, 43)
datetime2 = DateAndTime(2024, 1, 15, 12, 2)
datetime3 = DateAndTime(2024, 1, 31, 18, 10)
measurement1 = Measurement(longitude=10.9771, latitude=60.7066, datetime=datetime1, sensor=sensor1,
precipitation=0.0, thickness=0.0, max_weight=0.0, safety_level=0.0, accuracy=2.5)
measurement2 = Measurement(longitude=10.8171, latitude=60.6366, datetime=datetime2, sensor=sensor2,
precipitation=0.0, thickness=0.0, max_weight=0.0, safety_level=0.0, accuracy=1.5)
measurement3 = Measurement(longitude=10.8471, latitude=60.7366, datetime=datetime3, sensor=sensor1,
precipitation=0.0, thickness=0.0, max_weight=0.0, safety_level=0.0, accuracy=4.0)
testData = [
MarkerTemplate(measurement1, 30.0-measurement1.accuracy, "Green"),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment