Commit 552d249a authored by Mathieu Rodic's avatar Mathieu Rodic

[CODE] the "dash in ngrams autocompletion bug" is now fixed without touching the original library

parent bdead1de
from node import models
from gargantext_web import settings
Language = models.Language.sa
Metadata = models.Metadata.sa
Ngram = models.Ngram.sa
Node = models.Node.sa
Node_Metadata = models.Node_Metadata.sa
NodeNgram = Node_Ngram = models.Node_Ngram.sa
NodeNodeNgram = models.NodeNgramNgram.sa
NodeType = models.NodeType.sa
Resource = models.Resource.sa
ResourceType = models.ResourceType.sa
def literalquery(statement, dialect=None):
"""Generate an SQL expression string with bound parameters rendered inline
for the given SQLAlchemy statement.
WARNING: This method of escaping is insecure, incomplete, and for debugging
purposes only. Executing SQL statements with inline-rendered user values is
extremely insecure.
"""
from datetime import datetime
import sqlalchemy.orm
if isinstance(statement, sqlalchemy.orm.Query):
if dialect is None:
dialect = statement.session.get_bind(
statement._mapper_zero_or_none()
).dialect
statement = statement.statement
if dialect is None:
dialect = getattr(statement.bind, 'dialect', None)
if dialect is None:
from sqlalchemy.dialects import mysql
dialect = mysql.dialect()
Compiler = type(statement._compiler(dialect))
class LiteralCompiler(Compiler):
visit_bindparam = Compiler.render_literal_bindparam
def render_literal_value(self, value, type_):
return "'" + str(value) + "'"
if isinstance(value, (float, int)):
return str(value)
elif isinstance(value, datetime):
return repr(str(value))
else:
if isinstance(value, str):
return value.encode('UTF-8')
else:
return value
return LiteralCompiler(dialect, statement)
def get_sessionmaker():
from django.db import connections
from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine
alias = 'default'
connection = connections[alias]
url = 'postgresql+psycopg2://{USER}:{PASSWORD}@{HOST}/{NAME}'.format(
**settings.DATABASES['default']
)
engine = create_engine(url, use_native_hstore=True)
return sessionmaker(bind=engine)
Session = get_sessionmaker()
session = Session()
This diff is collapsed.
...@@ -248,7 +248,7 @@ ...@@ -248,7 +248,7 @@
</span> </span>
<span ng-if="filter.entity.key == 'ngrams'"> <span ng-if="filter.entity.key == 'ngrams'">
are in this list: are in this list:
<tags-input ng-model="filter.value" display-property="terms" placeholder="Add an ngram" on-tag-added="updateQuery()" on-tag-removed="updateQuery()" add-from-autocomplete-only="true"> <tags-input ng-model="filter.value" display-property="terms" placeholder="Add an ngram" on-tag-added="updateQuery()" on-tag-removed="updateQuery()" add-from-autocomplete-only="true" replace-spaces-with-dashes="false">
<auto-complete source="getNgrams($query)"></auto-complete> <auto-complete source="getNgrams($query)"></auto-complete>
</tags-input ng-model="tags"> </tags-input ng-model="tags">
</span> </span>
......
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