def sort_items(self): sortables = { 'pers_numbers': _("nombre_personnes", "Nombre de personnes"), 'room_count': _("nombre-chambres", "Nombre de chambres"), 'epis': _(u"Epis")} if self.is_geolocalized: sortables['distance'] = _('Distance') return sortables
def validate(self): if len(self.heb_pks) < 2: self.error = _(u'compare_less_than_2') return False if len(self.heb_pks) > 4: self.error = _(u'compare_more_than_4') return False return True
class IShippingAddress(Interface): """ where to send goods """ ship_first_line = schema.TextLine(title=_(u"First Line")) ship_second_line = schema.TextLine(title=_(u"Second Line"), required=False) ship_city = schema.TextLine(title=_(u"City")) ship_country = schema.Choice(title=_(u"Country"), vocabulary="getpaid.countries", default=u'BE') ship_postal_code = schema.TextLine(title=_(u"Zip Code"))
def getGroupementByPk(self): import json pk = self.request.form['pk'] wrapper = getSAWrapper('gites_wallons') session = wrapper.session query = session.query(Hebergement.heb_nom.label('heb_nom'), Hebergement.heb_cgt_nbre_chmbre.label('heb_cgt_nbre_chmbre'), Hebergement.heb_cgt_cap_min.label('heb_cgt_cap_min'), Hebergement.heb_cgt_cap_max.label('heb_cgt_cap_max'), TypeHebergement.type_heb_id.label('heb_type'), TypeHebergement.type_heb_type.label('heb_type_type'), TypeHebergement.type_heb_code.label('heb_type_code'), Hebergement.heb_code_gdw.label('heb_code_gdw'), Hebergement.heb_pk.label('heb_pk'), LinkHebergementEpis.heb_nombre_epis.label('heb_nombre_epis'), Hebergement.heb_localite.label('heb_localite'), Hebergement.heb_gps_long.label('heb_gps_long'), Hebergement.heb_gps_lat.label('heb_gps_lat'), Hebergement.heb_groupement_pk.label('heb_groupement_pk'), HebergementApp.heb_app_groupement_line_length.label('heb_app_groupement_line_length'), HebergementApp.heb_app_groupement_angle_start.label('heb_app_groupement_angle_start') ) query = query.join('proprio').outerjoin('epis').join('type').join('app') query = query.options(FromCache('gdw')) query = query.filter(Hebergement.heb_groupement_pk == pk) query = query.filter(sa.and_(Hebergement.heb_site_public == '1', Proprio.pro_etat == True)) hebList = [] for heb in query.all(): heb_type_translated = translate(_(heb.heb_type), context=self.request) heb_type_type_translated = translate(_(heb.heb_type_type), context=self.request) hebList.append({ 'heb_pk': heb.heb_pk, 'heb_nom': heb.heb_nom, 'type_heb': heb.heb_type_type, 'type_heb_title': heb_type_type_translated, 'heb_type': heb.heb_type, 'heb_type_trad': heb_type_translated, 'heb_type_code': heb.heb_type_code, 'heb_code_gdw': heb.heb_code_gdw, 'heb_localite': heb.heb_localite, 'heb_nombre_epis': heb.heb_nombre_epis, 'heb_cgt_cap_min': heb.heb_cgt_cap_min, 'heb_cgt_cap_max': heb.heb_cgt_cap_max, 'heb_cgt_nbre_chmbre': heb.heb_cgt_nbre_chmbre, 'heb_fumeur': self._get_metadata('heb_fumeur', heb.heb_pk), 'heb_animal': self._get_metadata('heb_animal', heb.heb_pk), 'url_heb': self._get_url(heb.heb_pk)}) return json.dumps(hebList)
def validate(self): """ Validate that tarif_min and tarif_max are float if encoded """ if not self._validate_permission(): self.error = _(u"Vous n'avez pas les droits d'accéder à cette page.") return False form = self.request.form # Min/Max with value for param in [form.get(i) for i in form if ((i.startswith('tarif_max_') or i.startswith('tarif_min_')) and form.get(i))]: try: float(param) except: self.error = _(u'Les valeurs pour Minimum et Maximum doivent être des nombres.') return False return True
def getAnimal(self): list = self.getHebMetadatasByType('autorisations') for item in list: if item['id'] == 'heb_animal': return {'id': 'heb_animal', 'title': item['title']} return {'id': 'heb_animal_off', 'title': _(u'animaux_interdits')}
def getFumeur(self): list = self.getHebMetadatasByType('autorisations') for item in list: if item['id'] == 'heb_fumeur': return {'id': 'heb_fumeur', 'title': item['title']} return {'id': 'heb_fumeur_off', 'title': _(u'hebergement_non_fumeur')}
def translateMapFolder(portal, baseObject): for lang in TRANSLATIONS: if not baseObject.hasTranslation(lang): title = translate(_(u"recherche_cartographique"), target_language=lang) id = idnormalizer.normalize(title) translated = baseObject.addTranslation(lang, id=id, title=title) publishObject(translated) changeFolderView(portal, translated, 'mapSearchView')
class IBillingAddress(Interface): """ where to bill """ ship_same_billing = schema.Bool(title=_(u"Same as shipping address"), required=False) bill_first_line = schema.TextLine(title=_(u"First Line")) bill_second_line = schema.TextLine(title=_(u"Second Line"), required=False) bill_city = schema.TextLine(title=_(u"City")) bill_country = schema.Choice(title=_(u"Country"), vocabulary="getpaid.countries", default=u'BE') bill_postal_code = schema.TextLine(title=_(u"Zip Code")) vat_number = schema.TextLine(title=_(u"VAT Number"), required=False)
class IUserContactInformation(Interface): name = schema.TextLine(title=__(u"Your Name")) phone_number = PhoneNumber(title=__(u"Phone Number"), description=__(u"Only digits allowed - e.g. 3334445555 and not 333-444-5555 ")) email = schema.TextLine(title=__(u"Email"), description=__(u"Contact Information"), constraint=emailValidator) marketing_preference = schema.Bool(title=__(u"Can we contact you with offers?"), required=False) email_html_format = schema.Choice(title=__(u"Email Format"), description=__(u"Would you prefer to receive rich html emails or only plain text"), vocabulary=EmailFormatPreferenceVocabulary, default=True) birth_date = schema.Date(title=_(u"Birthday"))
def sendMailToProprio(self): """ envoi d'un mail au proprio suite a un contact via hebergement description """ self.request['errors'] = [] if self.request.get('vecteur') is None: return hebPk = self.request.get('heb_pk') captchaView = self.getCaptchaView() captchaText = self.request.get('captchaText', '') isCorrectCaptcha = captchaView.verify(captchaText) if not isCorrectCaptcha: self.request['errors'].append(_(u"Erreur d'encodage du code du captcha.")) return "" dateDebutStr = self.request.get('fromDate') dateFinStr = self.request.get('toDate') if dateDebutStr and dateFinStr: try: dateDebut = date.fromtimestamp(time.mktime(time.strptime(dateDebutStr, '%d/%m/%Y'))) dateFin = date.fromtimestamp(time.mktime(time.strptime(dateFinStr, '%d/%m/%Y'))) except ValueError: self.request['errors'].append(_(u"Erreur d'encodage d'une date.")) return "" else: if dateDebut >= dateFin: self.request['errors'].append(_(u"Date de début supérieure à date de fin.")) return "" else: if dateDebutStr or dateFinStr: # une seule date a été remplie self.request['errors'].append(_(u"Une seule date a été remplie.")) return "" wrapper = getSAWrapper('gites_wallons') session = wrapper.session Hebergement = wrapper.getMapper('hebergement') heb = session.query(Hebergement).get(int(hebPk)) hebNom = heb.heb_nom proprioMail = heb.proprio.pro_email if not proprioMail: proprioMail = u'*****@*****.**' contactCivilite = self.request.get('contactCivilite') contactNom = self.request.get('contactNom', '') contactPrenom = self.request.get('contactPrenom', '') contactAdresse = self.request.get('contactAdresse', '') contactCp = self.request.get('contactCp') contactLocalite = self.request.get('contactLocalite', '') contactPays = self.request.get('contactPays', '') contactLangue = self.request.get('contactLangue', None) if not contactLangue or contactLangue.strip() == '...': language = self.request.get('LANGUAGE', 'en') contactLangue = LANG_MAP.get(language, '') contactTelephone = self.request.get('contactTelephone', '') contactFax = self.request.get('contactFax', '') contactEmail = self.request.get('contactEmail', None) nombrePersonne = self.request.get('nombrePersonne') remarque = self.request.get('remarque', '') fromMail = "*****@*****.**" mailer = Mailer("localhost", fromMail) mailer.setSubject("[DEMANDE D'INFORMATION PAR LE SITE DES GITES DE WALLONIE]") mailer.setRecipients(proprioMail) mailer.setReplyTo(contactEmail) mail = """:: DEMANDE D'INFORMATION :: Une demande d'information vient d'être réalisée via le site des Gîtes de Wallonie pour %s (référence %s). Il s'agit de : * Civilité : %s * Nom : %s * Prénom : %s * Adresse : %s * Localité : %s %s * Pays : %s * Langue : %s * Téléphone : %s * Fax : %s * E-mail : %s * Date début séjour : %s * Date fin séjour : %s * Nombre de personnes : %s * Remarque : %s """ \ % (unicode(hebNom).encode('utf-8'), unicode(hebPk).encode('utf-8'), unicode(contactCivilite).encode('utf-8'), unicode(contactNom).encode('utf-8'), unicode(contactPrenom).encode('utf-8'), unicode(contactAdresse).encode('utf-8'), unicode(contactCp).encode('utf-8'), unicode(contactLocalite).encode('utf-8'), unicode(contactPays).encode('utf-8'), unicode(contactLangue).encode('utf-8'), unicode(contactTelephone).encode('utf-8'), unicode(contactFax).encode('utf-8'), unicode(contactEmail).encode('utf-8'), unicode(dateDebutStr).encode('utf-8'), unicode(dateFinStr).encode('utf-8'), unicode(nombrePersonne).encode('utf-8'), unicode(remarque).encode('utf-8')) mailer.sendAllMail(mail, plaintext=True) translate = queryMultiAdapter((self.context, self.request), name='getTranslatedObjectUrl') if self.request.get('newsletter', False): url = translate('newsletter') self.request.RESPONSE.redirect(url) else: url = translate('mailsent') self.request.RESPONSE.redirect(url) return ''
def hebergementToMapObject(hebergement, context, request, digit=None, groupedDigit=None): """ Transform an hebergement into an object used on the map XXX clean cette fonction """ # On hebergement detail if isinstance(hebergement, Hebergement): # XXX Adapter epis = hebergement.epis and hebergement.epis[0].heb_nombre_epis or '-' type_heb = hebergement.type.type_heb_type isCle = hebergement.type.type_heb_code == 'MV' heb_type = hebergement.type.type_heb_id heb_app_groupement_line_length = hebergement.app.heb_app_groupement_line_length heb_app_groupement_angle_start = hebergement.app.heb_app_groupement_angle_start # On listing else: epis = hebergement.heb_nombre_epis type_heb = hebergement.heb_type_type isCle = hebergement.heb_type_code == 'MV' heb_type = hebergement.heb_type heb_app_groupement_line_length = hebergement.heb_app_groupement_line_length heb_app_groupement_angle_start = hebergement.heb_app_groupement_angle_start personnesTrans = translate(_(u"x_personnes", u"personnes"), context=request) chambresTrans = translate(_(u"x_chambres", u"chambres"), context=request) clesTrans = translate(_(u"x_cles", u"clés"), context=request) episTrans = translate(_(u"x_epis", u"épis"), context=request) if heb_type == 'gite-groupes': #XXXnext aller chercher le nom des gites groupés à celui ci (faire une requete pour recupérer tous les gites ghroupés) groupedHebs = getHebergementsByGroup(hebergement.heb_groupement_pk) bodyText = """<div class="map_infowindow_%s">""" % type_heb for heb in groupedHebs: hebUrl = queryMultiAdapter((heb, request), name="url_heb")() hebName = heb.heb_nom bodyText = """%s <a href="%s" title="%s" class="map_infowindow_title">%s</a> <br />""" \ % (bodyText, hebUrl, hebName, hebName) else: photo = '%s00.jpg' % hebergement.heb_code_gdw portalUrl = getToolByName(context, 'portal_url')() photoUrl = "%s/photos_heb/%s" % (portalUrl, photo) hebUrl = queryMultiAdapter((hebergement, request), name="url_heb") if hebUrl: hebUrl = hebUrl() hebName = hebergement.heb_nom link = '<a href="%s" title="%s" class="map_infowindow_title">%s</a>' % ( hebUrl, hebName, hebName) image = """<a href="%(url)s" title="%(name)s" class="map_infowindow_title"> <img class="map_infowindow_img" alt="%(name)s" src="%(photoUrl)s"> </a>""" % {'url': hebUrl, 'name': hebName, 'photoUrl': photoUrl} bodyText = """<div class="map_infowindow_%s"> %s <br /> <p class="map_infowindow_description">%s</p> %s <br /> <div class="info_box"> <span class="map_infowindow_nombre"> %s/%s</span> %s </div> <div class="info_box"> <span class="map_infowindow_nombre"> %s</span> %s </div> <div class="info_box"> <span class="map_infowindow_nombre"> %s</span> %s </div> </div> """ \ % (type_heb, link, hebergement.heb_localite, image, hebergement.heb_cgt_cap_min, hebergement.heb_cgt_cap_max, personnesTrans, hebergement.heb_cgt_nbre_chmbre, chambresTrans, epis, isCle and clesTrans or episTrans) offset = None if groupedDigit is not None: offset = calculateOffsetCoords(groupedDigit, heb_app_groupement_line_length, heb_app_groupement_angle_start) datas = {'types': [type_heb], 'name': '', 'vicinity': bodyText, 'latitude': hebergement.heb_gps_lat, 'longitude': hebergement.heb_gps_long, 'digit': digit, 'heb_pk': hebergement.heb_pk, 'heb_type': heb_type, 'offset': offset} return datas
def translate(self, msgid): language = self.request.get('LANGUAGE', 'fr') return translate(_(msgid), target_language=language)
def heb_type_trad(self): return _(self.context.type.type_heb_id)
def sort_items(self): return {'pers_numbers': _("nombre_personnes", "Nombre de personnes"), 'room_count': _("nombre-chambres", "Nombre de chambres"), 'epis': _(u"Epis")}
def heb_type_trad(self): return _(self.context.heb_type)
def sendMailToProprio(self): """ envoi d'un mail au proprio suite a un contact via hebergement description """ self.request["errors"] = [] if self.request.get("vecteur") is None: return hebPk = self.request.get("heb_pk") captchaView = self.getCaptchaView() captchaText = self.request.get("captchaText", "") isCorrectCaptcha = captchaView.verify(captchaText) if not isCorrectCaptcha: self.request["errors"].append(_(u"Erreur d'encodage du code du captcha.")) return "" dateDebutStr = self.request.get("fromDate") dateFinStr = self.request.get("toDate") if dateDebutStr and dateFinStr: try: dateDebut = date.fromtimestamp(time.mktime(time.strptime(dateDebutStr, "%d/%m/%Y"))) dateFin = date.fromtimestamp(time.mktime(time.strptime(dateFinStr, "%d/%m/%Y"))) except ValueError: self.request["errors"].append(_(u"Erreur d'encodage d'une date.")) return "" else: if dateDebut >= dateFin: self.request["errors"].append(_(u"Date de début supérieure à date de fin.")) return "" else: if dateDebutStr or dateFinStr: # une seule date a été remplie self.request["errors"].append(_(u"Une seule date a été remplie.")) return "" wrapper = getSAWrapper("gites_wallons") session = wrapper.session Hebergement = wrapper.getMapper("hebergement") heb = session.query(Hebergement).get(int(hebPk)) hebNom = heb.heb_nom proprioMail = heb.proprio.pro_email if not proprioMail: proprioMail = u"*****@*****.**" contactCivilite = self.request.get("contactCivilite") contactNom = self.request.get("contactNom", "") contactPrenom = self.request.get("contactPrenom", "") contactAdresse = self.request.get("contactAdresse", "") contactCp = self.request.get("contactCp") contactLocalite = self.request.get("contactLocalite", "") contactPays = self.request.get("contactPays", "") contactLangue = self.request.get("contactLangue", None) if not contactLangue or contactLangue.strip() == "...": language = self.request.get("LANGUAGE", "en") contactLangue = LANG_MAP.get(language, "") contactTelephone = self.request.get("contactTelephone", "") contactFax = self.request.get("contactFax", "") contactEmail = self.request.get("contactEmail", None) nombrePersonne = self.request.get("nombrePersonne") remarque = self.request.get("remarque", "") fromMail = "*****@*****.**" if contactEmail is not None: try: checkEmailAddress(contactEmail) fromMail = contactEmail except EmailAddressInvalid: pass mailer = Mailer("localhost", fromMail) mailer.setSubject("[DEMANDE D'INFORMATION PAR LE SITE DES GITES DE WALLONIE]") mailer.setRecipients(proprioMail) mail = """:: DEMANDE D'INFORMATION :: Une demande d'information vient d'être réalisée via le site des Gîtes de Wallonie pour %s (référence %s). Il s'agit de : * Civilité : %s * Nom : %s * Prénom : %s * Adresse : %s * Localité : %s %s * Pays : %s * Langue : %s * Téléphone : %s * Fax : %s * E-mail : %s * Date début séjour : %s * Date fin séjour : %s * Nombre de personnes : %s * Remarque : %s """ % ( unicode(hebNom).encode("utf-8"), unicode(hebPk).encode("utf-8"), unicode(contactCivilite).encode("utf-8"), unicode(contactNom).encode("utf-8"), unicode(contactPrenom).encode("utf-8"), unicode(contactAdresse).encode("utf-8"), unicode(contactCp).encode("utf-8"), unicode(contactLocalite).encode("utf-8"), unicode(contactPays).encode("utf-8"), unicode(contactLangue).encode("utf-8"), unicode(contactTelephone).encode("utf-8"), unicode(contactFax).encode("utf-8"), unicode(contactEmail).encode("utf-8"), unicode(dateDebutStr).encode("utf-8"), unicode(dateFinStr).encode("utf-8"), unicode(nombrePersonne).encode("utf-8"), unicode(remarque).encode("utf-8"), ) mailer.sendAllMail(mail, plaintext=True) translate = queryMultiAdapter((self.context, self.request), name="getTranslatedObjectUrl") if self.request.get("newsletter", False): url = translate("newsletter") self.request.RESPONSE.redirect(url) else: url = translate("mailsent") self.request.RESPONSE.redirect(url) return ""
def sendMailForProblem(self): """ envoi d'un mail pour signaler un problème """ if self.request.get("vecteur") is None: return captcha = self.request.get("captcha", "") captchaView = Captcha(self.context, self.request) isCorrectCaptcha = captchaView.verify(captcha) if not isCorrectCaptcha: return "" gdwMail = u"*****@*****.**" typeProbleme = self.request.get("typeProbleme", None) if not typeProbleme or typeProbleme.strip() == "...": typeProbleme = u"Non spécifié" elif typeProbleme == "Autre": typeProbleme = self.request.get("typeautre") contactNom = self.request.get("contactNom", "") contactPrenom = self.request.get("contactPrenom", "") contactLangue = self.request.get("contactLangue", None) if not contactLangue or contactLangue.strip() == "...": language = self.request.get("LANGUAGE", "en") contactLangue = LANG_MAP.get(language, "") contactLangue = contactLangue.decode("utf-8") contactEmail = self.request.get("contactEmail", None) hebPk = self.request.get("heb_pk", "") remarque = self.request.get("remarque", "") fromMail = "*****@*****.**" if contactEmail is not None: try: checkEmailAddress(contactEmail) fromMail = contactEmail except EmailAddressInvalid: pass mailer = Mailer("localhost", fromMail) mailer.setSubject("[SIGNALER UN PROBLEME PAR LE SITE DES GITES DE WALLONIE]") mailer.setRecipients(gdwMail) mail = """:: SIGNALER UN PROBLEME :: L'utilisateur %s %s signale un problème sur le site des Gîtes de Wallonie. Il s'agit de : * Nom : %s * Prénom : %s * Langue : %s * E-mail : %s * Hébergement concerné : %s * Type de problème : %s * Remarque : %s """ % ( unicode(contactNom).encode("utf-8"), unicode(contactPrenom).encode("utf-8"), unicode(contactNom).encode("utf-8"), unicode(contactPrenom).encode("utf-8"), unicode(contactLangue).encode("utf-8"), unicode(contactEmail).encode("utf-8"), unicode(hebPk).encode("utf-8"), unicode(typeProbleme).encode("utf-8"), unicode(remarque).encode("utf-8"), ) try: mailer.sendAllMail(mail, plaintext=True) except SMTPSenderRefused: messages = IStatusMessage(self.request) messages.add(_(u"Il y a eu un problème lors de l'envoi de votre demande."), type=u"error") return translate = queryMultiAdapter((self.context, self.request), name="getTranslatedObjectUrl") url = translate("mailsent") self.request.RESPONSE.redirect(url) return ""
def translate(self, msgid): return translate(_(msgid), target_language=self.language)
def sendMailForProblem(self): """ envoi d'un mail pour signaler un problème """ if self.request.get('vecteur') is None: return captcha = self.request.get('captcha', '') captchaView = Captcha(self.context, self.request) isCorrectCaptcha = captchaView.verify(captcha) if not isCorrectCaptcha: return "" gdwMail = u'*****@*****.**' typeProbleme = self.request.get('typeProbleme', None) if not typeProbleme or typeProbleme.strip() == '...': typeProbleme = u'Non spécifié' elif typeProbleme == "Autre": typeProbleme = self.request.get('typeautre') contactNom = self.request.get('contactNom', '') contactPrenom = self.request.get('contactPrenom', '') contactLangue = self.request.get('contactLangue', None) if not contactLangue or contactLangue.strip() == '...': language = self.request.get('LANGUAGE', 'en') contactLangue = LANG_MAP.get(language, '') contactLangue = contactLangue.decode('utf-8') contactEmail = self.request.get('contactEmail', None) hebPk = self.request.get('heb_pk', '') remarque = self.request.get('remarque', '') mailer = Mailer("localhost", gdwMail) mailer.setSubject("[SIGNALER UN PROBLEME PAR LE SITE DES GITES DE WALLONIE]") mailer.setRecipients(gdwMail) mail = """:: SIGNALER UN PROBLEME :: L'utilisateur %s %s signale un problème sur le site des Gîtes de Wallonie. Il s'agit de : * Nom : %s * Prénom : %s * Langue : %s * E-mail : %s * Hébergement concerné : %s * Type de problème : %s * Remarque : %s """ \ % (unicode(contactNom).encode('utf-8'), unicode(contactPrenom).encode('utf-8'), unicode(contactNom).encode('utf-8'), unicode(contactPrenom).encode('utf-8'), unicode(contactLangue).encode('utf-8'), unicode(contactEmail).encode('utf-8'), unicode(hebPk).encode('utf-8'), unicode(typeProbleme).encode('utf-8'), unicode(remarque).encode('utf-8')) try: mailer.sendAllMail(mail, plaintext=True) except SMTPSenderRefused: messages = IStatusMessage(self.request) messages.add(_(u"Il y a eu un problème lors de l'envoi de votre demande."), type=u"error") return translate = queryMultiAdapter((self.context, self.request), name='getTranslatedObjectUrl') url = translate('mailsent') self.request.RESPONSE.redirect(url) return ''