Exemplo n.º 1
0
    def render(self, request):
        packages = self.env.registry.getPackageIds()
        resourcetypes = self.env.registry.getAllPackagesAndResourceTypes()
        index_types = sorted(INDEX_TYPES)
        index_types_dict = {}
        for i, v in INDEX_TYPES.iteritems():
            index_types_dict[v] = i

        data = {
            'index_types': index_types,
            'index_types_dict': index_types_dict,
            'package_id': '',
            'resourcetype_id': '',
            'indexes': [],
            'error': '',
            'xpath': '',
            'label': '',
            'options': '',
            'packages': packages,
            'resourcetypes': resourcetypes,
            'resturl': self.env.getRestUrl(),
        }
        if request.method == 'POST':
            args = request.args
            data['package_id'] = args.get('package_id', [''])[0]
            data['resourcetype_id'] = args.get('resourcetype_id', [''])[0]
            if 'add' in args.keys() and 'xpath' in args:
                data['label'] = args.get('label', [''])[0]
                data['xpath'] = args.get('xpath', [''])[0]
                data['type_id'] = args.get('type_id', [''])[0]
                data['options'] = args.get('options', [None])[0]
                data = self._addIndex(data)
            elif 'delete' in args and 'index[]' in args:
                data['index[]'] = args['index[]']
                data = self._deleteIndexes(data)
            elif 'reindex' in args and 'index[]' in args:
                data['index[]'] = args['index[]']
                data = self._reindexIndexes(data)
            elif 'reindex-all' in args:
                data = self._reindexResourceType(data)
            elif 'filter' in args:
                data = self._getIndexes(data)
        return data
Exemplo n.º 2
0
 def getIndexes(self, package_id=None, resourcetype_id=None,
                xpath=None, group_path=None, type=None,
                options=None, _id=None, label=None):
     """
     Return a list of all applicable XMLIndex objects.
     """
     # check for grouping indexes
     if xpath and '#' in xpath:
         group_path, temp = xpath.split('#', 1)
         xpath = '/'.join([group_path, temp])
     if type:
         type = INDEX_TYPES.get(type.lower(), TEXT_INDEX)
     return self.index_catalog.getIndexes(package_id=package_id,
                                          resourcetype_id=resourcetype_id,
                                          xpath=xpath,
                                          group_path=group_path,
                                          type=type,
                                          options=options,
                                          _id=_id,
                                          label=label)
Exemplo n.º 3
0
            raise InvalidParameterError(msg)
        # check if valid index type
        if type.lower() not in INDEX_TYPES:
            msg = "registerIndex: Invalid index type '%s'."
            raise InvalidParameterError(msg % type)
        # check for grouping indexes
        xpath = xpath.strip()
        group_path = None
        if '#' in xpath:
            try:
                group_path, temp = xpath.split('#')
            except ValueError, e:
                msg = "registerIndex: Invalid index expression. %s"
                raise InvalidParameterError(msg % str(e))
            xpath = '/'.join([group_path, temp])
        type = INDEX_TYPES.get(type.lower())
        _, resourcetype = self.env.registry.objects_from_id(package_id,
                                                            resourcetype_id)
        # generate index
        xmlindex = XmlIndex(resourcetype=resourcetype, label=label,
                            xpath=xpath, type=type, options=options,
                            group_path=group_path)
        xmlindex = self.index_catalog.registerIndex(xmlindex)
        return xmlindex

    def deleteIndex(self, xmlindex=None, _id=None):
        """
        Remove an index using either a XMLIndex object or a index id.
        """
        if _id:
            xmlindex = self.getIndexes(_id=_id)[0]