From 9cfadd69f6213c4bbe4dc2dffad5a591f4780e32 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Fri, 28 Apr 2023 18:46:31 +0200
Subject: [PATCH] fixed imports (use module name)

---
 {src => dashboard_leaf}/DashboardLeaf.py        |  12 ++++++------
 {src => dashboard_leaf}/__init__.py             |   0
 {src => dashboard_leaf}/blueprints/Routes.py    |   0
 {src => dashboard_leaf}/blueprints/__init__.py  |   0
 {src => dashboard_leaf}/logic/Constants.py      |   0
 {src => dashboard_leaf}/logic/Helpers.py        |   2 +-
 {src => dashboard_leaf}/logic/Registry.py       |   2 +-
 {src => dashboard_leaf}/logic/__init__.py       |   0
 {src => dashboard_leaf}/logic/display/Image.py  |   0
 .../logic/display/__init__.py                   |   0
 .../logic/page/PageInstance.py                  |   0
 .../logic/page/PageManager.py                   |   8 ++++----
 {src => dashboard_leaf}/logic/page/__init__.py  |   0
 .../logic/service/ServiceManager.py             |   4 ++--
 .../logic/service/ServiceRegistry.py            |   4 ++--
 .../logic/service/__init__.py                   |   0
 .../logic/service/services/IcsService.py        |   0
 .../logic/service/services/JsonService.py       |   0
 .../service/services/StorageLeafService.py      |   2 +-
 .../logic/service/services/WeatherService.py    |   0
 .../logic/service/services/__init__.py          |   0
 {src => dashboard_leaf}/logic/tile/Tile.py      |   0
 .../logic/tile/TileRegistry.py                  |   6 +++---
 .../logic/tile/TileScheduler.py                 |   4 ++--
 {src => dashboard_leaf}/logic/tile/__init__.py  |   0
 .../logic/tile/tiles/BoardGameTile.html         |   0
 .../logic/tile/tiles/BoardGameTile.py           |   4 ++--
 .../logic/tile/tiles/ClockTile.html             |   0
 .../logic/tile/tiles/ClockTile.py               |   2 +-
 .../logic/tile/tiles/CurrentWeatherTile.html    |   0
 .../logic/tile/tiles/CurrentWeatherTile.py      |   6 +++---
 .../tiles/GarbageContainerScheduleTile.html     |   0
 .../tile/tiles/GarbageContainerScheduleTile.py  |   8 ++++----
 .../logic/tile/tiles/HourlyForecastTile.html    |   0
 .../logic/tile/tiles/HourlyForecastTile.py      |   7 +++----
 .../logic/tile/tiles/SensorLineChartTile.html   |   0
 .../logic/tile/tiles/SensorLineChartTile.py     |   6 +++---
 .../logic/tile/tiles/SevenDaysForecastTile.html |   0
 .../logic/tile/tiles/SevenDaysForecastTile.py   |   6 +++---
 .../logic/tile/tiles/SimpleSensorValueTile.html |   0
 .../logic/tile/tiles/SimpleSensorValueTile.py   |   4 ++--
 .../logic/tile/tiles/__init__.py                |   0
 .../static/css/libs/gridstack.min.css           |   0
 .../static/css/libs/weather-icons-wind.min.css  |   0
 .../static/css/libs/weather-icons.min.css       |   0
 {src => dashboard_leaf}/static/css/main.css     |   0
 {src => dashboard_leaf}/static/favicon.ico      | Bin
 .../static/fonts/Roboto-Bold-webfont.ttf        | Bin
 .../static/fonts/Roboto-Bold-webfont.woff       | Bin
 .../static/fonts/Roboto-Regular-webfont.ttf     | Bin
 .../static/fonts/Roboto-Regular-webfont.woff    | Bin
 .../fonts/weathericons-regular-webfont.eot      | Bin
 .../fonts/weathericons-regular-webfont.svg      |   0
 .../fonts/weathericons-regular-webfont.ttf      | Bin
 .../fonts/weathericons-regular-webfont.woff     | Bin
 .../fonts/weathericons-regular-webfont.woff2    | Bin
 .../static/images/garbage_bio.png               | Bin
 .../static/images/garbage_paper.png             | Bin
 .../static/images/garbage_plastic.png           | Bin
 .../static/images/garbage_waste.png             | Bin
 .../static/js/libs/gridstack.min.js             |   0
 .../static/js/libs/plotly.locale.de.min.js      |   0
 .../static/js/libs/plotly.min.js                |   0
 .../static/js/libs/socket.io.min.js             |   0
 {src => dashboard_leaf}/static/js/main.js       |   0
 {src => dashboard_leaf}/static/touch_icon.png   | Bin
 {src => dashboard_leaf}/templates/index.html    |   0
 {src => dashboard_leaf}/templates/macros.html   |   0
 {src => dashboard_leaf}/templates/page.html     |   0
 {src => dashboard_leaf}/version.json            |   0
 test/__init__.py                                |   0
 test/logic/TestHelpers.py                       |   2 +-
 test/logic/__init__.py                          |   0
 test/logic/tile/__init__.py                     |   0
 .../tiles/TestGarbageContainerScheduleTile.py   |  16 ++++++++--------
 .../logic/tile/tiles/TestSensorLineChartTile.py |  16 ++++++++--------
 test/logic/tile/tiles/__init__.py               |   0
 77 files changed, 60 insertions(+), 61 deletions(-)
 rename {src => dashboard_leaf}/DashboardLeaf.py (84%)
 rename {src => dashboard_leaf}/__init__.py (100%)
 rename {src => dashboard_leaf}/blueprints/Routes.py (100%)
 rename {src => dashboard_leaf}/blueprints/__init__.py (100%)
 rename {src => dashboard_leaf}/logic/Constants.py (100%)
 rename {src => dashboard_leaf}/logic/Helpers.py (98%)
 rename {src => dashboard_leaf}/logic/Registry.py (97%)
 rename {src => dashboard_leaf}/logic/__init__.py (100%)
 rename {src => dashboard_leaf}/logic/display/Image.py (100%)
 rename {src => dashboard_leaf}/logic/display/__init__.py (100%)
 rename {src => dashboard_leaf}/logic/page/PageInstance.py (100%)
 rename {src => dashboard_leaf}/logic/page/PageManager.py (93%)
 rename {src => dashboard_leaf}/logic/page/__init__.py (100%)
 rename {src => dashboard_leaf}/logic/service/ServiceManager.py (92%)
 rename {src => dashboard_leaf}/logic/service/ServiceRegistry.py (90%)
 rename {src => dashboard_leaf}/logic/service/__init__.py (100%)
 rename {src => dashboard_leaf}/logic/service/services/IcsService.py (100%)
 rename {src => dashboard_leaf}/logic/service/services/JsonService.py (100%)
 rename {src => dashboard_leaf}/logic/service/services/StorageLeafService.py (98%)
 rename {src => dashboard_leaf}/logic/service/services/WeatherService.py (100%)
 rename {src => dashboard_leaf}/logic/service/services/__init__.py (100%)
 rename {src => dashboard_leaf}/logic/tile/Tile.py (100%)
 rename {src => dashboard_leaf}/logic/tile/TileRegistry.py (89%)
 rename {src => dashboard_leaf}/logic/tile/TileScheduler.py (97%)
 rename {src => dashboard_leaf}/logic/tile/__init__.py (100%)
 rename {src => dashboard_leaf}/logic/tile/tiles/BoardGameTile.html (100%)
 rename {src => dashboard_leaf}/logic/tile/tiles/BoardGameTile.py (94%)
 rename {src => dashboard_leaf}/logic/tile/tiles/ClockTile.html (100%)
 rename {src => dashboard_leaf}/logic/tile/tiles/ClockTile.py (94%)
 rename {src => dashboard_leaf}/logic/tile/tiles/CurrentWeatherTile.html (100%)
 rename {src => dashboard_leaf}/logic/tile/tiles/CurrentWeatherTile.py (94%)
 rename {src => dashboard_leaf}/logic/tile/tiles/GarbageContainerScheduleTile.html (100%)
 rename {src => dashboard_leaf}/logic/tile/tiles/GarbageContainerScheduleTile.py (94%)
 rename {src => dashboard_leaf}/logic/tile/tiles/HourlyForecastTile.html (100%)
 rename {src => dashboard_leaf}/logic/tile/tiles/HourlyForecastTile.py (94%)
 rename {src => dashboard_leaf}/logic/tile/tiles/SensorLineChartTile.html (100%)
 rename {src => dashboard_leaf}/logic/tile/tiles/SensorLineChartTile.py (98%)
 rename {src => dashboard_leaf}/logic/tile/tiles/SevenDaysForecastTile.html (100%)
 rename {src => dashboard_leaf}/logic/tile/tiles/SevenDaysForecastTile.py (93%)
 rename {src => dashboard_leaf}/logic/tile/tiles/SimpleSensorValueTile.html (100%)
 rename {src => dashboard_leaf}/logic/tile/tiles/SimpleSensorValueTile.py (90%)
 rename {src => dashboard_leaf}/logic/tile/tiles/__init__.py (100%)
 rename {src => dashboard_leaf}/static/css/libs/gridstack.min.css (100%)
 rename {src => dashboard_leaf}/static/css/libs/weather-icons-wind.min.css (100%)
 rename {src => dashboard_leaf}/static/css/libs/weather-icons.min.css (100%)
 rename {src => dashboard_leaf}/static/css/main.css (100%)
 rename {src => dashboard_leaf}/static/favicon.ico (100%)
 rename {src => dashboard_leaf}/static/fonts/Roboto-Bold-webfont.ttf (100%)
 rename {src => dashboard_leaf}/static/fonts/Roboto-Bold-webfont.woff (100%)
 rename {src => dashboard_leaf}/static/fonts/Roboto-Regular-webfont.ttf (100%)
 rename {src => dashboard_leaf}/static/fonts/Roboto-Regular-webfont.woff (100%)
 rename {src => dashboard_leaf}/static/fonts/weathericons-regular-webfont.eot (100%)
 rename {src => dashboard_leaf}/static/fonts/weathericons-regular-webfont.svg (100%)
 rename {src => dashboard_leaf}/static/fonts/weathericons-regular-webfont.ttf (100%)
 rename {src => dashboard_leaf}/static/fonts/weathericons-regular-webfont.woff (100%)
 rename {src => dashboard_leaf}/static/fonts/weathericons-regular-webfont.woff2 (100%)
 rename {src => dashboard_leaf}/static/images/garbage_bio.png (100%)
 rename {src => dashboard_leaf}/static/images/garbage_paper.png (100%)
 rename {src => dashboard_leaf}/static/images/garbage_plastic.png (100%)
 rename {src => dashboard_leaf}/static/images/garbage_waste.png (100%)
 rename {src => dashboard_leaf}/static/js/libs/gridstack.min.js (100%)
 rename {src => dashboard_leaf}/static/js/libs/plotly.locale.de.min.js (100%)
 rename {src => dashboard_leaf}/static/js/libs/plotly.min.js (100%)
 rename {src => dashboard_leaf}/static/js/libs/socket.io.min.js (100%)
 rename {src => dashboard_leaf}/static/js/main.js (100%)
 rename {src => dashboard_leaf}/static/touch_icon.png (100%)
 rename {src => dashboard_leaf}/templates/index.html (100%)
 rename {src => dashboard_leaf}/templates/macros.html (100%)
 rename {src => dashboard_leaf}/templates/page.html (100%)
 rename {src => dashboard_leaf}/version.json (100%)
 create mode 100644 test/__init__.py
 create mode 100644 test/logic/__init__.py
 create mode 100644 test/logic/tile/__init__.py
 create mode 100644 test/logic/tile/tiles/__init__.py

diff --git a/src/DashboardLeaf.py b/dashboard_leaf/DashboardLeaf.py
similarity index 84%
rename from src/DashboardLeaf.py
rename to dashboard_leaf/DashboardLeaf.py
index 0da8f58..ac2aecb 100644
--- a/src/DashboardLeaf.py
+++ b/dashboard_leaf/DashboardLeaf.py
@@ -5,12 +5,12 @@ from TheCodeLabs_FlaskUtils.FlaskBaseApp import FlaskBaseApp
 from flask import Flask
 from flask_socketio import SocketIO
 
-from blueprints import Routes
-from logic import Constants
-from logic.Constants import CONFIG_DIR
-from logic.page.PageManager import PageManager
-from logic.service.ServiceRegistry import ServiceRegistry
-from logic.tile.TileScheduler import TileScheduler
+from dashboard_leaf.blueprints import Routes
+from dashboard_leaf.logic import Constants
+from dashboard_leaf.logic.Constants import CONFIG_DIR
+from dashboard_leaf.logic.page.PageManager import PageManager
+from dashboard_leaf.logic.service.ServiceRegistry import ServiceRegistry
+from dashboard_leaf.logic.tile.TileScheduler import TileScheduler
 
 LOGGER = DefaultLogger().create_logger_if_not_exists(Constants.APP_NAME)
 
diff --git a/src/__init__.py b/dashboard_leaf/__init__.py
similarity index 100%
rename from src/__init__.py
rename to dashboard_leaf/__init__.py
diff --git a/src/blueprints/Routes.py b/dashboard_leaf/blueprints/Routes.py
similarity index 100%
rename from src/blueprints/Routes.py
rename to dashboard_leaf/blueprints/Routes.py
diff --git a/src/blueprints/__init__.py b/dashboard_leaf/blueprints/__init__.py
similarity index 100%
rename from src/blueprints/__init__.py
rename to dashboard_leaf/blueprints/__init__.py
diff --git a/src/logic/Constants.py b/dashboard_leaf/logic/Constants.py
similarity index 100%
rename from src/logic/Constants.py
rename to dashboard_leaf/logic/Constants.py
diff --git a/src/logic/Helpers.py b/dashboard_leaf/logic/Helpers.py
similarity index 98%
rename from src/logic/Helpers.py
rename to dashboard_leaf/logic/Helpers.py
index f5a1010..c55346d 100644
--- a/src/logic/Helpers.py
+++ b/dashboard_leaf/logic/Helpers.py
@@ -4,7 +4,7 @@ from datetime import datetime
 import pytz
 import requests
 
-from logic import Constants
+from dashboard_leaf.logic import Constants
 
 
 def join_url_parts(*args: str) -> str:
diff --git a/src/logic/Registry.py b/dashboard_leaf/logic/Registry.py
similarity index 97%
rename from src/logic/Registry.py
rename to dashboard_leaf/logic/Registry.py
index 1eadd4f..26985b4 100644
--- a/src/logic/Registry.py
+++ b/dashboard_leaf/logic/Registry.py
@@ -4,7 +4,7 @@ import pkgutil
 from abc import ABC, abstractmethod
 from typing import List, Type
 
-from logic import Constants
+from dashboard_leaf.logic import Constants
 
 LOGGER = logging.getLogger(Constants.APP_NAME)
 
diff --git a/src/logic/__init__.py b/dashboard_leaf/logic/__init__.py
similarity index 100%
rename from src/logic/__init__.py
rename to dashboard_leaf/logic/__init__.py
diff --git a/src/logic/display/Image.py b/dashboard_leaf/logic/display/Image.py
similarity index 100%
rename from src/logic/display/Image.py
rename to dashboard_leaf/logic/display/Image.py
diff --git a/src/logic/display/__init__.py b/dashboard_leaf/logic/display/__init__.py
similarity index 100%
rename from src/logic/display/__init__.py
rename to dashboard_leaf/logic/display/__init__.py
diff --git a/src/logic/page/PageInstance.py b/dashboard_leaf/logic/page/PageInstance.py
similarity index 100%
rename from src/logic/page/PageInstance.py
rename to dashboard_leaf/logic/page/PageInstance.py
diff --git a/src/logic/page/PageManager.py b/dashboard_leaf/logic/page/PageManager.py
similarity index 93%
rename from src/logic/page/PageManager.py
rename to dashboard_leaf/logic/page/PageManager.py
index 4af1120..ae76916 100644
--- a/src/logic/page/PageManager.py
+++ b/dashboard_leaf/logic/page/PageManager.py
@@ -5,10 +5,10 @@ from typing import List, Dict
 
 from flask import Flask
 
-from logic import Constants
-from logic.page.PageInstance import PageInstance, TileLayoutSettings
-from logic.tile import TileScheduler
-from logic.tile.TileRegistry import TileRegistry
+from dashboard_leaf.logic import Constants
+from dashboard_leaf.logic.page.PageInstance import PageInstance, TileLayoutSettings
+from dashboard_leaf.logic.tile import TileScheduler
+from dashboard_leaf.logic.tile.TileRegistry import TileRegistry
 
 LOGGER = logging.getLogger(Constants.APP_NAME)
 
diff --git a/src/logic/page/__init__.py b/dashboard_leaf/logic/page/__init__.py
similarity index 100%
rename from src/logic/page/__init__.py
rename to dashboard_leaf/logic/page/__init__.py
diff --git a/src/logic/service/ServiceManager.py b/dashboard_leaf/logic/service/ServiceManager.py
similarity index 92%
rename from src/logic/service/ServiceManager.py
rename to dashboard_leaf/logic/service/ServiceManager.py
index 7652386..1a27477 100644
--- a/src/logic/service/ServiceManager.py
+++ b/dashboard_leaf/logic/service/ServiceManager.py
@@ -5,8 +5,8 @@ from typing import List, Dict
 
 from TheCodeLabs_BaseUtils.MultiCacheKeyService import MultiCacheKeyService
 
-from logic import Constants
-from logic.service.ServiceRegistry import ServiceRegistry
+from dashboard_leaf.logic import Constants
+from dashboard_leaf.logic.service.ServiceRegistry import ServiceRegistry
 
 LOGGER = logging.getLogger(Constants.APP_NAME)
 
diff --git a/src/logic/service/ServiceRegistry.py b/dashboard_leaf/logic/service/ServiceRegistry.py
similarity index 90%
rename from src/logic/service/ServiceRegistry.py
rename to dashboard_leaf/logic/service/ServiceRegistry.py
index 21e9d44..86e536b 100644
--- a/src/logic/service/ServiceRegistry.py
+++ b/dashboard_leaf/logic/service/ServiceRegistry.py
@@ -5,8 +5,8 @@ from typing import Type
 
 from TheCodeLabs_BaseUtils.MultiCacheKeyService import MultiCacheKeyService
 
-from logic import Constants
-from logic.Registry import Registry
+from dashboard_leaf.logic import Constants
+from dashboard_leaf.logic.Registry import Registry
 
 LOGGER = logging.getLogger(Constants.APP_NAME)
 
diff --git a/src/logic/service/__init__.py b/dashboard_leaf/logic/service/__init__.py
similarity index 100%
rename from src/logic/service/__init__.py
rename to dashboard_leaf/logic/service/__init__.py
diff --git a/src/logic/service/services/IcsService.py b/dashboard_leaf/logic/service/services/IcsService.py
similarity index 100%
rename from src/logic/service/services/IcsService.py
rename to dashboard_leaf/logic/service/services/IcsService.py
diff --git a/src/logic/service/services/JsonService.py b/dashboard_leaf/logic/service/services/JsonService.py
similarity index 100%
rename from src/logic/service/services/JsonService.py
rename to dashboard_leaf/logic/service/services/JsonService.py
diff --git a/src/logic/service/services/StorageLeafService.py b/dashboard_leaf/logic/service/services/StorageLeafService.py
similarity index 98%
rename from src/logic/service/services/StorageLeafService.py
rename to dashboard_leaf/logic/service/services/StorageLeafService.py
index feb537f..7369250 100644
--- a/src/logic/service/services/StorageLeafService.py
+++ b/dashboard_leaf/logic/service/services/StorageLeafService.py
@@ -4,7 +4,7 @@ from typing import Dict
 import requests
 from TheCodeLabs_BaseUtils.MultiCacheKeyService import MultiCacheKeyService
 
-from logic import Helpers
+from dashboard_leaf.logic import Helpers
 
 
 class StorageLeafService(MultiCacheKeyService):
diff --git a/src/logic/service/services/WeatherService.py b/dashboard_leaf/logic/service/services/WeatherService.py
similarity index 100%
rename from src/logic/service/services/WeatherService.py
rename to dashboard_leaf/logic/service/services/WeatherService.py
diff --git a/src/logic/service/services/__init__.py b/dashboard_leaf/logic/service/services/__init__.py
similarity index 100%
rename from src/logic/service/services/__init__.py
rename to dashboard_leaf/logic/service/services/__init__.py
diff --git a/src/logic/tile/Tile.py b/dashboard_leaf/logic/tile/Tile.py
similarity index 100%
rename from src/logic/tile/Tile.py
rename to dashboard_leaf/logic/tile/Tile.py
diff --git a/src/logic/tile/TileRegistry.py b/dashboard_leaf/logic/tile/TileRegistry.py
similarity index 89%
rename from src/logic/tile/TileRegistry.py
rename to dashboard_leaf/logic/tile/TileRegistry.py
index c043d4e..845df43 100644
--- a/src/logic/tile/TileRegistry.py
+++ b/dashboard_leaf/logic/tile/TileRegistry.py
@@ -3,9 +3,9 @@ from __future__ import annotations
 import logging
 from typing import Type
 
-from logic import Constants
-from logic.Registry import Registry
-from logic.tile.Tile import Tile
+from dashboard_leaf.logic import Constants
+from dashboard_leaf.logic.Registry import Registry
+from dashboard_leaf.logic.tile.Tile import Tile
 
 LOGGER = logging.getLogger(Constants.APP_NAME)
 
diff --git a/src/logic/tile/TileScheduler.py b/dashboard_leaf/logic/tile/TileScheduler.py
similarity index 97%
rename from src/logic/tile/TileScheduler.py
rename to dashboard_leaf/logic/tile/TileScheduler.py
index 0474da5..6341104 100644
--- a/src/logic/tile/TileScheduler.py
+++ b/dashboard_leaf/logic/tile/TileScheduler.py
@@ -7,8 +7,8 @@ from apscheduler.events import EVENT_JOB_EXECUTED, EVENT_JOB_ERROR
 from apscheduler.job import Job
 from apscheduler.schedulers.gevent import GeventScheduler
 
-from logic import Constants
-from logic.tile.Tile import Tile
+from dashboard_leaf.logic import Constants
+from dashboard_leaf.logic.tile.Tile import Tile
 
 LOGGER = logging.getLogger(Constants.APP_NAME)
 
diff --git a/src/logic/tile/__init__.py b/dashboard_leaf/logic/tile/__init__.py
similarity index 100%
rename from src/logic/tile/__init__.py
rename to dashboard_leaf/logic/tile/__init__.py
diff --git a/src/logic/tile/tiles/BoardGameTile.html b/dashboard_leaf/logic/tile/tiles/BoardGameTile.html
similarity index 100%
rename from src/logic/tile/tiles/BoardGameTile.html
rename to dashboard_leaf/logic/tile/tiles/BoardGameTile.html
diff --git a/src/logic/tile/tiles/BoardGameTile.py b/dashboard_leaf/logic/tile/tiles/BoardGameTile.py
similarity index 94%
rename from src/logic/tile/tiles/BoardGameTile.py
rename to dashboard_leaf/logic/tile/tiles/BoardGameTile.py
index b889949..f3ba034 100644
--- a/src/logic/tile/tiles/BoardGameTile.py
+++ b/dashboard_leaf/logic/tile/tiles/BoardGameTile.py
@@ -4,8 +4,8 @@ from typing import Dict
 
 from flask import Blueprint
 
-from logic.service.ServiceManager import ServiceManager
-from logic.tile.Tile import Tile
+from dashboard_leaf.logic.service.ServiceManager import ServiceManager
+from dashboard_leaf.logic.tile.Tile import Tile
 
 
 class BoardGameTile(Tile):
diff --git a/src/logic/tile/tiles/ClockTile.html b/dashboard_leaf/logic/tile/tiles/ClockTile.html
similarity index 100%
rename from src/logic/tile/tiles/ClockTile.html
rename to dashboard_leaf/logic/tile/tiles/ClockTile.html
diff --git a/src/logic/tile/tiles/ClockTile.py b/dashboard_leaf/logic/tile/tiles/ClockTile.py
similarity index 94%
rename from src/logic/tile/tiles/ClockTile.py
rename to dashboard_leaf/logic/tile/tiles/ClockTile.py
index a08534b..0e37395 100644
--- a/src/logic/tile/tiles/ClockTile.py
+++ b/dashboard_leaf/logic/tile/tiles/ClockTile.py
@@ -4,7 +4,7 @@ from typing import Dict
 
 from flask import Blueprint
 
-from logic.tile.Tile import Tile
+from dashboard_leaf.logic.tile.Tile import Tile
 
 
 class ClockTile(Tile):
diff --git a/src/logic/tile/tiles/CurrentWeatherTile.html b/dashboard_leaf/logic/tile/tiles/CurrentWeatherTile.html
similarity index 100%
rename from src/logic/tile/tiles/CurrentWeatherTile.html
rename to dashboard_leaf/logic/tile/tiles/CurrentWeatherTile.html
diff --git a/src/logic/tile/tiles/CurrentWeatherTile.py b/dashboard_leaf/logic/tile/tiles/CurrentWeatherTile.py
similarity index 94%
rename from src/logic/tile/tiles/CurrentWeatherTile.py
rename to dashboard_leaf/logic/tile/tiles/CurrentWeatherTile.py
index 162aec6..9b5036c 100644
--- a/src/logic/tile/tiles/CurrentWeatherTile.py
+++ b/dashboard_leaf/logic/tile/tiles/CurrentWeatherTile.py
@@ -5,9 +5,9 @@ from typing import Dict
 import pytz
 from flask import Blueprint
 
-from logic import Helpers
-from logic.service.ServiceManager import ServiceManager
-from logic.tile.Tile import Tile
+from dashboard_leaf.logic import Helpers
+from dashboard_leaf.logic.service.ServiceManager import ServiceManager
+from dashboard_leaf.logic.tile.Tile import Tile
 
 
 class CurrentWeatherTile(Tile):
diff --git a/src/logic/tile/tiles/GarbageContainerScheduleTile.html b/dashboard_leaf/logic/tile/tiles/GarbageContainerScheduleTile.html
similarity index 100%
rename from src/logic/tile/tiles/GarbageContainerScheduleTile.html
rename to dashboard_leaf/logic/tile/tiles/GarbageContainerScheduleTile.html
diff --git a/src/logic/tile/tiles/GarbageContainerScheduleTile.py b/dashboard_leaf/logic/tile/tiles/GarbageContainerScheduleTile.py
similarity index 94%
rename from src/logic/tile/tiles/GarbageContainerScheduleTile.py
rename to dashboard_leaf/logic/tile/tiles/GarbageContainerScheduleTile.py
index 9f086a6..d2e3ce2 100644
--- a/src/logic/tile/tiles/GarbageContainerScheduleTile.py
+++ b/dashboard_leaf/logic/tile/tiles/GarbageContainerScheduleTile.py
@@ -5,10 +5,10 @@ from typing import Dict, List
 from flask import Blueprint
 from babel.dates import format_date
 
-from logic import Helpers
-from logic.service.ServiceManager import ServiceManager
-from logic.service.services.IcsService import CalendarEvent
-from logic.tile.Tile import Tile
+from dashboard_leaf.logic import Helpers
+from dashboard_leaf.logic.service.ServiceManager import ServiceManager
+from dashboard_leaf.logic.service.services.IcsService import CalendarEvent
+from dashboard_leaf.logic.tile.Tile import Tile
 
 
 class GarbageContainerScheduleTile(Tile):
diff --git a/src/logic/tile/tiles/HourlyForecastTile.html b/dashboard_leaf/logic/tile/tiles/HourlyForecastTile.html
similarity index 100%
rename from src/logic/tile/tiles/HourlyForecastTile.html
rename to dashboard_leaf/logic/tile/tiles/HourlyForecastTile.html
diff --git a/src/logic/tile/tiles/HourlyForecastTile.py b/dashboard_leaf/logic/tile/tiles/HourlyForecastTile.py
similarity index 94%
rename from src/logic/tile/tiles/HourlyForecastTile.py
rename to dashboard_leaf/logic/tile/tiles/HourlyForecastTile.py
index 864e6a7..2736ae4 100644
--- a/src/logic/tile/tiles/HourlyForecastTile.py
+++ b/dashboard_leaf/logic/tile/tiles/HourlyForecastTile.py
@@ -1,13 +1,12 @@
 import os
-from datetime import datetime
 from typing import Dict
 
 import pytz
 from flask import Blueprint
 
-from logic import Helpers
-from logic.service.ServiceManager import ServiceManager
-from logic.tile.Tile import Tile
+from dashboard_leaf.logic import Helpers
+from dashboard_leaf.logic.service.ServiceManager import ServiceManager
+from dashboard_leaf.logic.tile.Tile import Tile
 
 
 class HourlyForecastTile(Tile):
diff --git a/src/logic/tile/tiles/SensorLineChartTile.html b/dashboard_leaf/logic/tile/tiles/SensorLineChartTile.html
similarity index 100%
rename from src/logic/tile/tiles/SensorLineChartTile.html
rename to dashboard_leaf/logic/tile/tiles/SensorLineChartTile.html
diff --git a/src/logic/tile/tiles/SensorLineChartTile.py b/dashboard_leaf/logic/tile/tiles/SensorLineChartTile.py
similarity index 98%
rename from src/logic/tile/tiles/SensorLineChartTile.py
rename to dashboard_leaf/logic/tile/tiles/SensorLineChartTile.py
index 68845aa..3fe88e7 100644
--- a/src/logic/tile/tiles/SensorLineChartTile.py
+++ b/dashboard_leaf/logic/tile/tiles/SensorLineChartTile.py
@@ -9,9 +9,9 @@ from timeago import format
 from TheCodeLabs_BaseUtils.MultiCacheKeyService import MultiCacheKeyService
 from flask import Blueprint
 
-from logic import Constants, Helpers
-from logic.service.ServiceManager import ServiceManager
-from logic.tile.Tile import Tile
+from dashboard_leaf.logic import Constants, Helpers
+from dashboard_leaf.logic.service.ServiceManager import ServiceManager
+from dashboard_leaf.logic.tile.Tile import Tile
 
 LOGGER = logging.getLogger(Constants.APP_NAME)
 
diff --git a/src/logic/tile/tiles/SevenDaysForecastTile.html b/dashboard_leaf/logic/tile/tiles/SevenDaysForecastTile.html
similarity index 100%
rename from src/logic/tile/tiles/SevenDaysForecastTile.html
rename to dashboard_leaf/logic/tile/tiles/SevenDaysForecastTile.html
diff --git a/src/logic/tile/tiles/SevenDaysForecastTile.py b/dashboard_leaf/logic/tile/tiles/SevenDaysForecastTile.py
similarity index 93%
rename from src/logic/tile/tiles/SevenDaysForecastTile.py
rename to dashboard_leaf/logic/tile/tiles/SevenDaysForecastTile.py
index 07060c6..0e59fab 100644
--- a/src/logic/tile/tiles/SevenDaysForecastTile.py
+++ b/dashboard_leaf/logic/tile/tiles/SevenDaysForecastTile.py
@@ -5,9 +5,9 @@ from typing import Dict
 
 from flask import Blueprint
 
-from logic import Helpers
-from logic.service.ServiceManager import ServiceManager
-from logic.tile.Tile import Tile
+from dashboard_leaf.logic import Helpers
+from dashboard_leaf.logic.service.ServiceManager import ServiceManager
+from dashboard_leaf.logic.tile.Tile import Tile
 
 
 class SevenDaysForecastTile(Tile):
diff --git a/src/logic/tile/tiles/SimpleSensorValueTile.html b/dashboard_leaf/logic/tile/tiles/SimpleSensorValueTile.html
similarity index 100%
rename from src/logic/tile/tiles/SimpleSensorValueTile.html
rename to dashboard_leaf/logic/tile/tiles/SimpleSensorValueTile.html
diff --git a/src/logic/tile/tiles/SimpleSensorValueTile.py b/dashboard_leaf/logic/tile/tiles/SimpleSensorValueTile.py
similarity index 90%
rename from src/logic/tile/tiles/SimpleSensorValueTile.py
rename to dashboard_leaf/logic/tile/tiles/SimpleSensorValueTile.py
index 3d23211..6b8d600 100644
--- a/src/logic/tile/tiles/SimpleSensorValueTile.py
+++ b/dashboard_leaf/logic/tile/tiles/SimpleSensorValueTile.py
@@ -3,8 +3,8 @@ from typing import Dict
 
 from flask import Blueprint
 
-from logic.service.ServiceManager import ServiceManager
-from logic.tile.Tile import Tile
+from dashboard_leaf.logic.service.ServiceManager import ServiceManager
+from dashboard_leaf.logic.tile.Tile import Tile
 
 
 class SimpleSensorValueTile(Tile):
diff --git a/src/logic/tile/tiles/__init__.py b/dashboard_leaf/logic/tile/tiles/__init__.py
similarity index 100%
rename from src/logic/tile/tiles/__init__.py
rename to dashboard_leaf/logic/tile/tiles/__init__.py
diff --git a/src/static/css/libs/gridstack.min.css b/dashboard_leaf/static/css/libs/gridstack.min.css
similarity index 100%
rename from src/static/css/libs/gridstack.min.css
rename to dashboard_leaf/static/css/libs/gridstack.min.css
diff --git a/src/static/css/libs/weather-icons-wind.min.css b/dashboard_leaf/static/css/libs/weather-icons-wind.min.css
similarity index 100%
rename from src/static/css/libs/weather-icons-wind.min.css
rename to dashboard_leaf/static/css/libs/weather-icons-wind.min.css
diff --git a/src/static/css/libs/weather-icons.min.css b/dashboard_leaf/static/css/libs/weather-icons.min.css
similarity index 100%
rename from src/static/css/libs/weather-icons.min.css
rename to dashboard_leaf/static/css/libs/weather-icons.min.css
diff --git a/src/static/css/main.css b/dashboard_leaf/static/css/main.css
similarity index 100%
rename from src/static/css/main.css
rename to dashboard_leaf/static/css/main.css
diff --git a/src/static/favicon.ico b/dashboard_leaf/static/favicon.ico
similarity index 100%
rename from src/static/favicon.ico
rename to dashboard_leaf/static/favicon.ico
diff --git a/src/static/fonts/Roboto-Bold-webfont.ttf b/dashboard_leaf/static/fonts/Roboto-Bold-webfont.ttf
similarity index 100%
rename from src/static/fonts/Roboto-Bold-webfont.ttf
rename to dashboard_leaf/static/fonts/Roboto-Bold-webfont.ttf
diff --git a/src/static/fonts/Roboto-Bold-webfont.woff b/dashboard_leaf/static/fonts/Roboto-Bold-webfont.woff
similarity index 100%
rename from src/static/fonts/Roboto-Bold-webfont.woff
rename to dashboard_leaf/static/fonts/Roboto-Bold-webfont.woff
diff --git a/src/static/fonts/Roboto-Regular-webfont.ttf b/dashboard_leaf/static/fonts/Roboto-Regular-webfont.ttf
similarity index 100%
rename from src/static/fonts/Roboto-Regular-webfont.ttf
rename to dashboard_leaf/static/fonts/Roboto-Regular-webfont.ttf
diff --git a/src/static/fonts/Roboto-Regular-webfont.woff b/dashboard_leaf/static/fonts/Roboto-Regular-webfont.woff
similarity index 100%
rename from src/static/fonts/Roboto-Regular-webfont.woff
rename to dashboard_leaf/static/fonts/Roboto-Regular-webfont.woff
diff --git a/src/static/fonts/weathericons-regular-webfont.eot b/dashboard_leaf/static/fonts/weathericons-regular-webfont.eot
similarity index 100%
rename from src/static/fonts/weathericons-regular-webfont.eot
rename to dashboard_leaf/static/fonts/weathericons-regular-webfont.eot
diff --git a/src/static/fonts/weathericons-regular-webfont.svg b/dashboard_leaf/static/fonts/weathericons-regular-webfont.svg
similarity index 100%
rename from src/static/fonts/weathericons-regular-webfont.svg
rename to dashboard_leaf/static/fonts/weathericons-regular-webfont.svg
diff --git a/src/static/fonts/weathericons-regular-webfont.ttf b/dashboard_leaf/static/fonts/weathericons-regular-webfont.ttf
similarity index 100%
rename from src/static/fonts/weathericons-regular-webfont.ttf
rename to dashboard_leaf/static/fonts/weathericons-regular-webfont.ttf
diff --git a/src/static/fonts/weathericons-regular-webfont.woff b/dashboard_leaf/static/fonts/weathericons-regular-webfont.woff
similarity index 100%
rename from src/static/fonts/weathericons-regular-webfont.woff
rename to dashboard_leaf/static/fonts/weathericons-regular-webfont.woff
diff --git a/src/static/fonts/weathericons-regular-webfont.woff2 b/dashboard_leaf/static/fonts/weathericons-regular-webfont.woff2
similarity index 100%
rename from src/static/fonts/weathericons-regular-webfont.woff2
rename to dashboard_leaf/static/fonts/weathericons-regular-webfont.woff2
diff --git a/src/static/images/garbage_bio.png b/dashboard_leaf/static/images/garbage_bio.png
similarity index 100%
rename from src/static/images/garbage_bio.png
rename to dashboard_leaf/static/images/garbage_bio.png
diff --git a/src/static/images/garbage_paper.png b/dashboard_leaf/static/images/garbage_paper.png
similarity index 100%
rename from src/static/images/garbage_paper.png
rename to dashboard_leaf/static/images/garbage_paper.png
diff --git a/src/static/images/garbage_plastic.png b/dashboard_leaf/static/images/garbage_plastic.png
similarity index 100%
rename from src/static/images/garbage_plastic.png
rename to dashboard_leaf/static/images/garbage_plastic.png
diff --git a/src/static/images/garbage_waste.png b/dashboard_leaf/static/images/garbage_waste.png
similarity index 100%
rename from src/static/images/garbage_waste.png
rename to dashboard_leaf/static/images/garbage_waste.png
diff --git a/src/static/js/libs/gridstack.min.js b/dashboard_leaf/static/js/libs/gridstack.min.js
similarity index 100%
rename from src/static/js/libs/gridstack.min.js
rename to dashboard_leaf/static/js/libs/gridstack.min.js
diff --git a/src/static/js/libs/plotly.locale.de.min.js b/dashboard_leaf/static/js/libs/plotly.locale.de.min.js
similarity index 100%
rename from src/static/js/libs/plotly.locale.de.min.js
rename to dashboard_leaf/static/js/libs/plotly.locale.de.min.js
diff --git a/src/static/js/libs/plotly.min.js b/dashboard_leaf/static/js/libs/plotly.min.js
similarity index 100%
rename from src/static/js/libs/plotly.min.js
rename to dashboard_leaf/static/js/libs/plotly.min.js
diff --git a/src/static/js/libs/socket.io.min.js b/dashboard_leaf/static/js/libs/socket.io.min.js
similarity index 100%
rename from src/static/js/libs/socket.io.min.js
rename to dashboard_leaf/static/js/libs/socket.io.min.js
diff --git a/src/static/js/main.js b/dashboard_leaf/static/js/main.js
similarity index 100%
rename from src/static/js/main.js
rename to dashboard_leaf/static/js/main.js
diff --git a/src/static/touch_icon.png b/dashboard_leaf/static/touch_icon.png
similarity index 100%
rename from src/static/touch_icon.png
rename to dashboard_leaf/static/touch_icon.png
diff --git a/src/templates/index.html b/dashboard_leaf/templates/index.html
similarity index 100%
rename from src/templates/index.html
rename to dashboard_leaf/templates/index.html
diff --git a/src/templates/macros.html b/dashboard_leaf/templates/macros.html
similarity index 100%
rename from src/templates/macros.html
rename to dashboard_leaf/templates/macros.html
diff --git a/src/templates/page.html b/dashboard_leaf/templates/page.html
similarity index 100%
rename from src/templates/page.html
rename to dashboard_leaf/templates/page.html
diff --git a/src/version.json b/dashboard_leaf/version.json
similarity index 100%
rename from src/version.json
rename to dashboard_leaf/version.json
diff --git a/test/__init__.py b/test/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/test/logic/TestHelpers.py b/test/logic/TestHelpers.py
index e04e850..3d93069 100644
--- a/test/logic/TestHelpers.py
+++ b/test/logic/TestHelpers.py
@@ -3,7 +3,7 @@ from datetime import datetime
 
 import pytz
 
-from logic import Helpers
+from dashboard_leaf.logic import Helpers
 
 
 class TestHelpers(unittest.TestCase):
diff --git a/test/logic/__init__.py b/test/logic/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/test/logic/tile/__init__.py b/test/logic/tile/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/test/logic/tile/tiles/TestGarbageContainerScheduleTile.py b/test/logic/tile/tiles/TestGarbageContainerScheduleTile.py
index 51fea35..ff2cad1 100644
--- a/test/logic/tile/tiles/TestGarbageContainerScheduleTile.py
+++ b/test/logic/tile/tiles/TestGarbageContainerScheduleTile.py
@@ -1,8 +1,8 @@
 from datetime import datetime
 from unittest import mock
 
-from logic import Helpers
-from logic.tile.tiles.GarbageContainerScheduleTile import GarbageContainerScheduleTile
+from dashboard_leaf.logic import Helpers
+from dashboard_leaf.logic.tile.tiles.GarbageContainerScheduleTile import GarbageContainerScheduleTile
 
 
 def example_settings(enableNotifications):
@@ -41,21 +41,21 @@ class TestIsAlreadyNotified:
 
 
 class TestSendNotification:
-    @mock.patch('logic.tile.tiles.GarbageContainerScheduleTile.Helpers')
+    @mock.patch('dashboard_leaf.logic.tile.tiles.GarbageContainerScheduleTile.Helpers')
     def test_notification_disabled_should_do_nothing(self, helpersMock):
         tile = GarbageContainerScheduleTile('myGarbageScheduleTile', example_settings(False), 10)
 
         tile._send_notification(1, '')
         helpersMock.send_notification_via_pushbullet.assert_not_called()
 
-    @mock.patch('logic.tile.tiles.GarbageContainerScheduleTile.Helpers')
+    @mock.patch('dashboard_leaf.logic.tile.tiles.GarbageContainerScheduleTile.Helpers')
     def test_notification_enabled_reaming_days_greater_than_settings_should_do_nothing(self, helpersMock):
         tile = GarbageContainerScheduleTile('myGarbageScheduleTile', example_settings(True), 10)
 
         tile._send_notification(3, '')
         helpersMock.send_notification_via_pushbullet.assert_not_called()
 
-    @mock.patch('logic.Helpers.requests')
+    @mock.patch('dashboard_leaf.logic.Helpers.requests')
     def test_send_notification_after_settings_hour_should_call_pushbullet_api(self, requestsMock):
         tile = GarbageContainerScheduleTile('myGarbageScheduleTile', example_settings(True), 10)
 
@@ -66,7 +66,7 @@ class TestSendNotification:
 
         requestsMock.post.assert_called_once_with(Helpers.PUSHBULLET_PUSH_URL, data=mock.ANY, headers=mock.ANY)
 
-    @mock.patch('logic.tile.tiles.GarbageContainerScheduleTile.Helpers')
+    @mock.patch('dashboard_leaf.logic.tile.tiles.GarbageContainerScheduleTile.Helpers')
     def test_send_notification_before_settings_hour_should_do_nothing(self, helpersMock):
         tile = GarbageContainerScheduleTile('myGarbageScheduleTile', example_settings(True), 10)
 
@@ -76,7 +76,7 @@ class TestSendNotification:
 
         helpersMock.send_notification_via_pushbullet.assert_not_called()
 
-    @mock.patch('logic.Helpers.requests')
+    @mock.patch('dashboard_leaf.logic.Helpers.requests')
     def test_already_notified_should_skip_sending(self, requestsMock):
         tile = GarbageContainerScheduleTile('myGarbageScheduleTile', example_settings(True), 10)
 
@@ -89,7 +89,7 @@ class TestSendNotification:
 
         requestsMock.post.assert_called_once()
 
-    @mock.patch('logic.Helpers.requests')
+    @mock.patch('dashboard_leaf.logic.Helpers.requests')
     def test_already_notified_should_skip_sending_even_if_already_skipped_before(self, requestsMock):
         tile = GarbageContainerScheduleTile('myGarbageScheduleTile', example_settings(True), 10)
 
diff --git a/test/logic/tile/tiles/TestSensorLineChartTile.py b/test/logic/tile/tiles/TestSensorLineChartTile.py
index 749192f..182913d 100644
--- a/test/logic/tile/tiles/TestSensorLineChartTile.py
+++ b/test/logic/tile/tiles/TestSensorLineChartTile.py
@@ -3,8 +3,8 @@ from typing import Dict
 from unittest import mock
 from unittest.mock import MagicMock
 
-from logic import Helpers
-from logic.tile.tiles.SensorLineChartTile import SensorLineChartTile, SensorType
+from dashboard_leaf.logic import Helpers
+from dashboard_leaf.logic.tile.tiles.SensorLineChartTile import SensorLineChartTile, SensorType
 
 
 def example_settings(showAxes: bool):
@@ -196,7 +196,7 @@ class TestGetTimeSinceLastValue:
 
         assert tile._get_time_since_last_value(warningSettings, data) == ''
 
-    @mock.patch('logic.tile.tiles.SensorLineChartTile.datetime')
+    @mock.patch('dashboard_leaf.logic.tile.tiles.SensorLineChartTile.datetime')
     def test_warnings_enabled_outdated_value_returns_human_readable_string(self, datetimeMock):
         tile = SensorLineChartTile('mySensorTile', example_settings(False), 10)
 
@@ -228,7 +228,7 @@ class TestSendNotification:
             'name': 'myDevice'
         }
 
-    @mock.patch('logic.tile.tiles.SensorLineChartTile.Helpers')
+    @mock.patch('dashboard_leaf.logic.tile.tiles.SensorLineChartTile.Helpers')
     def test_notification_disabled_should_do_nothing(self, helpersMock):
         tile = SensorLineChartTile('mySensorTile', example_settings(False), 10)
 
@@ -237,7 +237,7 @@ class TestSendNotification:
         tile._send_notification(warningSettings, {}, {}, '1 hour ago')
         helpersMock.send_notification_via_pushbullet.assert_not_called()
 
-    @mock.patch('logic.tile.tiles.SensorLineChartTile.Helpers')
+    @mock.patch('dashboard_leaf.logic.tile.tiles.SensorLineChartTile.Helpers')
     def test_notification_enabled_no_outdated_value_should_do_nothing(self, helpersMock):
         tile = SensorLineChartTile('mySensorTile', example_settings(False), 10)
 
@@ -246,7 +246,7 @@ class TestSendNotification:
         tile._send_notification(warningSettings, {}, {}, '')
         helpersMock.send_notification_via_pushbullet.assert_not_called()
 
-    @mock.patch('logic.Helpers.requests')
+    @mock.patch('dashboard_leaf.logic.Helpers.requests')
     def test_send_notification_should_call_pushbullet_api(self, requestsMock):
         tile = SensorLineChartTile('mySensorTile', example_settings(False), 10)
 
@@ -257,7 +257,7 @@ class TestSendNotification:
         tile._send_notification(warningSettings, self.__get_sensor_info(), self.__get_device_info(), '1 hour ago')
         requestsMock.post.assert_called_once_with(Helpers.PUSHBULLET_PUSH_URL, data=mock.ANY, headers=mock.ANY)
 
-    @mock.patch('logic.Helpers.requests')
+    @mock.patch('dashboard_leaf.logic.Helpers.requests')
     def test_already_sent_should_skip_sending(self, requestsMock):
         tile = SensorLineChartTile('mySensorTile', example_settings(False), 10)
 
@@ -269,7 +269,7 @@ class TestSendNotification:
         tile._send_notification(warningSettings, self.__get_sensor_info(), self.__get_device_info(), '1 hour ago')
         requestsMock.post.assert_called_once()
 
-    @mock.patch('logic.Helpers.requests')
+    @mock.patch('dashboard_leaf.logic.Helpers.requests')
     def test_already_sent_new_value_arrives_and_gets_outdated_should_call_pushbullet_api(self, requestsMock):
         tile = SensorLineChartTile('mySensorTile', example_settings(False), 10)
 
diff --git a/test/logic/tile/tiles/__init__.py b/test/logic/tile/tiles/__init__.py
new file mode 100644
index 0000000..e69de29
-- 
GitLab