Coder Social home page Coder Social logo

vigiechiro-api's People

Contributors

dependabot[bot] avatar landeers avatar touilleman avatar yvesbas avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

hd60hz-open

vigiechiro-api's Issues

Fonctionnement du filtre "sites"

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:
...

Participation opportuniste

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.

Listes

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 :

  • taxon : id, libelle_long, libelle_court
  • protocole : id, titre, macro_protocole
  • site : id, titre, verrouille, observateur
  • participation : id, observateur, date_debut
  • utilisateur : id, pseudo, role

A compléter si besoin

Protocoles

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".

Les observations n'ont pas d'_id

@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".

Participations

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.

Macro protocole ==> programme

Renommer macro_protocole en programme
Un programme n'a pas de sites/participations
Un taxon lié n'est pas obligatoire dans un programme

Participations

  • POST /participations ==> créé la participation sans fichiers, pas de trigger de tadarida à ce moment
  • POST/PUT /fichiers ==> upload des fichiers avec un <lien_participation> pour unicité des fichiers pour une participation
  • PUT /participations//pieces_jointes==> ajout d'un/plusieurs fichiers à la participation, ne trigger pas tadarida (du coup tu peux appeler cette fonction de temps en temps, genre tous les 10 fichiers uploadés par exemple)
  • POST /participations//compute==> le front lance tadarida une fois tout l'upload fini

Finir la génération des titres des sites

@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 :

  • gestion des titres des protocoles routier (nom protocole - id > 600)
  • vérifier l'unicité des titre
  • Pour les protocoles carré et point fixe, s'assurer qu'une grille stoc est passée en paramètre

Insertion des localités

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.

Bug sur les patch

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']

Tirage aléatoire

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.

resource grille stoc dans list_sites

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.

Sites

  • Ajouter une méthode delete pour supprimer toutes les localites d'un site ;
  • Ajouter la "justification_non_aleatoire" dans le post d'un nouveau site.

Nouvelles routes pour avoir la liste des sites d'un protocole

Alors je vois 2 nouvelles routes, dis moi aussi ce que tu en penses.

  1. 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.

  2. 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 !

Validation inscription aux protocoles

Valider un observateur dans un protocole

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.

Liste des inscriptions à valider

protocoles/validations/

Doit retrouner une liste contenant :
utilisateur._id
utilisateur.pseudo
utilisateur.protocoles[liste des protocoles où not valid || valid == false]

Récupérer site grace à une grille_stoc

Ajouter un paramètre "grille_stoc" facultatif à la route :

  • sites.route('/protocoles/objectid:protocole_id/sites', methods=['GET'])
    qui retournera uniquement le site du protocole contenant la grille_stoc s'il y en a un sinon rien.

taxons parents

GET /taxons/#id retourne le taxon sans extend des parents.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.