Open anne17 opened 11 months ago
Några saker som @arildm och jag kom fram till ang. metadata-arbetsflödet i Mink:
sb_auth/login.py
i backenden.Lite info till @arildm och @MartinHammarstedt i fall ni ska fortsätta med detta medan jag är borta.
Nu har jag implementerat några nya routes:
create-metadata
remove-metadata
upload-metadata-yaml
download-metadata-yaml
Dessa fungerar hyfsat. De är releasade och dokumenterade (https://ws.spraakbanken.gu.se/ws/mink/api-doc#tag/Manage-Metadata). Här är några saker till som jag har tänkt på men inte hunnit med:
/list-corpora
listar nu också metadata-filer... inte optimalt! Man kanske borde döpa om anropet till list-resources
och sedan lista allt uppdelat efter olika resurstyper. Detta styrs av sb_auth/login.py
/upload-metadata-yaml
gör ingen kontroll av yaml-formatet! Bör kollas mot ett schema, av frontend eller backend?grep -r -P -o 'return_code=".+"'
och sedan lagt in i https://docs.google.com/spreadsheets/d/12YOLXdArr17S2OsAmSIekY3Ys-G6L7mEW0S7t-n6-Qs/edit?usp=sharingcorpus_id
borde ändras till resource_id
i hela API:et (och i Postman). Detta måste dock ske koordinerat med frontenden för att inte Mink ska gå sönder.Har kollat på detta och börjat anpassa frontenden nu!
En sak som jag tycker saknas är ett anrop för att se om användaren har tillåtelse att skapa metadataresurser. Dvs om den finns med i METADATA_ORG_PREFIXES
. Så att vi inte visar den delen av gränssnittet för alla.
Kanske som en route typ /user-info
? Jag tycker det känns troligt att det kommer tillkomma fler detaljer som rör användaren. Det finns ju redan en check om användaren har tillgång till admin-läget. Den checken görs både i frontend och backend just nu, men det vore kanske snyggare att det bara är backenden som gör det, som en del av /user-info
då.
Ett svar från /user-info
skulle alltså kunna se ut typ:
{
"id": "httpsidp3.it.gu.seidpshibboleth-xmatargu.se",
"org_prefix": "sbx",
"app_grant": "ADMIN",
// + status, return_code, message
}
~Jag kan skapa och ta bort metadataresurser. Däremot får jag bara fel från /upload-config
. Jag skickar abotidning.yaml
med PUT
till upload-config?corpus_id=mink-u9uozrx2yz
, och får:~
{
"status": "error",
"message": "Failed to upload config file for 'mink-u9uozrx2yz'",
"info": "Failed to upload contents to 'mink-data/corpus/u/mink-u9uozrx2yz/config.yaml': bash: mink-data/corpus/u/mink-u9uozrx2yz/config.yaml: No such file or directory\n",
"return_code": "failed_uploading_config"
}
Edit: Nevermind! I just confused /upload-config
with /upload-metadata-yaml
!
A user should be able to upload a resource of type "metadata". This should be a yaml file matching one of the formats specified in these templates. The uploaded file should be verified with a json schema (does not exist yet), either by the frontend or the backend.
If the user has superuser permissions (e.g. "write" in "Mink-App"), the yaml file should somehow be incorporated into our metadata API
Some more notes on this in Swedish:
Kunna ladda upp metadata-filer i Mink samt publicera på resurssidan
för superusers (med plublicering) Förutsättningar:
Arbetsflöde:
create-metadata
med vald resurs IDproblem: resursnamn ska synas i gränssnittet... var kommer det ifrån? Sparv-config? I så fall borde vi nog tänka om lite för att göra detta mindre Sparv-beroende ska man ändå ha ett job-item? Ja, förmodligen... måste tänkas igenom mer först!
för alla användare (utan plublicering, ett enkelt sätt att få in lite metadata för korpusar som folk vill att vi ska slänga in?)