Exemple #1
0
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
    })
Exemple #2
0
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})
Exemple #3
0
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})
Exemple #4
0
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})
Exemple #5
0
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})
Exemple #6
0
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})
Exemple #7
0
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})
Exemple #8
0
    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)
Exemple #9
0
    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)
Exemple #10
0
    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)
Exemple #11
0
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)
    )
Exemple #12
0
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})
Exemple #13
0
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})
Exemple #14
0
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})
Exemple #15
0
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})
Exemple #16
0
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)
Exemple #17
0
    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)
Exemple #18
0
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)