Commit 7122addb authored by delanoe's avatar delanoe

Merge branch 'refactoring' into refactoring-alex

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