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