# -*- 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 d’inscription 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