scille / vigiechiro-api Goto Github PK
View Code? Open in Web Editor NEWPartie backend du projet vigie chiro du Muséum national d'histoire naturelle
License: GNU General Public License v2.0
Partie backend du projet vigie chiro du Muséum national d'histoire naturelle
License: GNU General Public License v2.0
'type_site': choice(['CARRE', 'ROUTIER', 'POINT_FIXE'], required=True)
On a vu lors de la réunion du 02/03 qu'il n'y avait pas de type site pour les programmes
Voir Scille/vigiechiro-front#69
Quand on fait une recherche sur les sites, le backend renvoie une 500 dès qu'il y a un paramètre 'q' (champ de recherche)
logs :
...
File "/home/landers/Documents/vigiechiro-api/vigiechiro/resources/sites.py", line 133, in list_sites
return _sites_generic_list(request.args)
File "/home/landers/Documents/vigiechiro-api/vigiechiro/resources/sites.py", line 126, in _sites_generic_list
limit=pagination.max_results)
File "/home/landers/Documents/vigiechiro-api/vigiechiro/xin/resource.py", line 199, in find
for document in cursor:
...
Lors de la dernière réunion, il avait été décidé que n'importe qui inscrit à un protocole pouvait participer à un site verrouillé de ce protocole.
Actuellement seul le propritaire du site peut y participer.
Mettre la liste locatile au pluriel
Lorsque l'on affiche les listes, on récupère à chaque fois la totalité des objets pour n'afficher au final que 2 ou 3 champs, ça risque de devenir très lourd quand l'appli sera en prod.
Voici la liste des champs à retourner pour chaque type d'objet :
A compléter si besoin
Créer les index texte pour les ressources suivantes :
protocoles
utilisateurs
taxons
Nouvelle méthode pour récuperer toutes les localités de tous les sites d'un protocole dans le but d'afficher une carte globale et voir les zones "vides".
Mettre à 1 mois
À implémenter
@donnees.route('/donnees/objectid:donnee_id/observations/int:observation_id', methods=['PATCH'])
@donnees.route('/donnees/objectid:donnee_id/observations/int:observation_id/messages', methods=['PUT'])
Il n'est pas possible de faire appel aux 2 méthodes ci-dessus car les observations n'ont pas de champ "_id".
La lib python requests est absente du requirement.txt dans l'api
Ajouter le scripts de chragement des grilles stoc dans le répertoire /bin
Lorsque l'on récupère une participation, il faudrait avoir un champs donnant le nombre total de pièces jointes. Que l'utilisateur n'ait pas à cliquer sur le bouton pour afficher les fichiers pour le découvrir.
Renommer macro_protocole
en programme
Un programme n'a pas de sites/participations
Un taxon lié n'est pas obligatoire dans un programme
Il faut étendre les ressources protocole et grille_stoc lors de la récupération d'un seul site
@sites.route('/sites', methods=['POST'])
@requires_auth(roles='Observateur')
def create_site():
Fonctionne pour les protocoles carrés et point fixe si une grille_stoc est envoyée.
A faire :
Ajouter une route ou modifier la route @sites.route('/sites/objectid:site_id/localites', methods=['PUT']) pour pouvoir ajouter plusieurs localités en même temps.
Les patch sur les pages /resource/ ne fonctionnent pas
exemples :
XMLHttpRequest cannot load http://localhost:8080/taxons/54ba6eca1d41c843ca336d70. Method PATCH is not allowed by Access-Control-Allow-Methods.
XMLHttpRequest cannot load http://localhost:8080/utilisateurs/54e71f236fe8b91d17a6ab98. Method PATCH is not allowed by Access-Control-Allow-Methods.
Ce sont pourtant des patch sur des items et pas des ressources
RESOURCE_METHODS = ['GET', 'POST', 'DELETE']
ITEM_METHODS = ['GET', 'PATCH', 'PUT', 'DELETE']
Faire une méthode pour le tirage aléatoire.
Par contre est-ce utile de la faire dans le backend ? On ne pourra pas mettre à jour le motif des refus tant que le site n'aura pas été POST une 1ère fois ce qui est fait après les tirages.
and send it by mail
Transférer l'algo tirage site en type site dans la ressource protocole
Avec eve, ce bout de code marchait :
where:
protocole: protocoleId
observateur: user._id
embedded: { "grille_stoc": 1 }
il servait à récupérer tous les sites d'un protocole appartenant à l'utilsateur et en remplaçant en même temps l'ObjectID de la grille stoc des sites par sa ressource complète.
Rien trouvé pour faire la même chose (en particulier l'embedded) avec l'api v2.
Alors je vois 2 nouvelles routes, dis moi aussi ce que tu en penses.
Route du style /protocoles//moi/sites [GET]
qui retourne tous les sites d'un protocole qui appartient à l'utilisateur avec expend grille_stoc pour chaque site. C'est ce qu'on faisait dans la v1 mais ça ne marche plus. Actuellement la v2 récupère tous les sites de tous les protocoles quand on clique sur un protocole.
Je pense qu'on peut se passer de cette route si comme on l'avait suggéré, on n'affiche plus directement les sites sur la page d'un protocole. On utilise la route 2) à la place.
Route du style /protocoles//sites/liste [GET]
qui retourne tous les sites d'un protocole mais uniquement les titres et les _id (pour faire des liens)
Dans tous les cas, l'issue précédente (expend protocole et grille_stoc) est plus urgente et est indispensable !
Enlever la vérification du verrouillage des sites au moment de la création d'une participation.
cf. https://basecamp.com/2598471/projects/7598206/messages/38459073 point 3
PUT /protocoles/#protocole_id/observateurs/#observateur_id
Input
Nom | Type | Description |
---|---|---|
valide | boolean |
Que valide soit à true ou false, l'inscription est validée. Donc bug pour le false qui doit supprimer le protocole dans l'utilisateur.
protocoles/validations/
Doit retrouner une liste contenant :
utilisateur._id
utilisateur.pseudo
utilisateur.protocoles[liste des protocoles où not valid || valid == false]
Ajouter un paramètre "grille_stoc" facultatif à la route :
GET /taxons/#id retourne le taxon sans extend des parents.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.