Add missing dependencies
Add tile server Config: add defults Cosmetic refactorings
This commit is contained in:
parent
7e9e266157
commit
5dacc908f2
12 changed files with 434 additions and 187 deletions
|
@ -1,15 +1,17 @@
|
|||
from collections import OrderedDict, defaultdict
|
||||
import logging
|
||||
from pathlib import Path
|
||||
from fastapi import Depends, FastAPI, HTTPException, status, responses
|
||||
from json import dumps
|
||||
|
||||
from fastapi import FastAPI, Request, HTTPException, status, responses
|
||||
from sqlalchemy.orm import selectinload
|
||||
from sqlalchemy.exc import NoResultFound
|
||||
from sqlmodel import select
|
||||
|
||||
from gisaf.config import conf
|
||||
from gisaf.models.map_bases import BaseMap, BaseMapLayer, BaseStyle, MapInitData
|
||||
from gisaf.registry import registry
|
||||
from gisaf.database import db_session
|
||||
from gisaf.models.authentication import User
|
||||
from gisaf.database import fastapi_db_session
|
||||
from gisaf.tiles import registry as tiles_registry
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
@ -21,20 +23,20 @@ async def get_base_styles():
|
|||
async with db_session() as session:
|
||||
query = select(BaseStyle.name)\
|
||||
.where(BaseStyle.enabled==True)\
|
||||
.order_by(BaseStyle.id)
|
||||
.order_by(BaseStyle.id) # type: ignore # noqa: E712
|
||||
data = await session.exec(query)
|
||||
base_styles = data.all()
|
||||
## TODO: tiles_registry
|
||||
logger.warning('TODO: tiles_registry')
|
||||
# base_styles.extend(tiles_registry.mbtiles.values())
|
||||
return [BaseStyle(name=bs) for bs in base_styles]
|
||||
return [BaseStyle(name=bs) for bs in base_styles] # type: ignore
|
||||
|
||||
async def get_base_maps() -> list[BaseMap]:
|
||||
async with db_session() as session:
|
||||
query1 = select(BaseMap).options(selectinload(BaseMap.layers))
|
||||
query1 = select(BaseMap).options(selectinload(BaseMap.layers)) # type: ignore
|
||||
data1 = await session.exec(query1)
|
||||
base_maps = data1.all()
|
||||
return base_maps
|
||||
return base_maps # type: ignore
|
||||
base_map_dict = {bm.id: bm.name for bm in base_maps}
|
||||
query2 = select(BaseMapLayer).options(selectinload(BaseMapLayer.base_map))
|
||||
data2 = await session.exec(query2)
|
||||
|
@ -58,5 +60,27 @@ async def get_init_data() -> MapInitData:
|
|||
baseStyles=await get_base_styles(),
|
||||
baseMaps=await get_base_maps(),
|
||||
groups=registry.primary_groups,
|
||||
stores=df.to_dict(orient='records')
|
||||
stores=df.to_dict(orient='records') # type: ignore
|
||||
)
|
||||
|
||||
@api.get('/base_style/{name}')
|
||||
async def get_base_style(request: Request, name: str,
|
||||
db_session: fastapi_db_session,
|
||||
) -> BaseStyle:
|
||||
data = await db_session.exec(select(BaseStyle).where(BaseStyle.name==name))
|
||||
try:
|
||||
base_style = data.one()
|
||||
except NoResultFound:
|
||||
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND)
|
||||
# return BaseStyle(
|
||||
# name=name,
|
||||
# style=dumps({})
|
||||
# )
|
||||
if name in tiles_registry.mbtiles:
|
||||
## Try to get base_style from tiles_registry
|
||||
tiles = tiles_registry.mbtiles['name']
|
||||
style = dumps(await tiles.get_style(style_record=base_style,
|
||||
request=request))
|
||||
else:
|
||||
style = base_style.style # type: ignore
|
||||
return BaseStyle(name=name, style=style) # type: ignore
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue