Commit 555a6ec8 authored by Administrator's avatar Administrator

Merge branch 'alex'

Intégration modifs alex
parents 8b81babb 0b7a2466
This diff is collapsed.
...@@ -3,23 +3,27 @@ from django.conf.urls import patterns, include, url ...@@ -3,23 +3,27 @@ from django.conf.urls import patterns, include, url
from django.contrib import admin from django.contrib import admin
from gargantext_web.views import home, projects, project, corpus from gargantext_web.views import home, projects, project, corpus
from gargantext_web.views import add_corpus from gargantext_web.views import add_corpus, delete_project, delete_corpus
admin.autodiscover() admin.autodiscover()
urlpatterns = patterns('', urlpatterns = patterns('',
# Examples:
# url(r'^$', 'gargantext_web.views.home', name='home'), # url(r'^$', 'gargantext_web.views.home', name='home'),
# url(r'^blog/', include('blog.urls')), # url(r'^blog/', include('blog.urls')),
url(r'^admin/', include(admin.site.urls)), url(r'^admin/', include(admin.site.urls)),
url(r'^login/', include(admin.site.urls)), url(r'^login/', include(admin.site.urls)),
url(r'^grappelli/', include('grappelli.urls')), # grappelli URLS url(r'^grappelli/', include('grappelli.urls')),
url(r'^$', home), url(r'^$', home),
url(r'^add/corpus/$', add_corpus),
url(r'^projects/$', projects), url(r'^projects/$', projects),
url(r'^project/(\d+)/delete/$', delete_project),
url(r'^project/(\d+)/$', project), url(r'^project/(\d+)/$', project),
url(r'^project/(\d+)/add/$', add_corpus),
url(r'^project/(\d+)/corpus/(\d+)/$', corpus), url(r'^project/(\d+)/corpus/(\d+)/$', corpus),
url(r'^project/(\d+)/corpus/(\d+)/delete$$', delete_corpus),
) )
from django.conf import settings from django.conf import settings
......
...@@ -6,7 +6,10 @@ from django.template.loader import get_template ...@@ -6,7 +6,10 @@ from django.template.loader import get_template
from django.template import Context from django.template import Context
#from documents.models import Project, Corpus, Document #from documents.models import Project, Corpus, Document
from node.models import Node, NodeType
from node.models import Language, DatabaseType, Resource
from node.models import Node, NodeType, Project, Corpus
from node.admin import CorpusForm, ProjectForm, ResourceForm
from django.contrib.auth.models import User from django.contrib.auth.models import User
...@@ -18,6 +21,8 @@ from django import forms ...@@ -18,6 +21,8 @@ from django import forms
from collections import defaultdict from collections import defaultdict
from parsing.FileParsers import *
# SOME FUNCTIONS # SOME FUNCTIONS
def query_to_dicts(query_string, *query_args): def query_to_dicts(query_string, *query_args):
...@@ -82,18 +87,26 @@ def projects(request): ...@@ -82,18 +87,26 @@ def projects(request):
user = request.user user = request.user
date = datetime.datetime.now() date = datetime.datetime.now()
project = NodeType.objects.get(name='Project') project_type = NodeType.objects.get(name='Project')
projects = Node.objects.filter(user=user, type_id = project.id).order_by("-date") projects = Node.objects.filter(user=user, type_id = project_type.id).order_by("-date")
number = len(projects) number = len(projects)
if request.method == 'POST':
# form = ProjectForm(request.POST)
# TODO : protect from sql injection here
name = str(request.POST['name'])
if name != "" :
Project(name=name, type=project_type, user=user).save()
return HttpResponseRedirect('/projects/')
else:
form = ProjectForm()
html = t.render(Context({\ return render(request, 'projects.html', {
'user': user,\ 'date': date,
'date': date,\ 'form': form,
'projects': projects,\ 'number': number,
'number': number,\ 'projects': projects
})) })
return HttpResponse(html)
def project(request, project_id): def project(request, project_id):
if not request.user.is_authenticated(): if not request.user.is_authenticated():
...@@ -104,9 +117,7 @@ def project(request, project_id): ...@@ -104,9 +117,7 @@ def project(request, project_id):
except ValueError: except ValueError:
raise Http404() raise Http404()
t = get_template('project.html')
user = request.user user = request.user
date = datetime.datetime.now() date = datetime.datetime.now()
project = Node.objects.get(id=project_id) project = Node.objects.get(id=project_id)
...@@ -121,15 +132,58 @@ def project(request, project_id): ...@@ -121,15 +132,58 @@ def project(request, project_id):
dashboard['count'] = corpus.children.count() dashboard['count'] = corpus.children.count()
board.append(dashboard) board.append(dashboard)
html = t.render(Context({\
'user': user,\
'date': date,\
'project': project,\
'board' : board,\
'number': number,\
}))
return HttpResponse(html) if request.method == 'POST':
#form = CorpusForm(request.POST, request.FILES)
name = str(request.POST['name'])
try:
language = Language.objects.get(id=str(request.POST['language']))
except:
language = None
try:
bdd_type = DatabaseType.objects.get(id=str(request.POST['bdd_type']))
except:
bdd_type = None
try:
file = request.FILES['file']
except:
file = None
if language is not None and name != "" and bdd_type != None and file != None :
resource = Resource(user=request.user, guid=str(date), bdd_type=bdd_type, file=file)
resource.save()
node_type = NodeType.objects.get(name='Corpus')
parent = Node.objects.get(id=project_id)
Node(parent=parent, type=node_type, name=name, user=request.user, language=language).save()
#Node(parent=parent, type=node_type, name=name, user=request.user, language=language, resource=[resource,]).save()
# try:
# for resource in node.resource.all():
# fileparser = PubmedFileParser.PubmedFileParser(file='/var/www/gargantext/media/' + str(resource.file))
# fileparser.parse(node)
#
# except Exception as error:
# print(error)
return HttpResponseRedirect('/project/' + str(project_id))
else:
form = CorpusForm(request=request)
formResource = ResourceForm()
else:
form = CorpusForm(request=request)
formResource = ResourceForm()
return render(request, 'project.html', {
'form': form,
'formResource': formResource,
'user': user,
'date': date,
'project': project,
'board' : board,
'number': number,
})
def corpus(request, project_id, corpus_id): def corpus(request, project_id, corpus_id):
if not request.user.is_authenticated(): if not request.user.is_authenticated():
...@@ -191,6 +245,7 @@ def corpus(request, project_id, corpus_id): ...@@ -191,6 +245,7 @@ def corpus(request, project_id, corpus_id):
try: try:
dates = dict() dates = dict()
# query_to_dicts('''select to_char(t1.date, '%s'), count(*) # query_to_dicts('''select to_char(t1.date, '%s'), count(*)
# from documents_document as t1 # from documents_document as t1
# INNER JOIN documents_document_corpus as t2 # INNER JOIN documents_document_corpus as t2
...@@ -227,42 +282,45 @@ def corpus(request, project_id, corpus_id): ...@@ -227,42 +282,45 @@ def corpus(request, project_id, corpus_id):
return HttpResponse(html) return HttpResponse(html)
from node.admin import CorpusForm
class NameForm(forms.Form):
your_name = forms.CharField(label='Your name', max_length=100)
sender = forms.EmailField()
message = forms.CharField(widget=forms.Textarea)
fichier = forms.FileField()
def add_corpus(request): def add_corpus(request):
# if this is a POST request we need to process the form data form = CorpusForm(request=request)
#print(request.method)
if request.method == 'POST': if request.method == 'POST':
# create a form instance and populate it with data from the request: #form = CorpusForm(request.POST, request.FILES)
form = CorpusForm(request.POST, request.FILES) name = str(request.POST['name'])
# check whether it's valid:
if form.is_valid(): try:
form.save() #language = Language.objects.get(name=str(request.POST['language']))
# process the data in form.cleaned_data as required language = Language.objects.get(name='French')
# corpus.user = request.user except Exception as e:
# print(form.cleaned_data['name']) print(e)
language = None
try:
print(type(form.cleaned_data['fichier'])) if name != "" :
print("here we parse" + str(form.cleaned_data['fichier'])) project_id = 1047
except Exception as error: node_type = NodeType.objects.get(name='Corpus')
print(error) parent = Node.objects.get(id=project_id)
Corpus(parent=parent, type=node_type, name=name, user=request.user, language=language).save()
# redirect to a new URL: # try:
return HttpResponseRedirect('/projects/') # for resource in node.resource.all():
# fileparser = PubmedFileParser.PubmedFileParser(file='/var/www/gargantext/media/' + str(resource.file))
# fileparser.parse(node)
#
# except Exception as error:
# print(error)
return HttpResponseRedirect('/project/' + str(project_id))
# if a GET (or any other method) we'll create a blank form
else: else:
form = CorpusForm(request=request) form = CorpusForm(request=request)
return render(request, 'add_corpus.html', {'form': form}) return render(request, 'add_corpus.html', {'form': form})
print("5")
def delete_project(request, node_id):
Node.objects.filter(id=node_id).all().delete()
return HttpResponseRedirect('/projects/')
def delete_corpus(request, project_id, corpus_id):
Node.objects.filter(id=corpus_id).all().delete()
return HttpResponseRedirect('/project/' + project_id)
...@@ -9,7 +9,7 @@ class ResourceInLine(admin.TabularInline): ...@@ -9,7 +9,7 @@ class ResourceInLine(admin.TabularInline):
extra = 0 extra = 0
class NodeAdmin(admin.ModelAdmin): class NodeAdmin(admin.ModelAdmin):
exclude = ('user', 'path', 'depth', 'numchild') exclude = ('user', 'path', 'depth', 'numchild', 'ngrams')
list_display = ('name', 'date') list_display = ('name', 'date')
search_fields = ('name',) search_fields = ('name',)
# list_filter = ('type',) # list_filter = ('type',)
...@@ -75,21 +75,34 @@ class ProjectAdmin(NodeAdmin): ...@@ -75,21 +75,34 @@ class ProjectAdmin(NodeAdmin):
from django.db.models.query import EmptyQuerySet from django.db.models.query import EmptyQuerySet
class ProjectForm(ModelForm):
class Meta:
model = Project
exclude = ['ngrams', 'metadata', 'resource', 'parent', 'user', 'type', 'language', 'date']
class ResourceForm(ModelForm):
class Meta:
model = Resource
exclude = ['user', 'guid']
class CorpusForm(ModelForm): class CorpusForm(ModelForm):
#parent = ModelChoiceField(EmptyQuerySet) #parent = ModelChoiceField(EmptyQuerySet)
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
try: try:
self.request = kwargs.pop('request', None) self.request = kwargs.pop('request', None)
super(CorpusForm, self).__init__(*args, **kwargs) super(CorpusForm, self).__init__(*args, **kwargs)
parent_type = NodeType.objects.get(name="Project") parent_type = NodeType.objects.get(name="Project")
#parent_type = NodeType.objects.get(name=self._parent_nodetype_name) #parent_type = NodeType.objects.get(name=self._parent_nodetype_name)
self.fields['parent'].queryset = Node.objects.filter(user_id=self.request.user.id, type_id=parent_type.id) self.fields['parent'].queryset = Node.objects.filter(
user_id=self.request.user.id,
type_id=parent_type.id
)
except: except:
pass pass
class Meta: class Meta:
model = Corpus model = Corpus
exclude = ['parent', 'user', 'type', 'ngrams', 'metadata', 'resource', 'date']
class CorpusAdmin(NodeAdmin): class CorpusAdmin(NodeAdmin):
_parent_nodetype_name = 'Project' _parent_nodetype_name = 'Project'
......
...@@ -43,6 +43,8 @@ class Resource(models.Model): ...@@ -43,6 +43,8 @@ class Resource(models.Model):
guid = models.CharField(max_length=255) guid = models.CharField(max_length=255)
bdd_type = models.ForeignKey(DatabaseType, blank=True, null=True) bdd_type = models.ForeignKey(DatabaseType, blank=True, null=True)
file = models.FileField(upload_to=upload_to, blank=True) file = models.FileField(upload_to=upload_to, blank=True)
def __str__(self):
return "%s => %s" % (self.bdd_type, self.file)
class NodeType(models.Model): class NodeType(models.Model):
name = models.CharField(max_length=200) name = models.CharField(max_length=200)
...@@ -62,7 +64,7 @@ class Node(CTENode): ...@@ -62,7 +64,7 @@ class Node(CTENode):
metadata = hstore.DictionaryField(blank=True) metadata = hstore.DictionaryField(blank=True)
resource = models.ManyToManyField(Resource, blank=True) resource = models.ManyToManyField(Resource, blank=True)
ngrams = models.ManyToManyField(Ngram, blank=True) ngrams = models.ManyToManyField(Ngram, blank=True, help_text="Hold down")
def __str__(self): def __str__(self):
...@@ -81,7 +83,14 @@ class Project(Node): ...@@ -81,7 +83,14 @@ class Project(Node):
class Meta: class Meta:
proxy=True proxy=True
class CorpusManager(models.Manager):
def get_query_set(self):
corpus_type = NodeType.objects.get(name='Corpus')
return super(CorpusManager, self).get_query_set().filter(type=corpus_type)
class Corpus(Node): class Corpus(Node):
objects = CorpusManager()
class Meta: class Meta:
proxy=True proxy=True
verbose_name_plural = 'Corpora' verbose_name_plural = 'Corpora'
......
...@@ -17,8 +17,10 @@ ...@@ -17,8 +17,10 @@
<h1>Title</h1> <h1>Title</h1>
<form enctype="multipart/form-data" action="/add/corpus/" method="post"> <form enctype="multipart/form-data" action="/add/corpus/" method="post">
{% csrf_token %} {% csrf_token %}
{{ form.as_p }} {{ form.non_field_errors }}
<input type="submit" value="Save" /> {{ form.as_p}}
<input type="submit" value="Save" />
</form> </form>
</div> </div>
</div> </div>
......
{% extends "menu.html" %}
{% block css %}
{% load staticfiles %}
<link rel="stylesheet" href="{% static "css/bootstrap.css" %}">
<link rel="stylesheet" href="{% static "css/bootstrap-theme.min.css" %}">
{% endblock %}
{% block content %}
<div class="container theme-showcase" role="main">
<div class="jumbotron">
<h1>Title</h1>
<form enctype="multipart/form-data" action="/add/corpus/" method="post">
{% csrf_token %}
{{ form.non_field_errors }}
{{ form.as_p}}
<input type="submit" value="Save" />
</form>
</div>
</div>
{% endblock %}
{% extends "menu.html" %}
{% block css %}
{% load staticfiles %}
<link rel="stylesheet" href="{% static "css/bootstrap.css" %}">
<link rel="stylesheet" href="{% static "css/bootstrap-theme.min.css" %}">
{% endblock %}
{% block content %}
<div class="container theme-showcase" role="main">
<div class="jumbotron">
<h1>Title</h1>
<form enctype="multipart/form-data" action="/add/corpus/" method="post">
{% csrf_token %}
{{ form.non_field_errors }}
<div class="fieldWrapper">
<label for="id_date">Date :</label>
{{ form.date.errors }}
{{ form.date }}
</div>
<div class="fieldWrapper">
<label for="id_type">Type :</label>
{{ form.type.errors }}
{{ form.type }}
</div>
<div class="fieldWrapper">
<label for="id_user">User :</label>
{{ form.user.errors }}
{{ form.user }}
</div>
<div class="fieldWrapper">
<label for="id_name">Corpus name :</label>
{{ form.name.errors }}
{{ form.name }}
</div>
<div class="fieldWrapper">
<label for="id_parent">Parent :</label>
{{ form.parent.errors }}
<p>{{ form.parent }}</p>
</div>
<div class="fieldWrapper">
<label for="id_language">Language:</label>
{{ form.language.errors }}
<p>{{ form.language }}</p>
</div>
<div class="fieldWrapper">
<label for="id_metadata">Metadata:</label>
{{ form.metadata.errors }}
<p>{{ form.metadata }}</p>
</div>
<div class="fieldWrapper">
<label for="id_resource">Files :</label>
{{ form.resource.errors }}
<p>{{ form.resource }}</p>
</div>
<div class="fieldWrapper">
<label for="id_ngrams">{{ form.ngrams.label }}</label>
<p>
{{ form.ngrams.errors }}
{{ form.ngrams.help_text }}
{{ form.ngrams }}</p>
</div>
<input type="submit" value="Save" />
</form>
</div>
</div>
{% endblock %}
{% extends "menu.html" %}
{% block css %}
{% load staticfiles %}
<link rel="stylesheet" href="{% static "css/bootstrap.css" %}">
<link rel="stylesheet" href="{% static "css/bootstrap-theme.min.css" %}">
{% endblock %}
{% block content %}
<div class="container theme-showcase" role="main">
<div class="jumbotron">
<h1>Gargantext</h1>
<p>A web platform to explore text-mining</p>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-4 content">
<h3>Presentation</h3>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>
</div>
<div class="col-md-4 content">
<h3>Historic</h3>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>
</div>
<div class="col-md-4 content">
<h3>Tutorials</h3>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>
</div>
</div>
</div>
{% endblock %}
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
<div class="navbar-collapse collapse"> <div class="navbar-collapse collapse">
<ul class="nav navbar-nav"> <ul class="nav navbar-nav">
<li><a href="/admin/">Admin</a></li> <li><a href="/admin/">Admin</a></li>
<li><a href="/projects/">Projects</a></li> <li><a href="/projects/">My Projects</a></li>
<li><a href="/contact/">Contact</a></li> <li><a href="/contact/">Contact</a></li>
</ul> </ul>
...@@ -75,6 +75,8 @@ $(function() { ...@@ -75,6 +75,8 @@ $(function() {
</script> </script>
<script src="{% static "js/bootstrap.min.js" %}"></script> <script src="{% static "js/bootstrap.min.js" %}"></script>
<script>$(function () { $("[data-toggle='popover']").popover({html:true});});</script>
</body> </body>
</html> </html>
...@@ -15,23 +15,42 @@ ...@@ -15,23 +15,42 @@
<div class="container theme-showcase" role="main"> <div class="container theme-showcase" role="main">
<div class="jumbotron"> <div class="jumbotron">
<div class="row">
<div class="col-md-3">
{% if project %} {% if project %}
<h1>{{ project.name }}</h1> <h1>{{ project.name }}</h1>
<h3> {{number}} corpora </h3> <h3> {{number}} corpora </h3>
<p> <p>
</div>
<a class="btn btn-primary btn-lg" role="button" href="/add/corpus/">Add a corpus</a></p> <a class="btn btn-primary btn-lg" role="button" href="/add/corpus/">Add a corpus</a></p>
<div class="col-md-4">
<form enctype="multipart/form-data" action="/project/{{project.id}}/" method="post">
{% csrf_token %}
{{ form.non_field_errors }}
{{ form.as_p}}
{{ formResource.non_field_errors }}
{{ formResource.as_p}}
<input type="submit" value="Add Corpus" />
</form>
{% endif %} {% endif %}
</div> </div>
</div>
</div> </div>
<!-- Add jumbotron container for each type of coprus (presse, science etc.) --!> <!-- Add jumbotron container for each type of corpus (presse, science etc.) --!>
<div class="container"> <div class="container">
<div class="row"> <div class="row">
{% if board %} {% if board %}
{% for corpus in board %} {% for corpus in board %}
<div class="col-md-4"> <div class="col-md-4">
<h3><a href="/project/{{project.id}}/corpus/{{corpus.id}}">{{corpus.name}}</a></h3> <h3><a href="/project/{{project.id}}/corpus/{{corpus.id}}">{{corpus.name}}</a>
<button type="button" class="btn btn-xs btn-default" data-container="body" data-toggle="popover" data-placement="bottom" data-content='<a href="/project/{{ project.id }}/corpus/{{ corpus.id}}/delete">Delete it!</a>'>Manage</button>
</h3>
<h4>{{ corpus.count }} Documents </h4> <h4>{{ corpus.count }} Documents </h4>
<p>{{ corpus.language }} {{ corpus.database}}</p> <p>{{ corpus.language }} {{ corpus.database}}</p>
<h5>Activity:</h5> <h5>Activity:</h5>
......
...@@ -13,9 +13,24 @@ ...@@ -13,9 +13,24 @@
<div class="container theme-showcase" role="main"> <div class="container theme-showcase" role="main">
<div class="jumbotron"> <div class="jumbotron">
<div class="row">
<div class="col-md-3">
<h1>My {{number}} projects</h1> <h1>My {{number}} projects</h1>
<p>Template showing my working space</p> <p>Template showing my working space</p>
<a class="btn btn-primary btn-lg" role="button" href="/admin/node/project/add/">Add a project</a> </div>
<div class="col-md-4"></div>
<div class="col-md-4"></div>
<div class="col-md-4"></div>
<div class="col-md-4">
<form enctype="multipart/form-data" action="/projects/" method="post">
{% csrf_token %}
{{ form.non_field_errors }}
{{ form.as_p}}
<input type="submit" value="Add project" />
</form>
</div>
</div>
</div>
</div> </div>
</div> </div>
...@@ -25,7 +40,10 @@ ...@@ -25,7 +40,10 @@
{% for project in projects %} {% for project in projects %}
<!--<div class="col-md-offset-7 col-md-4 content" style="background-color:grey">!--> <!--<div class="col-md-offset-7 col-md-4 content" style="background-color:grey">!-->
<div class="col-md-3 content"> <div class="col-md-3 content">
<h3><a href="/project/{{ project.id }}">{{ project.name }}</a></h3> <h3><a href="/project/{{ project.id }}">{{ project.name }}</a>
<button type="button" class="btn btn-xs btn-default" data-container="body" data-toggle="popover" data-placement="bottom" data-content='<a href="/project/{{ project.id }}/delete">Delete it!</a>'>Manage</button>
</h3>
<h4>{{ project.subtitle }}<h4> <h4>{{ project.subtitle }}<h4>
<h5>Completed:</h5> <h5>Completed:</h5>
<div class="chart" barColor="#fffff" data-percent="75">75%</div> <div class="chart" barColor="#fffff" data-percent="75">75%</div>
......
{ {
"metadata": { "metadata": {
"name": "", "name": "",
"signature": "sha256:3345ac991b0346b1dfd82386fdc2a59f39b2de9bf32d03ddfbeb565927cfe7ab" "signature": "sha256:195a9cc559b057dabbc3bdae9e34d6694fc3e0d4788ecfd055da1444d1875d5a"
}, },
"nbformat": 3, "nbformat": 3,
"nbformat_minor": 0, "nbformat_minor": 0,
...@@ -45,13 +45,17 @@ ...@@ -45,13 +45,17 @@
"language": "python", "language": "python",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"prompt_number": 2 "prompt_number": 20
}, },
{ {
"cell_type": "code", "cell_type": "code",
"collapsed": false, "collapsed": false,
"input": [ "input": [
"node = Node.objects.get(name=\"PubMed corpus\")" "from node.models import Project\n",
"from django.contrib.auth.models import User\n",
"user = User.objects.get(username=\"alexandre\")\n",
"project_type = NodeType.objects.get(name=\"Project\")\n",
"Project(user=user, type=project_type, name=\"Abeilles\").save()"
], ],
"language": "python", "language": "python",
"metadata": {}, "metadata": {},
...@@ -62,18 +66,80 @@ ...@@ -62,18 +66,80 @@
"cell_type": "code", "cell_type": "code",
"collapsed": false, "collapsed": false,
"input": [ "input": [
"fileparser = PubmedFileParser.PubmedFileParser(file='/var/www/gargantext/media/' + node.fichier.name)" "node = Node.objects.filter(name=\"Abeilles\", user=user)[0]\n",
"print(node.pk)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"24\n"
]
}
],
"prompt_number": 28
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"r = node.children.get(name=\"Pubmed\")"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 40
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"r = r.resource.all()[0]"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 41
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"r.file"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 42,
"text": [
"<FieldFile: corpora/alexandre/pubmed_BwIXSzN.zip>"
]
}
],
"prompt_number": 42
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"fileparser = PubmedFileParser.PubmedFileParser(file='/var/www/gargantext/media/' + str(r.file))"
], ],
"language": "python", "language": "python",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"prompt_number": 4 "prompt_number": 43
}, },
{ {
"cell_type": "code", "cell_type": "code",
"collapsed": false, "collapsed": false,
"input": [ "input": [
"fileparser.parse(node)\n" "fileparser.parse(node)"
], ],
"language": "python", "language": "python",
"metadata": {}, "metadata": {},
...@@ -179,7 +245,7 @@ ...@@ -179,7 +245,7 @@
{ {
"metadata": {}, "metadata": {},
"output_type": "pyout", "output_type": "pyout",
"prompt_number": 5, "prompt_number": 44,
"text": [ "text": [
"[<Node: Systemic spread and propagation of a plant-pathogenic virus in European honeybees, Apis mellifera.>,\n", "[<Node: Systemic spread and propagation of a plant-pathogenic virus in European honeybees, Apis mellifera.>,\n",
" <Node: A Causal Analysis of Observed Declines in Managed Honey Bees (Apis mellifera).>,\n", " <Node: A Causal Analysis of Observed Declines in Managed Honey Bees (Apis mellifera).>,\n",
...@@ -265,7 +331,7 @@ ...@@ -265,7 +331,7 @@
] ]
} }
], ],
"prompt_number": 5 "prompt_number": 44
}, },
{ {
"cell_type": "code", "cell_type": "code",
...@@ -394,10 +460,156 @@ ...@@ -394,10 +460,156 @@
{ {
"cell_type": "code", "cell_type": "code",
"collapsed": false, "collapsed": false,
"input": [], "input": [
"Project.objects.all().delete()"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 18
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from node.models import Corpus, Project\n",
"Project.objects.all()\n",
"Corpus.objects.all()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 7,
"text": [
"[<Corpus: Abeilles>]"
]
}
],
"prompt_number": 7
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"Node.objects.filter(user=user, type=project_type)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 5,
"text": [
"[<Node: Abeilles>]"
]
}
],
"prompt_number": 5
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"destruction = Node.objects.filter(id=1038).all()"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 20
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"destruction.delete()"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 21
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"destruction"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 22,
"text": [
"[]"
]
}
],
"prompt_number": 22
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"destruction.children.all().delete()\n",
"destruction.delete"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 14,
"text": [
"<bound method Node.delete of <Node: Encore un >>"
]
}
],
"prompt_number": 14
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"help(destruction.delete)"
],
"language": "python", "language": "python",
"metadata": {}, "metadata": {},
"outputs": [] "outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Help on method delete in module cte_tree.models:\n",
"\n",
"delete(method=None, position=None, save=True) method of node.models.Node instance\n",
" Prepares the tree for deletion according to the deletion semantics\n",
" specified for the :class:`CTENode` Model, and then delegates to the\n",
" :class:`CTENode` superclass ``delete`` method.\n",
" \n",
" Default deletion `method` and `position` callable can be overridden\n",
" by being supplied as arguments to this method.\n",
" \n",
" :param method: optionally a particular deletion method, overriding\n",
" the default method specified for this model.\n",
" \n",
" :param position: optional callable to invoke prior to each move\n",
" operation, should the delete method require any moves.\n",
" \n",
" :param save: optional flag indicating whether this model's\n",
" :meth:`save` method should be invoked after each move operation,\n",
" should the delete method require any moves.\n",
"\n"
]
}
],
"prompt_number": 15
} }
], ],
"metadata": {} "metadata": {}
......
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