예제 #1
0
def install_marshall_registry(self, out):
    from Products.Marshall.predicates import add_predicate
    from Products.Marshall.config import TOOL_ID as marshall_tool_id
    tool = getToolByName(self, marshall_tool_id)
    for predicate in MARSHALL_PREDICATES:
        existing = tool._getOb(predicate['id'], None)
        if existing is not None:
            tool.manage_delObjects(ids=[predicate['id']])
            print >> out, 'Replacing existing predicate %s' % predicate['id']
        add_predicate(tool, **predicate)
        print >> out, 'Added predicate %s' % predicate['id']
예제 #2
0
    def test_expression_filename(self):
        add_predicate(self.tool, id='doc',
                      title='.doc extension',
                      predicate='default',
                      expression="python: filename and filename.endswith('.doc')",
                      component_name='primary_field')
        add_predicate(self.tool, id='txt',
                      title='.txt extension',
                      predicate='default',
                      expression="python: filename and filename.endswith('.txt')",
                      component_name='rfc822')
        add_predicate(self.tool, id='default',
                      title='default',
                      predicate='default',
                      expression='',
                      component_name='primary_field')

        self.assertEquals(
            self.get(None, filename='sample.doc'), ('primary_field',))
        self.assertEquals(
            self.get(None, filename='sample.txt'),
            ('rfc822', 'primary_field'))

        # Make sure reordering the predicates does change the order
        # in which ids are returned.
        self.reverse()
        self.assertEquals(
            self.get(None, filename='sample.txt'),
            ('primary_field', 'rfc822'))

        self.assertEquals(self.get(None, filename='sample.rot'),
                          ('primary_field',))
        # Make sure it works even if no filename kw is passed in
        self.assertEquals(self.get(None), ('primary_field',))
예제 #3
0
    def test_expression_data(self):
        add_predicate(
            self.tool,
            id='data_len_3',
            title='data length > 3',
            predicate='default',
            expression="python: data and len(data) > 3",
            component_name='primary_field')
        add_predicate(
            self.tool,
            id='data_len_2',
            title='data length == 2',
            predicate='default',
            expression="python: data and len(data) == 2",
            component_name='rfc822')
        add_predicate(
            self.tool,
            id='default',
            title='default',
            predicate='default',
            expression='',
            component_name='primary_field')
        self.assertEquals(self.get(None, data='4242'), ('primary_field',))
        self.assertEquals(self.get(None, data='42'), ('rfc822', 'primary_field'))

        # Make sure reordering the predicates does change the order
        # in which ids are returned.
        self.reverse()
        self.assertEquals(self.get(None, data='42'), ('primary_field', 'rfc822'))

        # Make sure it works even if no data kw is passed in
        self.assertEquals(self.get(None), ('primary_field',))
예제 #4
0
    def test_expression_data(self):
        add_predicate(self.tool,
                      id='data_len_3',
                      title='data length > 3',
                      predicate='default',
                      expression="python: data and len(data) > 3",
                      component_name='primary_field')
        add_predicate(self.tool,
                      id='data_len_2',
                      title='data length == 2',
                      predicate='default',
                      expression="python: data and len(data) == 2",
                      component_name='rfc822')
        add_predicate(self.tool,
                      id='default',
                      title='default',
                      predicate='default',
                      expression='',
                      component_name='primary_field')
        self.assertEquals(self.get(None, data='4242'), ('primary_field', ))
        self.assertEquals(self.get(None, data='42'),
                          ('rfc822', 'primary_field'))

        # Make sure reordering the predicates does change the order
        # in which ids are returned.
        self.reverse()
        self.assertEquals(self.get(None, data='42'),
                          ('primary_field', 'rfc822'))

        # Make sure it works even if no data kw is passed in
        self.assertEquals(self.get(None), ('primary_field', ))
예제 #5
0
 def test_xmlns_element(self):
     p = add_predicate(self.tool,
                       id='xmlns_attr',
                       title='xmlns',
                       predicate='xmlns_attr',
                       expression='',
                       component_name='primary_field')
     p.edit(element_name='test', value=None)
     data = """<?xml version="1.0" encoding="UTF-8"?>
     <test>
        Doesn't Matter
     </test>
     """
     self.assertEquals(self.get(None, data=data), ('primary_field', ))
예제 #6
0
 def test_xmlns_element_ns_att(self):
     p = add_predicate(
         self.tool,
         id='xmlns_attr',
         title='xmlns',
         predicate='xmlns_attr',
         expression='',
         component_name='primary_field')
     p.edit(element_ns='http://foo.com/bar', element_name='test',
            attr_name='wot', value='FooBar')
     data = """<?xml version="1.0" encoding="UTF-8"?>
     <t:test xmlns:t="http://foo.com/bar"
        wot="FooBar" />
     """
     self.assertEquals(self.get(None, data=data), ('primary_field',))
예제 #7
0
 def test_xmlns_element(self):
     p = add_predicate(
         self.tool,
         id='xmlns_attr',
         title='xmlns',
         predicate='xmlns_attr',
         expression='',
         component_name='primary_field')
     p.edit(element_name='test', value=None)
     data = """<?xml version="1.0" encoding="UTF-8"?>
     <test>
        Doesn't Matter
     </test>
     """
     self.assertEquals(self.get(None, data=data), ('primary_field',))
예제 #8
0
 def test_xmlns_element_ns_att(self):
     p = add_predicate(self.tool,
                       id='xmlns_attr',
                       title='xmlns',
                       predicate='xmlns_attr',
                       expression='',
                       component_name='primary_field')
     p.edit(element_ns='http://foo.com/bar',
            element_name='test',
            attr_name='wot',
            value='FooBar')
     data = """<?xml version="1.0" encoding="UTF-8"?>
     <t:test xmlns:t="http://foo.com/bar"
        wot="FooBar" />
     """
     self.assertEquals(self.get(None, data=data), ('primary_field', ))
예제 #9
0
        def test_expression_content_type(self):
            add_predicate(
                self.tool,
                id='text_xml',
                title='text/xml content type',
                predicate='default',
                expression=
                "python: content_type and content_type == 'text/xml'",
                component_name='simple_xml')
            add_predicate(
                self.tool,
                id='text_plain',
                title='text/plain content type',
                predicate='default',
                expression=
                "python: content_type and content_type == 'text/plain'",
                component_name='rfc822')
            add_predicate(self.tool,
                          id='default',
                          title='default',
                          predicate='default',
                          expression="",
                          component_name='primary_field')

            self.assertEquals(self.get(None, content_type='text/xml'),
                              ('simple_xml', 'primary_field'))
            self.assertEquals(self.get(None, content_type='text/plain'),
                              ('rfc822', 'primary_field'))

            # Make sure reordering the predicates does change the order
            # in which ids are returned.
            self.reverse()
            self.assertEquals(self.get(None, content_type='text/plain'),
                              ('primary_field', 'rfc822'))

            # Make sure it works even if no content_type kw is passed in
            self.assertEquals(self.get(None), ('primary_field', ))
예제 #10
0
    def test_expression_filename(self):
        add_predicate(
            self.tool,
            id='doc',
            title='.doc extension',
            predicate='default',
            expression="python: filename and filename.endswith('.doc')",
            component_name='primary_field')
        add_predicate(
            self.tool,
            id='txt',
            title='.txt extension',
            predicate='default',
            expression="python: filename and filename.endswith('.txt')",
            component_name='rfc822')
        add_predicate(self.tool,
                      id='default',
                      title='default',
                      predicate='default',
                      expression='',
                      component_name='primary_field')

        self.assertEquals(self.get(None, filename='sample.doc'),
                          ('primary_field', ))
        self.assertEquals(self.get(None, filename='sample.txt'),
                          ('rfc822', 'primary_field'))

        # Make sure reordering the predicates does change the order
        # in which ids are returned.
        self.reverse()
        self.assertEquals(self.get(None, filename='sample.txt'),
                          ('primary_field', 'rfc822'))

        self.assertEquals(self.get(None, filename='sample.rot'),
                          ('primary_field', ))
        # Make sure it works even if no filename kw is passed in
        self.assertEquals(self.get(None), ('primary_field', ))
예제 #11
0
        def test_expression_content_type(self):
            add_predicate(
                self.tool, id='text_xml',
                title='text/xml content type',
                predicate='default',
                expression="python: content_type and content_type == 'text/xml'",
                component_name='simple_xml')
            add_predicate(
                self.tool,
                id='text_plain',
                title='text/plain content type',
                predicate='default',
                expression="python: content_type and content_type == 'text/plain'",
                component_name='rfc822')
            add_predicate(
                self.tool,
                id='default',
                title='default',
                predicate='default',
                expression="",
                component_name='primary_field')

            self.assertEquals(
                self.get(None, content_type='text/xml'),
                ('simple_xml', 'primary_field'))
            self.assertEquals(self.get(None, content_type='text/plain'),
                              ('rfc822', 'primary_field'))

            # Make sure reordering the predicates does change the order
            # in which ids are returned.
            self.reverse()
            self.assertEquals(self.get(None, content_type='text/plain'),
                              ('primary_field', 'rfc822'))

            # Make sure it works even if no content_type kw is passed in
            self.assertEquals(self.get(None), ('primary_field',))