예제 #1
0
    def additional_data(self, form_data=None, add_manager_defaults=False):

        if not form_data:
            data = plone_session.get_additional_data(self.context)
        else:
            data = plone_session.get_additional_data(self.context) or dict()

            # merge the formdata for session use only, committing the
            # reservation only forms defined in the resource are
            # stored with the reservation to get proper separation
            data = self.merge_formdata(
                plone_session.get_additional_data(self.context) or dict(),
                utils.additional_data_dictionary(form_data, self.fti)
            )

            plone_session.set_additional_data(self.context, data)

        # the default values of manager forms are added to users without
        # the permission right before saving
        if add_manager_defaults and not self.may_view_manager_sets:
            defaults = {}
            manager_ftis = self.manager_ftis

            for key, info in manager_ftis.items():
                for name, f in field.Fields(info[1]).items():
                    if f.field.default is not None:
                        fieldkey = '{}.{}'.format(key, name)
                        defaults[fieldkey] = f.field.default

            data = self.merge_formdata(
                data, utils.additional_data_dictionary(defaults, manager_ftis)
            )

        # on the other hand, if the user is not allowed, the data is cleared,
        # just in case (really more of a dev-environment problem, but it
        # doesn't hurt anyway)
        if data:
            if not add_manager_defaults and not self.may_view_manager_sets:
                manager_ftis = self.manager_ftis

                for form in data.keys():
                    if form in manager_ftis:
                        del data[form]

        return data
예제 #2
0
    def additional_data(self, form_data=None, add_manager_defaults=False):
        if not form_data:
            data = plone_session.get_additional_data(self.context)
        else:
            data = plone_session.get_additional_data(self.context) or dict()

            # merge the formdata for session use only, committing the
            # reservation only forms defined in the resource are
            # stored with the reservation to get proper separation
            data = self.merge_formdata(
                plone_session.get_additional_data(self.context) or dict(),
                utils.additional_data_dictionary(form_data, self.fti)
            )

            plone_session.set_additional_data(self.context, data)

        # the default values of manager forms are added to users without
        # the permission right before saving
        if add_manager_defaults and not self.may_view_manager_sets:
            defaults = {}
            manager_ftis = self.manager_ftis

            for key, info in manager_ftis.items():
                for name, f in field.Fields(info[1]).items():
                    if f.field.default is not None:
                        fieldkey = '{}.{}'.format(key, name)
                        defaults[fieldkey] = f.field.default

            data = self.merge_formdata(
                data, utils.additional_data_dictionary(defaults, manager_ftis)
            )

        # on the other hand, if the user is not allowed, the data is cleared,
        # just in case (really more of a dev-environment problem, but it
        # doesn't hurt anyway)
        if data:
            if not add_manager_defaults and not self.may_view_manager_sets:
                manager_ftis = self.manager_ftis

                for form in data.keys():
                    if form in manager_ftis:
                        del data[form]

        return data
예제 #3
0
    def save(self, data):

        self.additional_data = utils.additional_data_dictionary(data, self.fti)

        def save():
            self.scheduler.update_reservation_data(
                self.reservation, self.additional_data
            )
            self.flash(_(u'Formdata updated'))

        utils.handle_action(
            action=save, success=self.redirect_to_context
        )
예제 #4
0
    def save(self, data):

        broken = self.separate_broken_data()[1]
        working = utils.additional_data_dictionary(data, self.fti)

        if broken:
            self.additional_data = utils.merge_data_dictionaries(broken, working)
        else:
            self.additional_data = working

        def save():
            if self.reservation.email != data["email"]:
                self.scheduler.change_email(self.token, data["email"])

            self.scheduler.change_reservation_data(self.token, self.additional_data)
            self.flash(_(u"Formdata updated"))

        utils.handle_action(action=save, success=self.redirect_to_context)
예제 #5
0
    def save(self, data):

        broken = self.separate_broken_data()[1]
        working = utils.additional_data_dictionary(data, self.fti)

        if broken:
            self.additional_data = utils.merge_data_dictionaries(
                broken, working)
        else:
            self.additional_data = working

        def save():
            if self.reservation.email != data['email']:
                self.scheduler.change_email(self.token, data['email'])

            self.scheduler.change_reservation_data(self.token,
                                                   self.additional_data)
            self.flash(_(u'Formdata updated'))

        utils.handle_action(action=save, success=self.redirect_to_context)
예제 #6
0
 def get_additional_data(self, data):
     return utils.additional_data_dictionary(data, self.fti)