From d7cd92edf7dc15d37502e9b1045ee7927db57265 Mon Sep 17 00:00:00 2001 From: Francia Csaba Date: Mon, 18 Dec 2023 12:26:58 +0100 Subject: [PATCH] Static routing --- amarillo/app/main.py | 33 +++---- amarillo/app/views/home.py | 17 ++++ static/css/docs.css | 33 +++++++ static/css/theme.css | 186 +++++++++++++++++++++++++++++++++++ static/img/cloud.png | Bin 0 -> 17236 bytes static/img/favicon.ico | Bin 0 -> 15406 bytes templates/home/index.html | 34 +++++++ templates/shared/layout.html | 96 ++++++++++++++++++ 8 files changed, 380 insertions(+), 19 deletions(-) create mode 100644 amarillo/app/views/home.py create mode 100644 static/css/docs.css create mode 100644 static/css/theme.css create mode 100644 static/img/cloud.png create mode 100644 static/img/favicon.ico create mode 100644 templates/home/index.html create mode 100644 templates/shared/layout.html diff --git a/amarillo/app/main.py b/amarillo/app/main.py index 6935f96..746ece7 100644 --- a/amarillo/app/main.py +++ b/amarillo/app/main.py @@ -1,17 +1,19 @@ import logging.config - -from amarillo.app.configuration import configure_services, configure_admin_token - -logging.config.fileConfig('logging.conf', disable_existing_loggers=False) -logger = logging.getLogger("main") +import importlib +import pkgutil import uvicorn import mimetypes from starlette.staticfiles import StaticFiles - +import amarillo.plugins +from amarillo.app.configuration import configure_services, configure_admin_token from amarillo.app.routers import carpool, agency, agencyconf, region from fastapi import FastAPI +from amarillo.app.views import home + +logging.config.fileConfig('logging.conf', disable_existing_loggers=False) +logger = logging.getLogger("main") # https://pydantic-docs.helpmanual.io/usage/settings/ # from amarillo.app.views import home @@ -75,13 +77,6 @@ app.include_router(agencyconf.router) app.include_router(region.router) -import importlib -import pkgutil - -import amarillo.plugins - - - def iter_namespace(ns_pkg): # Source: https://packaging.python.org/guides/creating-and-discovering-plugins/ return pkgutil.iter_modules(ns_pkg.__path__, ns_pkg.__name__ + ".") @@ -104,15 +99,15 @@ def load_plugins(): def configure(): configure_admin_token() configure_services() - # configure_routing() + configure_routing() load_plugins() -# def configure_routing(): -# mimetypes.add_type('application/x-protobuf', '.pbf') -# app.mount('/static', StaticFiles(directory='static'), name='static') -# app.mount('/gtfs', StaticFiles(directory='data/gtfs'), name='gtfs') -# app.include_router(home.router) +def configure_routing(): + mimetypes.add_type('application/x-protobuf', '.pbf') + app.mount('/static', StaticFiles(directory='static'), name='static') + app.mount('/gtfs', StaticFiles(directory='data/gtfs'), name='gtfs') + app.include_router(home.router) if __name__ == "__main__": diff --git a/amarillo/app/views/home.py b/amarillo/app/views/home.py new file mode 100644 index 0000000..4c044c3 --- /dev/null +++ b/amarillo/app/views/home.py @@ -0,0 +1,17 @@ +import fastapi +from starlette.requests import Request +from starlette.templating import Jinja2Templates + +templates = Jinja2Templates('templates') + +router = fastapi.APIRouter() + +@router.get('/', include_in_schema=False) +async def index(request: Request): + + return templates.TemplateResponse('home/index.html', {"request": request}) + + +@router.get('/favicon.ico', include_in_schema=False) +def favicon(): + return fastapi.responses.RedirectResponse(url='/static/img/favicon.ico') diff --git a/static/css/docs.css b/static/css/docs.css new file mode 100644 index 0000000..aca49e8 --- /dev/null +++ b/static/css/docs.css @@ -0,0 +1,33 @@ +.request { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + font-weight: bold; + border: 1px solid gray; + border-radius: 5px; + padding: 10px; + font-size: 24px; +} + +.get { + color: #2b542c; + background-color: #beffbd; +} + +.post { + color: #ae5900; + background-color: #ffc79d; +} + +.response_formats span { + font-weight: bold; + color: darkred; + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; +} + +pre { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; +} + +ul li { + font-size: 18px; + margin-bottom: 10px; +} \ No newline at end of file diff --git a/static/css/theme.css b/static/css/theme.css new file mode 100644 index 0000000..d522087 --- /dev/null +++ b/static/css/theme.css @@ -0,0 +1,186 @@ +@import url(//fonts.googleapis.com/css?family=Open+Sans:300,400,600,700); + +body { + font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: 300; + color: black; + background: white; + padding-left: 20px; + padding-right: 20px; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: 300; +} + +p { + font-weight: 300; +} + +.font-normal { + font-weight: 400; +} + +.font-semi-bold { + font-weight: 600; +} + +.font-bold { + font-weight: 700; +} + +.starter-template { + margin-top: 25px; +} + +.starter-template .content { + margin-left: 10px; +} + +.starter-template .content h1 { + margin-top: 10px; + font-size: 60px; +} + +.starter-template .content h1 .smaller { + font-size: 40px; +} + +.starter-template .content .lead { + font-size: 25px; +} + +.starter-template .links { + float: right; + right: 0; + margin-top: 125px; +} + +.starter-template .links ul { + display: block; + padding: 0; + margin: 0; +} + +.starter-template .links ul li { + list-style: none; + display: inline; + margin: 0 10px; +} + +.starter-template .links ul li:first-child { + margin-left: 0; +} + +.starter-template .links ul li:last-child { + margin-right: 0; +} + +.starter-template .links ul li.current-version { + font-weight: 400; +} + +.starter-template .links ul li a, a { + text-decoration: underline; +} + +.starter-template .links ul li a:hover, a:hover { + text-decoration: underline; +} + +.starter-template .links ul li .icon-muted { + margin-right: 5px; +} + +.starter-template .copyright { + margin-top: 10px; + font-size: 0.9em; + text-transform: lowercase; + float: right; + right: 0; +} + +@media (max-width: 1199px) { + .starter-template .content h1 { + font-size: 45px; + } + + .starter-template .content h1 .smaller { + font-size: 30px; + } + + .starter-template .content .lead { + font-size: 20px; + } +} + +@media (max-width: 991px) { + .starter-template { + margin-top: 0; + } + + .starter-template .logo { + margin: 40px auto; + } + + .starter-template .content { + margin-left: 0; + text-align: center; + } + + .starter-template .content h1 { + margin-bottom: 20px; + } + + .starter-template .links { + float: none; + text-align: center; + margin-top: 60px; + } + + .starter-template .copyright { + float: none; + text-align: center; + } +} + +@media (max-width: 767px) { + .starter-template .content h1 .smaller { + font-size: 25px; + display: block; + } + + .starter-template .content .lead { + font-size: 16px; + } + + .starter-template .links { + margin-top: 40px; + } + + .starter-template .links ul li { + display: block; + margin: 0; + } + + .starter-template .links ul li .icon-muted { + display: none; + } + + .starter-template .copyright { + margin-top: 20px; + } +} + + +.disclaimer { + margin-top: 20px; + font-style: italic; + +} \ No newline at end of file diff --git a/static/img/cloud.png b/static/img/cloud.png new file mode 100644 index 0000000000000000000000000000000000000000..b3393ba5d0dfdc5ead1d46667533c015ad4e19f8 GIT binary patch literal 17236 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 R4hwN(9Zds`%G-|5{|^~z*AM^z literal 0 HcmV?d00001 diff --git a/static/img/favicon.ico b/static/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..aa1c995ae04f0b45d6508a2ea43830e0b47f4da0 GIT binary patch literal 15406 zcmeHOYltM(6)s&(vc`~I@x_9h0i&#fxWospphl385Ku57{t%W8`QslYxM&th(D?cx z{xLrk&BL%ulnf!52NI&mkg(29cUAAsbXRpvcfD(-tGc?XXI4j6cU`CQo$9^4HQim^ z)jiYGEt!VPy>;uJbH01->(o7`Iqm{(8@FQzhkSy2eiLtKD9&8vA;spt^8}XBbx#pfC(CT&h|x)vMNN zq%ds?T=PueS_gdBI+T{Cy`5PDAG^IiH4YE-pAACaz;FB*dA48rs$G85^BVf|UE^Nj zm6iwEhDPZ`s7cwU*o3Hi=ACud{AaDAhqa2oFTIJ~7f+mGpQ3%x{zaom_mlzLS z;(t!{x}0m{;h6Ig4ZV*ib@qcR89n&@hrJ^ni$*bYtWs#Jg*7y+4e~OhrCgJQ-^bo1 z(KPBM;X_@@+#RPkWfI_n_PRREb|&%ZpdS z5KB1auUwe<4tO{X9=xi`xm!|_Hk;Af((?JMkf)a0Bu-hNeP#mb+eoxOZT-F&8o->m zxaQb*`;PHQ-7y}={;^>xs9HY_9PP??y137;7=NtV zN?2V`Lb6e7i|w{=Tm~yg{VdH!@`%=jooXp_Z8j(5ugbZjyW+CrW!Sv$F|3qZcy@Yyag5g%(eBk6ECV$#N0QT%y^D9 z@>CLytrYMLp|8;c_K~*nO`<|o|QuO8m-8m9*lQqeZ_dq$Z{@m-ZwEw{4ZlPspnLj z2H#s5^h2eDG5uRv%sf0fIk}C==$6wS4Vo8`&c=E6Q!W*9H*}Mc=3S|9>;_HBJ%jz= z50L#j(jj14?S%vF>tQ&B+ndOFr>6 z#LU&u@e$zol;ObhGSUmi)YMmoDLc;Fot^zEbp0)DPPi$4=MrzTRUU5*&^-yRXt@JO zTlXYT!q#s~1OG=FAUo7|tXps|_6vLm{yA`sqrPL#_|?r%^(wx_J?jYF(HVx(^&DGT z(!TEF4sFS`rtxhuk~@s}w@d`Iy|oW?TO2^jzRZY&vu(| zkJ>K=nlnqT{V3=@?U#1c?Fl>XL{BVLD!Wl0D4t-%eejmOh3Ndkd2Egt%bI(`Zde+6 zH?qEO-OA2htl_u2(TwsPY(^XN+<3WtUSlMYzXV7=eR%X8| zij&Q_kye|HYzMTPV>IKG<4$^2pFh5gyP#Ltd}+mx`U_!4{0w98$v9yrEWV>h@i}yt zg?ODmS@}Go$J&2b54&JX{B_*$BkrkrM~pkT(`r$8dU|?#dwUN!u2QL74!eJIe2yv3 zL(FOT5zhOFqWfKm_vQRdVqDM3llh$(hqqx%VpE(;HL!%gp|rlu}ZirMFqd{(-AJo4kF z!OYqacJkj6?LfHC`Arom`%o|Zwm5wmbf4`e2WLy@0Z-a-Ab)if%Ng_EcH^J)PL(sa z_QJ1Axo^Pd@=+2GR&SsWv=(Vjcj^b#(L0JKU9a9FnOMK&^1D6#K&4V1MGDHWUWMr$`WrN{YA-V_Cc2e z$5Wq+4W9?Ep8oxT`zZ>C6ft|hDhdZwF>`>*W%2lpVfb{%SQw_?v^mA}z(4;!`tbR{ z7?bCASZayQPm8Ocb``|xD+PYPA`0(etZ6)S*cJ-nlBQKL`_91QgZ~!z^3k@q=YFvD z)0WmX#hB6BFyvzswmrRleqOj7d7?UQNzUBi8rkW zy_mfRXZ^o$U$AB@@O(;@`8R0ogehajI?33qI!zFEL;v4bq})SFVdmbX` + Amarillo - Der Carpooling-Intermediär + +

Hintergrund

+

+ Ein "Amarillo" ist ein gelb gekleideter Verkehrsregler, der auf Kuba Trampern eine möglichst passsende Mitfahrgelegenheit vermittelt. +

+

+ Ebenso wie ein kubanischer Amarillo hilft auch dieser Amarillo-Dienst, passende Mitfahrgelegenheiten zu vermitteln. Mitfahrplattformen können Mitfahrangebote ihrer + Nutzerinnen über die Amarillo-REST-API publizieren und so Reiseplanern oder Meta-Suchmaschinen zur Verfügung stellen. +

+

+ Amarillo reichert diese Mitfahrangebote um die mutmaßliche Fahrtroute sowie entlang + dieser liegenden Zustiegs- und Ausstiegspunkte an, so dass Reiseplaner für Mitfahrene gut erreichbare Treffpunkte vorschlagen können, die mit geringen Umwegen angefahren werden können, wie z.B. Parken-und-Mitfahren-Parkplätze, Bahnhöfe oder Bushaltestellen. +

+

+ Für die einfache Integration in Reiseplaner stellt Amarillo die Mitfahrangebote aller + publizierenen Mitfahrbörsen nächtlich als regionale GTFS-Feeds bzw. minütlich als GTFS-RT Feeds bereit. Der GTFS-RT-Feed enthält alle seit dem Vortag um Mitternacht hinzugefügten, aktualisierten oder gelöschten Mitfahrangebote als ADDED bzw. CANCELED TripUpdates. Die amarillo-spezifischen Erweiterungen werden in dieser Prototype-Extension definiert. +

+

+ Die DigitalAgentur Brandenburg GmbH als Betreiber dieses Amarillo-Dienstes für die kommunale Mobilitätsplattform bbnavi.de und das Mitfahrangebot mitfahrenbb.de ist offen für die Aufnahme weiterer Mitfahrplattformen – sowohl für die Integration von Mitfahrangeboten über Amarillo als auch für das Aufgeben von Angeboten über unsere Seiten. Möchte die Mitfahrplatfform minutenaktuelle Mitfahrangebote bereitstellen, sollte sie die carpool-POST/PUT/DELETE-Endpunkte für jede Aktualisierung eines Inserats aufrufen. Bei Interesse an einer Integration bzw. um den hierfür notwendigen API-Key zu erhalten, nehmen Sie gerne über Kontakt bbnavi at digital-agentur punkt de mit uns auf. +

+ +

Dokumentation

+

+ Die Dokumentation dieses Dienstes ist als OpenAPI-Dokumentation verfügbar. + Der Quellcode ist unter AGPL-Lizenz in diesem Github-Repository einseh- und abrufbar. +

+ +{% endblock %} \ No newline at end of file diff --git a/templates/shared/layout.html b/templates/shared/layout.html new file mode 100644 index 0000000..cdf8012 --- /dev/null +++ b/templates/shared/layout.html @@ -0,0 +1,96 @@ + + + + + + + Amarillo + + + +
+ +
+ + {% block content %} +
+ THIS PAGE HAS NO CONTENT +
+ {% endblock %} + + + + \ No newline at end of file