Commit 6b2cbdd1 authored by PkSM3's avatar PkSM3

[UPDATE] explorer view, good version, do not merge yet

parent b830295e
...@@ -33,6 +33,7 @@ class Parsers(defaultdict): ...@@ -33,6 +33,7 @@ class Parsers(defaultdict):
_parsers = { _parsers = {
'pubmed' : PubmedFileParser, 'pubmed' : PubmedFileParser,
'istex' : ISText,
'isi' : IsiFileParser, 'isi' : IsiFileParser,
'ris' : RisFileParser, 'ris' : RisFileParser,
'europress' : EuropressFileParser, 'europress' : EuropressFileParser,
......
...@@ -187,7 +187,31 @@ def testISTEX(request , project_id): ...@@ -187,7 +187,31 @@ def testISTEX(request , project_id):
print(request.method) print(request.method)
alist = ["bar","foo"] alist = ["bar","foo"]
# SQLAlchemy session
session = Session()
# do we have a valid project id?
try:
project_id = int(project_id)
except ValueError:
raise Http404()
# do we have a valid project?
project = (session
.query(Node)
.filter(Node.id == project_id)
.filter(Node.type_id == cache.NodeType['Project'].id)
).first()
if project is None:
raise Http404()
# do we have a valid user?
user = request.user
if not user.is_authenticated():
return redirect('/login/?next=%s' % request.path)
if project.user_id != user.id:
return HttpResponseForbidden()
if request.method == "POST": if request.method == "POST":
# print(alist) # print(alist)
...@@ -196,63 +220,73 @@ def testISTEX(request , project_id): ...@@ -196,63 +220,73 @@ def testISTEX(request , project_id):
N = 60 N = 60
if "query" in request.POST: query = request.POST["query"] if "query" in request.POST: query = request.POST["query"]
if "string" in request.POST: query_string = request.POST["string"].replace(" ","+") if "string" in request.POST: query_string = request.POST["string"].replace(" ","+")
# if "N" in request.POST: N = request.POST["N"] if "N" in request.POST: N = int(request.POST["N"])
print(query_string , query , N) print(query_string , query , N)
# urlreqs = [] urlreqs = []
# pagesize = 50 pagesize = 500
# tasks = MedlineFetcher() tasks = MedlineFetcher()
# chunks = list(tasks.chunks(range(N), pagesize)) chunks = list(tasks.chunks(range(N), pagesize))
# for k in chunks: for k in chunks:
# if (k[0]+pagesize)>N: pagesize = N-k[0] if (k[0]+pagesize)>N: pagesize = N-k[0]
# urlreqs.append("http://api.istex.fr/document/?q="+query_string+"&output=*&"+"from="+str(k[0])+"&size="+str(pagesize)) urlreqs.append("http://api.istex.fr/document/?q="+query_string+"&output=*&"+"from="+str(k[0])+"&size="+str(pagesize))
# print(urlreqs) print(urlreqs)
# urlreqs = ["http://localhost/374255" , "http://localhost/374278" ] # urlreqs = ["http://localhost/374255" , "http://localhost/374278" ]
# print(urlreqs) # print(urlreqs)
# resource_type = ResourceType.objects.get(name="istext" ) resourcetype = cache.ResourceType["istex"]
print(resourcetype)
# parent = Node.objects.get(id=project_id) # corpus node instanciation as a Django model
# node_type = NodeType.objects.get(name='Corpus') corpus = Node(
# type_id = NodeType.objects.get(name='Document').id name = query,
# user_id = User.objects.get( username=request.user ).id user_id = request.user.id,
parent_id = project_id,
# corpus = Node( type_id = cache.NodeType['Corpus'].id,
# user=request.user, language_id = None,
# parent=parent, )
# type=node_type, session.add(corpus)
# name=query, session.commit()
# )
tasks = MedlineFetcher()
# corpus.save() for i in range(8):
t = threading.Thread(target=tasks.worker2) #thing to do
# # configuring your queue with the event t.daemon = True # thread dies when main thread (only non-daemon thread) exits.
# for i in range(8): t.start()
# t = threading.Thread(target=tasks.worker2) #thing to do for url in urlreqs:
# t.daemon = True # thread dies when main thread (only non-daemon thread) exits. filename = MEDIA_ROOT + '/corpora/%s/%s' % (request.user, str(datetime.datetime.now().isoformat()))
# t.start() tasks.q.put( [url , filename]) #put a task in th queue
# for url in urlreqs: tasks.q.join() # wait until everything is finished
# filename = MEDIA_ROOT + '/corpora/%s/%s' % (request.user, str(datetime.now().microsecond))
# tasks.q.put( [url , filename]) #put a task in th queue dwnldsOK = 0
# tasks.q.join() # wait until everything is finished for filename in tasks.firstResults:
# for filename in tasks.firstResults: if filename!=False:
# corpus.add_resource( user=request.user, type=resource_type, file=filename ) print(filename)
# add the uploaded resource to the corpus
add_resource(corpus,
# corpus.save() user_id = request.user.id,
# print("DEBUG:",DEBUG) type_id = resourcetype.id,
# # do the WorkFlow file = filename,
# try: )
# if DEBUG is True: dwnldsOK+=1
# corpus.workflow()
# else: if dwnldsOK == 0: return JsonHttpResponse(["fail"])
# corpus.workflow.apply_async((), countdown=3)
try:
# return JsonHttpResponse(["workflow","finished"]) def apply_workflow(corpus):
# except Exception as error: parse_resources(corpus)
# print(error) extract_ngrams(corpus, ['title'])
compute_tfidf(corpus)
if DEBUG:
apply_workflow(corpus)
else:
thread = threading.Thread(target=apply_workflow, args=(corpus, ), daemon=True)
thread.start()
except Exception as error:
print('WORKFLOW ERROR')
print(error)
return HttpResponseRedirect('/project/' + str(project_id))
data = [query_string,query,N] data = [query_string,query,N]
return JsonHttpResponse(data) return JsonHttpResponse(data)
......
...@@ -276,10 +276,15 @@ ...@@ -276,10 +276,15 @@
function bringDaNoise() { function bringDaNoise() {
var theresults = $("#theresults").html() var theresults = $("#theresults").html()
if( theresults && theresults.search("No results")==-1 ) { if( theresults && theresults.search("No results")==-1 ) {
var origQuery = $("#id_name").val()
console.log("we've in dynamic mode") console.log("we've in dynamic mode")
$("#simpleloader").html('<img width="30px" src="{% static "js/libs/img2/loading-bar.gif" %}"></img>') $("#simpleloader").html('<img width="30px" src="{% static "js/libs/img2/loading-bar.gif" %}"></img>')
$("#submit_thing").prop('onclick',null); $("#submit_thing").prop('onclick',null);
doTheQuery(); var theType = $("#id_type option:selected").html();
if(theType=="pubmed") doTheQuery();
if(theType=="istex") {
testISTEX(origQuery.replace(" ","+"),1000)
}
} }
else { else {
console.log("we dont have nothing inside results div") console.log("we dont have nothing inside results div")
...@@ -301,6 +306,8 @@ ...@@ -301,6 +306,8 @@
function getGlobalResults(value){ function getGlobalResults(value){
console.log("in getGlobalResults()") console.log("in getGlobalResults()")
console.log("value:")
console.log(value)
// AJAX to django // AJAX to django
var pubmedquery = $("#id_name").val() var pubmedquery = $("#id_name").val()
var Npubs = $("#id_N").val(); var Npubs = $("#id_N").val();
...@@ -311,6 +318,8 @@ ...@@ -311,6 +318,8 @@
$("#"+value.id).prop('onclick',null); $("#"+value.id).prop('onclick',null);
var theType = $("#id_type option:selected").html(); var theType = $("#id_type option:selected").html();
console.log("theType:")
console.log(theType)
if(theType=="pubmed") { if(theType=="pubmed") {
$.ajax({ $.ajax({
...@@ -348,7 +357,7 @@ ...@@ -348,7 +357,7 @@
}); });
} }
if(theType=="istext") { if(theType=="istex") {
console.log(window.location.origin+"tests/istextquery") console.log(window.location.origin+"tests/istextquery")
$.ajax({ $.ajax({
// contentType: "application/json", // contentType: "application/json",
...@@ -424,7 +433,7 @@ ...@@ -424,7 +433,7 @@
//CSS events for changing the Select element //CSS events for changing the Select element
function CustomForSelect( selected ) { function CustomForSelect( selected ) {
// show Radio-Inputs and trigger FileOrNotFile>@upload-file events // show Radio-Inputs and trigger FileOrNotFile>@upload-file events
if(selected=="pubmed" || selected=="istext") { if(selected=="pubmed" || selected=="istex") {
// if(selected=="pubmed") { // if(selected=="pubmed") {
console.log("show the button for: "+selected) console.log("show the button for: "+selected)
$("#pubmedcrawl").css("visibility", "visible"); $("#pubmedcrawl").css("visibility", "visible");
...@@ -475,7 +484,7 @@ ...@@ -475,7 +484,7 @@
var origQuery = query var origQuery = query
var pubmedifiedQuery = { query : query , string: query } var pubmedifiedQuery = { query : query , string: query , N:Npubs}
// console.log(pubmedifiedQuery) // console.log(pubmedifiedQuery)
var projectid = window.location.href.split("project")[1].replace(/\//g, '')//replace all the slashes var projectid = window.location.href.split("project")[1].replace(/\//g, '')//replace all the slashes
...@@ -491,7 +500,7 @@ ...@@ -491,7 +500,7 @@
success: function(data) { success: function(data) {
console.log("ajax_success: in testISTEX()") console.log("ajax_success: in testISTEX()")
console.log(data) console.log(data)
// location.reload(); location.reload();
}, },
error: function(result) { error: function(result) {
console.log("in testISTEX(). Data not found"); console.log("in testISTEX(). Data not found");
......
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