]> asedeno.scripts.mit.edu Git - bluechips.git/commitdiff
emphasize transactions that the logged-in user is part of, deemphasize others
authorScott Torborg <scott@crookedmedia.com>
Tue, 3 Nov 2009 01:06:22 +0000 (15:06 -1000)
committerScott Torborg <scott@crookedmedia.com>
Tue, 3 Nov 2009 01:06:22 +0000 (15:06 -1000)
bluechips/lib/base.py
bluechips/model/expenditure.py
bluechips/model/transfer.py
bluechips/public/css/main.css
bluechips/templates/base.mako

index 259bb0dd5613f8c1c43980ef1964ddf7dda08a8c..d94eeb664e40d3fda2561fda30b042f1f50e3893 100644 (file)
@@ -32,6 +32,8 @@ class BaseController(WSGIController):
                 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()
index f7e69344dc2cf88bf09cb7f0fa6ea9a81fdc4cb9..dda06c1e0a9c7bf837e3668eef7835dc5cf2ca70 100644 (file)
@@ -86,4 +86,11 @@ class Expenditure(object):
             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']
index 55303a80b7187cd0d564e28b681590459b68b844..512e0f37937d472bd38f3083018da36baab51721 100644 (file)
@@ -11,4 +11,7 @@ class Transfer(object):
                                                      self.creditor,
                                                      self.amount)
 
+    def involves(self, user):
+        return (self.debtor == user) or (self.creditor == user)
+
 __all__ = ['Transfer']
index 3897fe07ef78883ee2ca7ae1efb450494b077b9a..fe58b9995a557556fd3bb69d23cbed3e647345fa 100644 (file)
@@ -69,3 +69,6 @@ td.labelcol {
     text-align: right;
     font-weight: bold;
 }
+tr.user-not-involved {
+    color: #aaa;
+}
index d12f45688243b2b7e4d40ce4dd62f2a9a7df49bf..97ae8576a4281ee0bae862eb6aff564d19d2cec6 100644 (file)
@@ -67,8 +67,8 @@
 </%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>