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)
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})