Esempio n. 1
0
 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)
Esempio n. 2
0
 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
Esempio n. 3
0
 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)
Esempio n. 4
0
 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)
Esempio n. 5
0
    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)
Esempio n. 6
0
 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())
Esempio n. 7
0
def startdateConstraint(value):
    """Check password length"""
    if value < datetime.date.today():
        raise Invalid(_(u"Please enter a valid date"))
    return True
Esempio n. 8
0
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,
Esempio n. 9
0
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"),
Esempio n. 10
0
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,
Esempio n. 11
0
 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)