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