Ejemplo n.º 1
0
class TestGetElements(TestCase):
    def setUp(self):
        self.handler = XMLHandler()

    def test_get_two_bond_elements_as_list(self):
        elements = self.handler.get_elements(TEST_XML, 'bond')
        self.assertIs(2, len(elements))

    def test_get_no_elements_in_empty_list(self):
        elements = self.handler.get_elements(TEST_XML, 'austin')
        self.assertIs(0, len(elements))
Ejemplo n.º 2
0
class TestGetElements(TestCase):

    def setUp(self):
        self.handler = XMLHandler()

    def test_get_two_bond_elements_as_list(self):
        elements = self.handler.get_elements(TEST_XML, 'bond')
        self.assertIs(2, len(elements))

    def test_get_no_elements_in_empty_list(self):
        elements = self.handler.get_elements(TEST_XML, 'austin')
        self.assertIs(0, len(elements))
Ejemplo n.º 3
0
class PFM2PFGConverter(object):
    implements(IPFM2PFGConverter)

    def __init__(self, item, xml_string):

        self.handler = XMLHandler()
        self.item = item
        self.xml_string = xml_string
        self.normalizer = getUtility(IIDNormalizer)

    def __iter__(self):

        xml = self.handler.parse_xml_string(self.xml_string)

        for group in self.handler.get_elements(xml, 'group'):

            yield self.begin_group(group)

            for field in self.handler.get_elements(group, 'field'):

                yield self.get_pfg_field(field)

            yield self.end_group(group)

    def get_pfg_field(self, field):

        pfm_type = self.handler.get_element_value(field, 'type')

        field_utility = self.get_field_utility(pfm_type)
        if not field_utility:
            raise

        pfg_field = field_utility(field, self.item)
        pfg_field.fill_field()

        return pfg_field

    def get_field_utility(self, type_):
        """Returns the assosiated utility for pfg fields
        """

        return queryUtility(
            IFormGenField,
            'ftw.blueprints.pfm2pfg.%s' % type_)

    def end_group(self, xml):

        item = {}

        title = self.handler.get_element_value(xml, 'title')

        if title == 'Default':
            return item

        title = self.normalizer.normalize(title)

        item['_id'] = '%s-end' % title
        item['_type'] = 'FieldsetEnd'
        item['_path'] = '%s/%s-stop' % (self.item['_path'], title)

        return item

    def begin_group(self, xml):

        item = {}

        title = self.handler.get_element_value(xml, 'title')

        if title == 'Default':
            return item

        item['title'] = title

        title = self.normalizer.normalize(title)

        item['_id'] = '%s-start' % title
        item['_type'] = 'FieldsetStart'
        item['_path'] = '%s/%s-start' % (self.item['_path'], title)

        return item