Commit cbe804cd authored by delanoe's avatar delanoe

Merge branch 'refactoring' into refactoring-alex

parents 0c4ca9a6 c7bed046
...@@ -17,6 +17,6 @@ class Ngram(Base): ...@@ -17,6 +17,6 @@ class Ngram(Base):
class NodeNgram(Base): class NodeNgram(Base):
__tablename__ = 'nodes_ngrams' __tablename__ = 'nodes_ngrams'
id = Column(Integer) id = Column(Integer)
node_id = Column(Integer, ForeignKey(Node.id), primary_key=True) node_id = Column(Integer, ForeignKey(Node.id, ondelete='CASCADE'), primary_key=True)
ngram_id = Column(Integer, ForeignKey(Ngram.id), primary_key=True) ngram_id = Column(Integer, ForeignKey(Ngram.id, ondelete='CASCADE'), primary_key=True)
weight = Column(Float) weight = Column(Float)
...@@ -25,8 +25,9 @@ class Node(Base): ...@@ -25,8 +25,9 @@ class Node(Base):
__tablename__ = 'nodes' __tablename__ = 'nodes'
id = Column(Integer, primary_key=True) id = Column(Integer, primary_key=True)
typename = Column(NodeType, index=True) typename = Column(NodeType, index=True)
user_id = Column(Integer, ForeignKey(User.id)) # foreign keys
parent_id = Column(Integer, ForeignKey('nodes.id')) user_id = Column(Integer, ForeignKey(User.id, ondelete='CASCADE'))
parent_id = Column(Integer, ForeignKey('nodes.id', ondelete='CASCADE'))
# main data # main data
name = Column(String(255)) name = Column(String(255))
date = Column(DateTime(), default=datetime.now) date = Column(DateTime(), default=datetime.now)
......
from gargantext.util.http import * from gargantext.util.http import *
from gargantext.util.db import * from gargantext.util.db import *
from gargantext.util.db_cache import *
from gargantext.models import * from gargantext.models import *
from gargantext.constants import * from gargantext.constants import *
from gargantext.util.validation import validate from gargantext.util.validation import validate
class NodesList(APIView): class NodeListResource(APIView):
_fields = ['id', 'parent_id', 'name', 'typename', 'hyperdata'] _fields = ['id', 'parent_id', 'name', 'typename', 'hyperdata']
_types = NODETYPES _types = NODETYPES
...@@ -37,8 +38,11 @@ class NodesList(APIView): ...@@ -37,8 +38,11 @@ class NodesList(APIView):
# filter by parent # filter by parent
if 'parent_id' in parameters: if 'parent_id' in parameters:
query = query.filter(Node.parent_id == parameters['parent_id']) query = query.filter(Node.parent_id == parameters['parent_id'])
# paginate the query # count
count = query.count() count = query.count()
# order
query = query.order_by(Node.hyperdata['publication_date'], Node.id)
# paginate the query
if parameters['pagination_limit'] == -1: if parameters['pagination_limit'] == -1:
query = query[parameters['pagination_offset']:] query = query[parameters['pagination_offset']:]
else: else:
...@@ -49,7 +53,6 @@ class NodesList(APIView): ...@@ -49,7 +53,6 @@ class NodesList(APIView):
# return the result! # return the result!
return parameters, query, count return parameters, query, count
def get(self, request): def get(self, request):
"""Displays the list of nodes corresponding to the query. """Displays the list of nodes corresponding to the query.
""" """
...@@ -72,3 +75,32 @@ class NodesList(APIView): ...@@ -72,3 +75,32 @@ class NodesList(APIView):
'parameters': parameters, 'parameters': parameters,
'count': count, 'count': count,
}, 200) }, 200)
class NodeResource(APIView):
def _query(self, request, node_id):
user = cache.User[request.user.username]
node = session.query(Node).filter(Node.id == node_id).first()
if node is None:
raise Http404()
if not user.owns(node):
raise HttpResponseForbidden()
return user, node
def get(self, request, node_id):
from sqlalchemy import delete
user, node = self._query(request, node_id)
return JsonHttpResponse({
'id': node.id,
'parent_id': node.parent_id,
'name': node.name,
'hyperdata': node.hyperdata,
})
def delete(self, request, node_id):
user, node = self._query(request, node_id)
result = session.execute(
delete(Node).where(Node.id == node_id)
)
session.commit()
return JsonHttpResponse({'deleted': result.rowcount})
...@@ -4,5 +4,6 @@ from . import nodes ...@@ -4,5 +4,6 @@ from . import nodes
urlpatterns = [ urlpatterns = [
url(r'^nodes$', nodes.NodesList.as_view()), url(r'^nodes$', nodes.NodeListResource.as_view()),
url(r'^nodes/(\d+)$', nodes.NodeResource.as_view()),
] ]
function get_node_date(node) {
var hyperdata = node.hyperdata;
return new Date(
Number(hyperdata.publication_year),
Number(hyperdata.publication_month) - 1,
Number(hyperdata.publication_day)
);
};
function pr(msg) { function pr(msg) {
console.log(msg) console.log(msg)
} }
...@@ -89,19 +98,21 @@ function Final_UpdateTable( action ) { ...@@ -89,19 +98,21 @@ function Final_UpdateTable( action ) {
var TimeRange = AjaxRecords; var TimeRange = AjaxRecords;
var dataini = TheBuffer[0].toISOString().split("T")[0] var dataini = TheBuffer[0];
var datafin = TheBuffer[1].toISOString().split("T")[0] var datafin = TheBuffer[1];
pr("show me the pubs of the selected period") pr("show me the pubs of the selected period")
console.log( TheBuffer ) console.log( TheBuffer )
pr("\tfrom ["+dataini+"] to ["+datafin+"]") pr("\tfrom ["+dataini+"] to ["+datafin+"]")
TimeRange = [] TimeRange = []
for (var i in AjaxRecords) { console.log(dataini, datafin)
if(AjaxRecords[i].date>=dataini && AjaxRecords[i].date<=datafin){ $.each(AjaxRecords, function(i, node) {
if (node.date >= dataini && node.date >= dataini) {
// pr( AjaxRecords[i].date+" : "+AjaxRecords[i].id ) // pr( AjaxRecords[i].date+" : "+AjaxRecords[i].id )
TimeRange.push(AjaxRecords[i]) TimeRange.push(node);
} }
} });
console.log(TimeRange)
MyTable = $('#my-ajax-table').dynatable({ MyTable = $('#my-ajax-table').dynatable({
dataset: { dataset: {
...@@ -292,16 +303,10 @@ function Main_test( Data , SearchFilter ) { ...@@ -292,16 +303,10 @@ function Main_test( Data , SearchFilter ) {
// console.log(Data[i]["date"]+" : originalRecords["+arr_id+"] <- "+orig_id+" | "+Data[i]["name"]) // console.log(Data[i]["date"]+" : originalRecords["+arr_id+"] <- "+orig_id+" | "+Data[i]["name"])
} }
var get_date = function(node) { var t0 = get_node_date(AjaxRecords[0]);
var hyperdata = node.hyperdata; var t1 = get_node_date(AjaxRecords.slice(-1)[0]);
return new Date( oldest = t0;
Number(hyperdata.publication_year), latest = t1;
Number(hyperdata.publication_month) - 1,
Number(hyperdata.publication_day)
);
};
var t0 = get_date(AjaxRecords[0]);
var t1 = get_date(AjaxRecords.slice(-1)[0]);
console.log(t0, t1) console.log(t0, t1)
TheBuffer = [t0, t1]; TheBuffer = [t0, t1];
...@@ -310,15 +315,13 @@ function Main_test( Data , SearchFilter ) { ...@@ -310,15 +315,13 @@ function Main_test( Data , SearchFilter ) {
var arrayd3 = [] var arrayd3 = []
$.each(Data, function(i, node) { $.each(Data, function(i, node) {
var date = node.hyperdata.publication_date; if (node.date) {
if (justdates[date] != false) { arrayd3.push({
var info = {}; date: get_node_date(node),
info.date = date; dd: node.date,
info.dd = get_date(node); month: d3.time.month(node.date),
info.month = d3.time.month(info.dd); volume: justdates[date],
info.volume = justdates[date]; });
arrayd3.push(info);
justdates[date] = false;
} }
}); });
...@@ -529,7 +532,7 @@ $("#corpusdisplayer").hide() ...@@ -529,7 +532,7 @@ $("#corpusdisplayer").hide()
// FIRST portion of code to be EXECUTED: // FIRST portion of code to be EXECUTED:
// (3) Get records and hyperdata for paginator // (3) Get records and hyperdata for paginator
$.ajax({ $.ajax({
url: '/api/nodes?type[]=DOCUMENT&parent_id=' + corpus_id, url: '/api/nodes?type[]=DOCUMENT&pagination_limit=-1&parent_id=' + corpus_id,
success: function(data){ success: function(data){
$("#content_loader").remove(); $("#content_loader").remove();
$.each(data.records, function(i, record){ $.each(data.records, function(i, record){
...@@ -538,6 +541,7 @@ $.ajax({ ...@@ -538,6 +541,7 @@ $.ajax({
RecDict[orig_id] = arr_id; RecDict[orig_id] = arr_id;
record.title = record.name; record.title = record.name;
record.name = '<a target="_blank" href="/projects/' + project_id + '/corpora/'+ corpus_id + '/documents/' + record.id + '">' + record.name + '</a>'; record.name = '<a target="_blank" href="/projects/' + project_id + '/corpora/'+ corpus_id + '/documents/' + record.id + '">' + record.name + '</a>';
record.date = get_node_date(record);
record.del = false; record.del = false;
}); });
for (var i in data.records) { for (var i in data.records) {
......
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