def build_and_send(self, formdata): context = aq_inner(self.context) mto = ['*****@*****.**', '*****@*****.**', '*****@*****.**', '*****@*****.**'] subject = 'Anfrage Sprachkurse' subject = _(u"Booking request for language courses") data = self._prepare_data(formdata) mail_tpl = self._compose_invitation_message(data) mail_plain = create_plaintext_message(mail_tpl) msg = prepare_email_message(mail_tpl, mail_plain) send_mail(msg, mto, subject) IStatusMessage(self.request).add( _(u"Thank you for your interest in our courses. " u"Your Request has been forwarded") ) next_url = '{0}/@@booking-form-success'.format(context.absolute_url()) return self.request.response.redirect(next_url)
def _prepare_data(self, formdata): date_fields = ('arrival', 'departure', 'startdate') timestamp = datetime.datetime.now() fields = schema.getFieldsInOrder(IBooking) data = {} for key, val in fields: try: value = formdata[key] if key in date_fields and value is not None: pretty_value = value.strftime('%d.%m.%Y %H:%M') value = pretty_value else: if not isinstance(value, (str, unicode)): if value is None: value = _(u"Not provided") else: value = str(value) except KeyError: value = _(u"Not provided") data[key] = safe_unicode(value, 'utf-8') data['timestamp'] = timestamp.strftime("%Y-%m-%d %H:%M:%S") return data
def applyChanges(self, data): context = aq_inner(self.context) container = context item = createContentInContainer( container, 'adk.contentpages.contentbox', checkConstraints=True, **data) modified(item) item.reindexObject(idxs='modified') IStatusMessage(self.request).addStatusMessage( _(u"New item has successfully been added"), type='info') next_url = item.absolute_url() return self.request.response.redirect(next_url)
def applyChanges(self, data): context = aq_inner(self.context) item = context fti = getUtility(IDexterityFTI, name='adk.contentpages.contentblock') schema = fti.lookupSchema() fields = getFieldsInOrder(schema) for key, value in fields: try: new_value = data[key] setattr(context, key, new_value) except KeyError: continue modified(item) item.reindexObject(idxs='modified') IStatusMessage(self.request).addStatusMessage( _(u"The content block has successfully been updated"), type='info') next_url = item.absolute_url() return self.request.response.redirect(next_url)
def send_email(self, data): """ Construct and send the registration request. """ context_url = self.context.absolute_url() mto = ['*****@*****.**'] envelope_from = '*****@*****.**' subject = 'Anfrage Sprachkurse' options = data body = ViewPageTemplateFile("booking_email.pt")(self, **options) # send email mailhost = api.portal.get_tool(name='MailHost') mailhost.send(body, mto=mto, mfrom=envelope_from, subject=subject, charset='utf-8') IStatusMessage(self.request).add( _(u"Thank you for your interest in our courses. " u"Your Request has been forwarded") ) next_url = '{0}/@@booking-form-success'.format(context_url) return self.request.response.redirect(next_url)
def handleCancel(self, action): context = aq_inner(self.context) msg = _(u"Process has been cancelled."), api.portal.show_message(message=msg, request=self.request) return self.request.response.redirect(context.absolute_url())
def startdateConstraint(value): """Check password length""" if value < datetime.date.today(): raise Invalid(_(u"Please enter a valid date")) return True
def validateAcceptConstraint(value): """ Check if the terms and conditions have been accepted. """ if value is not True: return False return True def startdateConstraint(value): """Check password length""" if value < datetime.date.today(): raise Invalid(_(u"Please enter a valid date")) return True gender = SimpleVocabulary( [SimpleTerm(value=u'male', title=_(u'male')), SimpleTerm(value=u'female', title=_(u'female')), SimpleTerm(value=u'other', title=_(u'other'))] ) class IBooking(form.Schema): gender = schema.Choice( title=_(u"Gender"), vocabulary=gender, required=True, ) firstname = schema.TextLine( title=_(u"Firstname"), required=True,
from zope.interface import invariant, Invalid from zope.schema.interfaces import IContextSourceBinder from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm from plone.dexterity.content import Container from plone.directives import dexterity, form from plone.app.textfield import RichText from plone.namedfile.field import NamedImage, NamedFile from plone.namedfile.field import NamedBlobImage, NamedBlobFile from plone.namedfile.interfaces import IImageScaleTraversable from adk.contentpages import MessageFactory as _ icon_klass = SimpleVocabulary([ SimpleTerm(value=u'fa-info', title=_(u'Info')), SimpleTerm(value=u'fa-film', title=_(u'Video')), SimpleTerm(value=u'fa-picture', title=_(u'Image')), SimpleTerm(value=u'fa-thumbs-up', title=_(u'Thumbs Up!')), SimpleTerm(value=u'fa-warning-sign', title=_(u'Attention')), SimpleTerm(value=u'fa-time', title=_(u'Time')), SimpleTerm(value=u'fa-download', title=_(u'Download'))] ) class IContentBox(form.Schema, IImageScaleTraversable): """ A sinlge content panel or box """ text = RichText( title=_(u"Box Content Body"),
from zope.interface import alsoProvides from zope import schema from plone.directives import form from plone.autoform.interfaces import IFormFieldProvider from zope.schema.vocabulary import SimpleVocabulary from zope.schema.vocabulary import SimpleTerm from adk.contentpages import MessageFactory as _ display_options = SimpleVocabulary([ SimpleTerm(value=u'left', title=_(u'Sidebar Left')), SimpleTerm(value=u'right', title=_(u'Sidebar Right')), SimpleTerm(value=u'split', title=_(u'Split View')), SimpleTerm(value=u'full', title=_(u'Full View'))] ) class IDisplaySettings(form.Schema): """ Marker/Form interface for DisplaySettings """ form.fieldset( 'settings', label=_(u"Display Settings"), fields=['featured', 'blockDisplay'] ) featured = schema.Bool( title=_(u"Featured Block"), description=_(u"Mark as featured to visually highlight this block"), required=False,
def _set_layout(self, data): msg = _(u"Your layout selection has been safed") api.portal.show_message(msg, request=self.request) next_url = self.context.absolute_url() return self.request.response.redirect(next_url)