Commit b57ae7fe authored by Administrator's avatar Administrator

[FIX MERGE] Maintenance and logo still exists.

parent 95519dd9
...@@ -5,6 +5,7 @@ from django.http import Http404, HttpResponse, HttpResponseRedirect ...@@ -5,6 +5,7 @@ from django.http import Http404, HttpResponse, HttpResponseRedirect
from django.template.loader import get_template from django.template.loader import get_template
from django.template import Context from django.template import Context
from node import models
from node.models import Language, ResourceType, Resource, \ from node.models import Language, ResourceType, Resource, \
Node, NodeType, Node_Resource, Project, Corpus, \ Node, NodeType, Node_Resource, Project, Corpus, \
Ngram, Node_Ngram, NodeNgramNgram, NodeNodeNgram Ngram, Node_Ngram, NodeNgramNgram, NodeNodeNgram
...@@ -27,13 +28,15 @@ from parsing.FileParsers import * ...@@ -27,13 +28,15 @@ from parsing.FileParsers import *
# SOME FUNCTIONS # SOME FUNCTIONS
from gargantext_web.settings import DEBUG from gargantext_web.settings import DEBUG, STATIC_ROOT, MAINTENANCE
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
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from django.contrib.auth import authenticate, login, logout from django.contrib.auth import authenticate, login, logout
from scrap_pubmed.admin import Logger
def login_user(request): def login_user(request):
logout(request) logout(request)
username = password = '' username = password = ''
...@@ -47,7 +50,9 @@ def login_user(request): ...@@ -47,7 +50,9 @@ def login_user(request):
if user.is_active: if user.is_active:
login(request, user) login(request, user)
return HttpResponseRedirect('/projects/') print("MAINTENANCE:",MAINTENANCE)
if MAINTENANCE: return HttpResponseRedirect('/maintenance/')
else: return HttpResponseRedirect('/projects/')
return render_to_response('authentication.html', context_instance=RequestContext(request)) return render_to_response('authentication.html', context_instance=RequestContext(request))
...@@ -56,6 +61,51 @@ def logout_user(request): ...@@ -56,6 +61,51 @@ def logout_user(request):
return HttpResponseRedirect('/') return HttpResponseRedirect('/')
# Redirect to a success page. # Redirect to a success page.
def logo(request):
template = get_template('logo.svg')
group = "mines"
#group = "cnrs"
if group == "cnrs":
color = "#093558"
else:
color = "#ff8080"
svg_data = template.render(Context({\
'color': color,\
}))
return HttpResponse(svg_data, mimetype="image/svg+xml")
def css(request):
template = get_template('bootstrap.css')
css = dict()
group = "mines"
#group = "cnrs"
if group == "mines":
css['color'] = '#666666'
css['background'] = '#f8f8f7'
css['a'] = '#bd2525'
css['focus'] = '#7d1818'
css['hr'] = '#eaafae'
css['text'] = '#a2a3a2'
css['form'] = '#a5817f'
css['help'] = '#a6a6a6'
else:
css['color'] = '#E2E7EB'
css['background'] = '#8C9DAD' #container background
css['a'] = '#093558'
css['focus'] = '#556F86'
css['hr'] = '#426A8A'
css['text'] = '#214A6D'
css['form'] = '#093558'
css['help'] = '#093558'
css_data = template.render(Context({\
'css': css,\
}))
return HttpResponse(css_data, mimetype="text/css")
def query_to_dicts(query_string, *query_args): def query_to_dicts(query_string, *query_args):
"""Run a simple query and produce a generator """Run a simple query and produce a generator
that returns the results as a bunch of dictionaries that returns the results as a bunch of dictionaries
...@@ -97,20 +147,38 @@ def date_range(start_dt, end_dt = None, format=None): ...@@ -97,20 +147,38 @@ def date_range(start_dt, end_dt = None, format=None):
# SOME VIEWS # SOME VIEWS
from gargantext_web import team from gargantext_web import about
def about(request): def get_about(request):
''' '''
About Gargantext, the team and sponsors About Gargantext, the team and sponsors
''' '''
template = get_template('about.html') template = get_template('about.html')
user = request.user user = request.user
date = datetime.datetime.now() date = datetime.datetime.now()
members = team.get_team()
members = about.get_team()
sponsors = about.get_sponsors()
html = template.render(Context({\ html = template.render(Context({\
'user': user,\ 'user': user,\
'date': date,\ 'date': date,\
'team': members,\ 'team': members,\
'sponsors':sponsors,\
}))
return HttpResponse(html)
def get_maintenance(request):
'''
Gargantext out of service
'''
template = get_template('maintenance.html')
user = request.user
date = datetime.datetime.now()
html = template.render(Context({\
'user': user,\
'date': date,\
})) }))
return HttpResponse(html) return HttpResponse(html)
...@@ -141,11 +209,13 @@ def projects(request): ...@@ -141,11 +209,13 @@ def projects(request):
''' '''
if not request.user.is_authenticated(): if not request.user.is_authenticated():
return redirect('/auth/') return redirect('/auth/')
if MAINTENANCE: return HttpResponseRedirect('/maintenance/')
t = get_template('projects.html') t = get_template('projects.html')
user = request.user user = request.user
date = datetime.datetime.now() date = datetime.datetime.now()
print(Logger.write("STATIC_ROOT"))
project_type = NodeType.objects.get(name='Project') project_type = NodeType.objects.get(name='Project')
projects = Node.objects.filter(user=user, type_id = project_type.id).order_by("-date") projects = Node.objects.filter(user=user, type_id = project_type.id).order_by("-date")
...@@ -170,6 +240,190 @@ def projects(request): ...@@ -170,6 +240,190 @@ def projects(request):
}) })
def project(request, project_id):
'''
This view represents all corpora in a panoramic way.
The title sums all corpora
The donut summerizes composition of the project.
The list of lists enalbles to navigate throw it.
'''
if not request.user.is_authenticated():
return redirect('/login/?next=%s' % request.path)
try:
offset = str(project_id)
except ValueError:
raise Http404()
if MAINTENANCE: return HttpResponseRedirect('/maintenance/')
user = request.user
date = datetime.datetime.now()
type_corpus = NodeType.objects.get(name='Corpus')
type_document = NodeType.objects.get(name='Document')
# type_whitelist = NodeType.objects.get(name='WhiteList')
# type_blacklist = NodeType.objects.get(name='BlackList')
# type_cooclist = NodeType.objects.get(name='Cooccurrence')
project = Node.objects.get(id=project_id)
corpora = Node.objects.filter(parent=project, type=type_corpus)
number = len(corpora)
# DONUT corpora representation
list_corpora = defaultdict(list)
donut_part = defaultdict(int)
docs_total = 0
# List of resources
# filter for each project here
whitelists = ""#.children.filter(type=type_whitelist)
blacklists = ""#.children.filter(type=type_blacklist)
cooclists = ""#.children.filter(type=type_cooclist)
for corpus in corpora:
# print("corpus", corpus.pk , corpus.name , corpus.type_id)
docs_count = Node.objects.filter(parent=corpus, type=type_document).count()
docs_total += docs_count
corpus_view = dict()
corpus_view['id'] = corpus.pk
corpus_view['name'] = corpus.name
corpus_view['count'] = docs_count
#just get first element of the corpora and get his type.
resource_corpus = Node_Resource.objects.filter(node=corpus)
if len(resource_corpus)>0:
# print(Node_Resource.objects.filter(node=corpus).all())
corpus_type = Node_Resource.objects.filter(node=corpus)[0].resource.type
list_corpora[corpus_type].append(corpus_view)
donut_part[corpus_type] += docs_count
else: print(" Node_Resource = this.corpus(",corpus.pk,") ... nothing, why?")
## For avoiding to list repeated elements, like when u use the dynamic query (per each xml, 1)
# for node_resource in Node_Resource.objects.filter(node=corpus):
# print( "node_resource.id:",node_resource.id , node_resource.resource.file )
# donut_part[node_resource.resource.type] += docs_count
# list_corpora[node_resource.resource.type.name].append(corpus_view)
# print(node_resource.resource.type.name)
list_corpora = dict(list_corpora)
if docs_total == 0 or docs_total is None:
docs_total = 1
# The donut will show: percentage by
donut = [ {'source': key,
'count': donut_part[key] ,
'part' : round(donut_part[key] * 100 / docs_total) } \
for key in donut_part.keys() ]
dauser = User.objects.get( username=user )
groups = len(dauser.groups.filter(name="PubMed_0.1"))
print("*groupslen*:",groups)
if request.method == 'POST':
form = CustomForm(request.POST, request.FILES)
if form.is_valid():
name = form.cleaned_data['name']
thefile = form.cleaned_data['file']
resource_type = ResourceType.objects.get(name=str( form.cleaned_data['type'] ))
print("-------------")
print(name,"|",resource_type,"|",thefile)
print("-------------")
try:
parent = Node.objects.get(id=project_id)
node_type = NodeType.objects.get(name='Corpus')
if resource_type.name == "europress_french":
language = Language.objects.get(iso2='fr')
elif resource_type.name == "europress_english":
language = Language.objects.get(iso2='en')
try:
corpus = Node(
user=request.user,
parent=parent,
type=node_type,
language=language,
name=name,
)
except:
corpus = Node(
user=request.user,
parent=parent,
type=node_type,
name=name,
)
corpus.save()
corpus.add_resource(
user=request.user,
type=resource_type,
file=thefile
)
try:
#corpus.parse_and_extract_ngrams()
#corpus.parse_and_extract_ngrams.apply_async((), countdown=3)
if DEBUG is True:
corpus.workflow()
else:
corpus.workflow.apply_async((), countdown=3)
except Exception as error:
print(error)
return HttpResponseRedirect('/project/' + str(project_id))
except Exception as error:
print('ee', error)
form = CorpusForm(request=request)
formResource = ResourceForm()
else:
print("bad form, bad form")
return render(request, 'project.html', {
'form' : form,
'user' : user,
'date' : date,
'project' : project,
'donut' : donut,
'list_corpora' : list_corpora,
'whitelists' : whitelists,
'blacklists' : blacklists,
'cooclists' : cooclists,
'number' : number,
})
else:
form = CustomForm()
return render(request, 'project.html', {
'form' : form,
'user' : user,
'date' : date,
'project' : project,
'donut' : donut,
'list_corpora' : list_corpora,
'whitelists' : whitelists,
'blacklists' : blacklists,
'cooclists' : cooclists,
'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():
return redirect('/login/?next=%s' % request.path) return redirect('/login/?next=%s' % request.path)
...@@ -179,6 +433,7 @@ def corpus(request, project_id, corpus_id): ...@@ -179,6 +433,7 @@ def corpus(request, project_id, corpus_id):
offset = str(corpus_id) offset = str(corpus_id)
except ValueError: except ValueError:
raise Http404() raise Http404()
if MAINTENANCE: return HttpResponseRedirect('/maintenance/')
t = get_template('corpus.html') t = get_template('corpus.html')
...@@ -253,12 +508,18 @@ def corpus(request, project_id, corpus_id): ...@@ -253,12 +508,18 @@ def corpus(request, project_id, corpus_id):
print(chart) print(chart)
except Exception as error: except Exception as error:
print(error) print(error)
try:
processing = corpus.metadata['Processing']
except:
processing = 0
html = t.render(Context({\ html = t.render(Context({\
'user': user,\ 'user': user,\
'date': date,\ 'date': date,\
'project': project,\ 'project': project,\
'corpus' : corpus,\ 'corpus' : corpus,\
'processing' : processing,\
# 'documents': documents,\ # 'documents': documents,\
'number' : number,\ 'number' : number,\
'dates' : chart,\ 'dates' : chart,\
...@@ -418,6 +679,7 @@ def delete_corpus(request, project_id, corpus_id): ...@@ -418,6 +679,7 @@ def delete_corpus(request, project_id, corpus_id):
def chart(request, project_id, corpus_id): def chart(request, project_id, corpus_id):
''' Charts to compare, filter, count''' ''' Charts to compare, filter, count'''
if MAINTENANCE: return HttpResponseRedirect('/maintenance/')
t = get_template('chart.html') t = get_template('chart.html')
user = request.user user = request.user
date = datetime.datetime.now() date = datetime.datetime.now()
...@@ -434,6 +696,7 @@ def chart(request, project_id, corpus_id): ...@@ -434,6 +696,7 @@ def chart(request, project_id, corpus_id):
return HttpResponse(html) return HttpResponse(html)
def matrix(request, project_id, corpus_id): def matrix(request, project_id, corpus_id):
if MAINTENANCE: return HttpResponseRedirect('/maintenance/')
t = get_template('matrix.html') t = get_template('matrix.html')
user = request.user user = request.user
date = datetime.datetime.now() date = datetime.datetime.now()
...@@ -451,6 +714,7 @@ def matrix(request, project_id, corpus_id): ...@@ -451,6 +714,7 @@ def matrix(request, project_id, corpus_id):
return HttpResponse(html) return HttpResponse(html)
def graph(request, project_id, corpus_id): def graph(request, project_id, corpus_id):
if MAINTENANCE: return HttpResponseRedirect('/maintenance/')
t = get_template('explorer.html') t = get_template('explorer.html')
user = request.user user = request.user
date = datetime.datetime.now() date = datetime.datetime.now()
...@@ -472,6 +736,7 @@ def graph(request, project_id, corpus_id): ...@@ -472,6 +736,7 @@ def graph(request, project_id, corpus_id):
def exploration(request): def exploration(request):
if MAINTENANCE: return HttpResponseRedirect('/maintenance/')
t = get_template('exploration.html') t = get_template('exploration.html')
user = request.user user = request.user
date = datetime.datetime.now() date = datetime.datetime.now()
...@@ -484,6 +749,7 @@ def exploration(request): ...@@ -484,6 +749,7 @@ def exploration(request):
return HttpResponse(html) return HttpResponse(html)
def explorer_chart(request): def explorer_chart(request):
if MAINTENANCE: return HttpResponseRedirect('/maintenance/')
t = get_template('chart.html') t = get_template('chart.html')
user = request.user user = request.user
date = datetime.datetime.now() date = datetime.datetime.now()
...@@ -578,9 +844,12 @@ def node_link(request, corpus_id): ...@@ -578,9 +844,12 @@ def node_link(request, corpus_id):
''' '''
Create the HttpResponse object with the node_link dataset. Create the HttpResponse object with the node_link dataset.
''' '''
import time
print("In node_link() START") print("In node_link() START")
start = time.time()
data = get_cooc(request=request, corpus_id=corpus_id, type="node_link") data = get_cooc(request=request, corpus_id=corpus_id, type="node_link")
end = time.time()
print ("LOG::TIME:_ "+datetime.datetime.now().isoformat()+" get_cooc() [s]",(end - start))
print("In node_link() END") print("In node_link() END")
return JsonHttpResponse(data) return JsonHttpResponse(data)
......
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