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())
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
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
def genderConstraint(value): if not value: raise Invalid(_(u"Select your gender")) return True
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
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')