Exemplo n.º 1
0
    def form_valid(self, form):
        self.publication = form.save(commit=False)
        self.publication.created_by = self.request.user
        works = Works()
        if self.publication.DOI != "" and works.doi_exists(self.publication.DOI):
            paper_data_result = works.doi(self.publication.DOI)
            self.publication.publication_year = str(paper_data_result.get('created').get('date-parts')[0][0])
            self.publication.title = paper_data_result.get('title')[0]
            self.publication.author = f"{paper_data_result.get('author')[0].get('given')},{paper_data_result.get('author')[0].get('family')}"
            sub = paper_data_result.get("subject", [self.publication.subject])
            self.publication.subject = ', '.join([str(elem) for elem in sub])
            self.publication.URL = paper_data_result.get('URL')

        elif self.publication.ISBN != "" and is_isbn13(self.publication.ISBN):
            book_data_result = meta(self.publication.ISBN)
            self.publication.publication_year = book_data_result.get('Year')
            self.publication.title = book_data_result.get('Title')
            self.publication.author = book_data_result.get('Authors')[0]

        elif self.publication.crossref and (self.publication.DOI or self.publication.ISBN):
            messages.error(self.request, 'DOI/ISBN no encontrado. Cargar datos y desmarcar el campo "tiene DOI/ISBN"')
            return render(self.request, 'bibliography/publication_form.html', {'form': form})
        self.publication.save()
        messages.success(self.request, "Registro realizado con exito")

        return redirect('bibliography:publication_detail', pk=self.publication.pk)
Exemplo n.º 2
0
def publication_new(
        request):  # todo mejorar quebrando la view en defs distintas
    if request.method == "POST":
        form = PublicationForm(request.POST)
        if form.is_valid():
            publication = form.save(commit=False)
            publication.created_by = request.user
            works = Works()
            if publication.DOI != "" and works.doi_exists(publication.DOI):
                cross_doi(publication)
            elif publication.ISBN != "" and is_isbn13(publication.ISBN):
                cross_isbn(publication)
            publication.save()
            messages.success(request, "Registro realizado con exito")

            return redirect('bibliography:publication_detail',
                            pk=publication.pk)
        messages.error(request,
                       'Formulario con error: revise todos los campos')
        return render(request, 'publication_form.html', {'form': form})
    else:
        form = PublicationForm()
        return render(request, 'publication_form.html', {'form': form})