Exemple #1
0
    def setUp(self):
        import Products.GenericSetup.PluginIndexes
        from Products.PluginIndexes.DateIndex.DateIndex import DateIndex

        NodeAdapterTestCase.setUp(self)
        zcml.load_config('configure.zcml', Products.GenericSetup.PluginIndexes)

        self._obj = DateIndex('foo_date')
        self._XML = _DATE_XML
Exemple #2
0
    def setUp(self):
        from Products.PluginIndexes.DateIndex.DateIndex import DateIndex

        PlacelessSetup.setUp(self)
        zcml.load_config('meta.zcml', Products.Five)
        zcml.load_config('configure.zcml', Products.GenericSetup.PluginIndexes)

        self._obj = DateIndex('foo_date')
        self._XML = _DATE_XML
Exemple #3
0
def recreateCatalog(self, zcm, lang):

    #-- Create catalog
    cat_id = 'catalog_%s' % lang
    root = self.getRootElement()
    if cat_id in root.objectIds():
        root.manage_delObjects([cat_id])
    cat_title = 'Default catalog'
    zcatalog = ZCatalog.ZCatalog(id=cat_id, title=cat_title, container=root)
    root._setObject(zcatalog.id, zcatalog)
    zcatalog = getZCatalog(self, lang)
    writeChangesLog(
        zcatalog, '[recreateCatalog]: ' +
        self.getZMILangStr('MSG_INSERTED') % zcatalog.meta_type)

    #-- Add lexicon
    addLexicon(self, zcatalog)

    #-- Add columns
    for index_name in ['id', 'meta_id'
                       ] + ['zcat_column_%s' % x for x in extra_column_ids]:
        zcatalog.manage_addColumn(index_name)

    #-- Add Indexes (incl. Columns)
    for attr_id in zcm._getAttrIds():
        attr_type = 'string'
        for meta_id in self.getMetaobjIds():
            meta_obj_attr = self.getMetaobjAttr(meta_id, attr_id)
            if meta_obj_attr:
                attr_type = meta_obj_attr['type']
                break
        index_name = 'zcat_index_%s' % attr_id
        index_type = zcm.getConfProperty('ZCatalog.TextIndexType',
                                         'ZCTextIndex')
        if attr_id == 'home_id':
            index_type = KeywordIndex(attr_id)
        elif attr_type == 'date':
            index_type = DateIndex(attr_id)
        extra = None
        if index_type == 'ZCTextIndex':
            extra = Empty()
            extra.doc_attr = index_name
            extra.index_type = 'Okapi BM25 Rank'
            extra.lexicon_id = 'Lexicon'
        elif index_type != 'KeywordIndex':
            extra = {}
            extra['default_encoding'] = 'utf-8'
            extra['indexed_fields'] = index_name
            extra['fields'] = [index_name]
            extra['near_distance'] = 5
            extra['splitter_casefolding'] = 1
            extra['splitter_max_len'] = 64
            extra['splitter_separators'] = '.+-_@'
            extra['splitter_single_chars'] = 0
        zcatalog.manage_addColumn(index_name)
        zcatalog.manage_addIndex(index_name, index_type, extra)
Exemple #4
0
    def getCatalog(self):
        try:
            return self._getOb(CATALOG_NAME)
        except AttributeError:
            from Products.ZCatalog.ZCatalog import manage_addZCatalog

            # Make catalog for Devices
            manage_addZCatalog(self, CATALOG_NAME, CATALOG_NAME)
            zcat = self._getOb(CATALOG_NAME)
            cat = zcat._catalog
            for idxname in ['status', 'type', 'user']:
                cat.addIndex(idxname, makeCaseInsensitiveFieldIndex(idxname))
            for idxname in ['scheduled', 'started', 'finished']:
                cat.addIndex(idxname, DateIndex(idxname))
            return zcat
Exemple #5
0
    def test_DateIndex(self):
        from xml.dom.minidom import parseString
        from Products.PluginIndexes.DateIndex.DateIndex import DateIndex
        from Products.GenericSetup.testing import DummySetupEnviron
        from Products.GenericSetup.PluginIndexes.exportimport \
                import DateIndexNodeAdapter
        environ = DummySetupEnviron()

        def _no_clear(*a):
            raise AssertionError("Don't clear me!")

        index = DateIndex('foo_date')
        index._setPropValue('index_naive_time_as_local', True)
        index.clear = _no_clear
        adapted = DateIndexNodeAdapter(index, environ)
        adapted.node = parseString(_DATE_XML).documentElement  # no raise
Exemple #6
0
 def testMeetingValues(self):
     brain = api.content.find(context=self.meeting, portal_type="Item")[0]
     indexes = self.catalog.getIndexDataForRID(brain.getRID())
     # indexed item number is a sortable integer
     self.assertEqual(self.item.number, "1")
     self.assertEqual(self.item.sortable_number, 100)
     self.assertEqual(indexes.get("sortable_number"), 100)
     self.assertEqual(indexes.get("number"), "1")
     self.assertEqual(self.meeting.title, indexes.get("linkedMeetingTitle"))
     self.assertEqual(self.meeting.UID(), indexes.get("linkedMeetingUID"))
     self.assertEqual(
         indexes.get("linkedMeetingDate"),
         DateIndex("test")._convert(
             datetime(2018, 12, 20, 18, 25, 43, 51100)),
     )
     self.assertEqual(str(self.meeting.date_time.year), indexes.get("year"))
Exemple #7
0
 def setUp(self):
     self._values = (
         (0, Dummy('a', None)),  # None
         (1, Dummy('b', DateTime(0))),  # 1055335680
         (2, Dummy('c', DateTime('2002-05-08 15:16:17'))),  # 1072667236
         (3, Dummy('d', DateTime('2032-05-08 15:16:17'))),  # 1088737636
         (4, Dummy('e', DateTime('2062-05-08 15:16:17'))),  # 1018883325
         (5, Dummy('e', DateTime('2062-05-08 15:16:17'))),  # 1018883325
         (6, Dummy('f', 1072742620.0)),  # 1073545923
         (7, Dummy('f', 1072742900)),  # 1073545928
         (8, Dummy('g', date(2034, 2, 5))),  # 1073599200
         (9, Dummy('h', datetime(2034, 2, 5, 15, 20, 5))),  # (varies)
         (10, Dummy('i', datetime(2034, 2, 5, 10, 17, 5,
                                  tzinfo=Eastern))),  # 1073600117
     )
     self._index = DateIndex('date')
     self._noop_req = {'bar': 123}
     self._request = {'date': DateTime(0)}
     self._min_req = {
         'date': {
             'query': DateTime('2032-05-08 15:16:17'),
             'range': 'min'
         }
     }
     self._max_req = {
         'date': {
             'query': DateTime('2032-05-08 15:16:17'),
             'range': 'max'
         }
     }
     self._range_req = {
         'date': {
             'query': (DateTime('2002-05-08 15:16:17'),
                       DateTime('2062-05-08 15:16:17')),
             'range':
             'min:max'
         }
     }
     self._zero_req = {'date': 0}
     self._none_req = {'date': None}
     self._float_req = {'date': 1072742620.0}
     self._int_req = {'date': 1072742900}
Exemple #8
0
    def setUp(self):
        from Products.PluginIndexes.DateIndex.DateIndex import DateIndex

        self._obj = DateIndex('foo_date')
        self._XML = _DATE_XML
Exemple #9
0
 def setUp(self):
     from Products.PluginIndexes.DateIndex.DateIndex import DateIndex
     self._obj = DateIndex('foo_date')
     self._obj._setPropValue('precision', 0)
     self._XML = _DATE_XML
Exemple #10
0
    def setUp(self):
        from Products.PluginIndexes.DateIndex.DateIndex import DateIndex

        NodeAdapterTestCase.setUp(self)
        self._obj = DateIndex('foo_date')
        self._XML = _DATE_XML