Exemple #1
0
def validateaddress(value):

    if not _LOCAL_RE.match(value):
        raise Invalid(_(u'Invalid email address.'))
    if not _DOMAIN_RE.match(value):
        raise Invalid(_(u'Invalid email address.'))
    return True
    def submit(self, action):
        data, errors = self.extractData()

        if errors:
            self.status = _(u"Please correct errors")
            return

        folder = self.context

        id = str(random.randint(0, 99999999))

        new_obj = _createObjectByType("vfu.events.roundtableregistration", folder, id, lastname = data['lastname'], 
            firstname = data['firstname'], gender = data['gender'], job = data['job'], organization = data['organization'], 
            email = data['email'], phone = data['phone'],  street = data['street'],  number = data['number'],  
            zipcode = data['zipcode'], city = data['city'], country = data['country'], pricing = data['pricing'], 
            participation = data['participation'], accomadation = data['accomadation'],  dinner = data['dinner'], 
            vegetarian = data['vegetarian'], intolerances = data['intolerances'], workshops = data['workshops'], 
            arrival = data['arrival'], 
            comments = data['comments'])

        portal = getToolByName(self, 'portal_url').getPortalObject()
        encoding = portal.getProperty('email_charset', 'utf-8')

        trusted_template = trusted(portal.registration_roundtable_email)
        mail_text = trusted_template(
            self, charset=encoding, reg_data = new_obj, event = self.context)

        subject = self.context.translate(_(u"New registration"))
        m_to = data['email']

        ## notify admin about new registration
  
        if isinstance(mail_text, unicode):
            mail_text = mail_text.encode(encoding)

        host = getToolByName(self, 'MailHost')

        registry = getUtility(IRegistry)
        mail_settings = registry.forInterface(IMailSchema, prefix='plone')
        m_from = mail_settings.email_from_address

        try:
            host.send(mail_text, m_to, m_from, subject=subject,
                      charset=encoding, immediate=True, msg_type="text/html")

        except SMTPRecipientsRefused:

            raise SMTPRecipientsRefused(
                _(u'Recipient address rejected by server.'))

        except SMTPException as e:
            raise(e)
        
        IStatusMessage(self.request).add(_(u"Submit complete"), type='info')
        return self._redirect(target=self.context.absolute_url())
Exemple #3
0
def validate_workshops(value):
    if value:
        lines = value.split('\n')
        p = re.compile('[0-9]+\|.+$')
        for l in lines:
            if not p.match(l): 
                raise Invalid(_(u'Invalid value for workshops'))
    return True
Exemple #4
0
def get_vocabs():
    vocabs = {
        "gender": (("male", _(u"Male")), ("female", _(u"Female"))),
        "pricing": (("member", _(u"Member")), ("regular", _(u"Regular")), ("discount", _(u"Discount"))),
        "pricing_roundtable": (
            ("member", _(u"Member")),
            ("regular", _(u"Regular")),
            ("discount", _(u"Discount")),
            ("speaker", _(u"Speaker")),
        ),
        "arrival": (("car", _(u"Car")), ("train", _(u"Train")), ("plain", _(u"Plain"))),
    }
    return vocabs
Exemple #5
0
def genderConstraint(value):
    if not value:
        raise Invalid(_(u"Select your gender"))
    return True
Exemple #6
0
    def getDataForRoundtable(self, container):
        site = component.getSiteManager()
        ptool = getToolByName(site, 'portal_catalog')
        result = ptool(portal_type="vfu.events.roundtableregistration", 
            path = "/".join(container.getPhysicalPath()), 
            order_on ="getObjPositionInParent")
        items = []
        headers = [
                self.context.translate(_(u'lastname')), 
                self.context.translate(_(u'firstname')), 
                self.context.translate(_(u'gender')), 
                self.context.translate(_(u'job')), 
                self.context.translate(_(u'organization')),  
                self.context.translate(_(u'email')),
                self.context.translate(_(u'phone')),  
                self.context.translate(_(u'street')),  
                self.context.translate(_(u'number')),  
                self.context.translate(_(u'zipdcode')),  
                self.context.translate(_(u'city')),  
                self.context.translate(_(u'country')), 
                self.context.translate(_(u'participation')),
                self.context.translate(_(u'accomadation')),
                self.context.translate(_(u'dinner')),
                self.context.translate(_(u'vegetarian')),
                self.context.translate(_(u'intolerances')),
                self.context.translate(_(u'workshops')),
                self.context.translate(_(u'arrival')),
                self.context.translate(_(u'pricing')), 
                self.context.translate(_(u'comments'))
                ]
        headers = self.encode(headers)
        items.append(headers)

        for i in result:
            obj = i.getObject()
            gender = obj.getGender(self.context)
            pricing = obj.getPricing(self.context)
            arrival = obj.getArrival(self.context)
            dinner = obj.getDinner(self.context)
            vegetarian  = obj.getVegetarian(self.context)
            workshops = '' 
            if obj.workshops: 
                workshops = obj.getWorkshopsValues(self.context)
            participation = ''
            if obj.participation:
                participation = "; ".join(obj.participation)
            accomadation = ''
            if obj.accomadation:
                accomadation = "; ".join(obj.accomadation)
            data = [obj.lastname, 
                    obj.firstname, 
                    gender,  
                    obj.job, 
                    obj.organization, 
                    obj.email, 
                    obj.phone, 
                    obj.street, 
                    obj.number, 
                    obj.zipcode, 
                    obj.city, 
                    obj.country, 
                    participation, 
                    accomadation, 
                    dinner, 
                    vegetarian, 
                    obj.intolerances, 
                    workshops,
                    arrival, 
                    pricing, 
                    obj.comments] 

            data = self.encode(data)
            items.append(data)
        return items
Exemple #7
0
    def getDataForEvent(self, container):
        site = component.getSiteManager()
        ptool = getToolByName(site, 'portal_catalog')
        result = ptool(portal_type="vfu.events.registration", 
            path = "/".join(container.getPhysicalPath()), 
            order_on ="getObjPositionInParent")
        items = []
        headers = [
                self.context.translate(_(u'lastname')), 
                self.context.translate(_(u'firstname')), 
                self.context.translate(_(u'gender')), 
                self.context.translate(_(u'job')), 
                self.context.translate(_(u'organization')),  
                self.context.translate(_(u'email')),
                self.context.translate(_(u'phone')),  
                self.context.translate(_(u'street')),  
                self.context.translate(_(u'number')),  
                self.context.translate(_(u'zipdcode')),  
                self.context.translate(_(u'city')),  
                self.context.translate(_(u'country')), 
                self.context.translate(_(u'pricing')), 
                self.context.translate(_(u'comments'))
                ]
        headers = self.encode(headers)
        items.append(headers)

        for i in result:
            obj = i.getObject()
            gender = obj.getGender(self.context)
            pricing = obj.getPricing(self.context)
            data = [obj.lastname, 
                    obj.firstname, 
                    gender,  
                    obj.job, 
                    obj.organization, 
                    obj.email, 
                    obj.phone, 
                    obj.street, 
                    obj.number, 
                    obj.zipcode, 
                    obj.city, 
                    obj.country, 
                    pricing, 
                    obj.comments] 

            data = self.encode(data)
            items.append(data)
        return items
def validate_choice(value):
    if len(value) == 0: 
        raise Invalid(_(u'Select at least a one date'))
    return True
 def getVegetarian(self, context):
     if self.vegetarian:
         return _(u'Yes')
     else:
         return _(u'No')
 def getDinner(self, context):
     if self.dinner:
         return _(u'Yes')
     else:
         return _(u'No')