Commit 75bdb278 authored by Administrator's avatar Administrator

[FEAT] Delete Node is move to trash first and must exectute empty_trash() on...

[FEAT] Delete Node is move to trash first and must exectute empty_trash() on the server ones per day.
parent 3a4426d3
...@@ -33,12 +33,10 @@ urlpatterns = patterns('', ...@@ -33,12 +33,10 @@ urlpatterns = patterns('',
# Project Management # Project Management
url(r'^projects/$', views.projects), url(r'^projects/$', views.projects),
url(r'^project/(\d+)/$', views_optimized.project), url(r'^project/(\d+)/$', views_optimized.project),
url(r'^project/(\d+)/delete/$', views.delete_node), # => api.delete(children but not if copies...) url(r'^delete/(\d+)$', views.trash_node), # => api.node('id' = id, children = 'True', copies = False)
url(r'^delete/(\d+)$', views.delete_node), # => api.node('id' = id, children = 'True', copies = False)
# Corpus management # Corpus management
url(r'^project/(\d+)/corpus/(\d+)/$', views.corpus), url(r'^project/(\d+)/corpus/(\d+)/$', views.corpus),
url(r'^project/(\d+)/corpus/(\d+)/delete/$', views.delete_corpus),
url(r'^project/(\d+)/corpus/(\d+)/corpus.csv$', views.corpus_csv), url(r'^project/(\d+)/corpus/(\d+)/corpus.csv$', views.corpus_csv),
url(r'^project/(\d+)/corpus/(tests_mvc_listdocuments+)/corpus.tests_mvc_listdocuments$', views.corpus_csv), url(r'^project/(\d+)/corpus/(tests_mvc_listdocuments+)/corpus.tests_mvc_listdocuments$', views.corpus_csv),
......
...@@ -2,7 +2,7 @@ from django.shortcuts import redirect ...@@ -2,7 +2,7 @@ from django.shortcuts import redirect
from django.shortcuts import render from django.shortcuts import render
from django.db import transaction from django.db import transaction
from django.http import Http404, HttpResponse, HttpResponseRedirect 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
...@@ -30,7 +30,8 @@ import os ...@@ -30,7 +30,8 @@ import os
# SOME FUNCTIONS # SOME FUNCTIONS
from gargantext_web.settings import DEBUG, STATIC_ROOT from gargantext_web import settings
from django.http import * from django.http import *
from django.shortcuts import render_to_response,redirect from django.shortcuts import render_to_response,redirect
from django.template import RequestContext from django.template import RequestContext
...@@ -441,6 +442,44 @@ def subcorpusJSON(request, project_id, corpus_id, start , end ): ...@@ -441,6 +442,44 @@ def subcorpusJSON(request, project_id, corpus_id, start , end ):
# return HttpResponse(html) # return HttpResponse(html)
return HttpResponse( serializer.data , content_type='application/json') return HttpResponse( serializer.data , content_type='application/json')
def empty_trash():
nodes = models.Node.objects.filter(type_id=cache.NodeType['Trash'].id).all()
with transaction.atomic():
for node in nodes:
try:
node.children.delete()
except Exception as error:
print(error)
node.delete()
def trash_node(request, node_id):
# do we have a valid user?
user = request.user
node = session.query(Node).filter(Node.id == node_id).first()
if not user.is_authenticated():
return redirect('/login/?next=%s' % request.path)
if node.user_id != user.id:
return HttpResponseForbidden()
previous_type_id = node.type_id
node.type_id = cache.NodeType['Trash'].id
session.add(node)
session.commit()
if previous_type_id == cache.NodeType['Project'].id:
return HttpResponseRedirect('/projects/')
elif previous_type_id == cache.NodeType['Corpus'].id:
return HttpResponseRedirect('/project/' + str(session.query(Node.id).filter(Node.id==node.parent_id).first()[0]))
if settings.DEBUG == True:
empty_trash()
def delete_node(request, node_id): def delete_node(request, node_id):
#nodes = session.query(Node).filter(or_(Node.id == node_id, Node.parent_id == node_id)).all() #nodes = session.query(Node).filter(or_(Node.id == node_id, Node.parent_id == node_id)).all()
...@@ -643,7 +682,6 @@ def send_csv(request, corpus_id): ...@@ -643,7 +682,6 @@ def send_csv(request, corpus_id):
from gargantext_web.api import JsonHttpResponse from gargantext_web.api import JsonHttpResponse
from analysis.functions import get_cooc from analysis.functions import get_cooc
import json import json
from gargantext_web.settings import MEDIA_ROOT
def node_link(request, corpus_id): def node_link(request, corpus_id):
''' '''
Create the HttpResponse object with the node_link dataset. Create the HttpResponse object with the node_link dataset.
...@@ -652,7 +690,7 @@ def node_link(request, corpus_id): ...@@ -652,7 +690,7 @@ 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 = 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")
......
...@@ -52,6 +52,7 @@ def project(request, project_id): ...@@ -52,6 +52,7 @@ def project(request, project_id):
.outerjoin(Node_Resource, Node_Resource.node_id == Node.id) .outerjoin(Node_Resource, Node_Resource.node_id == Node.id)
.outerjoin(Resource, Resource.id == Node_Resource.resource_id) .outerjoin(Resource, Resource.id == Node_Resource.resource_id)
.filter(Node.parent_id == project.id) .filter(Node.parent_id == project.id)
.filter(Node.type_id == cache.NodeType['Corpus'].id)
.group_by(Node.id, Node.name, Resource.type_id) .group_by(Node.id, Node.name, Resource.type_id)
.order_by(Node.name) .order_by(Node.name)
) )
......
...@@ -7,7 +7,8 @@ ...@@ -7,7 +7,8 @@
#NodeType.objects.all().delete() #NodeType.objects.all().delete()
from node.models import Node, NodeType, Project, Corpus, Document, Ngram, Node_Ngram, User, Language, ResourceType from node.models import *
import pycountry import pycountry
...@@ -31,14 +32,8 @@ except: ...@@ -31,14 +32,8 @@ except:
me = User(username='pksm3') me = User(username='pksm3')
me.save() me.save()
for node_type in ['Trash', 'Root', ]:
try: NodeType.objects.get_or_create(name=node_type)
typeProject = NodeType.objects.get(name='Root')
except Exception as error:
print(error)
typeProject = NodeType(name='Root')
typeProject.save()
try: try:
typeProject = NodeType.objects.get(name='Project') typeProject = NodeType.objects.get(name='Project')
......
...@@ -44,7 +44,7 @@ ...@@ -44,7 +44,7 @@
<!-- <a class="btn btn-primary btn-lg" role="button" href="/admin/documents/corpus/{{ corpus.id }}/">Add file</a> --> <!-- <a class="btn btn-primary btn-lg" role="button" href="/admin/documents/corpus/{{ corpus.id }}/">Add file</a> -->
<a class="btn btn-primary btn-lg" role="button" href="/project/{{project.id}}/corpus/{{ corpus.id }}/corpus.csv">Save as</a> <a class="btn btn-primary btn-lg" role="button" href="/project/{{project.id}}/corpus/{{ corpus.id }}/corpus.csv">Save as</a>
<a class="btn btn-primary btn-lg" role="button" href="/project/{{project.id}}/corpus/{{ corpus.id }}/delete">Delete</a></p> <a class="btn btn-primary btn-lg" role="button" href="/delete/{{ corpus.id }}">Delete</a></p>
{% if number == 0 %} {% if number == 0 %}
<a class="btn btn-primary btn-lg" role="button" href="/admin/documents/corpus/{{ corpus.id }}/">Add documents</a></p> <a class="btn btn-primary btn-lg" role="button" href="/admin/documents/corpus/{{ corpus.id }}/">Add documents</a></p>
......
...@@ -93,7 +93,7 @@ ...@@ -93,7 +93,7 @@
<ul> <ul>
<li> Rename </li> <li> Rename </li>
<li> Add new documents </li> <li> Add new documents </li>
<li><a href="/project/{{ project.id }}/corpus/{{ corpus.id}}/delete">Delete</a></li> <li><a href="/delete/{{corpus.id}}">Delete</a></li>
</ul> </ul>
'>Manage</button> '>Manage</button>
</li> </li>
......
...@@ -44,7 +44,7 @@ ...@@ -44,7 +44,7 @@
<ul> <ul>
<li> Rename </li> <li> Rename </li>
<li> Add new corpus </li> <li> Add new corpus </li>
<li><a href="/project/{{ project.id }}/delete">Delete</a></li> <li><a href="/delete/{{ project.id }}">Delete</a></li>
</ul> </ul>
'>Manage</button> '>Manage</button>
......
...@@ -4,6 +4,7 @@ os.environ.setdefault("DJANGO_SETTINGS_MODULE", "gargantext_web.settings") ...@@ -4,6 +4,7 @@ os.environ.setdefault("DJANGO_SETTINGS_MODULE", "gargantext_web.settings")
os.environ.setdefault("DJANGO_HSTORE_GLOBAL_REGISTER", "False") os.environ.setdefault("DJANGO_HSTORE_GLOBAL_REGISTER", "False")
# database tools # database tools
from node import models
from gargantext_web.db import * from gargantext_web.db import *
from parsing.corpustools import * from parsing.corpustools import *
...@@ -11,7 +12,9 @@ from parsing.corpustools import * ...@@ -11,7 +12,9 @@ from parsing.corpustools import *
user = session.query(User).first() user = session.query(User).first()
project = session.query(Node).filter(Node.name == 'A').first() project = session.query(Node).filter(Node.name == 'A').first()
corpus = Node( corpus = Node(
parent_id = project.id, parent_id = project.id,
name = 'Test 456', name = 'Test 456',
......
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