Commit 34cf69ca authored by Administrator's avatar Administrator

[FEAT] Update Button active in corpus view

Actions performed:
- remove Trash Nodes
- remove Temporary Lists
- remove Cooc Node

	modifié :         ../templates/corpus/menu.html
	In the menu, url is adapted for each view

	modifié :         ../analysis/functions.py
	function to update current corpus

	modifié :         views.py
	modifié :         corpus_views.py
	corpus views updates (for the url/path mainly)

	modifié :         urls.py
	urls have been added
parent 0920ed0a
...@@ -21,7 +21,10 @@ def create_synonymes(user, corpus): ...@@ -21,7 +21,10 @@ def create_synonymes(user, corpus):
size = 1000 size = 1000
def create_whitelist(user, corpus_id, size=size, count_min=2): def create_whitelist(user, corpus_id, size=size, count_min=2, miam_id=None):
if miam_id is None:
PrintException()
cursor = connection.cursor() cursor = connection.cursor()
whitelist_type_id = cache.NodeType['WhiteList'].id whitelist_type_id = cache.NodeType['WhiteList'].id
...@@ -53,10 +56,14 @@ def create_whitelist(user, corpus_id, size=size, count_min=2): ...@@ -53,10 +56,14 @@ def create_whitelist(user, corpus_id, size=size, count_min=2):
node_node_ngram AS nngX ON nngX.node_id = n.id node_node_ngram AS nngX ON nngX.node_id = n.id
INNER JOIN INNER JOIN
node_ngram AS ngX ON ngX.id = nngX.ngram_id node_ngram AS ngX ON ngX.id = nngX.ngram_id
INNER JOIN
node_node_ngram AS miam ON ngX.id = miam.ngram_id
WHERE WHERE
n.parent_id = %d n.parent_id = %d
AND AND
n.type_id = %d n.type_id = %d
AND
miam.node_id = %d
AND AND
ngX.n >= 2 ngX.n >= 2
AND AND
...@@ -72,7 +79,7 @@ def create_whitelist(user, corpus_id, size=size, count_min=2): ...@@ -72,7 +79,7 @@ def create_whitelist(user, corpus_id, size=size, count_min=2):
LIMIT LIMIT
%d %d
; ;
""" % (white_list.id, int(corpus_id), int(type_document_id), count_min, size) """ % (white_list.id, int(corpus_id), int(type_document_id), int(miam_id), count_min, size)
# print("PRINTING QYERY OF WHITELIST:") # print("PRINTING QYERY OF WHITELIST:")
# print(query_whitelist) # print(query_whitelist)
cursor.execute(query_whitelist) cursor.execute(query_whitelist)
...@@ -155,6 +162,7 @@ def get_cooc(request=None, corpus_id=None, cooc_id=None, type='node_link', size= ...@@ -155,6 +162,7 @@ def get_cooc(request=None, corpus_id=None, cooc_id=None, type='node_link', size=
from gargantext_web.api import JsonHttpResponse from gargantext_web.api import JsonHttpResponse
from analysis.louvain import best_partition from analysis.louvain import best_partition
from ngram.lists import listIds
#print(corpus_id, cooc_id) #print(corpus_id, cooc_id)
...@@ -168,7 +176,9 @@ def get_cooc(request=None, corpus_id=None, cooc_id=None, type='node_link', size= ...@@ -168,7 +176,9 @@ def get_cooc(request=None, corpus_id=None, cooc_id=None, type='node_link', size=
if session.query(Node).filter(Node.type_id==type_cooc_id, Node.parent_id==corpus_id).first() is None: if session.query(Node).filter(Node.type_id==type_cooc_id, Node.parent_id==corpus_id).first() is None:
print("Coocurrences do not exist yet, create it.") print("Coocurrences do not exist yet, create it.")
whitelist = create_whitelist(request.user, corpus_id=corpus_id, size=size) miam_id = listIds(typeList='MiamList', user_id=request.user.id, corpus_id=corpus_id)[0][0]
whitelist = create_whitelist(request.user, corpus_id=corpus_id, size=size, miam_id=miam_id)
cooccurrence_node_id = create_cooc(user=request.user, corpus_id=corpus_id, whitelist=whitelist, size=size) cooccurrence_node_id = create_cooc(user=request.user, corpus_id=corpus_id, whitelist=whitelist, size=size)
else: else:
cooccurrence_node_id = session.query(Node.id).filter(Node.type_id==type_cooc_id, Node.parent_id==corpus_id).first() cooccurrence_node_id = session.query(Node.id).filter(Node.type_id==type_cooc_id, Node.parent_id==corpus_id).first()
......
...@@ -128,7 +128,7 @@ def get_ngrams(request , project_id , corpus_id ): ...@@ -128,7 +128,7 @@ def get_ngrams(request , project_id , corpus_id ):
'processing' : processing, 'processing' : processing,
'number' : number, 'number' : number,
'list_id': list_id[0][0], 'list_id': list_id[0][0],
'view' : "Terms", 'view' : "terms",
})) }))
return HttpResponse(html) return HttpResponse(html)
...@@ -195,7 +195,7 @@ def get_journals(request , project_id , corpus_id ): ...@@ -195,7 +195,7 @@ def get_journals(request , project_id , corpus_id ):
'corpus' : corpus, 'corpus' : corpus,
'processing' : processing, 'processing' : processing,
'number' : number, 'number' : number,
'view' : "Journals", 'view' : "journals",
})) }))
return HttpResponse(html) return HttpResponse(html)
......
...@@ -48,16 +48,20 @@ urlpatterns = patterns('', ...@@ -48,16 +48,20 @@ urlpatterns = patterns('',
# Corpus management # Corpus management
# Document view (main) # Document view (main)
url(r'^project/(\d+)/corpus/(\d+)/$', views.corpus), url(r'^project/(\d+)/corpus/(\d+)/$', views.corpus),
url(r'^project/(\d+)/corpus/(\d+)/documents', views.corpus),
# Journals view # Journals view
url(r'^project/(\d+)/corpus/(\d+)/journals/journals.json$', corpus_views.test_journals), url(r'^project/(\d+)/corpus/(\d+)/journals/journals.json$', corpus_views.test_journals),
url(r'^project/(\d+)/corpus/(\d+)/journals$', corpus_views.get_journals), url(r'^project/(\d+)/corpus/(\d+)/journals', corpus_views.get_journals),
# Terms view # Terms view
url(r'^project/(\d+)/corpus/(\d+)/ngrams/ngrams.json$', corpus_views.test_ngrams), url(r'^project/(\d+)/corpus/(\d+)/ngrams/ngrams.json$', corpus_views.test_ngrams),
url(r'^project/(\d+)/corpus/(\d+)/ngrams$', corpus_views.get_ngrams), url(r'^project/(\d+)/corpus/(\d+)/terms', corpus_views.get_ngrams),
############################################################################
# Update corpus
url(r'^project/(\d+)/corpus/(\d+)/(\w+)/update$', views.update),
############################################################################
# annotations App # annotations App
url(r'^project/(\d+)/corpus/(\d+)/document/(\d+)/$', annotations_main_view), url(r'^project/(\d+)/corpus/(\d+)/document/(\d+)/$', annotations_main_view),
url(r'^annotations/', include(annotations_urls)), url(r'^annotations/', include(annotations_urls)),
......
from django.shortcuts import redirect from admin.utils import PrintException
from django.shortcuts import render from django.shortcuts import redirect, render, render_to_response
from django.db import transaction from django.db import transaction
from django.http import Http404, HttpResponse, HttpResponseRedirect, HttpResponseForbidden from django.http import Http404, HttpResponse, HttpResponseRedirect, HttpResponseForbidden
from django.template.loader import get_template from django.template.loader import get_template
from django.template import Context from django.template import Context, RequestContext
# remove this # remove this
from node import models from node import models
...@@ -43,7 +44,7 @@ from sqlalchemy import or_, func ...@@ -43,7 +44,7 @@ from sqlalchemy import or_, func
from gargantext_web import about from gargantext_web import about
from gargantext_web.db import NodeNgram, NodeNgramNgram
def login_user(request): def login_user(request):
logout(request) logout(request)
...@@ -251,6 +252,71 @@ def projects(request): ...@@ -251,6 +252,71 @@ def projects(request):
}) })
def update(request, project_id, corpus_id, view=None):
'''
update function:
- remove previous computations (temporary lists and coocurrences)
- permanent deletion of Trash
'''
if not request.user.is_authenticated():
return redirect('/login/?next=%s' % request.path)
try:
offset = int(project_id)
offset = int(corpus_id)
offset = str(view)
except ValueError:
raise Http404()
try:
white = (session.query(Node)
.filter(Node.parent_id==corpus_id)
.filter(Node.type_id == cache.NodeType['WhiteList'].id)
.first()
)
session.query(NodeNgram).filter(NodeNgram.node_id==white.id).delete()
session.delete(white)
cooc = (session.query(Node)
.filter(Node.parent_id==corpus_id)
.filter(Node.type_id == cache.NodeType['Cooccurrence'].id)
.first()
)
session.query(NodeNgramNgram).filter(NodeNgramNgram.node_id==cooc.id).delete()
session.delete(cooc)
session.commit()
except :
PrintException()
#return redirect('/project/%s/corpus/%s/%s' % (project_id, corpus_id, view))
nodes = models.Node.objects.filter(type_id=cache.NodeType['Trash'].id, user_id=request.user.id).all()
with transaction.atomic():
for node in nodes:
try:
node.children.delete()
except Exception as error:
print(error)
node.delete()
return redirect(request.path.replace('update', ''))
#
# return render_to_response(
# request.path,
# { 'title': 'User profile' },
# context_instance=RequestContext(request)
# )
#
def corpus(request, project_id, corpus_id): def corpus(request, project_id, corpus_id):
if not request.user.is_authenticated(): if not request.user.is_authenticated():
return redirect('/login/?next=%s' % request.path) return redirect('/login/?next=%s' % request.path)
...@@ -287,7 +353,7 @@ def corpus(request, project_id, corpus_id): ...@@ -287,7 +353,7 @@ def corpus(request, project_id, corpus_id):
'processing' : processing, 'processing' : processing,
# 'documents': documents,\ # 'documents': documents,\
'number' : number, 'number' : number,
'view' : "Documents" 'view' : "documents"
})) }))
return HttpResponse(html) return HttpResponse(html)
...@@ -626,14 +692,14 @@ def node_link(request, corpus_id): ...@@ -626,14 +692,14 @@ def node_link(request, corpus_id):
data = [] data = []
corpus = session.query(Node).filter(Node.id==corpus_id).first() corpus = session.query(Node).filter(Node.id==corpus_id).first()
filename = settings.MEDIA_ROOT + '/corpora/%s/%s_%s.json' % (request.user , corpus.parent_id, corpus_id) # filename = settings.MEDIA_ROOT + '/corpora/%s/%s_%s.json' % (request.user , corpus.parent_id, corpus_id)
print("file exists?:",os.path.isfile(filename)) # print("file exists?:",os.path.isfile(filename))
if os.path.isfile(filename): # if os.path.isfile(filename):
json_data = open(filename,"r") # json_data = open(filename,"r")
data = json.load(json_data) # data = json.load(json_data)
json_data.close() # json_data.close()
else: # else:
data = get_cooc(request=request, corpus_id=corpus_id, type="node_link") data = get_cooc(request=request, corpus_id=corpus_id, type="node_link")
return JsonHttpResponse(data) return JsonHttpResponse(data)
def adjacency(request, corpus_id): def adjacency(request, corpus_id):
......
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
<div class="col-md-4"> <div class="col-md-4">
<br> <br>
<a class="btn btn-default btn-lg" role="button" href="/project/{{project.id}}/corpus/{{ corpus.id }}/update">Update</a> <a class="btn btn-default btn-lg" role="button" href="/project/{{project.id}}/corpus/{{corpus.id}}/{{view}}/update">Update</a>
<a class="btn btn-default btn-lg" role="button" href="/project/{{project.id}}/corpus/{{ corpus.id }}/corpus.csv">Save</a> <a class="btn btn-default btn-lg" role="button" href="/project/{{project.id}}/corpus/{{ corpus.id }}/corpus.csv">Save</a>
<a type="button" class="btn btn-default btn-lg" data-container="body" data-toggle="popover" data-placement="bottom" <a type="button" class="btn btn-default btn-lg" data-container="body" data-toggle="popover" data-placement="bottom"
...@@ -62,9 +62,9 @@ ...@@ -62,9 +62,9 @@
<div class="btn-group btn-group-justified"> <div class="btn-group btn-group-justified">
<center> <center>
<a type="button" class="btn btn-default {% if view == "Documents" %}active{%endif%}" href="/project/{{project.id}}/corpus/{{ corpus.id }}/">{{number}} Documents</a> <a type="button" class="btn btn-default {% if view == "documents" %}active{%endif%}" href="/project/{{project.id}}/corpus/{{ corpus.id }}/documents">{{number}} Documents</a>
<a type="button" class="btn btn-default {% if view == "Journals" %}active{%endif%}" href="/project/{{project.id}}/corpus/{{ corpus.id }}/journals">Journals</a> <a type="button" class="btn btn-default {% if view == "journals" %}active{%endif%}" href="/project/{{project.id}}/corpus/{{ corpus.id }}/journals">Journals</a>
<a type="button" class="btn btn-default {% if view == "Terms" %}active{%endif%}" href="/project/{{project.id}}/corpus/{{ corpus.id }}/ngrams">Terms</a> <a type="button" class="btn btn-default {% if view == "terms" %}active{%endif%}" href="/project/{{project.id}}/corpus/{{ corpus.id }}/terms">Terms</a>
</center> </center>
</div> </div>
......
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