示例#1
0
def delete_racconto(request, pk_racconto):
    # Controllo che l'utente sia un gestore
    permissions = get_permission(request.user.email)

    if not permissions["is_segretario"]:  # Non è un segretario
        return redirect('home')

    # Cancellazione racconto
    _racconto = get_object_or_404(racconti, pk=pk_racconto)
    racconto_id = _racconto.pk
    racconto_event = _racconto.idEvent.eventName

    pk_event = _racconto.idEvent.pk

    racconto_title = _racconto.title
    _racconto.delete()

    # LOG operazione
    insert_log(username=request.user.email,
               operationDate=datetime.now(),
               roleUser="******",
               type="Eliminazione racconto",
    description = "Eliminazione racconto {racconto_title} id=[{racconto_id}] per l'evento {racconto_event}".format(
        racconto_title=racconto_title, racconto_event=racconto_event, racconto_id=racconto_id)
    )

    return redirect('list_racconti_segreteria', pk_event)
示例#2
0
def create_event(request):
    # Controllo che l'utente sia un gestore
    utente_gestore = gestore.objects.filter(username=request.user.email)[:1]
    if utente_gestore.count() == 0:  # Non è un gestore
        return redirect('home')

    # if this is a POST request we need to process the form data
    if request.method == 'POST':
        # create a form instance and populate it with data from the request:
        form = eventsModelForm(request.POST)

        # check whether it's valid:
        if form.is_valid():
            form.save()

            # LOG operazione
            insert_log(username=request.user.email,
                       operationDate=datetime.now(),
                       roleUser="******",
                       type="Creazione concorso",
                       description="Creazione concorso \"{titolo}\"".format(
                           titolo=form.cleaned_data['eventName'], ))
            return HttpResponseRedirect(reverse('list_event'))

    # if a GET (or any other method) we'll create a blank form
    else:
        form = eventsModelForm()
    context = {'form': form}
    permissions = get_permission(request.user.email)
    context.update(permissions)
    return render(request, 'create_event.html', context)
示例#3
0
def delete_valutatore(request, pk_valutatore):
    # Controllo che l'utente sia un gestore
    utente_gestore = gestore.objects.filter(username=request.user.email)[:1]
    if utente_gestore.count() == 0:  # Non è un gestore
        return redirect('home')
    # Cancellazione valutatore
    permissions = get_permission(request.user.email)
    _valutatore = valutatore.objects.get(pk=pk_valutatore)

    # Controllo che il valutatore non abbia nessuna selezione attiva e non abbia nessuna
    # classificazione per qualche racconto

    # Possibili selezioni del valutatore
    numero_selezioni_attive = valutazione.objects.filter(
        idValutatore=_valutatore, selected=True).count()

    # Possibili valutazioni del valutatore
    numero_valutazioni = valutazione.objects.filter(
        idValutatore=_valutatore,
        ranking__in=[RANKING_POINT[0], RANKING_POINT[1],
                     RANKING_POINT[2]]).count()

    if (numero_valutazioni + numero_selezioni_attive) > 0:
        # LOG operazione
        insert_log(
            username=request.user.email,
            operationDate=datetime.now(),
            roleUser="******",
            type="Eliminazione valutatore",
            description=
            "Eliminazione valutatore \"{utente_valutatore}\" per il concorso "
            "con id = {id} non riuscita in quanto ha dati associati".format(
                id=id_active_event(),
                utente_valutatore=_valutatore.idUser,
            ))
    else:
        # LOG operazione
        insert_log(
            username=request.user.email,
            operationDate=datetime.now(),
            roleUser="******",
            type="Eliminazione valutatore",
            description=
            "Eliminazione valutatore \"{utente_valutatore}\" per il concorso con id = {id}"
            .format(
                id=id_active_event(),
                utente_valutatore=_valutatore.idUser,
            ))

        _valutatore.delete()

    _id_evento = _valutatore.idEvent.pk

    # context = {'valutatori': valutatore.objects.filter(idEvent=_id_evento).order_by("idUser"), 'pk_event': _id_evento,
    #            'is_gestore': True}
    #
    # context.update(permissions)
    # return render(request, 'list_valutatore.html', context)
    return redirect('list_valutatore', _id_evento)
示例#4
0
def deseleziona_racconto(request, pk_racconto, page_number, categoriaeta):
    idEvent = id_active_event()

    # Controlla se l'evento è attivo
    if idEvent is None:
        return redirect('home')

    concorso = events.objects.all().get(pk=idEvent)
    valutatore_concorso = valutatore.objects.all().filter(
        idEvent=concorso, idUser=request.user.email)[:1]

    if valutatore_concorso.count(
    ) == 0:  # L'utente non ' un valutatore per questo concorso
        return redirect('home')

    # Se il periodo di selezione non è ancora attivo o non lo è l'operazione non è valida
    if not is_selectable():
        return redirect('home')

    racconto_da_valutare = racconti.objects.all().get(pk=pk_racconto)
    racconti_concorso_attivo = racconti.objects.all().filter(
        idEvent=id_active_event())

    if racconto_da_valutare not in racconti_concorso_attivo:  # Il racconto non può essere valutato in questo concorso
        return redirect('home')

    valutazione_racconto = valutazione.objects.all().filter(
        idValutatore=valutatore_concorso[0],
        idRacconto=racconto_da_valutare)[:1]

    if valutazione_racconto.count(
    ) == 0:  # Non esiste nessuna valutazione, si crea quindi il record
        valutazione_racconto = valutazione(idRacconto=racconto_da_valutare,
                                           idValutatore=valutatore_concorso[0],
                                           ranking=0,
                                           selected=0)
    else:  # La valutazione esiste, si modifica quindi il record esistente
        valutazione_racconto = valutazione.objects.all().get(
            pk=valutazione_racconto[0].pk)
        valutazione_racconto.selected = 0
        # valutazione_racconto.ranking = 0

    valutazione_racconto.save()

    # LOG operazione
    insert_log(
        username=request.user.email,
        operationDate=datetime.now(),
        roleUser="******",
        type="Deselezione racconto",
        description=
        "Deselezione racconto con id = {idRacconto} per il concorso con id = {id}"
        .format(id=id_active_event(), idRacconto=pk_racconto),
    )

    return redirect('selezione_racconti',
                    page_number=page_number,
                    categoriaeta=categoriaeta)
示例#5
0
def create_segretario(request):
    # Controllo che l'utente sia un gestore
    permissions = get_permission(request.user.email)

    if not permissions["is_gestore"]:  # Non è un gestore
        return redirect('home')

    # if this is a POST request we need to process the form data

    if request.method == 'POST':
        # create a form instance and populate it with data from the request:
        form = segretarioModelForm(request.POST)

        # check whether it's valid:
        if form.is_valid():
            email = form.cleaned_data['idUser']

            # Controllo che non sia già stato inserito
            # Se si invalido il form e lo restituisco
            count = segretario.objects.filter(idUser=email).count()
            # print(count)
            if count > 0:
                form.add_error("idUser", "Utente già inserito come segretario")
                context = {'form': form, }
                permissions = get_permission(request.user.email)
                context.update(permissions)
                return render(request, 'create_segretario.html', context)

            # Controllo che sia un dipendente o uno studente e ne ricavo i dati
            res = dipendente_email(email)
            if res is None:
                res = studente_email(email)

            forename = res["nome"]
            surname = res["cognome"]
            segretario.objects.create(idUser=email, forename=forename, surname=surname)

            # LOG operazione
            insert_log(username=request.user.email,
                       operationDate=datetime.now(),
                       roleUser="******",
                       type="Creazione segretario",
                       description="Inserimento segretario {segretario}".format(segretario=email, )
                       )

            return HttpResponseRedirect(reverse('list_segretario', ))

    # if a GET (or any other method) we'll create a blank form
    else:
        form = segretarioModelForm()
    context = {'form': form}
    context.update(permissions)
    return render(request, 'create_segretario.html', context)
示例#6
0
def delete_segretario(request, pk_segretario):
    # Controllo che l'utente sia un gestore
    permissions = get_permission(request.user.email)

    if not permissions["is_gestore"]:  # Non è un gestore
        return redirect('home')

    # Cancellazione segretario
    _segretario = get_object_or_404(segretario, pk=pk_segretario)
    email = _segretario.idUser
    _segretario.delete()

    # LOG operazione
    insert_log(username=request.user.email,
               operationDate=datetime.now(),
               roleUser="******",
               type="Eliminazione segretario",
               description="Eliminazione segretario {segretario}".format(segretario=email, )
               )

    return redirect('list_segretario')
示例#7
0
def send_email(request, pk_event):
    # Controllo che l'utente sia un segretario
    permissions = get_permission(request.user.email)
    if not permissions["is_segretario"]:  # Non è un segretario
        return redirect('home')
    concorso = get_object_or_404(events, pk=pk_event)

    messaggio_inviato = {'messaggio_inviato': False}

    # if this is a POST request we need to process the form data
    if request.method == 'POST':
        # create a form instance and populate it with data from the request:
        form = MailForm(request.POST)

        # check whether it's valid:
        if form.is_valid():
            from html import unescape, escape

            subject = form.cleaned_data["subject"]
            body = form.cleaned_data["body"]
            destinatari = form.cleaned_data["destinatari"]

            # Modifica testo sostituendo i caratteri speciali in entities html
            body = da_carattere_speciale_ad_entity(body)
            body = body.replace('\n', '<br>')

            # Ricavo la lista dei destinatari
            if destinatari == "Tutti":  # Tutti i valutatori per il concorso
                lista_destinatari = valutatore.objects.filter(idEvent=concorso).values_list('idUser', flat=True)
                descrizione_destinatari = "Tutti i membri della commissione"

            elif destinatari == "Selezioni":  # Tutti i valutatori per il concorso che non hanno selezionato tutti i racconti consentiti
                destinatari = valutatore.objects.filter(idEvent=concorso)  # .values_list('idUser', flat=True)
                descrizione_destinatari = "Solo i membri della commissione che non hanno selezionato il numero massimo di racconti."
                lista_destinatari = []

                # Ricavo i valutatori che non hanno selezionato il numero massimo di racconti
                for dest in destinatari:
                    if (get_numero_racconti_selezionati(dest) < concorso.maxSelections):
                        lista_destinatari.append(dest.idUser)


            elif destinatari == "Valutazioni":
                destinatari = valutatore.objects.filter(idEvent=concorso)
                descrizione_destinatari = "Solo i membri della commissione che non hanno effettuato tutte le valutazioni per i racconti della categoria Junior e/o Senior"
                lista_destinatari = []
                # Ricavo i valutatori che non hanno valutazioni complete
                for dest in destinatari:
                    classifiche = get_classifiche_valutatore(dest)

                    if None in list(classifiche.values()):
                        lista_destinatari.append(dest.idUser)

            else:  # Opzione non valida
                return redirect('send_email', pk_event)

            # for i in lista_destinatari:
            #     print(i)

            # gmail = Gmail()
            # message = gmail.send_message(sender="*****@*****.**", to="*****@*****.**",
            #                              subject='Test', message="<p>Test messaggio</p>")

            # Invio email
            for i in lista_destinatari:
                emailsender(subject, body, [i], [], [])

            # LOG operazione
            insert_log(username=request.user.email,
                       operationDate=datetime.now(),
                       roleUser="******",
                       type="Invio comunicazione",
                       description="Invio comunicazione a \"{descrizione_destinatari}\" per il concorso con id = {id}".format(
                           descrizione_destinatari=descrizione_destinatari, id=id_active_event()),
                       )

            messaggio_inviato = {'messaggio_inviato': True}

            # return redirect('send_email', pk_event)

    # if a GET (or any other method) we'll create a blank form
    else:
        form = MailForm()

    context = {'form': form, 'titolo_concorso': concorso.eventName,
               'pk_event': pk_event, 'categorieeta': CATEGORIE_ETA, 'id_event': id_active_event(), }
    context.update(permissions)

    context.update(messaggio_inviato)

    return render(request, 'send_email.html', context)
示例#8
0
def create_racconto(request):
    # Controllo se c'è un concorso attivo
    idEvent = id_active_event()
    permissions = get_permission(request.user.email)

    if idEvent is not None:
        # Calcolo informazioni del concorso da passare alla template
        is_submittable = is_active_event_submittible(
        )  # Controllo se è possibile fare invio racconto
        titolo_concorso = events.objects.all().get(pk=idEvent).eventName

        # Controllo se l'autore ha già sottomesso il racconto
        # in questo caso mostrerà il form solo in lettura
        # CASO RACCONTO INVIATO
        if is_submitted_in_active_event(request.user.email):
            # print("RACCONTO INVIATO")
            racconto_inviato = racconti.objects.filter(
                idEvent=id_active_event(), idUser=request.user.email)[0]
            # Costruisco il form da inviare per mostrare i dati del racconto
            form = raccontiModelForm()
            form.fields["title"] = forms.CharField(
                label="Titolo del racconto",
                max_length=128,
                initial=racconto_inviato.title,
                disabled=True)
            form.fields["content"] = forms.CharField(
                widget=forms.Textarea(attrs={
                    'rows': 20,
                    'maxlength': MAX_NUM_CHAR
                }),
                label="Testo del racconto ANONIMO (massimo " +
                str(MAX_NUM_CHAR) + " caratteri)",
                initial=racconto_inviato.content,
                disabled=True)
            form.fields["coAuthors"] = forms.CharField(
                widget=forms.Textarea(attrs={
                    'rows': 10,
                    'maxlength': 8000
                }),
                label="Coautori in caso di testo collettivo (nome, cognome"
                " e indirizzo email istituzionale)",
                required=False,
                initial=racconto_inviato.coAuthors,
                disabled=True)
            form.fields["contacts"] = forms.CharField(
                label="Recapito telefonico",
                max_length=128,
                initial=racconto_inviato.contacts,
                disabled=True)
            form.fields["publishingPermission"] = forms.ChoiceField(
                widget=forms.CheckboxInput(),  # .RadioSelect(),
                initial=racconto_inviato.publishingPermission,
                choices=[(True, 'Si'), (False, 'No')],
                label=
                'Autorizzo la Biblioteca di Ateneo alla pubblicazione del mio racconto',
                required=False,
                disabled=True)
            # form.fields["visioneregolamento"] = forms.ChoiceField(widget=forms.RadioSelect(),
            #                                                       initial=True, choices=[(True, 'Si'), (False, 'No')],
            #                                                       label='Dichiaro di aver preso visione del regolamento del concorso e di accettare le condizioni <a href="https://www.biblio.unimib.it/it/terza-missione/concorso-letterario" target="_blank">LINK</a>',
            #                                                       required=False, disabled=True)
            # form.fields["visioneinformativa"] = forms.ChoiceField(widget=forms.RadioSelect(),
            #                                                       initial=True, choices=[(True, 'Si'), (False, 'No')],
            #                                                       label="Dichiaro di aver preso visione dell'informativa privacy all'indirizzo <a href = 'https://www.unimib.it/sites/default/files/allegati/informativa_eventi_e_iniziative.pdf' target = '_blank' >LINK</a>",
            #                                                       required=False, disabled=True)
            context = {
                'form': form,
                'idEvent': idEvent,
                'titolo_concorso': titolo_concorso,
                'is_submitted_in_active_event': True,
                'is_submittable': is_submittable,
                'MAX_NUM_CHAR': None,
                'is_not_valid_user': False
            }
            context.update(permissions)
            return render(request, 'create_racconto.html', context)

        # Controllo se il periodo delle sottomissioni è attivo
        # (l'autore non ha inviato nessun racconto)
        # CASO RACCONTO INVIABILE
        elif is_submittable:
            # print("RACCONTO INVIABILE")
            # if this is a POST request we need to process the form data
            if request.method == 'POST':
                # create a form instance and populate it with data from the request:
                form = raccontiModelForm(request.POST)
                # check whether it's valid:
                if form.is_valid():
                    # Estrazione dati da Esse3
                    user = studente_email(request.user.email)

                    if user is not None:  # l'utente è di tipo @campus.unimib.it
                        authorSurname = user["cognome"]
                        authorForename = user["nome"]
                        authorBirthDate = codicefiscale.decode(
                            user["codFis"])["birthdate"]
                        authorStatus = "Studente"
                        authorDetail = user["tipoCorsoDes"] + " " + user[
                            "cdsDes"] + " " + user["cdsCod"]

                    else:  # l'utente è di tipo @unimib.it
                        user = dipendente_email(request.user.email)

                        if user is None:  # Si tratta ad esempio di una casella di struttura
                            print("is_not_valid_user")
                            return render(
                                request, 'create_racconto.html', {
                                    'idEvent': idEvent,
                                    'is_not_valid_user': True,
                                    'titolo_concorso': titolo_concorso,
                                })

                        authorSurname = user["cognome"]
                        authorForename = user["nome"]
                        authorBirthDate = codicefiscale.decode(
                            user["codFis"])["birthdate"]
                        # print(authorBirthDate, type(authorBirthDate))
                        authorStatus = user["dsTipoRuolo"]
                        authorDetail = user["dsTipoRuolo"]

                    # Racconto da salvare
                    racconto = racconti(
                        counter=get_counter(),
                        idUser=request.user.email,
                        idEvent=events.objects.get(pk=id_active_event()),
                        title=form.cleaned_data["title"],
                        content=form.cleaned_data["content"],
                        submissionDate=datetime.now(),
                        publishingPermission=eval(
                            form.cleaned_data["publishingPermission"]),
                        contacts=form.cleaned_data["contacts"],
                        coAuthors=form.cleaned_data["coAuthors"],
                        authorSurname=authorSurname,
                        authorForename=authorForename,
                        authorBirthDate=authorBirthDate,
                        authorStatus=authorStatus,
                        authorDetail=authorDetail)
                    racconto.save()

                    # LOG operazione
                    insert_log(
                        username=request.user.email,
                        operationDate=datetime.now(),
                        roleUser="******",
                        type="Inserimento racconto",
                        description=
                        "Inserimento racconto con id = {idRacconto} per il concorso con id = {id}"
                        .format(id=id_active_event(), idRacconto=racconto.pk),
                    )

                    #Invio email di notifica all'utente
                    subject = "[Notifica invio racconto concorso - {concorso}]".format(
                        concorso=events.objects.all().get(
                            pk=idEvent).eventName)
                    body = "Il racconto da te inviato &egrave; stato memorizzato.<br><br><br><br>Questo messaggio &egrave; una notifica automatica, qualunque risposta verr&agrave; ignorata."
                    subject = subject.encode("utf8").decode()
                    body = body.encode("utf8").decode()
                    emailsender(subject, body, [request.user.email], [], [])

                    return HttpResponseRedirect(reverse('create_racconto'))
            # if a GET (or any other method) we'll create a blank form
            else:
                form = raccontiModelForm()

        # Controllo che il racconto non sia più inviabile
        # in questo caso mostro il form vuoto in sola lettura
        # (l'autore non ha inviato nessun racconto)
        # CASO RACCONTO NON INVIATO E NON INVIABILE        #
        elif not is_submittable:
            # print("RACCONTO NON INVIABILE")
            form = raccontiModelForm()
            form.fields["title"] = forms.CharField(label="Titolo del racconto",
                                                   max_length=128,
                                                   disabled=True)
            form.fields["content"] = forms.CharField(
                widget=forms.Textarea(attrs={
                    'rows': 20,
                    'maxlength': MAX_NUM_CHAR
                }),
                label="Testo del racconto ANONIMO (massimo " +
                str(MAX_NUM_CHAR) + " caratteri)",
                disabled=True)
            form.fields["coAuthors"] = forms.CharField(
                widget=forms.Textarea(attrs={
                    'rows': 10,
                    'maxlength': 8000
                }),
                label="Coautori in caso di testo collettivo (nome, cognome"
                " e indirizzo email istituzionale)",
                required=False,
                disabled=True)
            form.fields["contacts"] = forms.CharField(
                label="Recapito telefonico", max_length=128, disabled=True)
            form.fields["publishingPermission"] = forms.ChoiceField(
                widget=forms.CheckboxInput(),  # .RadioSelect(),
                choices=[(True, 'Si'), (False, 'No')],
                label=
                'Autorizzo la Biblioteca di Ateneo alla pubblicazione del mio racconto',
                required=False,
                disabled=True)
            # form.fields["visioneregolamento"] = forms.ChoiceField(widget=forms.RadioSelect(),
            #                                                       initial=True, choices=[(True, 'Si'), (False, 'No')],
            #                                                       label='Dichiaro di aver preso visione del regolamento del concorso e di accettare le condizioni <a href="https://www.biblio.unimib.it/it/terza-missione/concorso-letterario" target="_blank">LINK</a>',
            #                                                       required=False, disabled=True)
            # form.fields["visioneinformativa"] = forms.ChoiceField(widget=forms.RadioSelect(),
            #                                                       initial=True, choices=[(True, 'Si'), (False, 'No')],
            #                                                       label="Dichiaro di aver preso visione dell'informativa privacy all'indirizzo <a href = 'https://www.unimib.it/sites/default/files/allegati/informativa_eventi_e_iniziative.pdf' target = '_blank' >LINK</a>",
            #                                                       required=False, disabled=True)
            context = {
                'form': form,
                'idEvent': idEvent,
                'titolo_concorso': titolo_concorso,
                'is_submitted_in_active_event': False,
                'is_submittable': is_submittable,
                'MAX_NUM_CHAR': None,
                'is_not_valid_user': False
            }
            context.update(permissions)
            return render(request, 'create_racconto.html', context)

        else:
            form = raccontiModelForm()

        context = {
            'form': form,
            'idEvent': idEvent,
            'titolo_concorso': titolo_concorso,
            'is_submitted_in_active_event': False,
            'is_submittable': is_submittable,
            'MAX_NUM_CHAR': MAX_NUM_CHAR,
            'is_not_valid_user': False
        }
        context.update(permissions)
        return render(request, 'create_racconto.html', context)
    else:
        context = {'idEvent': idEvent, 'is_not_valid_user': False}
        context.update(permissions)
        return render(request, 'create_racconto.html', context)
示例#9
0
def votazione_racconto(request, counter_id_racconto, categoriaeta, classifica):
    permission = get_permission(request.user.email)

    # Controllo che l'utente sia un valutatore
    if not permission['is_valutatore']:
        return redirect('home')

    # Controllo che il parametro classifica sia valido
    try:
        RANKING_POINT[classifica]
    except:
        return redirect('home')

    # Controllo che il parametro categoriaeta sia valido
    if categoriaeta not in CATEGORIE_ETA:
        return redirect('home')

    # Estraggo l'entry, se esiste, che associa la valutazione del racconto al valutatore
    concorso = events.objects.all().get(pk=id_active_event())
    valutatore_concorso = valutatore.objects.all().filter(
        idEvent=concorso, idUser=request.user.email)[:1]

    racconto = racconti.objects.all().filter(counter=counter_id_racconto,
                                             idEvent=concorso)[:1]

    # Controllo che il racconto esista
    if racconto.count() == 0:
        return redirect('home')

    valutazione_racconto = valutazione.objects.all().filter(
        idRacconto=racconto[0], idValutatore=valutatore_concorso[0])

    if valutazione_racconto.count() == 0:  # Non esiste entry, quindi la creo
        valutazione_racconto = valutazione(idRacconto=racconto[0],
                                           idValutatore=valutatore_concorso[0],
                                           selected=0,
                                           ranking=RANKING_POINT[classifica])

    else:  # L'entry esiste quindi la modifico
        valutazione_racconto = valutazione.objects.get(
            pk=valutazione_racconto[0].pk)
        valutazione_racconto.ranking = RANKING_POINT[classifica]

    valutazione_racconto.save()
    # LOG operazione
    insert_log(
        username=request.user.email,
        operationDate=datetime.now(),
        roleUser="******",
        type="Valutazione racconto",
        description=
        "Valutazione racconto con id = {id_racconto} con punteggio assegnato {ranking} per il concorso con id = {id}"
        .format(id_racconto=valutazione_racconto.idRacconto.pk,
                ranking=valutazione_racconto.ranking,
                id=id_active_event()),
    )

    # Bisogna porre a 0 il ranking di tutte le valutazioni del valutatore che avevano
    # valutazione_racconto.ranking = RANKING_POINT[classifica]

    if categoriaeta == CATEGORIE_ETA[0]:  # Valutazione per racconto Junior
        valutazioni_da_aggiornare = valutazione.objects.filter(
            idValutatore=valutatore_concorso,
            idRacconto__authorBirthDate__gte=concorso.birthDateLimit,
            ranking=RANKING_POINT[classifica]).exclude(
                idRacconto=racconto[0],
                idValutatore=valutatore_concorso[0]).update(ranking=0)
    else:  # Categoria senior
        valutazioni_da_aggiornare = valutazione.objects.filter(
            idValutatore=valutatore_concorso,
            idRacconto__authorBirthDate__lt=concorso.birthDateLimit,
            ranking=RANKING_POINT[classifica]).exclude(
                idRacconto=racconto[0],
                idValutatore=valutatore_concorso[0]).update(ranking=0)

    print(valutazioni_da_aggiornare)

    return redirect('votazione_racconti', categoriaeta=categoriaeta)
示例#10
0
def create_valutatore(request, pk_event):
    # Controllo che l'utente sia un gestore
    utente_gestore = gestore.objects.filter(username=request.user.email)[:1]
    if utente_gestore.count() == 0:  # Non è un gestore
        return redirect('home')
    # print(pk_event)
    # if this is a POST request we need to process the form data
    permissions = get_permission(request.user.email)
    if request.method == 'POST':
        # create a form instance and populate it with data from the request:
        form = valutatoreModelForm(request.POST)

        # check whether it's valid:
        if form.is_valid():
            id_event = pk_event  # id_active_event()
            email = form.cleaned_data['idUser']

            # Controllo che non sia già stato inserito per questo evento
            # Se si invalido il form e lo restituisco
            count = valutatore.objects.filter(idUser=email,
                                              idEvent=id_event).count()
            # print(count)
            if count > 0:
                form.add_error(
                    "idUser",
                    "Utente già inserito come valutatore per questo concorso")
                context = {
                    'form': form,
                    'pk_event': pk_event,
                    'is_gestore': True
                }
                permissions = get_permission(request.user.email)
                context.update(permissions)
                return render(request, 'create_valutatore.html', context)

            # Controllo che sia un dipendente o uno studente e ne ricavo i dati
            res = dipendente_email(email)
            if res is None:
                res = studente_email(email)

            forename = res["nome"]
            surname = res["cognome"]
            utente_valutatore = valutatore.objects.create(
                idUser=email,
                forename=forename,
                surname=surname,
                idEvent=events.objects.get(pk=id_event))

            # LOG operazione
            insert_log(
                username=request.user.email,
                operationDate=datetime.now(),
                roleUser="******",
                type="Inserimento valutatore",
                description=
                "Inserimento valutatore \"{utente_valutatore}\" per il concorso con id = {id}"
                .format(
                    id=id_active_event(),
                    utente_valutatore=utente_valutatore.idUser,
                ))

            return HttpResponseRedirect(
                reverse('list_valutatore', kwargs={'pk_event': pk_event}))

    # if a GET (or any other method) we'll create a blank form
    else:
        form = valutatoreModelForm()
    context = {'form': form, 'pk_event': pk_event, 'is_gestore': True}
    context.update(permissions)
    return render(request, 'create_valutatore.html', context)