|
13 | 13 |
|
14 | 14 | from pydantic import BaseSettings, BaseModel, AnyUrl, Field |
15 | 15 |
|
16 | | -from fastapi import Request, FastAPI, Body |
| 16 | +from fastapi import Request, FastAPI, Body, HTTPException |
17 | 17 | from fastapi.staticfiles import StaticFiles |
18 | 18 | from fastapi.templating import Jinja2Templates |
19 | 19 | from fastapi.responses import HTMLResponse |
20 | 20 |
|
21 | 21 | import logging |
| 22 | +import yaml |
22 | 23 | from rdflib import URIRef |
23 | 24 |
|
24 | 25 | import maptomethod |
25 | 26 | import forms |
26 | 27 |
|
| 28 | + |
27 | 29 | class Settings(BaseSettings): |
28 | 30 | app_name: str = "MaptoMethod" |
29 | 31 | admin_email: str = os.environ.get("ADMIN_MAIL") or "csvtocsvw@matolab.org" |
@@ -123,24 +125,24 @@ async def create_mapper(request: Request): |
123 | 125 | mapping_object_class_uris = start_form.advanced.method_object_super_class_uris.data |
124 | 126 | request.session['mapping_object_class_uris']=mapping_object_class_uris |
125 | 127 |
|
126 | | - # try: |
127 | | - with maptomethod.Mapper( |
128 | | - data_url=data_url, |
129 | | - method_url=method_url, |
130 | | - mapping_predicate_uri = URIRef(mapping_predicate_uri), |
131 | | - data_subject_super_class_uris = [ URIRef(uri) for uri in mapping_subject_class_uris], |
132 | | - method_object_super_class_uris = [ URIRef(uri) for uri in mapping_object_class_uris] |
133 | | - ) as mapper: |
134 | | - info_choices = [(id, value['text']) for |
135 | | - id, value in mapper.subjects.items()] |
136 | | - info_choices.insert(0, (None, 'None')) |
137 | | - select_forms = forms.get_select_entries( |
138 | | - mapper.objects.keys(), |
139 | | - info_choices |
140 | | - ) |
| 128 | + try: |
| 129 | + with maptomethod.Mapper( |
| 130 | + data_url=data_url, |
| 131 | + method_url=method_url, |
| 132 | + mapping_predicate_uri = URIRef(mapping_predicate_uri), |
| 133 | + data_subject_super_class_uris = [ URIRef(uri) for uri in mapping_subject_class_uris], |
| 134 | + method_object_super_class_uris = [ URIRef(uri) for uri in mapping_object_class_uris] |
| 135 | + ) as mapper: |
| 136 | + info_choices = [(id, value['text']) for |
| 137 | + id, value in mapper.subjects.items()] |
| 138 | + info_choices.insert(0, (None, 'None')) |
| 139 | + select_forms = forms.get_select_entries( |
| 140 | + mapper.objects.keys(), |
| 141 | + info_choices |
| 142 | + ) |
141 | 143 | flash(request,str(mapper), 'info') |
142 | | - # except Exception as err: |
143 | | - # flash(request,str(err),'error') |
| 144 | + except Exception as err: |
| 145 | + flash(request,str(err),'error') |
144 | 146 | mapping_form=await forms.MappingFormList.from_formdata(request) |
145 | 147 | mapping_form.assignments.entries=select_forms |
146 | 148 | return templates.TemplateResponse("index.html", |
@@ -248,19 +250,21 @@ def mapping(request: MappingRequest = Body( |
248 | 250 | }, |
249 | 251 | } |
250 | 252 | )): |
251 | | - result = maptomethod.Mapper( |
252 | | - request.data_url, |
253 | | - request.method_url, |
254 | | - maplist=request.map_list.items() |
255 | | - ).to_pretty_yaml() |
| 253 | + try: |
| 254 | + result = maptomethod.Mapper( |
| 255 | + request.data_url, |
| 256 | + request.method_url, |
| 257 | + maplist=request.map_list.items() |
| 258 | + ).to_pretty_yaml() |
| 259 | + except Exception as err: |
| 260 | + print(err) |
| 261 | + raise HTTPException(status_code=500, detail=str(err)) |
256 | 262 | return result |
257 | 263 |
|
258 | 264 | @app.get("/info", response_model=Settings) |
259 | 265 | async def info() -> dict: |
260 | 266 | return settings |
261 | 267 |
|
262 | | -import yaml |
263 | | - |
264 | 268 | if __name__ == "__main__": |
265 | 269 | port = int(os.environ.get("PORT", 5000)) |
266 | 270 | app_mode=os.environ.get("APP_MODE") or 'production' |
|
0 commit comments