environ['PATH_INFO'] += '/'
raise HTTPMovedPermanently(construct_url(environ))
try:
+ c.user = meta.Session.query(model.User).\
+ filter_by(username=unicode(environ['REMOTE_USER'])).one()
return WSGIController.__call__(self, environ, start_response)
finally:
meta.Session.remove()
s = Split(self, user, share)
meta.Session.add(s)
+ def involves(self, user):
+ "Returns True if ``user`` is involved in this expenditure."
+ return (meta.Session.query(Split.id).\
+ filter(Split.expenditure == self).\
+ filter(Split.user == user).\
+ filter(Split.share != 0).first() is not None)
+
__all__ = ['Expenditure']
self.creditor,
self.amount)
+ def involves(self, user):
+ return (self.debtor == user) or (self.creditor == user)
+
__all__ = ['Transfer']
text-align: right;
font-weight: bold;
}
+tr.user-not-involved {
+ color: #aaa;
+}
</%def>
<%def name="formatUser(user)">
- % if user.username == request.environ['REMOTE_USER']:
- <strong>${user.name}</strong>
+ % if user == c.user:
+ <strong>Me</strong>
% else:
${user.name}
% endif
<th class="editlink"></th>
</tr>
% for e in es:
- <tr>
+ <%
+ if e.involves(c.user):
+ klass = 'user-involved'
+ else:
+ klass = 'user-not-involved'
+ %>
+ <tr class="${klass}">
<td class="date">${e.date}</td>
<td class="user">${formatUser(e.spender)}</td>
<td class="description">${e.description}</td>
<th class="editlink"></th>
</tr>
% for t in ts:
- <tr>
+ <%
+ if t.involves(c.user):
+ klass = 'user-involved'
+ else:
+ klass = 'user-not-involved'
+ %>
+ <tr class="${klass}">
<td class="date">${t.date}</td>
<td class="user">${formatUser(t.debtor)}</td>
<td class="user">${formatUser(t.creditor)}</td>