Browse Source

item: added attr 'sub_items'

Fabian Peter Hammerle 7 years ago
parent
commit
b935b2d3ed
3 changed files with 30 additions and 4 deletions
  1. 8 1
      finoex/__init__.py
  2. 1 1
      setup.py
  3. 21 2
      tests/test_yaml.py

+ 8 - 1
finoex/__init__.py

@@ -239,18 +239,25 @@ class Discount(_Object, _YamlInitConstructor):
             self.code = code
 
 
-class Item(_Object, _YamlInitConstructor):
+class Item(_Object, _YamlInitConstructor, _YamlVarsRepresenter):
 
     yaml_tag = u'!item'
 
     def __init__(self,
                  name=None,
                  price_brutto=None,
+                 sub_items=None,
                  ):
         if not name is None:
             assert type(name) is str
             self.name = name
         assert type(price_brutto) is Sum
+        if sub_items is None:
+            self.sub_items = []
+        else:
+            assert isinstance(sub_items, list)
+            assert all([isinstance(i, Item) for i in sub_items])
+            self.sub_items = sub_items
         self.price_brutto = price_brutto
 
 

+ 1 - 1
setup.py

@@ -4,7 +4,7 @@ import glob
 
 setup(
     name = 'finoex',
-    version = '0.10.1',
+    version = '0.11.0',
     # description = '',
     author = 'Fabian Peter Hammerle',
     author_email = 'fabian.hammerle@gmail.com',

+ 21 - 2
tests/test_yaml.py

@@ -28,11 +28,14 @@ def get_sum_b():
     return finoex.Sum(20.45, u'€')
 
 
-def get_item_a():
-    return finoex.Item(
+def get_item_a(sub_items = False):
+    item = finoex.Item(
         name = u'item a',
         price_brutto = get_sum_a(),
         )
+    if sub_items:
+        item.sub_items.append(get_item_b())
+    return item
 
 
 def get_item_b():
@@ -305,6 +308,14 @@ name: discount c
     [get_figure_a(), u"!figure '12.3 km'\n"],
     [get_figure_b(), u"!figure '12300 米'\n"],
     [get_item_a(), u"!item\nname: item a\nprice_brutto: !sum '1.23 EUR'\n"],
+    [get_item_a(sub_items=True), u"""!item
+name: item a
+price_brutto: !sum '1.23 EUR'
+sub_items:
+- !item
+  name: item β
+  price_brutto: !sum '20.45 EUR'
+"""],
     [get_item_b(), u"!item\nname: item β\nprice_brutto: !sum '20.45 EUR'\n"],
     [get_person_a(), u'!person\nfirst_name: Fabian Peter\nlast_name: Hammerle\n'],
     [get_person_b(), u'!person\nfirst_name: 名字\nlast_name: 贵姓\n'],
@@ -491,6 +502,14 @@ code: DISCΓ
     [get_figure_b(), u'!figure\nunit: 米\nvalue: 12300\n'],
     [get_item_a(), u"!item\nname: item a\nprice_brutto: !sum '1.23 EUR'\n"],
     [get_item_a(), u"!item\nname: item a\nprice_brutto: !sum 1.23 EUR"],
+    [get_item_a(sub_items=True), u"""!item
+name: item a
+price_brutto: !sum '1.23 EUR'
+sub_items:
+- !item
+  name: item β
+  price_brutto: !sum '20.45 EUR'
+"""],
     [get_item_a(), u"!item\nname: item a\nprice_brutto: !sum 1.23 €\n"],
     [get_item_b(), u"!item\nname: item β\nprice_brutto: !sum '20.45 EUR'\n"],
     [get_person_a(), '!person\nfirst_name: Fabian Peter\nlast_name: Hammerle\n'],