--- /dev/null
+# coding=utf-8
+#
+# Copyright 2013 Thadeu Lima de Souza Cascardo <cascardo@cascardo.info>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# -*- mode: python; encoding: utf-8; -*-
+import xml.dom.minidom
+
+class Item:
+ def __init__(self, el):
+ self.el = el
+
+ def get_attr(self, attr):
+ if attr in self.el.attributes.keys():
+ return self.el.attributes[attr].nodeValue
+ return None
+
+ def set_attr(self, attr, val):
+ self.el.setAttribute(attr, val)
+
+class Items:
+ def __init__(self, element):
+ self.element = element
+ self.items = []
+
+ for i in self.element.getElementsByTagName("item"):
+ self.items.append(Item(i))
+
+ def _get_attr(self, el, attr):
+ if attr in el.attributes.keys():
+ return el.attributes[attr].nodeValue
+ return None
+
+ def _set_attr(self, el, attr, val):
+ el.setAttribute(attr, val)
+
+ def get_attr(self, attr):
+ return self._get_attr(self.element, attr)
+
+ def set_attr(self, attr, val):
+ self._set_attr(self.element, attr, val)
+
+ def add_item(self, item):
+ self.items.append(item)
+ self.element.appendChild(item.el)
+
+ def new_item(self):
+ item = Item(self.element.ownerDocument.createElement("item"))
+ self.add_item(item)
+ return item
+
+ def remove_item(self, i):
+ self.items.pop(i)
+ els = self.element.getElementsByTagName("item")
+ self.element.removeChild(els[i])
+
+if __name__ == '__main__':
+ doc = xml.dom.minidom.DOMImplementation().createDocument("", "doc", "")
+ el = doc.createElement("items")
+
+ items = Items(el)
+ items.new_item().set_attr("value", "0,00")
+ items.set_attr("total", "0,00")
+
+ print items.element.toprettyxml()
+
+ for i in items.items:
+ print i.get_attr("value")
+
+# vim:tabstop=4:expandtab:smartindent
--- /dev/null
+# -*- mode: python; encoding: utf-8; -*-
+import unittest
+import sys
+import os
+
+import dirs
+dirs.default_irpf_dir = dirs.IRPFTestDir()
+
+from items import Items
+import xml.dom.minidom
+
+class TestItems(unittest.TestCase):
+
+ def setUp(self):
+ doc = xml.dom.minidom.DOMImplementation().createDocument("", "doc", "")
+ el = doc.createElement("items")
+
+ self.items = Items(el)
+ self.items.new_item().set_attr("value", "0,00")
+ self.items.set_attr("total", "9.999,99")
+
+ def test_GetBens(self):
+ self.assertEqual(self.items.get_attr('total'), '9.999,99')
+ self.assertEqual(self.items.items[0].get_attr('value'), '0,00')
+
+if __name__ == '__main__':
+ unittest.main()
+
+# vim:tabstop=4:expandtab:smartindent:fenc=utf8
+