+ s = Split(self, user, share, split_text_dict[user])
+ meta.Session.add(s)
+
+ def tag(self, tags):
+ map(meta.Session.delete,
+ meta.Session.query(Tag).filter_by(expenditure_id=self.id))
+
+ for tag in tags:
+ t = Tag(self, tag)
+ meta.Session.add(t)
+
+ def involves(self, user):
+ "Returns True if ``user`` is involved in this expenditure."
+ return (any((split.user == user) and (split.share != 0)
+ for split in self.splits) or
+ (self.spender == user))
+
+ def share(self, user):
+ "Return the share corresponding to ``user``."
+ shares = dict((split.user, split.share)
+ for split in self.splits)
+ return shares.get(user, Currency(0))