Skip to content
This repository has been archived by the owner on Jan 16, 2020. It is now read-only.

Commit

Permalink
Merge pull request #262 from ofilangi/federation
Browse files Browse the repository at this point in the history
Fix somes bugs with owl integration
  • Loading branch information
Olivier Filangi committed Apr 24, 2018
2 parents d21bc8f + 1a02ed4 commit bce1c22
Show file tree
Hide file tree
Showing 9 changed files with 72 additions and 31 deletions.
26 changes: 18 additions & 8 deletions askomics/ask_view.py
Expand Up @@ -305,16 +305,22 @@ def delete_endpoints(self):
"""
"""
self.data = {}

self.checkAuthSession()

if 'endpoints' not in self.request.json_body:
raise exc.exception_response(404)
if 'id_endpoints' not in self.request.json_body:
self.data['error'] = 'Devel : id_endpoints value is not defined !'
self.request.response.status = 400
return self.data

endpoints = self.request.json_body['id_endpoints']

em = EndpointManager(self.settings, self.request.session)

for id in self.request.json_body['endpoints']:
em.remove(id)
for url in endpoints:
em.remove(url)
##raise ValueError("ok")

@view_config(route_name='add_endpoint', request_method='POST')
def add_endpoint(self):
Expand Down Expand Up @@ -415,12 +421,16 @@ def list_endpoints(self):
"""

session = {}
try:
em = EndpointManager(self.settings, self.request.session)
session['askomics'] = em.listEndpoints()

em = EndpointManager(self.settings, self.request.session)
session['askomics'] = em.listEndpoints()
sqb = SparqlQueryBuilder(self.settings, self.request.session)
session['external'] = sqb.getExternalServiceEndpoint()
except Exception as e:
traceback.print_exc(file=sys.stdout)
self.data['error'] = str(e)

sqb = SparqlQueryBuilder(self.settings, self.request.session)
session['external'] = sqb.getExternalServiceEndpoint()
return session


Expand Down
31 changes: 23 additions & 8 deletions askomics/libaskomics/EndpointManager.py
Expand Up @@ -67,29 +67,43 @@ def saveEndpoint(self,name,url,auth,isenable):
conn.close()
return ID

def enable(self,name):
def enable(self,id):

conn = sqlite3.connect(self.pathdb,uri=True)
c = conn.cursor()

reqSql = "UPDATE endpoints SET "\
+ " enable = 1 ," \
+ " message = '' " \
+ " WHERE name = '"+str(name)+"'"
+ " WHERE id = '"+str(id)+"'"

c.execute(reqSql)
conn.commit()
conn.close()

def disable(self,name,message):
def disable(self,id,message):

conn = sqlite3.connect(self.pathdb,uri=True)
c = conn.cursor()

reqSql = "UPDATE endpoints SET "\
+ " enable = 0 , " \
+ " message = '"+message+"' " \
+ " WHERE name = '"+str(name)+"'"
+ " WHERE id = '"+str(id)+"'"

c.execute(reqSql)
conn.commit()
conn.close()

def disableUrl(self,endp,message):

conn = sqlite3.connect(self.pathdb,uri=True)
c = conn.cursor()

reqSql = "UPDATE endpoints SET "\
+ " enable = 0 , " \
+ " message = '"+message+"' " \
+ " WHERE url = '"+str(endp)+"'"

c.execute(reqSql)
conn.commit()
Expand Down Expand Up @@ -168,18 +182,19 @@ def listActiveEndpoints(self):

return data

def remove(self,name):

def remove(self,id):
print("================================ REMOVE FROM DATABASE ENDPOINT :"+str(id))
conn = sqlite3.connect(self.pathdb,uri=True)
c = conn.cursor()

reqSql = "DELETE FROM endpoints WHERE name = '"+ str(name)+"'"

reqSql = "DELETE FROM endpoints WHERE id = '"+ str(id)+"'"
print(reqSql)
try:
c.execute(reqSql)
conn.commit()
except sqlite3.OperationalError as e :
self.log.warn("Jobs database does not exist .")
print(e)

conn.close()

Expand Down
6 changes: 3 additions & 3 deletions askomics/libaskomics/TripleStoreExplorer.py
Expand Up @@ -45,7 +45,7 @@ def get_start_points(self):
ql = MultipleQueryLauncher(self.settings, self.session)
em = EndpointManager(self.settings, self.session)

lEndp = em.listEndpoints()
lEndp = em.listActiveEndpoints()
results = ql.process_query(sqg.get_public_start_point().query,lEndp,indexByEndpoint=True)
r2 = ql.process_query(sqg.get_user_start_point().query,lEndp,indexByEndpoint=True)

Expand Down Expand Up @@ -85,7 +85,7 @@ def getUserAbstraction(self):
sqg = SparqlQueryGraph(self.settings, self.session)
ql = MultipleQueryLauncher(self.settings, self.session)
em = EndpointManager(self.settings, self.session)
lEndp = em.listEndpoints()
lEndp = em.listActiveEndpoints()

data['relations'] = ql.process_query(sqg.get_public_abstraction_relation('owl:ObjectProperty').query,lEndp)
data['relations'] += ql.process_query(sqg.get_user_abstraction_relation('owl:ObjectProperty').query,lEndp)
Expand Down Expand Up @@ -207,7 +207,7 @@ def get_prefix_uri(self):
sqg = SparqlQueryGraph(self.settings, self.session)
ql = MultipleQueryLauncher(self.settings, self.session)
em = EndpointManager(self.settings, self.session)
rs = ql.process_query(sqg.get_prefix_uri().query,em.listEndpoints())
rs = ql.process_query(sqg.get_prefix_uri().query,em.listActiveEndpoints())
results = {}
r_buf = {}

Expand Down
6 changes: 5 additions & 1 deletion askomics/libaskomics/rdfdb/QueryLauncher.py
Expand Up @@ -10,6 +10,7 @@
import urllib.request

from askomics.libaskomics.ParamManager import ParamManager
from askomics.libaskomics.EndpointManager import EndpointManager

class SPARQLError(RuntimeError):
"""
Expand Down Expand Up @@ -170,7 +171,10 @@ def _execute_query(self, query, log_raw_results=True, externalService=None):
try:
results = data_endpoint.query().convert()
if type(results) != dict :
raise ValueError("JSON is not supported by the sparql endpoint. Askomics can not support this format results :"+type(results).__module__+"."+type(results).__name__)
error = "JSON is not supported by the sparql endpoint. Askomics can not support this format results :"+type(results).__module__+"."+type(results).__name__
em = EndpointManager(self.settings, self.session)
em.disableUrl(self.endpoint,error)
results = []

except urllib.error.URLError as URLError:
#url error, we disable the endpoint
Expand Down
2 changes: 1 addition & 1 deletion askomics/libaskomics/source_file/SourceFileTsv.py
Expand Up @@ -424,7 +424,7 @@ def get_domain_knowledge(self):
ttl += (" , \n" + indent ).join(map(lambda category : self.encode_to_rdf_uri(category,prefix="askomics:"), categories)) + " .\n"
for item in categories:
if item.strip() != "":
ttl += self.encode_to_rdf_uri(item,prefix="askomics:") + " rdf:type " + self.encode_to_rdf_uri(header,prefix="askomics:") + " ;\n" + len(item) * " " + " rdfs:label " + self.escape['text'](item,'') + "^^xsd:string .\n"
ttl += self.encode_to_rdf_uri(item,prefix="askomics:") + " rdf:type " + self.encode_to_rdf_uri(header+"CategoryValue",prefix="askomics:") + " ;\n" + len(item) * " " + " rdfs:label " + self.escape['text'](item,'') + "^^xsd:string .\n"

return ttl

Expand Down
6 changes: 5 additions & 1 deletion askomics/libaskomics/source_file/SourceFileTtl.py
Expand Up @@ -22,7 +22,11 @@ class SourceFileTtl(SourceFile):

def __init__(self, settings, session, path, file_type='ttl'):

newfile = self.convert_to_ttl(path,file_type)
newfile = path

if not file_type == 'ttl':
newfile = self.convert_to_ttl(path,file_type)

SourceFile.__init__(self, settings, session, newfile)

self.type = 'ttl'
Expand Down
11 changes: 6 additions & 5 deletions askomics/static/src/js/core/IHMLocal.js
Expand Up @@ -423,13 +423,13 @@ class IHMLocal {
if ($(this).is(':checked')) {selected.push($(this).attr('name'));}
});
let service = new RestServiceJs('delete_endpoints');
let model = {'endpoints': selected};
let model = {'id_endpoints': selected};
//show the spinner
$('#spinner_delete').removeClass('hidden');
service.post(model, function(data) {
__ihm.loadEndpoints();
__ihm.stopSession();
__ihm.resetStats();
//__ihm.stopSession();
//__ihm.resetStats();
});
});

Expand Down Expand Up @@ -820,13 +820,14 @@ class IHMLocal {
new AskomicsJobsViewManager().loadjob().then(function () {
new AskomicsJobsViewManager().update_jobview ();
});
__ihm.displayModal('Loading data...', '', 'Close');
});

__ihm.displayModal('Loading data...', '', 'Close');
}

load_remote_data(public_d) {
let url = $('#data-url').val();
load_remote_data_onclick(public_d,url);
__ihm.load_remote_data_onclick(public_d,url);
}

set_upload_url() {
Expand Down
Expand Up @@ -49,5 +49,5 @@
</tbody>
</table>

<button id="upload_galaxy" type="button" class="btn btn-default" disabled><i class="fa fa-cloud-upload text-primary"></i> Upload to AskOmics</button>
<button id="upload_galaxy" type="button" class="btn btn-default"><i class="fa fa-cloud-upload text-primary"></i> Upload to AskOmics</button>
<i class="hidden fa fa-spinner pulse" id='spinner_galaxy-upload'></i>
13 changes: 10 additions & 3 deletions askomics/test/EndpointManager_test.py
Expand Up @@ -52,7 +52,7 @@ def test_disable_enable(self):
listActiveEndp = jm.listActiveEndpoints()
assert len(listActiveEndp) == 0

jm.enable("testNameEndpoint")
jm.enable(1)
listActiveEndp = jm.listActiveEndpoints()

assert len(listActiveEndp) == 1
Expand All @@ -61,7 +61,7 @@ def test_disable_enable(self):
and listActiveEndp[0]['endpoint'] == "http://www.urlTPS.com"
and listActiveEndp[0]['auth'].lower() == "digest")

jm.disable("testNameEndpoint","test disable")
jm.disable(1,"test disable")

listActiveEndp = jm.listActiveEndpoints()

Expand All @@ -83,10 +83,17 @@ def test_listEndpoints(self):
listEndp = jm.listEndpoints()
assert len(listEndp) == 1
jm.remove("bidon")
jm.remove("testNameEndpoint")
jm.remove("1")
listEndp = jm.listEndpoints()
assert len(listEndp) == 0

def test_disableUrl(self):
jm = EndpointManager(self.settings, self.request.session)
jm.disableUrl("bidon","bidon")
jm.saveEndpoint("testNameEndpoint","http://www.urlTPS.com",'Digest',True)
jm.disableUrl("testNameEndpoint","bidon")
jm.remove("1")

def test_raise_SQLException(self):
jm = EndpointManager(self.settings, self.request.session)
jm.drop()
Expand Down

0 comments on commit bce1c22

Please sign in to comment.