diff --git a/hal/forms.py b/hal/forms.py index f2440b5ef4bfbbd3dbce911dde8057bef2c0e41b..08c7ade814e2d4fc97cdd0a55012ef809f1b70e9 100644 --- a/hal/forms.py +++ b/hal/forms.py @@ -152,26 +152,25 @@ class BibtexXmlForm(forms.Form): class Csv2halForm(forms.Form): - form_author = forms.CharField(required=True, max_length=40, label="Forme auteur (*)") + firstname_user = forms.CharField(required=True, max_length=40, label="prenom chercheur (*)") name_user = forms.CharField(required=True, max_length=40, label="Nom chercheur (*)") - firstname_user = forms.CharField(required=True, max_length=40, label="Prénom chercheur (*)") labo_auth_final = forms.CharField(required=True, max_length=40, label="N° de structure (*) (Ex: 490706)") + csv_file = forms.CharField(required=True, label="contenu CSV", widget=forms.Textarea(attrs={'rows':20, 'cols':90}),) + +class Csvformat2halForm(forms.Form): + name_user = forms.CharField(required=True, max_length=40, label="Nom chercheur (*)") id_hal_user = forms.CharField(required=True, max_length=40, label="IdHal chercheur (*)") login_user = forms.CharField(required=True, max_length=40, label="Login HAL chercheur (*)") - - choice_source = forms.ChoiceField(widget=forms.RadioSelect, choices=CHOICES_SOURCE_CSV, label="Choix de la source", initial='PUBMED' ) - + #choice_source = forms.ChoiceField(widget=forms.RadioSelect, choices=CHOICES_SOURCE_BIBTEX, label="Choix de la source", initial='DBLP' ) + pubmed = forms.CharField(required=False, max_length=40, label="Pubmed", initial = "userpubmed") + labo_auth_final = forms.CharField(required=True, max_length=40, label="N° de structure (*) (Ex: 490706)", initial = 490706) login_depot = forms.CharField(required=True, max_length=40, label="Login HAL référent (*)") passwd_depot = forms.CharField(required=True, max_length=40, label=("Password HAL référent (*)"), widget=forms.PasswordInput()) choice_depot = forms.ChoiceField(widget=forms.RadioSelect, choices=CHOICES_DEPOT, label="Choix du dépôt", initial='NODEPOT' ) + mail_reponse = forms.CharField(required=True, max_length=40, label="Adresse mail de retour résultats") + domains = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, choices=CHOICES_DOMAINS, label="Domaines de recherche", initial='math',required=False) + domains2 = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, choices=CHOICES_DOMAINS2, label="Autres domaines", initial='info.info-gt',required=False) - domain1 = forms.CharField(required=True, max_length=20, label="Domaine 1 (*)") - domain2 = forms.CharField(required=False, max_length=20, label="Domaine 2") - domain3 = forms.CharField(required=False, max_length=20, label="Domaine 3") - domain4 = forms.CharField(required=False, max_length=20, label="Domaine 4") - domain5 = forms.CharField(required=False, max_length=20, label="Domaine 5") - - csv_file = forms.CharField(required=True, label="contenu CSV", widget=forms.Textarea(attrs={'rows':20, 'cols':90}),) class Text2halForm(forms.Form): diff --git a/hal/scripts_csv.py b/hal/scripts_csv.py index b186f463d1442770416fd195b4edda321498834d..e8169554d7666b2913fb65dcf0709ecdb02e0f8f 100644 --- a/hal/scripts_csv.py +++ b/hal/scripts_csv.py @@ -1,10 +1,8 @@ -#!/usr/bin/python -#-*- coding: utf-8 -*- -# coding: utf-8 from __future__ import unicode_literals import requests +from celery import shared_task # lib XML from lxml import etree @@ -42,9 +40,66 @@ def unicode_csv_reader(utf8_data, dialect=csv.excel, **kwargs): ########## SCRIPT PRINCIPAL ######################################################################################################################################## ######################################################################################################################################## +@shared_task +def script_csv_2_hal(name_user, firstname_user, labo_auth_final, csv_source, csv_result): + print ("script_csv_2_hal") + existe = "" + problemes_url = "" + problemes_doublon = "" + a_deposer = "" + + ################################### + ###### COMPTEURS + ################################### + + cnt_article = 0 + cnt_inproceeding = 0 + cnt_proceeding = 0 + cnt_incollection = 0 + cnt_book = 0 + cnt_total = 0 + cnt_phdthesis = 0 + + cnt_depot_D = 0 + cnt_depot_E = 0 + cnt_depot_A = 0 + cnt_depot_P = 0 + cnt_depot_2 = 0 + + + # errors bibtex + cnt_error_auth = 0 + cnt_error_title = 0 + cnt_error_jrn = 0 + cnt_error_vol = 0 + cnt_error_numb = 0 + cnt_error_pages = 0 + cnt_error_year_art = 0 + cnt_error_doi = 0 + cnt_error_booktitle = 0 + cnt_error_pages = 0 + cnt_error_year_inp = 0 + cnt_error_crossref = 0 + cnt_error_publisher = 0 + cnt_error_editor = 0 + cnt_error_idcrossref = 0 + cnt_error_publisher_p = 0 + cnt_error_editor_p = 0 + + list_pub_csv = [] + + with open('pubmed_sources/user_2404_123456.csv', 'r') as csvr: + csvreader = csv.reader(csvr, delimiter=',') + #csvwriter = csv.writer(csvf, delimiter=',') + next(csvreader) + for row in csvreader : + print("{0} - {1}".format(row[0], row[1])) + + + return None -def script_csv_2_hal (csv_file, form_author, name_user, firstname_user, labo_auth_final, id_hal_user, login_user, listdomains, login_depot, passwd_depot, bool_depot_preprod, bool_depot_prod, single, source_csv): +def script_csv_2_hal_old (csv_file, form_author, name_user, firstname_user, labo_auth_final, id_hal_user, login_user, listdomains, login_depot, passwd_depot, bool_depot_preprod, bool_depot_prod, single, source_csv): ''' take csv file and some values in entry and parse the bibtex to get info upon publications diff --git a/hal/templates/hal/csv2hal.html b/hal/templates/hal/csv2hal.html index a1e8fd7c9b46093b97b21408354667a5075b4c0c..8a6937bc8d8279ab15d4100ce4da9f017c7c7c2d 100644 --- a/hal/templates/hal/csv2hal.html +++ b/hal/templates/hal/csv2hal.html @@ -16,34 +16,17 @@ <h3>CSV to HAL</h3> <br/> {% if user.is_authenticated %} - <p align="left">Remplissez les données demandées ci-dessous + <p align="left">LE SCRIPT n'est pas fonctionnel <br/> - Tous les champs sont requis - <br/> - Dans un premier temps, simulez le dépôt en laissant les champs "dépôt préprod" et "dépôt prod" décochés - <br/> - Copiez-collez le contenu de votre fichier CSV dans la zone prévue</p> - + TODO + <br/> <div class="well bs-component"> <form action="{% url "csv2hal" %}" method="post"> {% csrf_token %} <div class="row"> - <div class="col-lg-12"> - <div class="fieldWrapper"> - <h3>Auteur</h3> - </div> - </div> - <!-- 1e ligne --> - <div class="col-lg-4"> - <div class="fieldWrapper"> - {{ form.form_author.errors }} - {{ form.form_author.label_tag }}<br/> - {{ form.form_author }} - </div> - </div> <div class="col-lg-4"> <div class="fieldWrapper"> @@ -60,128 +43,19 @@ {{ form.firstname_user }} </div> </div> - <!-- 2e ligne --> + <div class="col-lg-4"> - <div class="fieldWrapper"> - {{ form.login_user.errors }} - {{ form.login_user.label_tag }}<br/> - {{ form.login_user }} - </div> - </div> + <div class="fieldWrapper"> + {{ form.labo_auth_final.errors }} + {{ form.labo_auth_final.label_tag }}<br/> + {{ form.labo_auth_final }} + </div> + <br/> + </div> + + <!-- 2e ligne --> - <div class="col-lg-4"> - <div class="fieldWrapper"> - {{ form.id_hal_user.errors }} - {{ form.id_hal_user.label_tag }}<br/> - {{ form.id_hal_user }} - </div> - </div> - - <div class="col-lg-4"> - <div class="fieldWrapper"> - {{ form.labo_auth_final.errors }} - {{ form.labo_auth_final.label_tag }}<br/> - {{ form.labo_auth_final }} - </div> - <br/> - </div> - - - <!-- 3e ligne --> - <div class="col-lg-4"> - <div class="fieldWrapper"> - {{ form.domain1.errors }} - {{ form.domain1.label_tag }}<br/> - {{ form.domain1 }} - </div> - </div> - - <div class="col-lg-4"> - <div class="fieldWrapper"> - {{ form.domain2.errors }} - {{ form.domain2.label_tag }}<br/> - {{ form.domain2 }} - </div> - </div> - - <div class="col-lg-4"> - <div class="fieldWrapper"> - {{ form.domain3.errors }} - {{ form.domain3.label_tag }}<br/> - {{ form.domain3 }} - </div> - </div> - - <!-- 4e ligne --> - <div class="col-lg-4"> - <div class="fieldWrapper"> - {{ form.domain4.errors }} - {{ form.domain4.label_tag }}<br/> - {{ form.domain4 }} - </div> - </div> - - <div class="col-lg-4"> - <div class="fieldWrapper"> - {{ form.domain5.errors }} - {{ form.domain5.label_tag }}<br/> - {{ form.domain5 }} - </div> - </div> - - <div class="col-lg-4"> - <div class="fieldWrapper"> - </div> - </div> - - <div class="col-lg-12"> - <div class="fieldWrapper"> - <h3>Source</h3> - </div> - </div> - - <div class="col-lg-12"> - <div class="fieldWrapper"> - {{ form.choice_source.errors }} - {{ form.choice_source.label_tag }}<br/> - {{ form.choice_source }} - </div> - </div> - - <div class="col-lg-12"> - <div class="fieldWrapper"> - <h3>Déposant</h3> - </div> - </div> - - <!-- 5e ligne --> - <div class="col-lg-4"> - <div class="fieldWrapper"> - {{ form.login_depot.errors }} - {{ form.login_depot.label_tag }}<br/> - {{ form.login_depot }} - </div> - </div> - - <div class="col-lg-4"> - <div class="fieldWrapper"> - {{ form.passwd_depot.errors }} - {{ form.passwd_depot.label_tag }}<br/> - {{ form.passwd_depot }} - </div> - </div> - - <div class="col-lg-4"> - <div class="fieldWrapper"> - {{ form.choice_depot.errors }} - {{ form.choice_depot.label_tag }}<br/> - {{ form.choice_depot }} - </div> - </div> - - - <!-- 6e ligne --> <div class="col-lg-12"> <br/> <hr> @@ -191,7 +65,7 @@ {{ form.csv_file }} </div> </div> - </div> + </div> <input type="submit" class="btn btn-primary" value="Submit" /> @@ -214,44 +88,6 @@ </div> </div> </div> - - {% if list_to_post|length > 0%} - <table class="table table-striped table-hover "> - <tr> - <th>n°</th> - <th>Auteurs </th> - <th>Titre</th> - <th>Conf</th> - <th>pp </th> - <th>vol</th> - <th>date</th> - <th>type </th> - <th>todo</th> - <th>Ville</th> - <th>pays </th> - <th>acr</th> - <th>lang</th> - </tr> - - {% for pub in list_to_post %} - <tr> - <td>{{ pub.num }}</td> - <td>{{ pub.authors }}</td> - <td>{{ pub.title }}</td> - <td>{{ pub.conf }}</td> - <td>{{ pub.page }}</td> - <td>{{ pub.vol }}</td> - <td>{{ pub.date }}</td> - <td>{{ pub.type }}</td> - <td>{{ pub.todo }}</td> - <td>{{ pub.ville }}</td> - <td>{{ pub.pays }}</td> - <td>{{ pub.acr }}</td> - <td>{{ pub.lang }}</td> - </tr> - {% endfor %} - </table> - {% endif %} {% else %} <h5>Pour faire une demande d'identifiants, envoyer un mail à jessica.leyrit@uca.fr</h5> diff --git a/hal/views.py b/hal/views.py index 5966263cc9fc2b7c9d11d7f7739ba13a9c5e87a7..abfa21b5fa9b19060ec579ae5026804aa54fc538 100644 --- a/hal/views.py +++ b/hal/views.py @@ -361,8 +361,29 @@ def valid_post_hal(request): def csv2hal(request): - reponse = "" + csvfile = "" + form = Csv2halForm(request.POST or None) + + if form.is_valid(): + name_user = form.cleaned_data['name_user'] + firstname_user = form.cleaned_data['firstname_user'] + labo_auth_final = form.cleaned_data['labo_auth_final'] + csv_source = form.cleaned_data['csv_file'] + + labo_auth_final = "struct-"+labo_auth_final + + print ("begin script csv2hal") + + today = datetime.today() + randomnumbers = ''.join(random.choices(string.digits, k=6)) + csvfile = "{0}_{1}-{2}_{3}".format(slugify(name_user),today.day, today.month,randomnumbers) + + msg_to_announce = "Attendre quelques minutes avant d'aller voir le résultat" + reponse = script_csv_2_hal.delay( name_user, firstname_user, labo_auth_final, csv_source, csvfile) + messages.add_message(request, messages.WARNING, msg_to_announce) + + """ reponse = "" form = Csv2halForm(request.POST or None) if form.is_valid(): @@ -444,7 +465,7 @@ def csv2hal(request): list_to_post.append(p) #list_to_post.append((result[0],result[1],result[2],result[3],result[4],result[5],\ #result[6],result[7],result[8],result[9],result[10],result[11],result[12],)) - #reponse=("reponse HAL") + #reponse=("reponse HAL") """ return render(request, 'hal/csv2hal.html', locals()) diff --git a/haltools/settings.py b/haltools/settings.py index 044c8d3e6a25a2e4b35a8fc78cda65217d0cb9d4..fdb52480bc13d95ef30b8e4a2087523f2c01649a 100644 --- a/haltools/settings.py +++ b/haltools/settings.py @@ -19,12 +19,12 @@ BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # See https://docs.djangoproject.com/en/1.11/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = 'ado#_6zmk2sk==9v*v^1@-*0)3-w^=k-m_mp5dnfil7rd_&mn!' +SECRET_KEY = '******' # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True -ALLOWED_HOSTS = ['localhost','127.0.0.1','haltools.limos.fr','192.168.220.147'] +ALLOWED_HOSTS = ['localhost','127.0.0.1','haltools.limos.fr','192.168.79.38'] WSGI_APPLICATION = 'haltools.wsgi.application' @@ -102,7 +102,7 @@ DATABASES = { 'OPTIONS' : {"init_command": "SET foreign_key_checks = 0;"}, 'NAME': 'haltools', 'USER': 'haladmin', - 'PASSWORD': '*****', + 'PASSWORD': 'halpasswd', 'HOST': '127.0.0.1', 'PORT': '', } @@ -136,13 +136,13 @@ EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_USE_TLS = True EMAIL_HOST = 'mail.isima.fr' EMAIL_PORT = 587 -EMAIL_HOST_USER = 'cribot@isima.fr'# 'cri-commun@isima.fr' +EMAIL_HOST_USER = '******@isima.fr'# 'cri-commun@isima.fr' EMAIL_HOST_PASSWORD = '' DEFAULT_FROM_EMAIL = EMAIL_HOST_USER # Celery Configuration Options CELERYD_NODES="w1 w2" -CELERY_BROKER_URL = "amqp://halrabbuser:*****@localhost:5672//" +CELERY_BROKER_URL = "amqp://halrabbuser:******@localhost:5672//" CELERY_TIMEZONE = "UTC" CELERY_TASK_TRACK_STARTED = True