Commit c4ba0ca5 authored by PkSM3's avatar PkSM3

Merge branch 'master' of ssh://delanoe.org:1979/gargantext into samuel

parents ea985fe7 87ec7c16
This diff is collapsed.
...@@ -3,9 +3,9 @@ from django.conf.urls import patterns, include, url ...@@ -3,9 +3,9 @@ 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, delete_project, delete_corpus from gargantext_web.views import delete_project, delete_corpus
from gargantext_web.views import exploration from gargantext_web.views import exploration, send_csv
from gargantext_web.views import explorer_graph, explorer_matrix from gargantext_web.views import explorer_graph, explorer_matrix, explorer_chart
admin.autodiscover() admin.autodiscover()
...@@ -22,15 +22,18 @@ urlpatterns = patterns('', ...@@ -22,15 +22,18 @@ urlpatterns = patterns('',
url(r'^project/(\d+)/delete/$', delete_project), 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), url(r'^project/(\d+)/corpus/(\d+)/delete/$', delete_corpus),
url(r'^project/(\d+)/corpus/(\d+)/data.csv$', send_csv),
url(r'^graph$', explorer_graph), url(r'^graph$', explorer_graph),
url(r'^chart$', explorer_chart),
url(r'^matrix$', explorer_matrix), url(r'^matrix$', explorer_matrix),
url(r'^exploration$', exploration), url(r'^exploration$', exploration),
url(r'^data.csv$', send_csv),
) )
from django.conf import settings from django.conf import settings
......
This diff is collapsed.
...@@ -13,23 +13,28 @@ certifi==14.05.14 ...@@ -13,23 +13,28 @@ certifi==14.05.14
cffi==0.8.6 cffi==0.8.6
cryptography==0.6 cryptography==0.6
decorator==3.4.0 decorator==3.4.0
django-autoslug==1.7.2
django-autoslug-field==0.2.3
django-cte-trees==0.9.2 django-cte-trees==0.9.2
django-extensions==1.4.0 django-extensions==1.4.0
django-grappelli==2.5.3 django-grappelli==2.5.3
django-hstore==1.3.1 django-hstore==1.3.1
django-mptt==0.6.1 django-mptt==0.6.1
django-nested-inlines==0.1 django-nested-inlines==0.1
django-treebeard==2.0
graphviz==0.4 graphviz==0.4
ipython==2.2.0 ipython==2.2.0
kombu==3.0.23 kombu==3.0.23
lxml==3.3.6 lxml==3.3.6
matplotlib==1.4.0 matplotlib==1.4.0
networkx==1.9 networkx==1.9
nltk==3.0a4
nose==1.3.4 nose==1.3.4
numpy==1.8.2 numpy==1.8.2
pandas==0.14.1 pandas==0.14.1
pexpect-u==2.5.1 pexpect-u==2.5.1
psycopg2==2.5.4 psycopg2==2.5.4
pycountry==1.8
pycparser==2.10 pycparser==2.10
pydot2==1.0.33 pydot2==1.0.33
pyparsing==2.0.2 pyparsing==2.0.2
......
...@@ -56,7 +56,7 @@ class NodeAdmin(admin.ModelAdmin): ...@@ -56,7 +56,7 @@ class NodeAdmin(admin.ModelAdmin):
user = request.user,\ user = request.user,\
name = obj.name,\ name = obj.name,\
metadata= obj.metadata,\ metadata= obj.metadata,\
resource = obj.resource) )
#nodeParent.save() #nodeParent.save()
#node.save() #node.save()
...@@ -97,7 +97,7 @@ class CorpusForm(ModelForm): ...@@ -97,7 +97,7 @@ class CorpusForm(ModelForm):
# user_id=self.request.user.id, # user_id=self.request.user.id,
# type_id=parent_type.id # type_id=parent_type.id
# ) # )
self.fields['language'].queryset = Language.objects.filter(implemented=1) #self.fields['language'].queryset = Language.objects.filter(implemented=1)
except Exception as error: except Exception as error:
print("Error with", error) print("Error with", error)
......
...@@ -12,13 +12,12 @@ from parsing.FileParsers import * ...@@ -12,13 +12,12 @@ from parsing.FileParsers import *
from time import time from time import time
from collections import defaultdict from collections import defaultdict
from gargantext_web.settings import MEDIA_ROOT
# Some usefull functions # Some usefull functions
# TODO: start the function name with an underscore (private) # TODO: start the function name with an underscore (private)
def upload_to(instance, filename): def _upload_to(instance, filename):
return 'corpora/%s/%s' % (instance.user.username, filename) return MEDIA_ROOT + '/corpora/%s/%s' % (instance.user.username, filename)
#return 'corpora/%s/%f/%s' % (instance.user.username, time(), filename)
# All classes here # All classes here
...@@ -42,9 +41,10 @@ class Ngram(models.Model): ...@@ -42,9 +41,10 @@ class Ngram(models.Model):
terms = models.CharField(max_length=255) terms = models.CharField(max_length=255)
class Resource(models.Model): class Resource(models.Model):
user = models.ForeignKey(User)
guid = models.CharField(max_length=255) guid = models.CharField(max_length=255)
type = models.ForeignKey(ResourceType, blank=True, null=True) type = models.ForeignKey(ResourceType, blank=True, null=True)
file = models.FileField(upload_to=upload_to, blank=True) file = models.FileField(upload_to=_upload_to, blank=True)
digest = models.CharField(max_length=32) # MD5 digest digest = models.CharField(max_length=32) # MD5 digest
class NodeType(models.Model): class NodeType(models.Model):
...@@ -52,7 +52,6 @@ class NodeType(models.Model): ...@@ -52,7 +52,6 @@ class NodeType(models.Model):
def __str__(self): def __str__(self):
return self.name return self.name
class NodeQuerySet(models.query.QuerySet): class NodeQuerySet(models.query.QuerySet):
"""Methods available from Node querysets.""" """Methods available from Node querysets."""
def extract_ngrams(self, keys, ngramsextractorscache=None, ngramscaches=None): def extract_ngrams(self, keys, ngramsextractorscache=None, ngramscaches=None):
...@@ -85,12 +84,6 @@ class Node(CTENode): ...@@ -85,12 +84,6 @@ class Node(CTENode):
date = models.DateField(default=timezone.now, blank=True) date = models.DateField(default=timezone.now, blank=True)
metadata = hstore.DictionaryField(blank=True) metadata = hstore.DictionaryField(blank=True)
# TODO: remove the three following fields
#fichier = models.FileField(upload_to=upload_to, blank=True)
#resource = models.ForeignKey(Resource, blank=True, null=True)
#ngrams = models.ManyToManyField(NGrams)
def __str__(self): def __str__(self):
return self.name return self.name
...@@ -122,6 +115,8 @@ class Node(CTENode): ...@@ -122,6 +115,8 @@ class Node(CTENode):
'isi' : IsiFileParser, 'isi' : IsiFileParser,
'ris' : RisFileParser, 'ris' : RisFileParser,
'europress' : EuropressFileParser, 'europress' : EuropressFileParser,
'europress_french' : EuropressFileParser,
'europress_english' : EuropressFileParser,
})[resource.type.name]() })[resource.type.name]()
metadata_list += parser.parse(str(resource.file)) metadata_list += parser.parse(str(resource.file))
# insert the new resources in the database! # insert the new resources in the database!
...@@ -175,7 +170,6 @@ class Node(CTENode): ...@@ -175,7 +170,6 @@ class Node(CTENode):
for ngram_text, weight in associations.items() for ngram_text, weight in associations.items()
]) ])
class Node_Resource(models.Model): class Node_Resource(models.Model):
node = models.ForeignKey(Node, related_name='node_resource') node = models.ForeignKey(Node, related_name='node_resource')
resource = models.ForeignKey(Resource) resource = models.ForeignKey(Resource)
......
...@@ -3,7 +3,6 @@ import dateutil.parser ...@@ -3,7 +3,6 @@ import dateutil.parser
import zipfile import zipfile
from parsing.Caches import LanguagesCache from parsing.Caches import LanguagesCache
class FileParser: class FileParser:
......
This diff is collapsed.
This diff is collapsed.
{% 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" %}">
<link rel="stylesheet" type="text/css" href="http://jun9.github.io/dc.js/css/dc.css"/>
<script type="text/javascript" src="http://jun9.github.io/dc.js/js/d3.js"></script>
<script type="text/javascript" src="http://jun9.github.io/dc.js/js/crossfilter.js"></script>
<script type="text/javascript" src="http://jun9.github.io/dc.js/js/dc.js"></script>
{% endblock %}
{% block content %}
<div class="container theme-showcase" role="main">
<div class="jumbotron">
<div class="container">
<div class="row">
<div id="monthly-move-chart">
<strong>Title</strong> (Blue Line: Avg Index, Green Line: Index
Fluctuation)
<a class="reset" href="javascript:volumeChart.filterAll();dc.redrawAll();"
style="display: none;">reset</a>
<div class="clearfix"></div>
</div>
</div>
<div class="row">
<div id="monthly-volume-chart">
</div>
<p class="muted pull-left" style="margin-right: 15px;">Select a time range to zoom in</p>
</div>
</div>
</div>
</div>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script src="http://jun9.github.io/dc.js/js/bootstrap.min.js"></script>
<script src="{% static "js/d3/DC.js"%}"></script>
{% endblock %}
...@@ -9,9 +9,13 @@ ...@@ -9,9 +9,13 @@
<link rel="stylesheet" type="text/css" href="{% static "css/morris.css" %}"> <link rel="stylesheet" type="text/css" href="{% static "css/morris.css" %}">
<link rel="stylesheet" type="text/css" href="{% static "css/jquery.easy-pie-chart.css"%}"> <link rel="stylesheet" type="text/css" href="{% static "css/jquery.easy-pie-chart.css"%}">
<script src="{% static "js/jquery/jquery-1.9.1.min.js"%}"></script>
<script src="{% static "js/raphael-min.js"%}"></script> <link rel="stylesheet" type="text/css" href="http://jun9.github.io/dc.js/css/dc.css"/>
<script src="{% static "js/morris.min.js"%}"></script>
<script type="text/javascript" src="http://jun9.github.io/dc.js/js/d3.js"></script>
<script type="text/javascript" src="http://jun9.github.io/dc.js/js/crossfilter.js"></script>
<script type="text/javascript" src="http://jun9.github.io/dc.js/js/dc.js"></script>
{% endblock %} {% endblock %}
...@@ -19,95 +23,99 @@ ...@@ -19,95 +23,99 @@
{% block content %} {% block content %}
<div class="container theme-showcase" role="main"> <div class="container theme-showcase" role="main">
<div class="jumbotron"> <div class="jumbotron">
<div class="row"> {% if project %}
<div class="col-md-4"> <h1>{{ project.name }} </h1>
{% if project %} {% endif %}
<h1>{{ project.name }} </h1>
{% endif %} {% if corpus %}
{{ corpus.name }}
, Created on {{ corpus.date }} ({{ number}} docs)</p>
{% endif %}
</div>
</div>
{% if corpus %} <div class="container">
<h2>{{ corpus.name }} </h2> <div class="container">
<p>Created on {{ corpus.date }} <br> ({{ number}} docs)</p>
{% endif %} <div class="row">
<div id="monthly-move-chart">
<strong>Title</strong> (Blue Line: Avg Index, Green Line: Index Fluctuation)
<a class="reset" href="javascript:volumeChart.filterAll();dc.redrawAll();"
style="display: none;">reset</a>
<div class="clearfix"></div>
</div>
</div>
<div class="row">
<div id="monthly-volume-chart"></div>
<p class="muted pull-left" style="margin-right: 15px;">Select a time range to zoom in</p>
</div>
</div>
<div class="container">
<div class="jumbotron">
<center>
<a class="btn btn-primary btn-lg" role="button" href="#">Filter and show documents !</a></p>
</center>
{% if number > 0 %} {% if number > 0 %}
<a class="btn btn-primary btn-lg" role="button" href="/admin/documents/corpus/{{ corpus.pk }}/">Modify corpus</a> <a class="btn btn-primary btn-lg" role="button" href="/admin/documents/corpus/{{ corpus.pk }}/">Modify corpus</a>
<a class="btn btn-default btn-lg" role="button" href="/admin/documents/corpus/{{ corpus.pk }}/">Export corpus</a></p> <a class="btn btn-default btn-lg" role="button" href="/admin/documents/corpus/{{ corpus.pk }}/">Export corpus</a></p>
{% endif %} {% endif %}
</div>
<div class="col-md-7"> {% if number == 0 %}
<h2> Historic</h2>
<div id="hero-area" style="height: 300px;"></div>
{% if number == 0 %}
<a class="btn btn-primary btn-lg" role="button" href="/admin/documents/corpus/{{ corpus.pk }}/">Add documents</a></p> <a class="btn btn-primary btn-lg" role="button" href="/admin/documents/corpus/{{ corpus.pk }}/">Add documents</a></p>
{% endif %} {% endif %}
</div> </div>
</div>
</div>
</div> </div>
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-md-4"> <div class="col-md-4">
<div class="jumbotron"> <div class="jumbotron">
<h3><a href="/exploration">Exploration</a></h3> <h3><a href="/exploration">Exploration</a></h3>
<ol> <ol>
<li>Count frequency</li> <li>Count frequency</li>
<li>Configurable Charts</li> <li>Configurable Charts</li>
<li>Explore Matrix</li> <li>Explore Matrix</li>
</ol> </ol>
</div> </div>
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
<div class="jumbotron"> <div class="jumbotron">
<h3>Cartography</h3> <h3>Cartography</h3>
<ol> <ol>
<li>Socio-Semantic</li> <li>Socio-Semantic</li>
<li>Graphs</li> <li>Graphs</li>
<li>Feature</li> <li>Feature</li>
</ol> </ol>
</div> </div>
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
<div class="jumbotron"> <div class="jumbotron">
<h3>Dynamics</h3> <h3>Dynamics</h3>
<ol> <ol>
<li>Dynamic maps</li> <li>Dynamic maps</li>
<li>Phylomemy</li> <li>Phylomemy</li>
<li>Feature</li> <li>Feature</li>
</ol> </ol>
</div> </div>
</div> </div>
</div>
</div>
</div> </div>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script src="http://jun9.github.io/dc.js/js/bootstrap.min.js"></script>
<script src="{% static "js/d3/DC.js"%}"></script>
<script>
// Morris Area Chart
Morris.Area({
element: 'hero-area',
data: [
{% if dates %}
{% for date in dates %}
{Period: '{{ date.to_char }}', Quantity: '{{ date.count }}', Infos: '10'},
{% endfor %}
{% endif %}
],
xkey: 'Period',
ykeys: ['Quantity', 'Infos'],
labels: ['publications', 'Infos'],
lineWidth: 2,
hideHover: 'auto',
lineColors: ["#939393",]
});
</script>
{% endblock %} {% endblock %}
...@@ -32,7 +32,9 @@ ...@@ -32,7 +32,9 @@
<div class="col-md-4"> <div class="col-md-4">
<p> <p>
{% if donut %}
<div id="hero-donut" style="height: 200px;"></div> <div id="hero-donut" style="height: 200px;"></div>
{% endif %}
<center> <center>
<button <button
type="button" type="button"
...@@ -67,26 +69,34 @@ ...@@ -67,26 +69,34 @@
<!-- Add jumbotron container for each type of corpus (presse, science etc.) --!> <!-- Add jumbotron container for each type of corpus (presse, science etc.) --!>
<div class="container"> <div class="container">
<div class="row"> {% if list_corpora %}
{% if board %} <ul>
{% for corpus in board %} {% for key, corpora in list_corpora.items %}
<li>{{ key }}</li>
<ul>
{% for corpus in corpora %}
<li>
<a href="/project/{{project.id}}/corpus/{{corpus.id}}">{{corpus.name}}</a>
, {{ corpus.count }} Documents
</li>
{% endfor %}
</ul>
{% endfor %}
</ul>
{% endif %}
{% if list_corporax %}
<div class="col-md-4"> <div class="col-md-4">
<h3><a href="/project/{{project.id}}/corpus/{{corpus.id}}">{{corpus.name}}</a> <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">Yes, I am sure!</a>'>Delete</button> <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">Yes, I am sure!</a>'>Delete</button>
</h3> </h3>
<h4>{{ corpus.count }} Documents </h4> <h4>{{ corpus.count }} Documents </h4>
<p>{{ corpus.language }} {{ corpus.database}}</p>
<h5>Activity:</h5> <h5>Activity:</h5>
<div class="chart" data-percent="73">73%</div> <div class="chart" data-percent="73">73%</div>
</div> </div>
{% endfor %}
{% endif %} {% endif %}
</div>
</div> </div>
...@@ -95,8 +105,8 @@ ...@@ -95,8 +105,8 @@
Morris.Donut({ Morris.Donut({
element: 'hero-donut', element: 'hero-donut',
data: [ data: [
{% if camembert %} {% if donut %}
{% for part in camembert %} {% for part in donut %}
{label: '{{ part.source }}, {{part.count}} docs', value: {{ part.part }} }, {label: '{{ part.source }}, {{part.count}} docs', value: {{ part.part }} },
{% endfor %} {% endfor %}
{% endif %} {% endif %}
......
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