Commit 5e24f36d authored by Alexandre Delanoë's avatar Alexandre Delanoë

Merge branch 'stable' into stable-imt

parents 89485bd5 1ae6b13b
"""Fix bug in title_abstract indexation
Revision ID: 159a5154362b
Revises: 73112a361617
Create Date: 2017-09-18 18:00:26.055335
"""
from alembic import op
import sqlalchemy as sa
from gargantext.util.alembic import ReplaceableObject
# revision identifiers, used by Alembic.
revision = '159a5154362b'
down_revision = '73112a361617'
branch_labels = None
depends_on = None
title_abstract_insert = ReplaceableObject(
'title_abstract_insert',
'BEFORE INSERT',
'nodes',
"""FOR EACH ROW
WHEN (NEW.hyperdata::text <> '{}'::text)
EXECUTE PROCEDURE title_abstract_update_trigger()"""
)
title_abstract_update = ReplaceableObject(
'title_abstract_update',
'BEFORE UPDATE OF hyperdata',
'nodes',
"""FOR EACH ROW
WHEN ((OLD.hyperdata ->> 'title', OLD.hyperdata ->> 'abstract')
IS DISTINCT FROM
(NEW.hyperdata ->> 'title', NEW.hyperdata ->> 'abstract'))
EXECUTE PROCEDURE title_abstract_update_trigger()"""
)
def upgrade():
op.replace_trigger(title_abstract_insert, replaces="73112a361617.title_abstract_insert")
op.replace_trigger(title_abstract_update, replaces="73112a361617.title_abstract_update")
# Manually re-build index
op.execute("UPDATE nodes SET title_abstract = to_tsvector('english', (hyperdata ->> 'title') || ' ' || (hyperdata ->> 'abstract')) WHERE typename=4")
def downgrade():
# Won't unfix the bug !
pass
...@@ -7,6 +7,12 @@ ...@@ -7,6 +7,12 @@
$httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken'; $httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken';
$httpProvider.defaults.xsrfCookieName = 'csrftoken'; $httpProvider.defaults.xsrfCookieName = 'csrftoken';
}]); }]);
function url(path) {
// adding explicit "http[s]://" -- for cross origin requests
return location.protocol + '//' + window.GARG_ROOT_URL + path;
}
/* /*
* DocumentHttpService: Read Document * DocumentHttpService: Read Document
* =================== * ===================
...@@ -98,9 +104,7 @@ ...@@ -98,9 +104,7 @@
*/ */
http.factory('MainApiAddNgramHttpService', function($resource) { http.factory('MainApiAddNgramHttpService', function($resource) {
return $resource( return $resource(
// adding explicit "https://" b/c this a cross origin request url("/api/ngrams?text=:ngramStr&corpus=:corpusId&testgroup"),
'https://' + window.GARG_ROOT_URL
+ "/api/ngrams?text=:ngramStr&corpus=:corpusId&testgroup",
{ {
ngramStr: '@ngramStr', ngramStr: '@ngramStr',
corpusId: '@corpusId', corpusId: '@corpusId',
...@@ -131,9 +135,7 @@ ...@@ -131,9 +135,7 @@
http.factory('MainApiChangeNgramHttpService', function($resource) { http.factory('MainApiChangeNgramHttpService', function($resource) {
return $resource( return $resource(
// adding explicit "https://" b/c this a cross origin request url("/api/ngramlists/change?list=:listId&ngrams=:ngramIdList"),
'https://' + window.GARG_ROOT_URL
+ "/api/ngramlists/change?list=:listId&ngrams=:ngramIdList",
{ {
listId: '@listId', listId: '@listId',
ngramIdList: '@ngramIdList' // list in str form (sep=","): "12,25,30" ngramIdList: '@ngramIdList' // list in str form (sep=","): "12,25,30"
...@@ -171,8 +173,7 @@ ...@@ -171,8 +173,7 @@
*/ */
http.factory('MainApiFavoritesHttpService', function($resource) { http.factory('MainApiFavoritesHttpService', function($resource) {
return $resource( return $resource(
// adding explicit "https://" b/c this a cross origin request url("/api/nodes/:corpusId/favorites?docs=:docId"),
'https://' + window.GARG_ROOT_URL + "/api/nodes/:corpusId/favorites?docs=:docId",
{ {
corpusId: '@corpusId', corpusId: '@corpusId',
docId: '@docId' docId: '@docId'
......
...@@ -89,9 +89,9 @@ ...@@ -89,9 +89,9 @@
</div> </div>
<div class="row-fluid"> <div class="row-fluid">
<ul class="list-group clearfix"> <ul class="list-group clearfix">
<li class="list-group-item small"><span class="badge">source</span>{[{source}]}</li> <li class="list-group-item small"><span class="badge">source</span>{[{source || '&nbsp;'}]}</li>
<li class="list-group-item small"><span class="badge">authors</span>{[{authors}]}</li> <li class="list-group-item small"><span class="badge">authors</span>{[{authors || '&nbsp;'}]}</li>
<li class="list-group-item small"><span class="badge">date</span>{[{publication_date}]}</li> <li class="list-group-item small"><span class="badge">date</span>{[{publication_date || '&nbsp;'}]}</li>
</ul> </ul>
</div> </div>
......
...@@ -16,7 +16,7 @@ django.setup() ...@@ -16,7 +16,7 @@ django.setup()
from gargantext.constants import QUERY_SIZE_N_MAX, get_resource, get_resource_by_name from gargantext.constants import QUERY_SIZE_N_MAX, get_resource, get_resource_by_name
from gargantext.models import Node, ProjectNode, DocumentNode from gargantext.models import Node, ProjectNode, DocumentNode
from gargantext.util.db import session, get_engine from gargantext.util.db import session, get_engine, func
from collections import Counter from collections import Counter
import importlib import importlib
from django.http import Http404 from django.http import Http404
...@@ -53,21 +53,25 @@ def scan_hal(request): ...@@ -53,21 +53,25 @@ def scan_hal(request):
return hal.scan_results(request) return hal.scan_results(request)
def scan_gargantext(corpus_id, request): def _search_docs(corpus_id, request):
return (session.query(DocumentNode) return (session.query(DocumentNode)
.filter(DocumentNode.parent_id==corpus_id) .filter_by(parent_id=corpus_id)
.filter(DocumentNode.title_abstract.match(request)) .filter(Node.title_abstract.match(request)))
.count())
def scan_gargantext(corpus_id, request):
return (_search_docs(corpus_id, request)
.with_entities(func.count(DocumentNode.id.distinct()))
.one())[0]
def scan_gargantext_and_delete(corpus_id, request): def scan_gargantext_and_delete(corpus_id, request):
(session.query(DocumentNode) r = _search_docs(corpus_id, request).delete(synchronize_session='fetch')
.filter(DocumentNode.parent_id=corpus_id)
.filter(DocumentNode.title_abstract.match(request))
.delete(synchronize_session='fetch')
)
session.commit() session.commit()
return r
def myProject_fromUrl(url): def myProject_fromUrl(url):
""" """
myProject :: String -> Project myProject :: String -> Project
......
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