示例#1
0
 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
示例#3
0
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"))
示例#4
0
    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
示例#6
0
 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')}
示例#7
0
 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')
示例#9
0
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)
示例#10
0
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"))
示例#11
0
    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 ''
示例#12
0
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&eacute;s"), context=request)
    episTrans = translate(_(u"x_epis", u"&eacute;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
示例#13
0
 def translate(self, msgid):
     language = self.request.get('LANGUAGE', 'fr')
     return translate(_(msgid), target_language=language)
示例#14
0
 def heb_type_trad(self):
     return _(self.context.type.type_heb_id)
示例#15
0
 def sort_items(self):
     return {'pers_numbers': _("nombre_personnes", "Nombre de personnes"),
             'room_count': _("nombre-chambres", "Nombre de chambres"),
             'epis': _(u"Epis")}
示例#16
0
 def heb_type_trad(self):
     return _(self.context.heb_type)
示例#17
0
    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 ""
示例#18
0
    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 ""
示例#19
0
 def translate(self, msgid):
     return translate(_(msgid), target_language=self.language)
示例#20
0
    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 ''