]> asedeno.scripts.mit.edu Git - bluechips.git/blobdiff - bluechips/model/expenditure.py
Added UI for working with tags
[bluechips.git] / bluechips / model / expenditure.py
index 4669ad1090c740aaac7284c1903bd01cbac0d037..d732fbe18328c9d6b909bbb52635f0f1775b6033 100644 (file)
@@ -1,7 +1,10 @@
+from sqlalchemy.ext.associationproxy import association_proxy
+
 from bluechips.model.user import User
 from bluechips.model.split import Split
 from bluechips.model import meta
 from bluechips.model.types import Currency
 from bluechips.model.user import User
 from bluechips.model.split import Split
 from bluechips.model import meta
 from bluechips.model.types import Currency
+from bluechips.model.tag import create_tag
 from decimal import Decimal
 from datetime import datetime
 import random
 from decimal import Decimal
 from datetime import datetime
 import random
@@ -15,6 +18,8 @@ class Expenditure(object):
         if self.date == None:
             self.date = datetime.now()
     
         if self.date == None:
             self.date = datetime.now()
     
+    tags = association_proxy('_tags', 'name', creator=create_tag)
+
     def __repr__(self):
         return '<Expenditure: spender: %s spent: %s>' % (self.spender,
                                                          self.amount)
     def __repr__(self):
         return '<Expenditure: spender: %s spent: %s>' % (self.spender,
                                                          self.amount)
@@ -28,7 +33,7 @@ class Expenditure(object):
         split_percentage = Decimal(100) / Decimal(residents.count())
         self.split(dict((resident, split_percentage) for resident in residents))
     
         split_percentage = Decimal(100) / Decimal(residents.count())
         self.split(dict((resident, split_percentage) for resident in residents))
     
-    def split(self, split_dict):
+    def split(self, split_dict, split_text_dict):
         """
         Split up an expenditure.
         
         """
         Split up an expenditure.
         
@@ -71,7 +76,7 @@ class Expenditure(object):
                 amounts_dict[winner] -= Currency(1)
         
         for user, share in amounts_dict.iteritems():
                 amounts_dict[winner] -= Currency(1)
         
         for user, share in amounts_dict.iteritems():
-            s = Split(self, user, share)
+            s = Split(self, user, share, split_text_dict[user])
             meta.Session.add(s)
 
     def involves(self, user):
             meta.Session.add(s)
 
     def involves(self, user):