def getTransactionHistory(self, transactionCount, userMembership, lang): transactions_query_from = Transaction.gql("WHERE group = :1 AND fromMember = :2 ORDER BY date DESC", userMembership.group, userMembership) transactions_from = transactions_query_from.fetch(transactionCount) transactions_query_to = Transaction.gql("WHERE group = :1 AND toMember = :2 ORDER BY date DESC", userMembership.group, userMembership) transactions_to = transactions_query_to.fetch(transactionCount) transactions = transactions_from + transactions_to transactions.sort(cmp = compareTransactionsByDateDesc) transactions = transactions[0:transactionCount] messages = [] for tr in transactions: if not tr.fromUser or not tr.toUser or not tr.creator: continue message = descriptionOfTransaction(tr, userMembership.user, lang) message = '%s %s' % (niceDate(tr.date, lang), message) messages.append({ 'message': message, 'benefical': transactionIsBenefical(tr, userMembership.user), 'isRejectable': tr.isRejectable, 'rejectUrl': '/reject?key=' + str(tr.key()) + '&h=' + tr.hash +'&cancel=1&trcount=' + str(transactionCount) }) return messages
def get(self): page = self.request.get('p'); if page is None or page == '': page = 1 else: page = int(page) offset = (page - 1) * 20 if page != 1: self.response.out.write("<a href=\"?p=%s\">Previous</a> | " % (page - 1)) self.response.out.write(" %s " % page) self.response.out.write(" | <a href=\"?p=%s\">Next</a>" % (page + 1)) self.response.out.write("<br/><br/>") self.response.out.write("<ul>") for tr in Transaction.gql("ORDER BY date DESC LIMIT %s, %s" % (offset, 20)): try: self.response.out.write("<li>In %s: %s <b>%s</b> %s ($%s due to \"%s\", %s)</li>" % ( tr.group.name, tr.fromMember.userNick, tr.type, tr.toMember.userNick, tr.amount, tr.reason, tr.date)) except: self.response.out.write("<li style=\"color:blue\">Group must have been deleted...</li>") self.response.out.write("</ul>")
def get(self): groupKey = self.request.get("key") group = Group.get(groupKey) self.response.out.write("<h1>Transactions in %s</h1>" % group.name) balances = {} transactions = Transaction.gql("WHERE group = :1 ORDER BY date ASC", group) self.response.out.write("<ul>") for tr in transactions: try: self.response.out.write("<li>") self.response.out.write( "Creator: %s, From: <b>%s</b>, To: <b>%s</b>, Type: <b>%s</b>, Amount: %s, Reason: %s, Date: %s" % ( tr.creatorMember.user.nickname(), tr.fromMember.user.nickname(), tr.toMember.user.nickname(), tr.type, tr.amount, tr.reason, tr.date, ) ) if tr.type == "debt": fromBalance = -tr.amount toBalance = tr.amount else: fromBalance = tr.amount toBalance = -tr.amount if not tr.fromMember.user in balances: balances[tr.fromMember.user] = fromBalance else: balances[tr.fromMember.user] += fromBalance if not tr.toMember.user in balances: balances[tr.toMember.user] = toBalance else: balances[tr.toMember.user] += toBalance totalBalance = 0.0 self.response.out.write("<ul>") for member, balance in balances.items(): totalBalance += balance self.response.out.write("<li>%s: %s</li>" % (member, balance)) if abs(totalBalance - 0) > 1e7: self.response.out.write('<li style="color:red">Total Balance: %s</li>' % totalBalance) self.response.out.write("</ul>") self.response.out.write("</li>") except: foo = True self.response.out.write("</ul>")