Commit 87bb4229 authored by Mathieu Rodic's avatar Mathieu Rodic Committed by Elias

[BUGFIX] 500 error when filtering by ngrams in advanced chart

https://forge.iscpif.fr/issues/1503
parent be1301dc
...@@ -3,6 +3,11 @@ from django.core.exceptions import PermissionDenied, SuspiciousOperation ...@@ -3,6 +3,11 @@ from django.core.exceptions import PermissionDenied, SuspiciousOperation
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.db.models import Avg, Max, Min, Count, Sum
# from node.models import Language, ResourceType, Resource
# from node.models import Node, NodeType, Node_Resource, Project, Corpus
from sqlalchemy import text, distinct, or_
from sqlalchemy.sql import func from sqlalchemy.sql import func
from sqlalchemy.orm import aliased from sqlalchemy.orm import aliased
...@@ -64,7 +69,7 @@ _operators = { ...@@ -64,7 +69,7 @@ _operators = {
">": lambda field, value: (field > value), ">": lambda field, value: (field > value),
"<=": lambda field, value: (field <= value), "<=": lambda field, value: (field <= value),
">=": lambda field, value: (field >= value), ">=": lambda field, value: (field >= value),
"in": lambda field, value: (field.in_(value)), "in": lambda field, value: (or_(*tuple(field == x for x in value))),
"contains": lambda field, value: (field.contains(value)), "contains": lambda field, value: (field.contains(value)),
"startswith": lambda field, value: (field.startswith(value)), "startswith": lambda field, value: (field.startswith(value)),
} }
...@@ -481,10 +486,10 @@ class NodesChildrenQueries(APIView): ...@@ -481,10 +486,10 @@ class NodesChildrenQueries(APIView):
query = query.filter( query = query.filter(
Node.id.in_(session Node.id.in_(session
.query(Node_Ngram.node_id) .query(Node_Ngram.node_id)
.filter(Node_Ngram.ngram_id == Ngram.id) .join(Ngram, Ngram.id == Node_Ngram.ngram_id)
.filter(operator( .filter(operator(
getattr(Ngram, field[1]), getattr(Ngram, field[1]),
value map(lambda x: x.replace('-', ' '), value)
)) ))
) )
) )
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment