def publications(request): form = PublicationForm() # num = custom_paginator(paginator.num_pages) if request.method == "POST": form = PublicationForm(request.POST, request.FILES) if form.is_valid(): data = form.cleaned_data Publication.objects.create(title=data.get("title"), body=data.get("body"), image=data.get("image"), author=request.user) publications = Publication.objects.all() paginator = Paginator(publications, 10) page = request.GET.get('page') try: publications = paginator.page(page) except PageNotAnInteger: publications = paginator.page(1) except EmptyPage: publications = paginator.page(paginator.num_pages) return render(request, "publications.html", { "publications": publications, "form": form })
def createLostAndFound(request): if request.method != 'POST' : pform = PublicationForm() lform = LostFoundForm() else: pform = PublicationForm(request.POST) lform = LostFoundForm(request.POST) if pform.is_valid() and lform.is_valid(): savelostandfound(lform, pform, request.user) return HttpResponseRedirect('/publications/lostandfound') return render(request, 'publications/foundlost_create.html', {'pform':pform, 'lform':lform})
def createBuySell(request): if request.method != 'POST': pform = PublicationForm() bform = BuySellForm() else: pform = PublicationForm(request.POST) bform = BuySellForm(request.POST) if pform.is_valid() and bform.is_valid(): saveBuySell(bform, pform, request.user) return HttpResponseRedirect('/publications/buysell') return render(request, 'publications/buysell_create.html', {'pform':pform, 'bform':bform})
def createCourseMaterial(request): if request.user.sdaeuser.type.name!= 'Maestro': return HttpResponseRedirect('/home/') if request.method != 'POST': pform = PublicationForm() cmform = CourseMaterialForm() else: pform = PublicationForm(request.POST) cmform =CourseMaterialForm(request.POST) if pform.is_valid() and cmform.is_valid(): saveCourseMaterial(cmform, pform, request.user) return HttpResponseRedirect('/publications/material') return render(request, 'publications/material_create.html', {'pform':pform, 'cmform':cmform})
def createEvent(request): if request.user.sdaeuser.type.name != 'Departamento Escolar': return HttpResponseRedirect('/home/') if request.method != 'POST': pform = PublicationForm() eform = EventForm() else: pform = PublicationForm(request.POST, request.FILES) eform = EventForm(request.POST) if pform.is_valid() and eform.is_valid(): saveEvent(eform, pform, request.user) return HttpResponseRedirect('/publications/events') return render(request, 'publications/events_create.html', {'pform':pform, 'eform':eform})
def createJobOffer(request): if request.user.sdaeuser.type.name != 'Empresa': return HttpResponseRedirect('/home/') if request.method != 'POST' : pform = PublicationForm() jform = JobOfferForm() else: pform = PublicationForm(request.POST) jform = JobOfferForm(request.POST) if pform.is_valid() and jform.is_valid(): saveJobOffer(jform, pform, request.user) return HttpResponseRedirect('/publications/joboffer') return render(request, 'publications/joboffer_create.html', {'pform':pform, 'jform':jform})
def createAdvertisement(request): if request.user.sdaeuser.type.name != 'Departamento Escolar': return HttpResponseRedirect('/home/') if request.method != 'POST': pform = PublicationForm() aform = AdvertisementForm() else: pform = PublicationForm(request.POST) aform = AdvertisementForm(request.POST) if pform.is_valid() and aform.is_valid(): saveAdvertisement(aform, pform, request.user) return HttpResponseRedirect('/publications/advertisement') return render(request, 'publications/advertisement_create.html', {'pform':pform, 'aform':aform})
def get(self, request): """ Muestra el formulario :param request: objeto HttpRequest :return: HttpResponse con la respuesta """ form = PublicationForm() context = {'form': form, 'navbar': "publication-form"} return render(request, 'publications/publication_form.html', context)
def parse_bibtex(self, entry, bibtex_str, instance): authors = [] for a in entry.get('author', '').split(' and '): parts = a.split(' ') fields = ['given', 'family'] authors.append({k: v for k, v in zip(fields, parts)}) entry['author'] = authors entry['type'] = entry.get('type', entry['ENTRYTYPE']) entry['bibtex'] = bibtex_str if entry.get('owner'): del entry['owner'] pubform = PublicationForm(entry, instance=instance) if pubform.is_valid(): pubform.save() return pubform.instance.pk else: print('Submission invalid') print(pubform.errors)
def post(self, request): """ Procesa el formulario :param request: objeto HttpRequest :return: HttpResponse con la respuesta """ publication = Publication() publication.publisher = request.user form = PublicationForm(request.POST, request.FILES, instance=publication) if form.is_valid(): # Guardar el anuncio new_publication = form.save() # Limpiar el formulario form = PublicationForm() # Devolvemos un mensaje de OK messages.success(request, 'Publicación creada correctamente') context = {'form': form, 'navbar': "publication-form"} return render(request, 'publications/publication_form.html', context)
def create(request): """ Creates a new publication and marks the user as having read it. """ form = PublicationForm(request.POST or None) if form.is_valid(): publication = form.save(commit=False) publication.owner = request.user publication.save() reading = Reading(user=request.user, publication=publication, rating=form.cleaned_data.get('rating', '1')) reading.save() request.user.message_set.create(message='You have created and read %s' % publication.title) return HttpResponseRedirect(request.POST.get('next', reverse('pub_latest'))) return render_to_response('publications/create.html', {'form': form}, context_instance=RequestContext(request) )
def editAdvertisement(request, advertisementID): publication = get_object_or_404(Publication, pk=advertisementID) if publication.author.user != request.user: return HttpResponseForbidden() advertisement= publication.advertisement if request.method != 'POST': pform = PublicationForm(instance=publication) aform = AdvertisementForm(instance=advertisement) else: pform = PublicationForm(request.POST, instance = publication) aform = AdvertisementForm(request.POST, instance = advertisement) if pform.is_valid() and aform.is_valid(): saveAdvertisement(aform, pform, request.user) return HttpResponseRedirect('/publications/advertisement') return render(request, 'publications/advertisement_create.html', {'aform':aform, 'pform':pform})
def EditBuySell(request, buysellID): publication = get_object_or_404(Publication, pk=buysellID) if publication.author.user != request.user: return HttpResponseForbidden() buysell= publication.buysell if request.method != 'POST': pform = PublicationForm(instance=publication) bform = BuySellForm(instance=buysell) else: pform = PublicationForm(request.POST, instance = publication) bform = BuySellForm(request.POST, instance =buysell) if pform.is_valid() and bform.is_valid(): saveBuySell(bform, pform, request.user) return HttpResponseRedirect('/publications/buysell') return render(request, 'publications/buysell_create.html', {'pform':pform, 'bform':bform})
def editLostAndFound(request, lostandfoundId): publication = get_object_or_404(Publication, pk=lostandfoundId) if publication.author.user != request.user: return HttpResponseForbidden() lostandfound= publication.lostandfound if request.method != 'POST': pform = PublicationForm(instance=publication) lform = LostFoundForm(instance=lostandfound) else: pform = PublicationForm(request.POST, instance = publication) lform = LostFoundForm(request.POST, instance = lostandfound) if pform.is_valid() and lform.is_valid(): savelostandfound(lform, pform, request.user) return HttpResponseRedirect('/publications/lostandfound') return render(request, 'publications/foundlost_create.html', {'pform':pform, 'lform':lform})
def editEvent(request, eventId): if request.user.sdaeuser.type.name != 'Departamento Escolar': return HttpResponseRedirect('/home/') publication = get_object_or_404(Publication, pk=eventId) if publication.author.user != request.user: return HttpResponseForbidden() event = publication.event if request.method != 'POST': pform = PublicationForm(instance=publication) eform = EventForm(instance=event) else: pform = PublicationForm(request.POST, instance = publication) eform = EventForm(request.POST, instance = event) if pform.is_valid() and eform.is_valid(): saveEvent(eform, pform, request.user) return HttpResponseRedirect('/publications/events') return render(request, 'publications/events_create.html', {'pform':pform, 'eform':eform})
def profile_add_publication(request, username): current_user = get_object_or_404(User, username=username) if request.method == 'POST': form = PublicationForm(request.POST) if form.is_valid(): publication = form.save() publication.title_ru = form.cleaned_data['title'] publication.save() authors = form.cleaned_data['authors_order'] conference = form.cleaned_data['conference_author'] unique_authors = [] unique_authors_obj = [] for obj in authors: try: if not obj['author'] in unique_authors: unique_authors.append(obj['author']) unique_authors_obj.append(obj) except KeyError: pass for obj in unique_authors_obj: try: if not obj['DELETE']: AuthorPublication.objects.create( publication=publication, author=obj['author'], order_by=obj['order_by']) except KeyError: break if conference: try: conference = conference[0] if not conference['DELETE']: form = conference['form'] author = conference['author'] Conference.objects.create(publication=publication, author=author, form=form) except (KeyError, IndexError): pass return redirect(profile, current_user) else: form = PublicationForm() form.fields['authors_order'].template_context = { "profile": current_user } form.fields['conference_author'].template_context = { "profile": current_user } context = {'form': form, 'profile': current_user} return render(request, 'lmnad/profile_add_publication.html', context)
def save_from_crossref(self, request, doi, instance=None, update=False): qs = self.get_queryset(request).filter(DOI=doi) if not qs.exists() or update: try: response = cr.works(doi) except Exception as e: print(e) return None entry = { k.replace('-', '_'): v for k, v in response['message'].items() if k.replace('-', '_') in [f.name for f in Publication._meta.fields] + ['author'] } entry['bibtex'] = self.get_bibtex(doi) pubform = PublicationForm(entry, instance=instance) if pubform.is_valid(): pubform.save() return pubform.instance.pk else: print('Submission invalid') print(pubform.errors)
def profile_edit_publication(request, username, id): current_user = get_object_or_404(User, username=username) publication = get_object_or_404(Publication, id=id) conference = None if request.method == 'POST': form = PublicationForm(request.POST, instance=publication) if form.is_valid(): publication.title_ru = form.cleaned_data['title'] publication.save() authors = form.cleaned_data['authors_order'] conference = form.cleaned_data['conference_author'] # delete old author publication link AuthorPublication.objects.filter(publication=publication).delete() unique_authors = [] unique_authors_obj = [] for obj in authors: try: if not obj['author'] in unique_authors: unique_authors.append(obj['author']) unique_authors_obj.append(obj) except KeyError: pass # create new for obj in unique_authors_obj: try: if not obj['DELETE']: AuthorPublication.objects.create( publication=publication, author=obj['author'], order_by=obj['order_by']) except KeyError: break if conference: try: conference = conference[0] if conference['DELETE']: publication.conference.delete() else: publication.conference.form = conference['form'] publication.conference.author = conference['author'] publication.conference.save() except (KeyError, IndexError): pass return redirect(profile, current_user) else: existed_authors = [] for a in publication.authors.all(): try: pub_author = AuthorPublication.objects.get( publication=publication, author=a) except (AuthorPublication.DoesNotExist, AuthorPublication.MultipleObjectsReturned): pub_author = AuthorPublication.objects.filter( publication=publication, author=a).first() order_by = pub_author.order_by author = { 'order_by': order_by, 'author': a, } existed_authors.append(author) try: if publication.conference.author: conference = { 'form': publication.conference.form, 'author': publication.conference.author } except Conference.DoesNotExist: conference = None form = PublicationForm(instance=publication) # set init values for inlines form if existed_authors: form.fields['authors_order'].formset_class_attrs = { "initial": existed_authors } form.fields['authors_order'].template_context = { "profile": current_user } if conference: form.fields['conference_author'].formset_class_attrs = { "initial": [conference] } form.fields['conference_author'].template_context = { "profile": current_user } context = {'form': form, 'profile': current_user} return render(request, 'lmnad/profile_edit_publication.html', context)