예제 #1
0
def add_saved_input_to_ignored_fields(site):
    config = IConfig(site)
    ignored_fields = config.get_ignored_fields()
    if 'FormSaveDataAdapter' in ignored_fields.keys():
        if 'SavedFormInput' not in ignored_fields['FormSaveDataAdapter']:
            ignored_fields['FormSaveDataAdapter'].append('SavedFormInput')
    else:
        ignored_fields['FormSaveDataAdapter'] = ['SavedFormInput', ]

    config.set_ignored_fields(ignored_fields)
예제 #2
0
def add_saved_input_to_ignored_fields(site):
    config = IConfig(site)
    ignored_fields = config.get_ignored_fields()
    if 'FormSaveDataAdapter' in ignored_fields.keys():
        if 'SavedFormInput' not in ignored_fields['FormSaveDataAdapter']:
            ignored_fields['FormSaveDataAdapter'].append('SavedFormInput')
    else:
        ignored_fields['FormSaveDataAdapter'] = [
            'SavedFormInput',
        ]

    config.set_ignored_fields(ignored_fields)
예제 #3
0
    def __call__(self, object, action):
        """
        Extracts the required data (action dependent) from a object for
        creating a Job.
        @param object:      Plone Object to export data from
        @param action:      Action to perform [push|delete]
        @type action:       string
        @return:            data (json "encoded")
        @rtype:             string
        """
        self.object = object
        self.is_root = IPloneSiteRoot.providedBy(self.object)
        data = {}

        if action not in ["delete", "move"]:
            adapters = sorted(getAdapters((self.object,), IDataCollector))
            for name, adapter in adapters:
                data[name] = adapter.getData()
        # gets the metadata, we dont use an adapter in this case,
        # cause metdata is the most important data-set we need
        data["metadata"] = self.getMetadata(action)

        # remove ignored fields
        portal = self.object.portal_url.getPortalObject()
        config = IConfig(portal)
        ignore = config.get_ignored_fields()
        for ptype, fields in ignore.items():
            if data["metadata"]["portal_type"] == ptype:
                for field in fields:
                    if "field_data_adapter" in data and field in data["field_data_adapter"]:
                        del data["field_data_adapter"][field]

        if action == "move":
            # read out data from event_information attr
            move_data = getattr(self.object, "event_information", None)
            # make data convertable and shrink amount of data
            # (replace objects by path)
            del move_data["object"]
            portal_path = "/".join(self.object.portal_url.getPortalObject().getPhysicalPath())
            new_parent_path = "/".join(move_data["newParent"].getPhysicalPath())
            new_parent_rpath = new_parent_path[len(portal_path) :]
            move_data["newParent"] = new_parent_rpath
            old_parent_path = "/".join(move_data["oldParent"].getPhysicalPath())
            old_parent_rpath = old_parent_path[len(portal_path) :]
            move_data["oldParent"] = old_parent_rpath
            move_data["newTitle"] = self.object.Title().decode("utf-8")
            data["move"] = move_data
            # finally remove event_information from object
            delattr(self.object, "event_information")

        # convert to json
        jsondata = self.convertToJson(data)
        return jsondata
예제 #4
0
    def __call__(self, object, action, additional_data):
        """
        Extracts the required data (action dependent) from a object for
        creating a Job.
        @param object:      Plone Object to export data from
        @param action:      Action to perform [push|delete]
        @type action:       string
        @param additional_data: Additional infos.
        @type additional_data: dict
        @return:            data (json "encoded")
        @rtype:             string
        """
        self.object = object
        self.is_root = IPloneSiteRoot.providedBy(self.object)
        data = {}

        if action not in ['delete', 'move']:
            adapters = sorted(getAdapters((self.object, ), IDataCollector))
            for name, adapter in adapters:
                data[name] = adapter.getData()
        # gets the metadata, we dont use an adapter in this case,
        # cause metdata is the most important data-set we need
        data['metadata'] = self.getMetadata(action)

        # remove ignored fields
        portal = self.object.portal_url.getPortalObject()
        config = IConfig(portal)
        ignore = config.get_ignored_fields()
        for field_to_ignore in ignore.get(data['metadata']['portal_type'], ()):
            # AT:
            data.get('field_data_adapter', {}).pop(field_to_ignore, None)
            # DX:
            for schemata in data.get('dx_field_data_adapter', {}).values():
                schemata.pop(field_to_ignore, None)

        if action == 'move':
            data['move'] = additional_data['move_data']

        # convert to json
        jsondata = self.convertToJson(data)
        return jsondata
예제 #5
0
    def __call__(self, object, action, additional_data):
        """
        Extracts the required data (action dependent) from a object for
        creating a Job.
        @param object:      Plone Object to export data from
        @param action:      Action to perform [push|delete]
        @type action:       string
        @param additional_data: Additional infos.
        @type additional_data: dict
        @return:            data (json "encoded")
        @rtype:             string
        """
        self.object = object
        self.is_root = IPloneSiteRoot.providedBy(self.object)
        data = {}

        if action not in ['delete', 'move']:
            adapters = sorted(getAdapters((self.object, ), IDataCollector))
            for name, adapter in adapters:
                data[name] = adapter.getData()
        # gets the metadata, we dont use an adapter in this case,
        # cause metdata is the most important data-set we need
        data['metadata'] = self.getMetadata(action)

        # remove ignored fields
        portal = self.object.portal_url.getPortalObject()
        config = IConfig(portal)
        ignore = config.get_ignored_fields()
        for field_to_ignore in ignore.get(data['metadata']['portal_type'], ()):
            # AT:
            data.get('field_data_adapter', {}).pop(field_to_ignore, None)
            # DX:
            for schemata in data.get('dx_field_data_adapter', {}).values():
                schemata.pop(field_to_ignore, None)

        if action == 'move':
            data['move'] = additional_data['move_data']

        # convert to json
        jsondata = self.convertToJson(data)
        return jsondata