diff --git a/main.py b/main.py index d5eec17..4d4ff40 100644 --- a/main.py +++ b/main.py @@ -7,6 +7,7 @@ from meshview import database from meshview import store from meshview import web from meshview import http +from meshview import models async def load_database_from_mqtt(mqtt_server: str , mqtt_port: int, topic: list, mqtt_user: str | None = None, mqtt_passwd: str | None = None): @@ -25,6 +26,17 @@ async def main(config): if config["mqtt"]["password"] != "": mqtt_passwd: str = config["mqtt"]["password"] mqtt_topics = json.loads(config["mqtt"]["topics"]) + + # Create database with site configuration + async with database.async_session() as session: + site_config = models.SiteConfig( + site_domain = config["site"]["domain"], + site_title = config["site"]["title"], + site_message = config["site"]["message"] + ) + + session.add(site_config) + # print("Site configuration loaded to database") async with asyncio.TaskGroup() as tg: tg.create_task( @@ -55,6 +67,7 @@ def load_config(file_path): return config + if __name__ == '__main__': parser = argparse.ArgumentParser("meshview") parser.add_argument("--config", help="Path to the configuration file.", default="config.ini") diff --git a/meshview/models.py b/meshview/models.py index 569943c..cb69a89 100644 --- a/meshview/models.py +++ b/meshview/models.py @@ -70,3 +70,9 @@ class Traceroute(Base): route: Mapped[bytes] = mapped_column(nullable=True) import_time: Mapped[datetime] = mapped_column(nullable=True) +class SiteConfig(Base): + __tablename__="site_config" + id: Mapped[int] = mapped_column(primary_key=True) + site_domain: Mapped[str] = mapped_column(nullable=False) + site_title: Mapped[str] = mapped_column(nullable=False) + site_message: Mapped[str] = mapped_column(nullable=True) diff --git a/meshview/store.py b/meshview/store.py index 11ac260..307afe2 100644 --- a/meshview/store.py +++ b/meshview/store.py @@ -8,7 +8,7 @@ from meshtastic.protobuf.portnums_pb2 import PortNum from meshtastic.protobuf.mesh_pb2 import User, HardwareModel from meshview import database from meshview import decode_payload -from meshview.models import Packet, PacketSeen, Node, Traceroute +from meshview.models import Packet, PacketSeen, Node, Traceroute, SiteConfig from meshview import notify @@ -556,4 +556,10 @@ async def get_nodes(role=None, channel=None, hw_model=None): return [] # Return an empty list in case of failure - +async def get_site_config(): + async with database.async_session() as session: + query = select(SiteConfig) + result = await session.execute(query) + site_config = result.scalars().all()[-1] + + return site_config \ No newline at end of file diff --git a/meshview/templates/base.html b/meshview/templates/base.html index c21c916..4536736 100644 --- a/meshview/templates/base.html +++ b/meshview/templates/base.html @@ -33,7 +33,8 @@
-