コード例 #1
0
    def startElement(self, name, attrs):
        if name == 'menu':
            if not attrs.has_key('name'):
                return
            menu = Menu(name=attrs.get('name'))
            r = AttributeReader(attrs)
            from pprint import pprint

            #pprint(r.text('category', '1'))
            #pprint(r.boolean('abc'))
            #pprint(r.boolean('required'))
            #pprint(r.text('display', '0'))
            #pprint(r.boolean('autonote'))
            #pprint(r.boolean('negative'))

            menu.category = r.text('category', '1')
            menu.sorted = r.boolean('abc')
            menu.required = r.boolean('required')
            menu.display_preference = int(r.text('display', '0'))
            menu.autonote = r.boolean('autonote')
            menu.negative = r.boolean('negative')
            menu.save()
            self.current_menu = menu
            self.order_count = 0

        elif name == 'item':
            if not attrs.has_key('name'):
                return
            item = MenuItem(name=attrs.get('name'), parent=self.current_menu, item_type=0, order=self.order_count)
            r = AttributeReader(attrs)
            item.cost = r.text('cost', '1')
            item.note = r.text('note', '')
            item.save()
            self.order_count = self.order_count + 1

        elif name == 'submenu' or name == 'include':
            if not attrs.has_key('name'):
                return
            item_type = 1 if name == 'include' else 2
            link = MenuItem(name=attrs.get('name'), parent=self.current_menu, item_type=item_type, order=self.order_count)
            r = AttributeReader(attrs)
            link_menu_name = r.text('link', link.name)
            try:
                link.menu_to_import = Menu.objects.get(name=link_menu_name)
            except Menu.DoesNotExist:
                self.delayed.append((link, link_menu_name))
            link.save()
            self.order_count = self.order_count + 1