def enregistrement(request): if request.user.is_authenticated(): return HttpResponseRedirect('/') idInvite = request.GET.get("invite", False) tokenInvite = request.GET.get("token", False) if request.method == "GET" and idInvite and tokenInvite: f = AthleteForm() f.fields['type_compte'].widget.attrs['disabled'] = True return render(request, 'myTrainer/enregistrement.html', { 'form': f, 'invite': idInvite, 'token': tokenInvite }) elif request.method == 'POST': idInvite = request.POST.get("invite", False) tokenInvite = request.POST.get("token", False) ig = False groupe = False modPOST = False if idInvite and tokenInvite: idInvite = int(idInvite) try: ig = InvitationGroupe.objects.get(pk=int(idInvite)) dateEnvoi = timezone.make_naive( ig.date_envoi, timezone.get_current_timezone()) if ig.user is None and hashlib.md5( dateEnvoi.ctime()).hexdigest() == tokenInvite: groupe = ig.groupe else: raise ObjectDoesNotExist() except ObjectDoesNotExist: return render( request, 'myTrainer/enregistrement.html', { 'message': "Erreur : La demande d'invitation spécifiée est invalide." }) modPOST = request.POST.copy() modPOST['type_compte'] = '1' if modPOST: f = AthleteForm(modPOST) else: f = AthleteForm(request.POST) if f.is_valid(): a = Athlete() a.user = User.objects.create_user( generate_random_username(), email=f.cleaned_data['courriel'], password=f.cleaned_data['motPasse']) a.user.is_active = False a.user.save() a.nom = f.cleaned_data['nom'] a.VAM = f.cleaned_data['VAM'] if groupe: a.groupe = groupe a.save() if not ig and f.cleaned_data['type_compte'] == '2': c = Coach() c.user = a c.save() if ig: ig.delete() url_activ = 'http://' + request.get_host( ) + '/activation?id=' + str(a.user.pk) + '&token=' + hashlib.md5( a.user.date_joined.ctime()).hexdigest() e = EmailMessage( 'Entraînmax – Activation de votre compte', 'Veuillez cliquer sur ce lien pour activer votre compte: <a href="' + url_activ + '">' + url_activ + '</a>', to=[a.user.email]) e.content_subtype = "html" e.send() return render(request, 'myTrainer/enregistrement.html') elif groupe: f.fields['type_compte'].widget.attrs['disabled'] = True else: f = AthleteForm() return render(request, 'myTrainer/enregistrement.html', { 'form': f, 'invite': idInvite, 'token': tokenInvite })