From f251c96e989d67af886f849b35209c1a3744cedf Mon Sep 17 00:00:00 2001 From: tobias <thinkdifferent055@gmail.com> Date: Thu, 15 Oct 2020 17:35:10 +0200 Subject: [PATCH] Add content structure, Update to version 1.2.3 --- .../TheCodeLabs_FlaskUtils/FlaskBaseApp.py | 5 ++++- .../content/AbstractContentService.py | 18 ++++++++++++++++++ .../content/ContentPage.py | 17 +++++++++++++++++ TheCodeLabs_FlaskUtils/setup.py | 3 ++- 4 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 TheCodeLabs_FlaskUtils/TheCodeLabs_FlaskUtils/content/AbstractContentService.py create mode 100644 TheCodeLabs_FlaskUtils/TheCodeLabs_FlaskUtils/content/ContentPage.py diff --git a/TheCodeLabs_FlaskUtils/TheCodeLabs_FlaskUtils/FlaskBaseApp.py b/TheCodeLabs_FlaskUtils/TheCodeLabs_FlaskUtils/FlaskBaseApp.py index d93ae3d..eeccd9c 100644 --- a/TheCodeLabs_FlaskUtils/TheCodeLabs_FlaskUtils/FlaskBaseApp.py +++ b/TheCodeLabs_FlaskUtils/TheCodeLabs_FlaskUtils/FlaskBaseApp.py @@ -9,6 +9,7 @@ from flask import Flask, send_from_directory from flask import jsonify from gevent.pywsgi import WSGIServer +from TheCodeLabs_FlaskUtils.content.AbstractContentService import AbstractContentService from TheCodeLabs_FlaskUtils.menu.AbstractMenuService import AbstractMenuService @@ -20,13 +21,15 @@ class FlaskBaseApp(ABC): settingsPath='../settings.json', serveFavicon=True, serveRobotsTxt=False, - menuService: AbstractMenuService = None): + menuService: AbstractMenuService = None, + contentService: AbstractContentService = None): self._appName = appName self._rootDir = rootDir self._logger = logger self._serveFavicon = serveFavicon self._serveRobotsTxt = serveRobotsTxt self._menuService = menuService + self._contentService = contentService self._version = self.__parse_version(versionPath) self._settings = self.__parse_settings(settingsPath) diff --git a/TheCodeLabs_FlaskUtils/TheCodeLabs_FlaskUtils/content/AbstractContentService.py b/TheCodeLabs_FlaskUtils/TheCodeLabs_FlaskUtils/content/AbstractContentService.py new file mode 100644 index 0000000..2eb1976 --- /dev/null +++ b/TheCodeLabs_FlaskUtils/TheCodeLabs_FlaskUtils/content/AbstractContentService.py @@ -0,0 +1,18 @@ +import abc +from abc import ABC +from typing import List + +from TheCodeLabs_FlaskUtils.content.ContentPage import ContentPage + + +class AbstractContentService(ABC): + + @abc.abstractmethod + def get_content_pages(self) -> List[ContentPage]: + pass + + def get_content_page(self, content_id: str) -> ContentPage or None: + content_pages = [page for page in self.get_content_pages() if page.id == content_id] + if not content_pages: + return None + return content_pages[0] diff --git a/TheCodeLabs_FlaskUtils/TheCodeLabs_FlaskUtils/content/ContentPage.py b/TheCodeLabs_FlaskUtils/TheCodeLabs_FlaskUtils/content/ContentPage.py new file mode 100644 index 0000000..5d0afe0 --- /dev/null +++ b/TheCodeLabs_FlaskUtils/TheCodeLabs_FlaskUtils/content/ContentPage.py @@ -0,0 +1,17 @@ +from dataclasses import dataclass +from typing import Dict + + +@dataclass +class ContentPage: + id: str + url: str + title: str + + content_path: str + template_path: str + + +@dataclass +class ContextContentPageExtension: + context: Dict[str, any] = None diff --git a/TheCodeLabs_FlaskUtils/setup.py b/TheCodeLabs_FlaskUtils/setup.py index 552a5d0..7105ab0 100644 --- a/TheCodeLabs_FlaskUtils/setup.py +++ b/TheCodeLabs_FlaskUtils/setup.py @@ -5,9 +5,10 @@ setup( packages=[ 'TheCodeLabs_FlaskUtils', 'TheCodeLabs_FlaskUtils.auth', + 'TheCodeLabs_FlaskUtils.content', 'TheCodeLabs_FlaskUtils.menu' ], - version='1.2.2', + version='1.2.3', license='MIT', description='Useful python classes', author='TheCodeLabs', -- GitLab