コード例 #1
0
ファイル: bookingform.py プロジェクト: vwc/buildout.adk
 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)
コード例 #2
0
ファイル: bookingform.py プロジェクト: vwc/buildout.adk
 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
コード例 #3
0
ファイル: boxaddform.py プロジェクト: vwc/buildout.adk
 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)
コード例 #4
0
ファイル: blockeditform.py プロジェクト: vwc/buildout.adk
 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)
コード例 #5
0
ファイル: bookingform.py プロジェクト: vwc/buildout.adk
    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)
コード例 #6
0
ファイル: blockeditform.py プロジェクト: vwc/buildout.adk
 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())
コード例 #7
0
ファイル: bookingform.py プロジェクト: vwc/buildout.adk
def startdateConstraint(value):
    """Check password length"""
    if value < datetime.date.today():
        raise Invalid(_(u"Please enter a valid date"))
    return True
コード例 #8
0
ファイル: bookingform.py プロジェクト: vwc/buildout.adk
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,
コード例 #9
0
ファイル: contentbox.py プロジェクト: vwc/buildout.adk
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"),
コード例 #10
0
ファイル: displaysettings.py プロジェクト: vwc/buildout.adk
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,
コード例 #11
0
ファイル: blocklayout.py プロジェクト: vwc/buildout.adk
 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)