Files
aem_monespace/monaem/views/inscriptions.py
2023-06-22 10:26:17 +02:00

1161 lines
48 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# -*- coding: utf8 -*-
from pyramid.view import (
view_config,
)
from pyramid.httpexceptions import (
HTTPFound,
)
from pyramid.security import (
remember,
forget,
)
from datetime import *
import json
from ..models.inscriptions import *
from ..models.default import (
get_eleve_agence,
)
from ..views.default import (
to_date,
to_time,
to_int,
to_percent,
ajax_dept_nais,
envoyerMail,
getConfirmText,
getMessageText,
isMinor,
)
@view_config(route_name='pap_cde', renderer='../templates/inscriptions/pap_cde.pt')
def pap_cde(request):
cd_prospect = request.matchdict['cd_prospect']
stage_id = request.matchdict['stage_id']
url = request.route_url('pap_cde', cd_prospect = cd_prospect, stage_id = stage_id)
# lire le stage demandé
stage = get_stage_by_id(request, stage_id)
if not stage:
request.session.flash(u"Le stage demandé : %s, est non valide." % stage_id, 'danger')
return HTTPFound(location=request.route_url("pap_dispo"))
# reste place disponible ?
if stage.dispo <= 0:
request.session.flash(u"Le stage du %s est complet. Veuillez choisir un autre." % stage.debut.strftime("%d-%m-%Y"), 'danger')
return HTTPFound(location=request.route_url("pap_dispo"))
message = ''
# préparer les listes déroulantes
civilites = ["M.","Mme","Mlle"]
origines = get_origines(request)
montant = get_tarifs(request, 'POINT')
dept = get_departements(request)
# lire le prospect
contact = get_prospects_by_code(request, cd_prospect)
if not contact:
civilite = 'M.'
nom = ''
prenom = ''
adres1 = ''
adres2 = ''
code_postal = ''
no_tel = ''
mail = ''
agence_no = 6
else:
# prospect cloture ?
if contact.cloture_le:
request.session.flash('Dossier déjà traité.', 'danger')
return HTTPFound(location=request.route_url("affiche_message", login='0'))
civilite = contact.civilite
nom = contact.nom
prenom = contact.prenom
adres1 = contact.adresse
adres2 = contact.adresse2
code_postal = '%s - %s' % (contact.cp, contact.ville)
no_tel = contact.tel_portable
mail = contact.email
agence_no = contact.agence
nom_jf = ''
date_nais = ''
lieu_nais = ''
dept_nais = '069'
no_permis = ''
obtenu_le = ''
lieu_permis = 'RHONE'
type_stage = ''
origine = ''
infraction_lieu = ''
infraction_le = ''
infraction_a = ''
infractionle = to_date(infraction_le)
infractiona = to_time(infraction_a)
cb_spam = "oui"
etape = 1
if 'form.next1' in request.params or 'form.next2' in request.params or 'form.submitted' in request.params:
civilite = request.params['civilite']
nom = request.params['nom'].upper()
nom_jf = request.params['nom_jf'].upper()
prenom = request.params['prenom']
date_nais = request.params['date_nais']
datenais = to_date(date_nais) # convertir en format date
lieu_nais = request.params['lieu_nais']
dept_nais = request.params['dept_nais']
adres1 = request.params['adres1']
adres2 = request.params['adres2']
code_postal = request.params['code_postal']
no_tel = request.params['no_tel']
mail = request.params['mail']
no_permis = request.params['no_permis']
obtenu_le = request.params['obtenu_le']
obtenule = to_date(obtenu_le) # convertir en format date
lieu_permis = request.params['lieu_permis']
if 'type_stage' in request.params:
type_stage = request.params['type_stage']
else:
type_stage = ''
# si accepte recevoir info coché ?
if 'cb_spam' in request.params:
cb_spam = "oui"
NePasSpammer = 0
else:
cb_spam = "non"
NePasSpammer = -1
infraction_lieu = request.params['infraction_lieu']
infraction_le = request.params['infraction_le']
infraction_a = request.params['infraction_a']
infractionle = to_date(infraction_le)
infractiona = to_time(infraction_a)
message = ctl_saisies(1, code_postal, datenais, obtenule)
if message == '':
# pas erreur saisie
cp = code_postal.split(' - ')
codpost = cp[0]
ville = cp[1]
etape = 2
if 'form.next2' in request.params:
message = ctl_saisies(2, code_postal, datenais, obtenule)
if message == '':
if type_stage == 'CAS-2':
infractionle = to_date(infraction_le)
infractiona = to_time(infraction_a)
if infractionle == False or infractiona == False:
message = "Pour le CAS 2, veuillez saisir une date et une heure d'infraction valides."
else:
etape = 3
else:
infractionle = None
infractiona = None
etape = 3
# Bouton terminé
if 'form.submitted' in request.params:
etape = 4
origine = request.params['origine']
# On enregistre la fiche élève et on récupère son code
cd_cli = ins_eleve_by_formule(request, 'POINT', civilite, nom, nom_jf, prenom, datenais, lieu_nais, dept_nais, \
adres1, adres2, codpost, ville, '', '', no_tel, mail, \
no_permis, obtenule, lieu_permis, type_stage.replace('-',' '), origine, \
infraction_lieu,infractionle,infractiona,NePasSpammer, agence_no)
# si prospect, mettre son statut = GAGNE
if contact:
update_prospect_gagne(request, cd_prospect, cd_cli, contact.cd_uti, agence_no)
# inscrire l'élève dans le stage pap
debut_stage = ins_stage_eleve(request, 'POINT', stage_id, cd_cli, nom, prenom)
if debut_stage != None:
# si déjà inscrit, retourne aux dispo
request.session.flash(u"Vous êtes déjà inscrit(e) au stage du %s. Veuillez consulter votre messagerie pour la confirmation de cette inscription." % debut_stage.strftime("%d-%m-%Y"), 'danger')
return HTTPFound(location=request.route_url("pap_dispo"))
else:
nompren = "%s %s %s" % (civilite, nom, prenom)
body = getConfirmText(request, 'POINT', nompren, cd_cli,
'%s au %s à %s' % (stage.debut.strftime("%d-%m-%Y"), stage.fin.strftime("%d-%m-%Y"), stage.debut.strftime("%Hh%M")),
stage.lieu1, stage.lieu2)
# envoyer un message à l'élève et la secrétaire
agence_email = get_eleve_agence(request, cd_cli).email
destinataires = [mail, agence_email,]
envoyerMail(request, destinataires, "Votre réservation pour le stage de RECUPERATION DE POINTS", body)
# connecter le client à l'espace Marietton
request.session.invalidate()
headers = forget(request)
headers = remember(request, cd_cli)
request.session.flash(u"Votre réservation a bien été enregistrée. Elle sera ferme lorsque le réglement sera effectué.", 'info')
return HTTPFound(location=request.route_url('reglement', ref='PAP', mttotal=montant, nfois='1'), headers=headers)
return {
'page_title': "Stage de Récupération de points - Inscription",
'url': url,
'message': message,
'etape': etape,
'stage': stage,
'origines': origines,
'civilites': civilites,
'dept': dept,
'civilite': civilite,
'nom': nom,
'nom_jf': nom_jf,
'prenom': prenom,
'date_nais': date_nais,
'lieu_nais': lieu_nais,
'dept_nais': dept_nais,
'adres1': adres1,
'adres2': adres2,
'code_postal': code_postal,
'no_tel': no_tel,
'mail': mail,
'no_permis': no_permis,
'obtenu_le': obtenu_le,
'lieu_permis': lieu_permis,
'type_stage': type_stage,
'origine': origine,
'infraction_lieu': infraction_lieu,
'infraction_le': infraction_le,
'infraction_a': infraction_a,
'cb_spam': cb_spam,
'montant': montant,
}
@view_config(route_name='code_dispo', renderer='../templates/inscriptions/code_dispo.pt')
@view_config(route_name='code_dispo2', renderer='../templates/inscriptions/code_dispo.pt')
def code_dispo(request):
tarif = get_tarifs(request, '3JC')
items = get_stages_code(request)
if 'code_dispo2' in request.current_route_path():
url_cde = 'code_cde/%s/' % request.matchdict['cd_prospect']
else:
url_cde = '/code_cde/0'
return {
'page_title': 'Stages code disponibles',
'tarif': tarif,
'items': items,
'url_cde': url_cde,
}
@view_config(route_name='pap_dispo', renderer='../templates/inscriptions/pem_dispo.pt')
@view_config(route_name='pem_dispo', renderer='../templates/inscriptions/pem_dispo.pt')
@view_config(route_name='pasa2_dispo', renderer='../templates/inscriptions/pem_dispo.pt')
@view_config(route_name='b96_dispo', renderer='../templates/inscriptions/pem_dispo.pt')
@view_config(route_name='post_dispo', renderer='../templates/inscriptions/pem_dispo.pt')
@view_config(route_name='pap_dispo2', renderer='../templates/inscriptions/pem_dispo.pt')
@view_config(route_name='pem_dispo2', renderer='../templates/inscriptions/pem_dispo.pt')
@view_config(route_name='pasa2_dispo2', renderer='../templates/inscriptions/pem_dispo.pt')
@view_config(route_name='b96_dispo2', renderer='../templates/inscriptions/pem_dispo.pt')
@view_config(route_name='post_dispo2', renderer='../templates/inscriptions/pem_dispo.pt')
def pem_dispo(request):
lieu1_label = 'Lieu'
lieu1 = 'Agence Marietton Vaugneray : RD 30 - LES AIGUILLONS - 69670 VAUGNERAY'
lieu2 = ''
# provenance de la requete
route_path = request.current_route_path()
if 'pap_dispo' in route_path or 'pap_dispo2' in route_path:
tarif = get_tarifs(request, 'POINT')
rows = get_stages_by_type(request, 'PAP')
page_title = "Récupération de points"
lieu1_label = 'Lieu A'
lieu1 = 'Agence Marietton Charpennes : 26 COURS EMILE ZOLA - 69100 VILLEURBANNE'
lieu2 = 'Agence Marietton Vaugneray : RD 30 - LES AIGUILLONS - 69670 VAUGNERAY'
# récupérer le code prospect
if 'pap_dispo2' in route_path:
url_cde = '/pap_cde/%s/' % request.matchdict['cd_prospect']
else:
url_cde = '/pap_cde/0/'
elif 'pem_dispo' in route_path or 'pem_dispo2' in route_path:
tarif = get_tarifs(request, 'PEM125')
rows = get_stages_by_type(request, 'PEM125')
page_title = "Prise en main 125"
# récupérer le code prospect
if 'pem_dispo2' in route_path:
url_cde = '/pem_cde/%s/' % request.matchdict['cd_prospect']
else:
url_cde = '/pem_cde/0/'
elif 'pasa2_dispo' in route_path or 'pasa2_dispo2' in route_path:
tarif = get_tarifs(request, 'PASSERELLE')
rows = get_stages_by_type(request, 'PASA2')
page_title = "Passerelle A2"
# récupérer le code prospect
if 'pasa2_dispo2' in route_path:
url_cde = '/pasa2_cde/%s/' % request.matchdict['cd_prospect']
else:
url_cde = '/pasa2_cde/0/'
else:
tarif = get_tarifs(request, 'B96')
rows = get_stages_by_type(request, 'B96')
page_title = "B96"
# récupérer le code prospect
if 'b96_dispo2' in route_path:
url_cde = '/b96_cde/%s/' % request.matchdict['cd_prospect']
else:
url_cde = '/b96_cde/0/'
if 'post_dispo' in route_path or 'post_dispo2' in route_path:
tarif = get_tarifs(request, 'POST_PERMI')
rows = get_stages_by_type(request, 'POST')
page_title = "Post-Permis"
lieu1_label = 'Lieu A'
lieu1 = 'Agence Marietton Charpennes : 26 COURS EMILE ZOLA - 69100 VILLEURBANNE'
lieu2 = 'Agence Marietton Vaise : 31 RUE MARIETTON - 69009 LYON'
# récupérer le code prospect
if 'pap_dispo2' in route_path:
url_cde = '/post_cde/%s/' % request.matchdict['cd_prospect']
else:
url_cde = '/post_cde/0/'
dateMin = date.today() + timedelta(days=365) # today + 1 year
# construire la liste des events
events = []
for row in rows:
event_url = '%s%s' % (url_cde, row.stage_id)
event_title = row.dispo
# déterminer la date la plus récente
if row.debut.date() < dateMin:
dateMin = row.debut.date()
# déterminer la couleur de l'event
if event_title == "Complet":
color = "#CC0000" # rouge danger
event_url = "" # interdire inscription
elif event_title == "Disponible":
color = "#007E33" # vert success
else:
color = "#FF8800" # orange warning
if 'pap_dispo' in request.current_route_path():
date_fin = row.fin.strftime('%Y-%m-%d 16:30:00')
if row.groupe == 'A':
event_title = '%s - %s' % ('Charpennes', event_title)
else:
event_title = '%s - %s' % ('Vaugneray', event_title)
elif 'post_dispo' in request.current_route_path():
date_fin = row.fin.strftime('%Y-%m-%d 16:30:00')
if 'CHARP' in row.libelle:
event_title = '%s - %s' % ('Charpennes', event_title)
else:
event_title = '%s - %s' % ('Vaise', event_title)
else:
date_fin = row.fin.strftime('%Y-%m-%d 18:00:00')
json_event = {
'title': event_title,
'start': row.debut.strftime('%Y-%m-%d %H:%M:%S'),
'end': date_fin,
'color': color,
'url': event_url,
}
events.append(json_event)
return {
'page_title': 'Stage de %s - Places disponibles' % page_title,
'lieu1_label': lieu1_label,
'lieu1': lieu1,
'lieu2': lieu2,
'tarif': tarif,
'fullcalendar_events': json.dumps(events),
'datePlan': dateMin.strftime('%Y-%m-%d'),
}
@view_config(route_name='pem_cde', renderer='../templates/inscriptions/pem_cde.pt')
def pem_cde(request):
cd_prospect = request.matchdict['cd_prospect']
stage_id = request.matchdict['stage_id']
url = request.route_url('pem_cde', cd_prospect = cd_prospect, stage_id = stage_id)
# lire le stage demandé
stage = get_stage_by_id(request, stage_id)
if not stage:
request.session.flash(u"Le stage demandé : %s, est non valide" % stage_id, 'danger')
return HTTPFound(location=request.route_url("pem_dispo"))
# reste place disponible ?
if stage.dispo <= 0:
request.session.flash(u"Le stage du %s est complet. Veuillez choisir un autre." % stage.debut.strftime("%d-%m-%Y"), 'danger')
return HTTPFound(location=request.route_url("pem_dispo"))
message = ''
# préparer les listes déroulantes
civilites = ["M.","Mme","Mlle"]
origines = get_origines(request)
montant = get_tarifs(request, 'PEM125')
dept = get_departements(request)
# lire le prospect
contact = get_prospects_by_code(request, cd_prospect)
if not contact:
civilite = 'M.'
nom = ''
prenom = ''
adres1 = ''
adres2 = ''
code_postal = ''
no_tel = ''
mail = ''
agence_no = 6
else:
# prospect cloture ?
if contact.cloture_le:
request.session.flash('Dossier déjà traité.', 'danger')
return HTTPFound(location=request.route_url("affiche_message", login='0'))
civilite = contact.civilite
nom = contact.nom
prenom = contact.prenom
adres1 = contact.adresse
adres2 = contact.adresse2
code_postal = '%s - %s' % (contact.cp, contact.ville)
no_tel = contact.tel_portable
mail = contact.email
agence_no = contact.agence
nom_jf = ''
date_nais = ''
lieu_nais = ''
dept_nais = 'RHONE | 069'
no_permis = ''
obtenu_le = ''
lieu_permis = 'RHONE | 069'
origine = ''
cb_spam = '0'
etape = 1
if 'form.next1' in request.params or 'form.next2' in request.params or 'form.submitted' in request.params:
civilite = request.params['civilite']
nom = request.params['nom'].upper()
nom_jf = request.params['nom_jf'].upper()
prenom = request.params['prenom']
date_nais = request.params['date_nais']
datenais = to_date(date_nais) # convertir en format date
lieu_nais = request.params['lieu_nais']
dept_nais = request.params['dept_nais']
adres1 = request.params['adres1']
adres2 = request.params['adres2']
code_postal = request.params['code_postal']
no_tel = request.params['no_tel']
mail = request.params['mail']
no_permis = request.params['no_permis']
obtenu_le = request.params['obtenu_le']
obtenule = to_date(obtenu_le) # convertir en format date
lieu_permis = request.params['lieu_permis']
# si accepte recevoir info coché ?
if 'cb_spam' in request.params:
cb_spam = "oui"
NePasSpammer = 0
else:
cb_spam = "non"
NePasSpammer = -1
message = ctl_saisies(1, code_postal, datenais, obtenule)
if message == '':
# pas erreur saisie
cp = code_postal.split(' - ')
codpost = cp[0]
ville = cp[1]
etape = 2
if 'form.next2' in request.params:
# On teste pour voir si l'un des trois numéros a été renseigné ?
message = ctl_saisies(2, code_postal, datenais, obtenule)
if message == '':
etape = 3
# Bouton terminé
if 'form.submitted' in request.params:
etape = 4
origine = request.params['origine']
# On enregistre la fiche élève et on récupère son code
cd_cli = ins_eleve_by_formule(request, 'PEM125', civilite, nom, nom_jf, prenom, datenais, lieu_nais, dept_nais, \
adres1, adres2, codpost, ville, '', '', no_tel, mail, \
no_permis, obtenule, lieu_permis, 'CAS 1', origine,'','','',NePasSpammer, agence_no)
# si prospect, mettre son statut = GAGNE
if contact:
update_prospect_gagne(request, cd_prospect, cd_cli, contact.cd_uti, agence_no)
# inscrire l'élève dans le stage
debut_stage = ins_stage_eleve(request, 'PEM125', stage_id, cd_cli, nom, prenom)
if debut_stage != None:
# si echec, retourne aux dispo
request.session.flash(u"Vous êtes déjà inscrit(e) au stage du %s. Veuillez consulter votre messagerie pour la confirmation de cette inscription." % debut_stage.strftime("%d-%m-%Y"), 'danger')
return HTTPFound(location=request.route_url("pem_dispo"))
else:
nompren = "%s %s %s" % (civilite, nom, prenom)
body = getConfirmText(request, 'PEM125', nompren, cd_cli,
'%s à %s' % (stage.debut.strftime("%d-%m-%Y"), stage.debut.strftime("%Hh%M")),
stage.lieu1, stage.lieu2)
# envoyer un message à l'élève et la secrétaire
agence_email = get_eleve_agence(request, cd_cli).email
destinataires=[mail, agence_email,]
envoyerMail(request, destinataires, "Votre réservation pour le stage de PRISE EN MAIN 125", body)
# connecter le client à l'espace Marietton
request.session.invalidate()
headers = forget(request)
headers = remember(request, cd_cli)
request.session.flash(u"Votre réservation a bien été enregistrée. Elle sera ferme lorsque le réglement sera effectué.", 'info')
return HTTPFound(location=request.route_url('reglement', ref='PEM', mttotal=montant, nfois='1'), headers=headers)
return {
'page_title': "Stage de Prise en main 125 - Inscription",
'url': url,
'message': message,
'etape': etape,
'stage': stage,
'origines': origines,
'civilites': civilites,
'dept': dept,
'civilite': civilite,
'nom': nom,
'nom_jf': nom_jf,
'prenom': prenom,
'date_nais': date_nais,
'lieu_nais': lieu_nais,
'dept_nais': dept_nais,
'adres1': adres1,
'adres2': adres2,
'code_postal': code_postal,
'no_tel': no_tel,
'mail': mail,
'no_permis': no_permis,
'obtenu_le': obtenu_le,
'lieu_permis': lieu_permis,
'origine': origine,
'cb_spam': cb_spam,
'montant': montant,
}
@view_config(route_name='pasa2_cde', renderer='../templates/inscriptions/pasa2_cde.pt')
def pasa2_cde(request):
cd_prospect = request.matchdict['cd_prospect']
stage_id = request.matchdict['stage_id']
url = request.route_url('pasa2_cde', cd_prospect = cd_prospect, stage_id = stage_id)
# lire le stage demandé
stage = get_stage_by_id(request, stage_id)
if not stage:
request.session.flash(u"Le stage demandé : %s, est non valide" % stage_id, 'danger')
return HTTPFound(location=request.route_url("pasa2_dispo"))
# reste place disponible ?
if stage.dispo <= 0:
request.session.flash(u"Le stage du %s est complet. Veuillez choisir un autre." % stage.debut.strftime("%d-%m-%Y"), 'danger')
return HTTPFound(location=request.route_url("pasa2_dispo"))
message = ''
# préparer les listes déroulantes
civilites = ["M.","Mme","Mlle"]
origines = get_origines(request)
montant = get_tarifs(request, 'PASSERELLE')
dept = get_departements(request)
# lire le prospect
contact = get_prospects_by_code(request, cd_prospect)
if not contact:
civilite = 'M.'
nom = ''
prenom = ''
adres1 = ''
adres2 = ''
code_postal = ''
no_tel = ''
mail = ''
agence_no = 6
else:
# prospect cloture ?
if contact.cloture_le:
request.session.flash('Dossier déjà traité.', 'danger')
return HTTPFound(location=request.route_url("affiche_message", login='0'))
civilite = contact.civilite
nom = contact.nom
prenom = contact.prenom
adres1 = contact.adresse
adres2 = contact.adresse2
code_postal = '%s - %s' % (contact.cp, contact.ville)
no_tel = contact.tel_portable
mail = contact.email
agence_no = contact.agence
nom_jf = ''
date_nais = ''
lieu_nais = ''
dept_nais = '069'
no_permis = ''
obtenu_le = ''
lieu_permis = 'RHONE'
origine = ''
cb_spam = "oui"
etape = 1
if 'form.next1' in request.params or 'form.next2' in request.params or 'form.submitted' in request.params:
civilite = request.params['civilite']
nom = request.params['nom'].upper()
nom_jf = request.params['nom_jf'].upper()
prenom = request.params['prenom']
date_nais = request.params['date_nais']
datenais = to_date(date_nais) # convertir en format date
lieu_nais = request.params['lieu_nais']
dept_nais = request.params['dept_nais']
adres1 = request.params['adres1']
adres2 = request.params['adres2']
code_postal = request.params['code_postal']
no_tel= request.params['no_tel']
mail = request.params['mail']
no_permis = request.params['no_permis']
obtenu_le = request.params['obtenu_le']
obtenule = to_date(obtenu_le) # convertir en format date
lieu_permis = request.params['lieu_permis']
# si accepte recevoir info coché ?
if 'cb_spam' in request.params:
cb_spam = "oui"
NePasSpammer = 0
else:
cb_spam = "non"
NePasSpammer = -1
message = ctl_saisies(1, code_postal, datenais, obtenule)
if message == '':
# pas erreur saisie
cp = code_postal.split(' - ')
codpost = cp[0]
ville = cp[1]
etape = 2
if 'form.next2' in request.params:
# On teste pour voir si l'un des trois numéros a été renseigné ?
if obtenule == False:
message = "Veuillez saisir une date de délivrance valide."
else:
etape = 3
# Bouton terminé
if 'form.submitted' in request.params:
etape = 4
origine = request.params['origine']
# On enregistre la fiche élève et on récupère son code
cd_cli = ins_eleve_by_formule(request, 'PASSERELLE', civilite, nom, nom_jf, prenom, datenais, lieu_nais, dept_nais, \
adres1, adres2, codpost, ville, '', '', no_tel, mail, \
no_permis, obtenule, lieu_permis, 'CAS 1', origine,'','','',NePasSpammer,agence_no)
# si prospect, mettre son statut = GAGNE
if contact:
update_prospect_gagne(request, cd_prospect, cd_cli, contact.cd_uti, agence_no)
# inscrire l'élève dans le stage pap
debut_stage = ins_stage_eleve(request, 'PASSERELLE', stage_id, cd_cli, nom, prenom)
if debut_stage != None:
# si echec, retourne aux dispo
request.session.flash(u"Vous êtes déjà inscrit(e) au stage du %s. Veuillez consulter votre messagerie pour la confirmation de cette inscription." % debut_stage.strftime("%d-%m-%Y"), 'danger')
return HTTPFound(location=request.route_url("pasa2_dispo"))
else:
nompren = "%s %s %s" % (civilite, nom, prenom)
body = getConfirmText(request, 'PASSERELLE', nompren, cd_cli,
'%s à %s' % (stage.debut.strftime("%d-%m-%Y"), stage.debut.strftime("%Hh%M")),
stage.lieu1, stage.lieu2)
# envoyer un message à l'élève et la secrétaire
agence_email = get_eleve_agence(request, cd_cli).email
destinataires=[mail, agence_email,]
envoyerMail(request, destinataires, "Votre réservation pour le stage de PASSERELLE A2 à A", body)
# connecter le client à l'espace Marietton
request.session.invalidate()
headers = forget(request)
headers = remember(request, cd_cli)
request.session.flash(u"Votre réservation a bien été enregistrée. Elle sera ferme lorsque le réglement sera effectué.", 'info')
return HTTPFound(location=request.route_url('reglement', ref='PAS', mttotal=montant, nfois='1'), headers=headers)
return {
'page_title': "Stage de Passerelle A2 vers A - Inscription",
'url': url,
'message': message,
'etape': etape,
'stage': stage,
'origines': origines,
'civilites': civilites,
'dept': dept,
'civilite': civilite,
'nom': nom,
'nom_jf': nom_jf,
'prenom': prenom,
'date_nais': date_nais,
'lieu_nais': lieu_nais,
'dept_nais': dept_nais,
'adres1': adres1,
'adres2': adres2,
'code_postal': code_postal,
'no_tel': no_tel,
'mail': mail,
'no_permis': no_permis,
'obtenu_le': obtenu_le,
'lieu_permis': lieu_permis,
'origine': origine,
'cb_spam': cb_spam,
'montant': montant,
}
@view_config(route_name='passr_cde', renderer='../templates/inscriptions/passr_cde.pt')
def passr_cde(request):
url = request.route_url('passr_cde')
# contrôler la disponibilité des PASS Rousseau
#dispo = get_pass_dispo(request)
#if dispo == None:
# request.session.flash(u"Il n'y a plus de PASS ROUSSEAU disponible. Veuillez réessayer plus tard.")
# return HTTPFound(location=request.route_url('affiche_message', login='x'))
message = ''
# préparer les listes déroulantes
civilites = ["M.","Mme","Mlle"]
permis = get_permis(request)
montant = get_tarifs(request, 'PASS_ROUSS')
civilite = 'M.'
nom = ''
prenom = ''
date_nais = ''
codpost = ''
no_tel_dom = ''
mail = ''
permis_demande = 'B'
cb_spam = '0'
if 'form.submitted' in request.params:
civilite = request.params['civilite']
nom = request.params['nom'].upper()
prenom = request.params['prenom']
date_nais = request.params['date_nais']
datenais = to_date(date_nais) # convertir en format date
codpost= request.params['codpost']
no_tel_dom = request.params['no_tel_dom']
mail = request.params['mail']
permis_demande = request.params['permis_demande']
# si accepte recevoir info coché ?
if 'cb_spam' in request.params:
cb_spam = "oui"
NePasSpammer = 0
else:
cb_spam = "non"
NePasSpammer = -1
if datenais == False:
message = "Veuillez saisir une date de naissance valide."
else:
if datenais < datetime(1900,1,1):
message = "Veuillez saisir une date de naissance supérieure à 01/01/1900."
elif no_tel_dom=='' :
message = "Veuillez saisir un numéro de téléphone."
else:
# contrôler la disponibilité des PASS Rousseau
dispo = get_pass_dispo(request)
if dispo == None:
request.session.flash(u"Il n'y a plus de PASS ROUSSEAU disponible. Veuillez réessayer plus tard.")
return HTTPFound(location=url)
# On enregistre la fiche élève et on récupère son code
cd_cli = ins_eleve_by_formule(request, 'ROUSSEAU', civilite, nom, '', prenom, datenais, 'X', '069', 'X', 'X', codpost,
'X', no_tel_dom, '', '', mail, permis_demande, '', '', 'CAS 1', 'Site Web','','','',NePasSpammer)
nompren = "%s %s %s" % (civilite, nom, prenom)
body = getConfirmText(request, 'PASS_ROUSS', nompren, cd_cli, '', '', '', '')
destinataires = [mail, request.registry.settings['monaem.comm_email'],]
envoyerMail(request, destinataires, "Votre inscription au code en ligne", body)
# connecter le client à l'espace Marietton
request.session.invalidate()
headers = forget(request)
headers = remember(request, cd_cli)
request.session.flash(u"Votre inscription a bien été enregistrée. Elle sera ferme lorsque le réglement sera effectué.", 'info')
return HTTPFound(location=request.route_url('reglement', ref='PRS', mttotal=montant, nfois='1'), headers=headers)
return {
'page_title': "Inscription : Code en ligne",
'url': url,
'message': message,
'civilites': civilites,
'civilite': civilite,
'permis': permis,
'permis_demande': permis_demande,
'nom': nom,
'prenom': prenom,
'date_nais': date_nais,
'codpost': codpost,
'no_tel_dom': no_tel_dom,
'mail': mail,
'cb_spam': cb_spam,
'montant': montant,
}
@view_config(route_name='b96_cde', renderer='../templates/inscriptions/b96_cde.pt')
def b96_cde(request):
cd_prospect = request.matchdict['cd_prospect']
stage_id = request.matchdict['stage_id']
url = request.route_url('b96_cde', cd_prospect = cd_prospect, stage_id = stage_id)
# lire le stage demandé
stage = get_stage_by_id(request, stage_id)
if not stage:
request.session.flash(u"Le stage demandé : %s, est non valide" % stage_id, 'danger')
return HTTPFound(location=request.route_url("code_dispo"))
# reste place disponible ?
if stage.dispo <= 0:
request.session.flash(u"Le stage du %s est complet. Veuillez choisir un autre." % stage.debut.strftime("%d-%m-%Y"), 'danger')
return HTTPFound(location=request.route_url("code_dispo"))
message = ''
# préparer les listes déroulantes
civilites = ["M.","Mme","Mlle"]
origines = get_origines(request)
montant = get_tarifs(request, 'B96')
dept = get_departements(request)
# lire le prospect
contact = get_prospects_by_code(request, cd_prospect)
if not contact:
civilite = 'M.'
nom = ''
prenom = ''
adres1 = ''
adres2 = ''
code_postal = ''
no_tel = ''
mail = ''
agence_no = 6
else:
# prospect cloture ?
if contact.cloture_le:
request.session.flash('Dossier déjà traité.', 'danger')
return HTTPFound(location=request.route_url("affiche_message", login='0'))
civilite = contact.civilite
nom = contact.nom
prenom = contact.prenom
adres1 = contact.adresse
adres2 = contact.adresse2
code_postal = '%s - %s' % (contact.cp, contact.ville)
no_tel = contact.tel_portable
mail = contact.email
agence_no = contact.agence
nom_jf = ''
date_nais = ''
lieu_nais = ''
dept_nais = '069'
no_permis = ''
obtenu_le = ''
lieu_permis = 'RHONE'
origine = ''
cb_spam = '0'
etape = 1
if 'form.next1' in request.params or 'form.next2' in request.params or 'form.submitted' in request.params:
civilite = request.params['civilite']
nom = request.params['nom'].upper()
nom_jf = request.params['nom_jf'].upper()
prenom = request.params['prenom']
date_nais = request.params['date_nais']
datenais = to_date(date_nais) # convertir en format date
lieu_nais = request.params['lieu_nais']
dept_nais = request.params['dept_nais']
adres1 = request.params['adres1']
adres2 = request.params['adres2']
code_postal = request.params['code_postal']
no_tel = request.params['no_tel']
mail = request.params['mail']
no_permis = request.params['no_permis']
obtenu_le = request.params['obtenu_le']
obtenule = to_date(obtenu_le) # convertir en format date
lieu_permis = request.params['lieu_permis']
# si accepte recevoir info coché ?
if 'cb_spam' in request.params:
cb_spam = "oui"
NePasSpammer = 0
else:
cb_spam = "non"
NePasSpammer = -1
message = ctl_saisies(1, code_postal, datenais, obtenule)
if message == '':
# pas erreur saisie
cp = code_postal.split(' - ')
codpost = cp[0]
ville = cp[1]
etape = 2
if 'form.next2' in request.params:
message = ctl_saisies(2, code_postal, datenais, obtenule)
if message == '':
etape = 3
# Bouton terminé
if 'form.submitted' in request.params:
etape = 4
origine = request.params['origine']
# On enregistre la fiche élève et on récupère son code
cd_cli = ins_eleve_by_formule(request, 'B96', civilite, nom, nom_jf, prenom, datenais, lieu_nais, dept_nais, \
adres1, adres2, codpost, ville, '', '', no_tel, mail, \
no_permis, obtenule, lieu_permis, 'CAS 1', origine,'','','',NePasSpammer,agence_no)
# si prospect, mettre son statut = GAGNE
if contact:
update_prospect_gagne(request, cd_prospect, cd_cli, contact.cd_uti, agence_no)
# inscrire l'élève dans le stage
debut_stage = ins_stage_eleve(request, 'B96', stage_id, cd_cli, nom, prenom)
if debut_stage != None:
# si echec, retourne aux dispo
request.session.flash(u"Vous êtes déjà inscrit(e) au stage du %s. Veuillez consulter votre messagerie pour la confirmation de cette inscription." % debut_stage.strftime("%d-%m-%Y"), 'danger')
return HTTPFound(location=request.route_url("code_dispo"))
else:
nompren = "%s %s %s" % (civilite, nom, prenom)
body = getConfirmText(request, 'B96', nompren, cd_cli,
'%s à %s' % (stage.debut.strftime("%d-%m-%Y"), stage.debut.strftime("%Hh%M")),
stage.lieu1, stage.lieu2)
# envoyer un message à l'élève et la secrétaire
agence_email = get_eleve_agence(request, cd_cli).email
destinataires=[mail, agence_email,]
envoyerMail(request, destinataires, "Votre réservation pour le stage de B96", body)
# connecter le client à l'espace Marietton
request.session.invalidate()
headers = forget(request)
headers = remember(request, cd_cli)
request.session.flash(u"Votre réservation a bien été enregistrée. Elle sera ferme lorsque le réglement sera effectué.", 'info')
return HTTPFound(location=request.route_url('reglement', ref='B96', mttotal=montant, nfois='1'), headers=headers)
return {
'page_title': "Stage de B96 - Inscription",
'url': url,
'message': message,
'etape': etape,
'stage': stage,
'origines': origines,
'civilites': civilites,
'dept': dept,
'civilite': civilite,
'nom': nom,
'nom_jf': nom_jf,
'prenom': prenom,
'date_nais': date_nais,
'lieu_nais': lieu_nais,
'dept_nais': dept_nais,
'adres1': adres1,
'adres2': adres2,
'code_postal': code_postal,
'no_tel': no_tel,
'mail': mail,
'no_permis': no_permis,
'obtenu_le': obtenu_le,
'lieu_permis': lieu_permis,
'origine': origine,
'cb_spam': cb_spam,
'montant': montant,
}
@view_config(route_name='code_cde', renderer='../templates/inscriptions/code_cde.pt')
def code_cde(request):
cd_prospect = request.matchdict['cd_prospect']
stage_id = request.matchdict['stage_id']
url = request.route_url('code_cde', cd_prospect = cd_prospect, stage_id = stage_id)
# lire le stage code demandé
stage = get_moto_by_id(request, stage_id)
if not stage:
request.session.flash(u"Le stage demandé : %s, est non valide" % stage_id, 'danger')
return HTTPFound(location=request.route_url("code_dispo"))
# reste place disponible ?
if stage.DISPO <= 0:
request.session.flash(u"Le stage du %s est complet. Veuillez choisir un autre." % stage.DATE.strftime("%d-%m-%Y"), 'danger')
return HTTPFound(location=request.route_url("code_dispo"))
message = ''
# préparer les listes déroulantes
civilites = ["M.","Mme","Mlle"]
origines = get_origines(request)
montant = get_tarifs(request, '3JC')
# lire le prospect
contact = get_prospects_by_code(request, cd_prospect)
if not contact:
civilite = 'M.'
nom = ''
prenom = ''
adres1 = ''
adres2 = ''
code_postal = ''
no_tel = ''
mail = ''
agence = 6
else:
# prospect cloture ?
if contact.cloture_le:
request.session.flash('Dossier déjà traité.', 'danger')
return HTTPFound(location=request.route_url("affiche_message", login='0'))
civilite = contact.civilite
nom = contact.nom
prenom = contact.prenom
adres1 = contact.adresse
adres2 = contact.adresse2
code_postal = '%s - %s' % (contact.cp, contact.ville)
no_tel = contact.tel_portable
mail = contact.email
agence = contact.agence
nom_jf = ''
date_nais = ''
lieu_nais = ''
dept_nais = ''
origine = ''
cb_spam = '0'
etape = 1
if 'form.submitted' in request.params:
civilite = request.params['civilite']
nom = request.params['nom'].upper()
nom_jf = request.params['nom_jf'].upper()
prenom = request.params['prenom']
date_nais = request.params['date_nais']
datenais = to_date(date_nais) # convertir en format date
lieu_nais = request.params['lieu_nais']
dept_nais = request.params['dept_nais']
adres1 = request.params['adres1']
adres2 = request.params['adres2']
code_postal = request.params['code_postal']
no_tel = request.params['no_tel']
mail = request.params['mail']
origine = request.params['origine']
# si accepte recevoir info coché ?
if 'cb_spam' in request.params:
cb_spam = "oui"
NePasSpammer = 0
else:
cb_spam = "non"
NePasSpammer = -1
obtenule = False # date non saisie
message = ctl_saisies(1, code_postal, datenais, obtenule)
if message == '':
# pas erreur saisie
dept = dept_nais.split(' | ')
cp = code_postal.split(' - ')
codpost = cp[0]
ville = cp[1]
# eleve mineur ?
if isMinor(datenais):
# créer éventuellement un prospect selon le code postal
observation = "Mineur ayant entamé une démarche dinscription stage code en ligne"
ins_prospect(request, 0, civilite, nom, prenom, adres1, adres2, codpost, ville, no_tel, mail, 'NR', \
'NR', origine, observation)
request.session.flash("Les élèves mineurs doivent être inscrits en agence accompagnés d'un représentant légal", 'danger')
return HTTPFound(location=request.route_url("affiche_message", login='0'))
else:
# On enregistre la fiche élève et on récupère son code
cd_cli = ins_eleve_by_formule(request, 'ST_CODE_3J', civilite, nom, nom_jf, prenom, datenais, lieu_nais, dept[1], \
adres1, adres2, codpost, ville, '', '', no_tel, mail, '', '', '', 'CAS 1', origine,'','','',NePasSpammer,agence)
# si prospect, mettre son statut = GAGNE
if contact:
update_prospect_gagne(request, cd_prospect, cd_cli, contact.cd_uti, agence)
# inscrire l'élève dans le stage
ins_stage_code(request, 'PREPACODE', stage_id, cd_cli)
nompren = "%s %s %s" % (civilite, nom, prenom)
body = getConfirmText(request, 'PREPACODE', nompren, cd_cli,
'%s, %s et %s' % (stage.date1, stage.date2, stage.date3),
stage.lieu1, ' %s, %s' % (stage.lieu2, stage.lieu3))
# envoyer un message à la secrétaire
agence_email = get_eleve_agence(request, cd_cli).email
destinataires=[mail, agence_email,]
envoyerMail(request, destinataires, "Votre réservation pour le stage de CODE", body)
# connecter le client à l'espace Marietton
request.session.invalidate()
headers = forget(request)
headers = remember(request, cd_cli)
request.session.flash(u"Votre réservation a bien été enregistrée. Elle sera ferme lorsque le réglement sera effectué.", 'info')
return HTTPFound(location=request.route_url('reglement', ref='3JC', mttotal=montant, nfois='1'), headers=headers)
return {
'page_title': "Stage de CODE - Réservation",
'url': url,
'message': message,
'etape': etape,
'stage': stage,
'origines': origines,
'civilites': civilites,
'civilite': civilite,
'nom': nom,
'nom_jf': nom_jf,
'prenom': prenom,
'date_nais': date_nais,
'lieu_nais': lieu_nais,
'dept_nais': dept_nais,
'adres1': adres1,
'adres2': adres2,
'code_postal': code_postal,
'no_tel': no_tel,
'mail': mail,
'origine': origine,
'cb_spam': cb_spam,
'montant': montant,
}
def ctl_saisies(etape, code_postal, datenais, obtenule):
message = ''
if etape == 1:
# controler le code postal + ville
cp = code_postal.split(' - ')
if len(cp) < 2:
message = "Veuillez saisir un code postal valide."
else:
if datenais == False:
message = "Veuillez saisir une date de naissance valide."
else:
if datenais < datetime(1900,1,1):
message = "Veuillez saisir une date de naissance supérieure à 01/01/1900."
elif etape == 2:
# date permis a été renseigné ?
if obtenule == False:
message = "Veuillez saisir une date de délivrance valide."
return message