Browse Source

added _ItemCollection

Fabian Peter Hammerle 7 years ago
parent
commit
425fd113db
1 changed files with 15 additions and 14 deletions
  1. 15 14
      finoex/__init__.py

+ 15 - 14
finoex/__init__.py

@@ -130,7 +130,18 @@ class Sum(ioex.calcex.Figure):
         )
 
 
-class Invoice(_Object, _YamlInitConstructor, _YamlVarsRepresenter):
+class _ItemCollection():
+
+    def __init__(self, items=None):
+        if items is not None:
+            assert isinstance(items, list)
+            assert all([isinstance(i, Item) for i in items])
+            self.items = items
+        else:
+            self.items = []
+
+
+class Invoice(_Object, _ItemCollection, _YamlInitConstructor, _YamlVarsRepresenter):
 
     yaml_tag = u'!invoice'
 
@@ -157,15 +168,10 @@ class Invoice(_Object, _YamlInitConstructor, _YamlVarsRepresenter):
             self.discounts = discounts
         else:
             self.discounts = []
-        if items:
-            assert isinstance(items, list)
-            assert all([isinstance(i, Item) for i in items])
-            self.items = items
-        else:
-            self.items = []
+        _ItemCollection.__init__(self, items)
 
 
-class Order(_Object, _YamlInitConstructor, _YamlVarsRepresenter):
+class Order(_Object, _ItemCollection, _YamlInitConstructor, _YamlVarsRepresenter):
 
     yaml_tag = u'!order'
 
@@ -187,18 +193,13 @@ class Order(_Object, _YamlInitConstructor, _YamlVarsRepresenter):
         if customer_id is not None:
             assert type(customer_id) is str
             self.customer_id = customer_id
-        if items is None:
-            self.items = []
-        else:
-            assert type(items) is list
-            assert all([isinstance(i, Item) for i in items])
-            self.items = items
         if discounts is None:
             self.discounts = []
         else:
             assert type(discounts) is list
             assert all([isinstance(d, Discount) for d in discounts])
             self.discounts = discounts
+        _ItemCollection.__init__(self, items)
 
 
 class Distance(ioex.calcex.Figure):