Ejemplo n.º 1
0
    def createPeriodicBookings(self, periodicity_type, periodicity_end_date, **kwargs):
        """
        create one object for each item return by getPeriodicityInfos method
        date already booked will be ignored
        """

        request = self.REQUEST
        response = request.RESPONSE
        btool = getToolByName(self, 'portal_booking')
        booked_obj = self.getBookedObject()
        infos = self.getPeriodicityInfos(periodicity_type, periodicity_end_date, **kwargs)
        ptool = getToolByName(self, 'portal_properties')
        charset = ptool.site_properties.default_charset
        response.setHeader('Content-type', 'text/plain; charset=%s' % charset)

        if not infos:
            msg = _("message_no_booking_created", default=u"No booking created.")
            return msg

        created = 0
        already_booked = 0

        # Get self field values
        title = self.Title()
        description = self.Description()
        fullname = self.getFullName()
        phone = self.getPhone()
        email = self.getEmail()
        periodicity_uid = self.getPeriodicityUID()

        # create periodic items
        for pstart_ts, pend_ts, b_booked in infos:
            if b_booked:
                already_booked += 1
                continue

            obj_id = self.generateUniqueId('Booking')
            booked_obj.invokeFactory('Booking', obj_id)
            obj = getattr(self, obj_id)

            args = {
                'startDate' : btool.ts2zdt(pstart_ts),
                'endDate' : btool.ts2zdt(pend_ts),
                'title' : title,
                'description' : description,
                'fullName' : fullname,
                'phone' : phone,
                'email' : email,
                'periodicityUID' : periodicity_uid}

            obj.edit(**args)
            created += 1

        mapping = {}
        mapping['created'] = str(created)
        mapping['already_booked'] = str(already_booked)
        msg = _("message_create_periodic_bookings", mapping=mapping,
                default="${created} items created, ${already_booked} already booked")

        return msg
Ejemplo n.º 2
0
    def post_validate(self, REQUEST, errors):
        """Validate booked objects"""

        request = self.REQUEST
        response = request.RESPONSE
        ptool = getToolByName(self, 'portal_properties')
        charset = ptool.site_properties.default_charset
        start_date = DateTime(REQUEST.get('startDate'))
        end_date = DateTime(REQUEST.get('endDate'))
        booked_object_uid = self.getBookedObjectUID()
        booking_brains = self.getBookingBrains(start_date=start_date, end_date=end_date, getBookedObjectUID=booked_object_uid, review_state=('pending', 'booked'))
        obj_path = '/'.join(self.getPhysicalPath())
        translation_service = getToolByName(self, 'translation_service')
        _ = translation_service.utranslate

        if end_date <= start_date:
            response.setHeader('Content-type', 'text/plain; charset=%s' % charset)
            msg = _("message_end_date_before_start", default=u"End date has to be strictly after start date.")
            errors['endDate'] = msg

        if booking_brains:
            if len(booking_brains) == 1:
                brain_path = booking_brains[0].getPath()
                if obj_path == brain_path:
                    return

            response.setHeader('Content-type', 'text/plain; charset=%s' % charset)
            msg = _("message_date_already_booked",
                    default=u"An object is already booked at this date.",
                    domain='plonebooking',
                    context=self)
            errors['startDate'] = msg
            errors['endDate'] = msg
Ejemplo n.º 3
0
 def checkValues(self):
     try:
         self.start = DateTime(int(self.request.form.get("ts_start", None)))
         self.end = DateTime(int(self.request.form.get("ts_end", None)))
     except:
         self.postMessage(
                 _(
                   u"error_key_error",
                   default = u"Key error"
                 ),
                 "error"
         )
         return False
     if self.start > self.end:
         self.postMessage(
                 _(u'error_end_before_start',
                   default = u"Start date great than End date."
                 ),
                 "error"
         )
         return False
     if self.start + EXPORT_MAX_RANGE_DAYS < self.end:
         # in this case, the range is too big: we filter to have a range
         # that is less than EXPORT_MAX_RANGE_DAYS value.
         self.postMessage(
                 _(u'error_range_too_large',
                   default = u"Please enter a range that fits into ${number} monthes.",
                   mapping = {u"number": int(EXPORT_MAX_RANGE_DAYS/30)}
                 ),
                 "error"
         )
         return False
     # all tests passed
     return True
Ejemplo n.º 4
0
 def checkValues(self):
     try:
         self.start = DateTime(int(self.request.form.get("ts_start", None)))
         self.end = DateTime(int(self.request.form.get("ts_end", None)))
     except:
         self.postMessage(_(u"error_key_error", default=u"Key error"),
                          "error")
         return False
     if self.start > self.end:
         self.postMessage(
             _(u'error_end_before_start',
               default=u"Start date great than End date."), "error")
         return False
     if self.start + EXPORT_MAX_RANGE_DAYS < self.end:
         # in this case, the range is too big: we filter to have a range
         # that is less than EXPORT_MAX_RANGE_DAYS value.
         self.postMessage(
             _(u'error_range_too_large',
               default=
               u"Please enter a range that fits into ${number} monthes.",
               mapping={u"number": int(EXPORT_MAX_RANGE_DAYS / 30)}),
             "error")
         return False
     # all tests passed
     return True
Ejemplo n.º 5
0
    def post_validate(self, REQUEST, errors):
        """Validate booked objects"""

        request = self.REQUEST
        response = request.RESPONSE
        ptool = getToolByName(self, 'portal_properties')
        charset = ptool.site_properties.default_charset
        start_date = DateTime(REQUEST.get('startDate'))
        end_date = DateTime(REQUEST.get('endDate'))
        booked_object_uid = self.getBookedObjectUID()
        booking_brains = self.getBookingBrains(start_date=start_date, end_date=end_date, getBookedObjectUID=booked_object_uid, review_state=('pending', 'booked'))
        obj_path = '/'.join(self.getPhysicalPath())
        response.setHeader('X-Theme-Disabled', 'True')

        if end_date <= start_date:
            response.setHeader('Content-type', 'text/html; charset=%s' % charset)
            msg = _("message_end_date_before_start", default=u"End date has to be strictly after start date.")
            errors['endDate'] = msg

        if booking_brains:
            if len(booking_brains) == 1:
                brain_path = booking_brains[0].getPath()
                if obj_path == brain_path:
                    return

            response.setHeader('Content-type', 'text/html; charset=%s' % charset)
            # translation_service = getToolByName(self, 'translation_service')
            # _ = translation_service.utranslate
            msg = _("message_date_already_booked",
                    default=u"An object is already booked at this date.",
                    domain='plonebooking',
                    context=self)
            errors['startDate'] = msg
            errors['endDate'] = msg
 def getFields(self):
     """
         Return the labels of all the fields for this export
     """
     return [
         _("label_booking_user_full_name", "Full Name"),
         _("label_booking_user_phone", "Phone"),
         _("label_booking_user_email", "Email"),
         _("label_booking_start_date", "Booking start date"),
         _("label_booking_end_date", "Booking end date"),
     ]
 def getFields(self):
     """
         Return the labels of all the fields for this export
     """
     return [
         _("label_booking_user_full_name", "Full Name"),
         _("label_booking_user_phone", "Phone"),
         _("label_booking_user_email", "Email"),
         _("label_booking_start_date", "Booking start date"),
         _("label_booking_end_date", "Booking end date"),
     ]
    def testBookingPeriod(self, REQUEST):
        """
            Test if there are no bookings on the new period defined on
            this booking
        """

        request = self.REQUEST
        response = request.RESPONSE
        errorMessages = ""
        kwargs = request.form
        ptool = getToolByName(self, 'portal_properties')
        charset = ptool.site_properties.default_charset
        response.setHeader('Content-type', 'text/html; charset=%s' % charset)

        if kwargs.has_key('start_ts') and kwargs.has_key('end_ts'):
            start_ts = kwargs.pop('start_ts')
            end_ts = kwargs.pop('end_ts')

            if not self._testBookingPeriod(start_ts, end_ts):
                msg = _(
                        u"message_date_already_booked",
                        default=u"An object is already booked at this date."
                )
                errorMessages += '\n' + msg

        if errorMessages:
            btool = getToolByName(self, 'portal_booking')
            return "%s:%s%s" % (
                btool.zdt2ts(self.getStartDate()),
                btool.zdt2ts(self.getEndDate()),
                errorMessages
            )

        return True
 def getBookingDefaultTitle(self):
     """Returns booking default title.
     It is used when no title is defined on booking"""
     
     msg_id = "label_booking"
     msg_default = "Booking"
     return _(msg_default, msg_id)
    def testBookingPeriod(self, REQUEST):
        """
            Test if there are no bookings on the new period defined on
            this booking
        """

        request = self.REQUEST
        response = request.RESPONSE
        errorMessages = ""
        kwargs = request.form
        ptool = getToolByName(self, 'portal_properties')
        charset = ptool.site_properties.default_charset
        response.setHeader('Content-type', 'text/html; charset=%s' % charset)

        if kwargs.has_key('start_ts') and kwargs.has_key('end_ts'):
            start_ts = kwargs.pop('start_ts')
            end_ts = kwargs.pop('end_ts')

            if not self._testBookingPeriod(start_ts, end_ts):
                msg = _(u"message_date_already_booked",
                        default=u"An object is already booked at this date.")
                errorMessages += '\n' + msg

        if errorMessages:
            btool = getToolByName(self, 'portal_booking')
            return "%s:%s%s" % (btool.zdt2ts(self.getStartDate()),
                                btool.zdt2ts(self.getEndDate()), errorMessages)

        return True
Ejemplo n.º 11
0
    def getBookingDefaultTitle(self):
        """Returns booking default title.
        It is used when no title is defined on booking"""

        msg_id = "label_booking"
        msg_default = "Booking"
        return _(msg_default, msg_id)
    def updateBooking(self, REQUEST):
        """
            Allow to modify dates with ajax requests
        """
        request = self.REQUEST
        response = request.RESPONSE
        errorMessages = ""
        kwargs = request.form
        ptool = getToolByName(self, 'portal_properties')
        charset = ptool.site_properties.default_charset
        response.setHeader('Content-type', 'text/html; charset=%s' % charset)

        if kwargs.has_key('start_ts') and kwargs.has_key('end_ts'):
            start_ts = kwargs.pop('start_ts')
            end_ts = kwargs.pop('end_ts')

            if not self._testBookingPeriod(start_ts, end_ts):
                msg = _(u"message_date_already_booked",
                        default=u"An object is already booked at this date.")
                errorMessages += '\n' + msg
            kwargs['startDate'] = DateTime(int(start_ts))
            kwargs['endDate'] = DateTime(int(end_ts))

        fieldsToValidate = ['fullName', 'phone', 'email']
        for fieldName in fieldsToValidate:
            if kwargs.has_key(fieldName):
                field = self.getField(fieldName)
                result = field.validate(kwargs[fieldName], self, errors={})
                if result:
                    errorMessages += '\n' + result

        if errorMessages:
            btool = getToolByName(self, 'portal_booking')
            return "%s:%s%s" % (btool.zdt2ts(self.getStartDate()),
                                btool.zdt2ts(self.getEndDate()), errorMessages)
        else:
            ftool = getToolByName(self, "portal_factory")
            try:
                new_context = ftool.doCreate(self, self.getId())
            except AttributeError:
                # Fallback for AT + plain CMF where we don't have a
                # portal_factory
                new_context = self

            # Initialize end and start dates
            start_date = kwargs.pop('startDate', None)

            if start_date is not None:
                new_context.setStartDate(start_date)

            end_date = kwargs.pop('endDate', None)

            if end_date is not None:
                new_context.setEndDate(end_date)

            new_context.processForm(values=kwargs)
            return True
Ejemplo n.º 13
0
 def getFields(self):
     """Return the labels of all the fields for this export
     """
     return [
         _(u"label_booking_title", u"Title"),
         _(u"label_booking_user_full_name", u"Full Name"),
         _(u"label_booking_user_phone", u"Phone"),
         _(u"label_booking_user_email", u"Email"),
         _(u"label_booking_start_date", u"Booking start date"),
         _(u"label_booking_end_date", u"Booking end date"),
         _(u"label_booking_description", u"Booking note"),
     ]
Ejemplo n.º 14
0
 def getFields(self):
     """Return the labels of all the fields for this export
     """
     return [
         _(u"label_booking_title", u"Title"),
         _(u"label_booking_user_full_name", u"Full Name"),
         _(u"label_booking_user_phone", u"Phone"),
         _(u"label_booking_user_email", u"Email"),
         _(u"label_booking_start_date", u"Booking start date"),
         _(u"label_booking_end_date", u"Booking end date"),
         _(u"label_booking_description", u"Booking note"),
     ]
Ejemplo n.º 15
0
 def __call__(self):
     self.exporter = getUtility(IBookingExporter)
     self.formAction = self.request.form.get("form.action", None) is not None
     self.formResults = None
     if self.formAction and self.checkValues():
         values = self.exporter.getValues(self.getBrains())
         if len(values) == 0:
             self.postMessage(_(u"info_no_results", default=u"There is no booking matching your criteria."), "info")
             return self.result_template()
         if self.request.form.get("export_type") == "csv":
             return self.exportToCsv(values)
         if self.request.form.get("export_type") == "html":
             self.formResults = values
     return self.result_template()
Ejemplo n.º 16
0
    def __init__(self, context, request):
        BrowserView.__init__(self, context, request)
        self.exporter = getUtility(IBookingExporter)
        self.catalog = getToolByName(self.context, "portal_catalog")

        if request.form.get("export_type") == "csv":
            self.__call__ = self.exportToCsv
        elif request.form.get("export_type") == "html":
            self.values = self.getValues()
            if len(self.values) < 1:
                self.context.plone_utils.addPortalMessage(
                    _('info_no_results',
                      "There is no booking matching your criteria."),
                    "info",
                )
        else:
            self.values = None
Ejemplo n.º 17
0
 def __call__(self):
     self.exporter = getUtility(IBookingExporter)
     self.formAction = self.request.form.get("form.action",
                                             None) is not None
     self.formResults = None
     if self.formAction and self.checkValues():
         values = self.exporter.getValues(self.getBrains())
         if len(values) == 0:
             self.postMessage(
                 _(u"info_no_results",
                   default=u"There is no booking matching your criteria."),
                 "info")
             return self.result_template()
         if self.request.form.get("export_type") == "csv":
             return self.exportToCsv(values)
         if self.request.form.get("export_type") == "html":
             self.formResults = values
     return self.result_template()
Ejemplo n.º 18
0
 def __init__(self, context, request):
     BrowserView.__init__(self, context, request)
     self.exporter = getUtility(IBookingExporter)
     self.catalog = getToolByName(self.context, "portal_catalog")
     
     if request.form.get("export_type") == "csv":
         self.__call__ = self.exportToCsv
     elif request.form.get("export_type") == "html":
         self.values = self.getValues()
         if len(self.values) < 1:
             self.context.plone_utils.addPortalMessage(
                 _(
                     'info_no_results',
                     "There is no booking matching your criteria."
                 ),
                 "info",
             )
     else:
         self.values = None
Ejemplo n.º 19
0
    def getValues(self):
        try:
            self.start = DateTime(int(self.context.request.form["ts_start"]))
            self.end = DateTime(int(self.context.request.form["ts_end"]))
        except KeyError:
            self.context.request.response.redirect(
                self.context.absolute_url() + "/export_form")

        if self.start + 6000 < self.end:
            # in this case, the range is too big: we filter to have a range
            # that is less than 60 days.
            self.context.plone_utils.addPortalMessage(
                _('error_range_too_large',
                  "Please enter a range that fits into 2 monthes."),
                "error",
            )
            self.context.request.response.redirect(
                self.context.absolute_url() + "/export_form")

        return self.exporter.getValues(self.getBrains())
Ejemplo n.º 20
0
    def testBookingPeriod(self, REQUEST):
        """
            Test if there are no bookings on the new period defined on
            this booking
        """

        request = self.REQUEST
        response = request.RESPONSE
        errorMessages = ""
        kwargs = request.form
        ptool = getToolByName(self, 'portal_properties')
        charset = ptool.site_properties.default_charset
        response.setHeader('Content-type', 'text/html; charset=%s' % charset)
        response.setHeader('X-Theme-Disabled', 'True')
        if 'start_ts'in kwargs and 'end_ts' in kwargs:
            start_ts = kwargs.pop('start_ts')
            end_ts = kwargs.pop('end_ts')

            if not self._testBookingPeriod(start_ts, end_ts):
                translation_service = getToolByName(self, 'translation_service')
                _ = translation_service.utranslate
                msg = _("message_date_already_booked",
                        default=u"An object is already booked at this date.",
                        domain='plonebooking',
                        context=self)
                errorMessages += '\n' + msg

        if errorMessages:
            btool = getToolByName(self, 'portal_booking')
            return "%s:%s%s" % (
                btool.zdt2ts(self.getStartDate()),
                btool.zdt2ts(self.getEndDate()),
                errorMessages
            )

        return True
Ejemplo n.º 21
0
    def getValues(self):
        try:
            self.start = DateTime(int(self.context.request.form["ts_start"]))
            self.end = DateTime(int(self.context.request.form["ts_end"]))
        except KeyError:
            self.context.request.response.redirect(
                self.context.absolute_url() + "/export_form"
            )

        if self.start + 6000 < self.end:
            # in this case, the range is too big: we filter to have a range
            # that is less than 60 days.
            self.context.plone_utils.addPortalMessage(
                _(
                    'error_range_too_large',
                    "Please enter a range that fits into 2 monthes."
                ),
                "error",
            )
            self.context.request.response.redirect(
                self.context.absolute_url() + "/export_form"
            )

        return self.exporter.getValues(self.getBrains())
Ejemplo n.º 22
0
    def testBookingPeriod(self, REQUEST):
        """
            Test if there are no bookings on the new period defined on
            this booking
        """

        request = self.REQUEST
        response = request.RESPONSE
        errorMessages = ""
        kwargs = request.form
        ptool = getToolByName(self, 'portal_properties')
        charset = ptool.site_properties.default_charset
        response.setHeader('Content-type', 'text/html; charset=%s' % charset)
        response.setHeader('X-Theme-Disabled', 'True')
        if 'start_ts'in kwargs and 'end_ts' in kwargs:
            start_ts = kwargs.pop('start_ts')
            end_ts = kwargs.pop('end_ts')

            if not self._testBookingPeriod(start_ts, end_ts):
                translation_service = getToolByName(self, 'translation_service')
                _ = translation_service.utranslate
                msg = _("message_date_already_booked",
                        default=u"An object is already booked at this date.",
                        domain='plonebooking',
                        context=self)
                errorMessages += '\n' + msg

        if errorMessages:
            btool = getToolByName(self, 'portal_booking')
            return "%s:%s%s" % (
                btool.zdt2ts(self.getStartDate()),
                btool.zdt2ts(self.getEndDate()),
                errorMessages
            )

        return True
    def createPeriodicBookings(self, periodicity_type, periodicity_end_date,
                               **kwargs):
        """
        create one object for each item return by getPeriodicityInfos method
        date already booked will be ignored
        """

        request = self.REQUEST
        response = request.RESPONSE
        btool = getToolByName(self, 'portal_booking')
        booked_obj = self.getBookedObject()
        infos = self.getPeriodicityInfos(periodicity_type,
                                         periodicity_end_date, **kwargs)
        ptool = getToolByName(self, 'portal_properties')
        charset = ptool.site_properties.default_charset
        response.setHeader('Content-type', 'text/html; charset=%s' % charset)

        if not infos:
            msg = _(u"message_no_booking_created",
                    default=u"No booking created.")
            return msg

        created = 0
        already_booked = 0

        # Get self field values
        title = self.Title()
        description = self.Description()
        fullname = self.getFullName()
        phone = self.getPhone()
        email = self.getEmail()
        periodicity_uid = self.getPeriodicityUID()

        # create periodic items
        for pstart_ts, pend_ts, b_booked in infos:
            if b_booked:
                already_booked += 1
                continue

            obj_id = self.generateUniqueId('Booking')
            booked_obj.invokeFactory('Booking', obj_id)
            obj = getattr(self, obj_id)

            args = {
                'startDate': btool.ts2zdt(pstart_ts),
                'endDate': btool.ts2zdt(pend_ts),
                'title': title,
                'description': description,
                'fullName': fullname,
                'phone': phone,
                'email': email,
                'periodicityUID': periodicity_uid
            }

            obj.edit(**args)
            created += 1

        mapping = {}
        mapping['created'] = str(created)
        mapping['already_booked'] = str(already_booked)

        msg = _(
                u"message_create_periodic_bookings",
                default=u"${created} items created, ${already_booked} already"\
                        " booked"
        )

        return msg
Ejemplo n.º 24
0
from Products.PloneBooking.content.vocabulary import GLOBAL_BOOKING_REVIEW_MODES
from Products.PloneBooking.content.vocabulary import CALENDAR_REFRESH_MODES
from Products.PloneBooking.config import PROJECTNAME, I18N_DOMAIN
from Products.PloneBooking.interfaces import IBookingCenter
from Products.PloneBooking import BookingPermissions
from Products.PloneBooking import _

DISPLAY_SCHEMATA = 'display'

BookingCenterSchema = ATFolderSchema.copy() + Schema((
    LinesField(
        'types',
        required=True,
        widget=LinesWidget(
            label=_(
                    u'label_types',
                    default=u'Types'
            ),
            description= _(
                    u'label_bookingcenter_types',
                    default=u'You can define here a list of bookable object'\
                            ' types (1 by line)'
            ),
        ),
    ),
    LinesField(
        'categories',
        required=False,
        widget=LinesWidget(
            label=_(
                    u'label_categories',
                    default=u'Categories'
    GLOBAL_BOOKING_REVIEW_MODES,
    CALENDAR_REFRESH_MODES,
)
from Products.PloneBooking.config import PROJECTNAME, I18N_DOMAIN
from Products.PloneBooking.interfaces import IBookingCenter
from Products.PloneBooking import BookingPermissions

DISPLAY_SCHEMATA = "display"

BookingCenterSchema = ATFolderSchema.copy() + Schema(
    (
        LinesField(
            "types",
            required=True,
            widget=LinesWidget(
                label=_(u"Types"),
                description=_(
                    "label_bookingcenter_types", u"You can define here a list of bookable object types (1 by line)"
                ),
            ),
        ),
        LinesField(
            "categories",
            required=False,
            widget=LinesWidget(
                label="Categories",
                description=" ",
                description_msgid="help_bookingcenter_categories",
                label_msgid="label_bookingcenter_categories",
                i18n_domain=I18N_DOMAIN,
            ),
from Products.PloneBooking.content.vocabulary import GLOBAL_BOOKING_REVIEW_MODES
from Products.PloneBooking.content.vocabulary import CALENDAR_REFRESH_MODES
from Products.PloneBooking.config import PROJECTNAME, I18N_DOMAIN
from Products.PloneBooking.interfaces import IBookingCenter
from Products.PloneBooking import BookingPermissions
from Products.PloneBooking import _

DISPLAY_SCHEMATA = 'display'

BookingCenterSchema = ATFolderSchema.copy() + Schema((
    LinesField(
        'types',
        required=True,
        widget=LinesWidget(
            label=_(
                    u'label_types',
                    default=u'Types'
            ),
            description= _(
                    u'label_bookingcenter_types',
                    default=u'You can define here a list of bookable object'\
                            ' types (1 by line)'
            ),
        ),
    ),
    LinesField(
        'categories',
        required=False,
        widget=LinesWidget(
            label=_(
                    u'label_categories',
                    default=u'Categories'
Ejemplo n.º 27
0
    def updateBooking(self, REQUEST):
        """
            Allow to modify dates with ajax requests
        """
        request = self.REQUEST
        response = request.RESPONSE
        errorMessages = ""
        kwargs = request.form
        ptool = getToolByName(self, 'portal_properties')
        charset = ptool.site_properties.default_charset
        response.setHeader('Content-type', 'text/plain; charset=%s' % charset)

        if kwargs.has_key('start_ts') and kwargs.has_key('end_ts'):
            start_ts = kwargs.pop('start_ts')
            end_ts = kwargs.pop('end_ts')

            if not self._testBookingPeriod(start_ts, end_ts):
                translation_service = getToolByName(self, 'translation_service')
                _ = translation_service.utranslate
                msg = _("message_date_already_booked",
                        default=u"An object is already booked at this date.",
                        domain='plonebooking',
                        context=self)
                errorMessages += '\n' + msg
            kwargs['startDate'] = DateTime(int(start_ts))
            kwargs['endDate'] = DateTime(int(end_ts))

        fieldsToValidate = ['fullName', 'phone', 'email']
        for fieldName in fieldsToValidate:
            if kwargs.has_key(fieldName):
                field = self.getField(fieldName)
                result = field.validate(kwargs[fieldName], self, errors={})
                if result:
                    errorMessages += '\n' + result

        if errorMessages:
            btool = getToolByName(self, 'portal_booking')
            return "%s:%s%s" % (
                btool.zdt2ts(self.getStartDate()),
                btool.zdt2ts(self.getEndDate()),
                errorMessages
            )
        else:
            ftool = getToolByName(self, "portal_factory")
            try:
                new_context = ftool.doCreate(self, self.getId())
            except AttributeError:
                # Fallback for AT + plain CMF where we don't have a portal_factory
                new_context = self

            # Initialize end and start dates
            start_date = kwargs.pop('startDate', None)

            if start_date is not None:
                new_context.setStartDate(start_date)

            end_date = kwargs.pop('endDate', None)

            if end_date is not None:
                new_context.setEndDate(end_date)

            new_context.processForm(values=kwargs)
            return True
Ejemplo n.º 28
0
    VIEW_MODES,
    LISTING_VIEWS,
    GLOBAL_BOOKING_REVIEW_MODES,
    CALENDAR_REFRESH_MODES)
from Products.PloneBooking.config import PROJECTNAME, I18N_DOMAIN
from Products.PloneBooking.interfaces import IBookingCenter
from Products.PloneBooking import BookingPermissions

DISPLAY_SCHEMATA = 'display'

BookingCenterSchema = ATFolderSchema.copy() + Schema((
    LinesField(
        'types',
        required=True,
        widget=LinesWidget(
            label=_(u'Types'),
            description=_('label_bookingcenter_types',
                          u'You can define here a list of bookable object types (1 by line)'),
            ),
        ),
    LinesField(
        'categories',
        required=False,
        widget=LinesWidget(
            label='Categories',
            description=' ',
            description_msgid='help_bookingcenter_categories',
            label_msgid='label_bookingcenter_categories',
            i18n_domain=I18N_DOMAIN,
            ),
        ),
Ejemplo n.º 29
0
    def getBookingDefaultTitle(self):
        """Returns booking default title.
        It is used when no title is defined on booking"""

        return _("label_booking", default=u"Booking")
Ejemplo n.º 30
0
    def getBookingDefaultTitle(self):
        """Returns booking default title.
        It is used when no title is defined on booking"""

        return _("label_booking", default=u"Booking")
Ejemplo n.º 31
0
    VIEW_MODES,
    LISTING_VIEWS,
    GLOBAL_BOOKING_REVIEW_MODES,
    CALENDAR_REFRESH_MODES)
from Products.PloneBooking.config import PROJECTNAME, I18N_DOMAIN
from Products.PloneBooking.interfaces import IBookingCenter
from Products.PloneBooking import BookingPermissions

DISPLAY_SCHEMATA = 'display'

BookingCenterSchema = ATFolderSchema.copy() + Schema((
    LinesField(
        'types',
        required=True,
        widget=LinesWidget(
            label=_(u'Types'),
            description=_('label_bookingcenter_types',
                          u'You can define here a list of bookable object types (1 by line)'),
            ),
        ),
    LinesField(
        'categories',
        required=False,
        widget=LinesWidget(
            label='Categories',
            description=' ',
            description_msgid='help_bookingcenter_categories',
            label_msgid='label_bookingcenter_categories',
            i18n_domain=I18N_DOMAIN,
            ),
        ),