Exemplo n.º 1
0
def _profilo_anagrafica(request, me, persona):
    puo_modificare = me.permessi_almeno(persona, MODIFICA)
    modulo = ModuloProfiloModificaAnagrafica(request.POST or None,
                                             me=me,
                                             instance=persona,
                                             prefix="anagrafica")
    modulo_numero_telefono = ModuloCreazioneTelefono(request.POST or None,
                                                     prefix="telefono")

    if puo_modificare and modulo.is_valid():
        Log.registra_modifiche(me, modulo)
        modulo.save()

    if puo_modificare and modulo_numero_telefono.is_valid():
        persona.aggiungi_numero_telefono(
            modulo_numero_telefono.cleaned_data.get('numero_di_telefono'),
            modulo_numero_telefono.cleaned_data.get('tipologia') ==
            modulo_numero_telefono.SERVIZIO,
        )

    contesto = {
        "modulo": modulo,
        "modulo_numero_telefono": modulo_numero_telefono,
    }
    return 'anagrafica_profilo_anagrafica.html', contesto
Exemplo n.º 2
0
def aspirante_corso_base_iscritti_aggiungi(request, me, pk):
    corso = get_object_or_404(CorsoBase, pk=pk)
    if not me.permessi_almeno(corso, MODIFICA):
        return redirect(ERRORE_PERMESSI)

    if not corso.possibile_aggiungere_iscritti:
        return errore_generico(request, me, titolo="Impossibile aggiungere iscritti",
                               messaggio="Non si possono aggiungere altri iscritti a questo "
                                         "stadio della vita del corso base.",
                               torna_titolo="Torna al corso base", torna_url=corso.url_iscritti)

    modulo = ModuloIscrittiCorsoBaseAggiungi(request.POST or None)
    risultati = []
    if modulo.is_valid():

        for persona in modulo.cleaned_data['persone']:
            esito = corso.persona(persona)
            ok = False

            if esito in corso.PUOI_ISCRIVERTI or \
                            esito in corso.NON_PUOI_ISCRIVERTI_SOLO_SE_IN_AUTONOMIA:
                ok = True
                p = PartecipazioneCorsoBase(persona=persona, corso=corso)
                p.save()
                Log.crea(me, p)
                Messaggio.costruisci_e_invia(
                    oggetto="Iscrizione a Corso Base",
                    modello="email_corso_base_iscritto.html",
                    corpo={
                        "persona": persona,
                        "corso": corso,
                    },
                    mittente=me,
                    destinatari=[persona]
                )

            risultati += [{
                "persona": persona,
                "esito": esito,
                "ok": ok,
            }]

    contesto = {
        "corso": corso,
        "puo_modificare": True,
        "modulo": modulo,
        "risultati": risultati,
    }
    return 'aspirante_corso_base_scheda_iscritti_aggiungi.html', contesto
Exemplo n.º 3
0
def _profilo_fototessera(request, me, persona):
    puo_modificare = me.permessi_almeno(persona, MODIFICA)

    modulo = ModuloNuovaFototessera(request.POST or None, request.FILES
                                    or None)
    if modulo.is_valid():
        fototessera = modulo.save(commit=False)
        fototessera.persona = persona
        fototessera.save()

        # Ritira eventuali fototessere in attesa
        if persona.fototessere_pending().exists():
            for x in persona.fototessere_pending():
                x.autorizzazioni_ritira()

        Log.crea(me, fototessera)

    contesto = {
        "puo_modificare": puo_modificare,
        "modulo": modulo,
    }
    return 'anagrafica_profilo_fototessera.html', contesto
Exemplo n.º 4
0
def aspirante_corso_base_iscritti_aggiungi(request, me, pk):
    corso = get_object_or_404(CorsoBase, pk=pk)
    if not me.permessi_almeno(corso, MODIFICA):
        return redirect(ERRORE_PERMESSI)

    if not corso.possibile_aggiungere_iscritti:
        return errore_generico(request, me, titolo="Impossibile aggiungere iscritti",
                               messaggio="Non si possono aggiungere altri iscritti a questo "
                                         "stadio della vita del corso base.",
                               torna_titolo="Torna al corso base", torna_url=corso.url_iscritti)

    modulo = ModuloIscrittiCorsoBaseAggiungi(request.POST or None)
    risultati = []
    if modulo.is_valid():

        for persona in modulo.cleaned_data['persone']:
            esito = corso.persona(persona)
            ok = PartecipazioneCorsoBase.NON_ISCRITTO
            partecipazione = None

            if esito in corso.PUOI_ISCRIVERTI or esito in corso.NON_PUOI_ISCRIVERTI_SOLO_SE_IN_AUTONOMIA:
                if hasattr(persona, 'aspirante'):
                    inviti = InvitoCorsoBase.con_esito_ok() | InvitoCorsoBase.con_esito_pending()
                    if inviti.filter(persona=persona, corso=corso).exists():
                        ok = PartecipazioneCorsoBase.INVITO_INVIATO
                        partecipazione = InvitoCorsoBase.objects.filter(persona=persona, corso=corso).first()
                    else:
                        partecipazione = InvitoCorsoBase(persona=persona, corso=corso, invitante=me)
                        partecipazione.save()
                        partecipazione.richiedi()
                        ok = PartecipazioneCorsoBase.IN_ATTESA_ASPIRANTE
                else:
                    partecipazione = PartecipazioneCorsoBase.objects.create(persona=persona, corso=corso)
                    ok = PartecipazioneCorsoBase.ISCRITTO
                    Messaggio.costruisci_e_invia(
                        oggetto="Iscrizione a Corso Base",
                        modello="email_corso_base_iscritto.html",
                        corpo={
                            "persona": persona,
                            "corso": corso,
                        },
                        mittente=me,
                        destinatari=[persona]
                    )

                Log.crea(me, partecipazione)

            risultati += [{
                "persona": persona,
                "partecipazione": partecipazione,
                "esito": esito,
                "ok": ok,
            }]

    contesto = {
        "corso": corso,
        "puo_modificare": True,
        "modulo": modulo,
        "risultati": risultati,
    }
    return 'aspirante_corso_base_scheda_iscritti_aggiungi.html', contesto
Exemplo n.º 5
0
 def handle(self):
     data = bytes.decode(self.request[0].strip())
     source, _ = self.client_address
     log = Log(source, str(data))
     db.session.add(log)
     db.session.commit()
Exemplo n.º 6
0
def _profilo_credenziali(request, me, persona):
    utenza = Utenza.objects.filter(persona=persona).first()

    modulo_utenza = modulo_modifica = None
    if utenza:
        modulo_modifica = ModuloUSModificaUtenza(request.POST or None,
                                                 instance=utenza)
    else:
        modulo_utenza = ModuloUtenza(request.POST or None,
                                     instance=utenza,
                                     initial={"email": persona.email_contatto})

    if modulo_utenza and modulo_utenza.is_valid():
        utenza = modulo_utenza.save(commit=False)
        utenza.persona = persona
        utenza.save()
        utenza.genera_credenziali()
        return redirect(persona.url_profilo_credenziali)

    if modulo_modifica and modulo_modifica.is_valid():
        vecchia_email_contatto = persona.email
        vecchia_email = Utenza.objects.get(pk=utenza.pk).email
        nuova_email = modulo_modifica.cleaned_data.get('email')

        if vecchia_email == nuova_email:
            return errore_generico(
                request,
                me,
                titolo="Nessun cambiamento",
                messaggio="Per cambiare indirizzo e-mail, inserisci un "
                "indirizzo differente.",
                torna_titolo="Credenziali",
                torna_url=persona.url_profilo_credenziali)

        if Utenza.objects.filter(email__icontains=nuova_email).first():
            return errore_generico(
                request,
                me,
                titolo="E-mail già utilizzata",
                messaggio="Esiste un altro utente in Gaia che utilizza "
                "questa e-mail (%s). Impossibile associarla quindi "
                "a %s." % (nuova_email, persona.nome_completo),
                torna_titolo="Credenziali",
                torna_url=persona.url_profilo_credenziali)

        def _invia_notifica():
            Messaggio.costruisci_e_invia(
                oggetto=
                "IMPORTANTE: Cambio e-mail di accesso a Gaia (credenziali)",
                modello="email_credenziali_modificate.html",
                corpo={
                    "vecchia_email": vecchia_email,
                    "nuova_email": nuova_email,
                    "persona": persona,
                    "autore": me,
                },
                mittente=me,
                destinatari=[persona],
                utenza=True)

        _invia_notifica()  # Invia notifica alla vecchia e-mail
        Log.registra_modifiche(me, modulo_modifica)
        modulo_modifica.save()  # Effettua le modifiche
        persona.refresh_from_db()
        if persona.email != vecchia_email_contatto:  # Se e-mail principale cambiata
            _invia_notifica()  # Invia la notifica anche al nuovo indirizzo

        return messaggio_generico(
            request,
            me,
            titolo="Credenziali modificate",
            messaggio=
            "Le credenziali di %s sono state correttamente aggiornate." %
            persona.nome,
            torna_titolo="Credenziali",
            torna_url=persona.url_profilo_credenziali)

    contesto = {
        "utenza": utenza,
        "modulo_creazione": modulo_utenza,
        "modulo_modifica": modulo_modifica
    }
    return 'anagrafica_profilo_credenziali.html', contesto
Exemplo n.º 7
0
def aspirante_corso_base_iscritti_aggiungi(request, me, pk):
    corso = get_object_or_404(CorsoBase, pk=pk)
    if not me.permessi_almeno(corso, MODIFICA):
        return redirect(ERRORE_PERMESSI)

    if not corso.possibile_aggiungere_iscritti:
        return errore_generico(
            request,
            me,
            titolo="Impossibile aggiungere iscritti",
            messaggio="Non si possono aggiungere altri iscritti a questo "
            "stadio della vita del corso base.",
            torna_titolo="Torna al corso base",
            torna_url=corso.url_iscritti)

    modulo = ModuloIscrittiCorsoBaseAggiungi(request.POST or None)
    risultati = []
    if modulo.is_valid():

        for persona in modulo.cleaned_data['persone']:
            esito = corso.persona(persona)
            ok = PartecipazioneCorsoBase.NON_ISCRITTO
            partecipazione = None

            if esito in corso.PUOI_ISCRIVERTI or esito in corso.NON_PUOI_ISCRIVERTI_SOLO_SE_IN_AUTONOMIA:
                if hasattr(persona, 'aspirante'):
                    inviti = InvitoCorsoBase.con_esito_ok(
                    ) | InvitoCorsoBase.con_esito_pending()
                    if inviti.filter(persona=persona, corso=corso).exists():
                        ok = PartecipazioneCorsoBase.INVITO_INVIATO
                        partecipazione = InvitoCorsoBase.objects.filter(
                            persona=persona, corso=corso).first()
                    else:
                        partecipazione = InvitoCorsoBase(persona=persona,
                                                         corso=corso,
                                                         invitante=me)
                        partecipazione.save()
                        partecipazione.richiedi()
                        ok = PartecipazioneCorsoBase.IN_ATTESA_ASPIRANTE
                else:
                    partecipazione = PartecipazioneCorsoBase.objects.create(
                        persona=persona, corso=corso)
                    ok = PartecipazioneCorsoBase.ISCRITTO
                    Messaggio.costruisci_e_invia(
                        oggetto="Iscrizione a Corso Base",
                        modello="email_corso_base_iscritto.html",
                        corpo={
                            "persona": persona,
                            "corso": corso,
                        },
                        mittente=me,
                        destinatari=[persona])

                Log.crea(me, partecipazione)

            risultati += [{
                "persona": persona,
                "partecipazione": partecipazione,
                "esito": esito,
                "ok": ok,
            }]

    contesto = {
        "corso": corso,
        "puo_modificare": True,
        "modulo": modulo,
        "risultati": risultati,
    }
    return 'aspirante_corso_base_scheda_iscritti_aggiungi.html', contesto