Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bug sur orderby #34

Open
mvergez opened this issue May 2, 2023 · 5 comments
Open

Bug sur orderby #34

mvergez opened this issue May 2, 2023 · 5 comments

Comments

@mvergez
Copy link

mvergez commented May 2, 2023

Salut !

En effectuant un export via l'api du module d'export et en filtrant sur une des colonne et en laissant le orderby vide, la ligne suivante plante :

if parameters.get("orderby", None).replace(" ", ""):

En effet, parameters.get("orderby", None) peut renvoyer None et donc n'a pas de fonction replace.

Que dites-vous du code suivant pour corriger ce bug ? :

if parameters.get("orderby") is not None:
            order_by = parameters.get("orderby").replace(" ", "")

Merci d'avance pour vos retours !

@bouttier
Copy link
Contributor

bouttier commented May 3, 2023

Je sais pas trop ce que vient faire ce replace mais j’imagine qu’il sert à évaluer à False une chaine avec juste des espace, ce qui n’est plus le cas avec ton code. Je suggère if parameters.get("orderby", "").strip():.

@camillemonchicourt
Copy link
Member

Fait dans b32ef72

@lpofredc
Copy link
Contributor

Problème persistent avec une erreur lorsque l'on ne précise pas de queystring "orderby" (testé sur les branches develop & master).

  File "/home/gnadmin/geonature/backend/venv/lib/python3.9/site-packages/utils_flask_sqla/generic.py", line 256, in raw_query
    q = self.build_query_order(unordered_q, self.filters)
  File "/home/gnadmin/geonature/backend/venv/lib/python3.9/site-packages/utils_flask_sqla/generic.py", line 237, in build_query_order
    return query.order_by(ordel_col)
UnboundLocalError: local variable 'ordel_col' referenced before assignment

@TheoLechemia
Copy link
Member

Effectivement je reproduit quand on passe une colonne qui n'existe pas au order by, mais pas quand on ne passe aucune query string. Le order by sur la PK est mis automatiquement par le module d'export quand ne met aucune query string.
Dans quel contexte as-tu le bug ?
Je propose une PR qui lève un 400 quand on demande un order by sur une colonne inexistante. ça devrait aussi résoudre ton bug puisque le .order_by() ne sera appliqué que si order_col est définit

@lpofredc
Copy link
Contributor

@TheoLechemia , j'ai trouvé ce qui provoque cette erreur, nous venons de passer du module d'export 1.2.8 à la version 1.6.0 dans laquelle le champ view_pk_column a été ajouté. Ce fichier de migration lui a attribué une valeur to define ce qui renvoyai l'erreur. La correction de la valeur view_pk_column corrige l'erreur.

Ton fix #45 fonctionne et renvoie bien une erreur 400 argumentée lorsque le champ orderby n'est pas renseigné ou référence une colonne non présente dans l'export. Merci!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants