39 lines
1.1 KiB
Python
39 lines
1.1 KiB
Python
|
#!/usr/bin/python
|
||
|
# -*- coding: utf-8 -*-
|
||
|
|
||
|
import sys
|
||
|
import db
|
||
|
from helpers import *
|
||
|
|
||
|
# Writes a log of all transactions to a text file.
|
||
|
#
|
||
|
# Usage:
|
||
|
# ./write_logfile.py filename
|
||
|
# or (writing to stdout):
|
||
|
# ./write_logfile.py
|
||
|
|
||
|
def write_log(f):
|
||
|
session = Session()
|
||
|
line_format = '%s|%s|%s|%s|%s|%s\n'
|
||
|
transaction_list = session.query(Transaction).all()
|
||
|
for transaction in transaction_list:
|
||
|
if transaction.purchase:
|
||
|
products = ', '.join(map(lambda ent: ent.product.name,
|
||
|
transaction.purchase.entries))
|
||
|
description = ''
|
||
|
else:
|
||
|
products = ''
|
||
|
description = transaction.description
|
||
|
line = line_format % ('purchase', transaction.time, products,
|
||
|
transaction.user.name, transaction.amount, transaction.description)
|
||
|
f.write(line.encode('utf8'))
|
||
|
session.close()
|
||
|
|
||
|
if len(sys.argv) < 2:
|
||
|
write_log(sys.stdout)
|
||
|
else:
|
||
|
filename = sys.argv[1]
|
||
|
print 'Writing log to ' + filename
|
||
|
with open(filename, 'w') as f:
|
||
|
write_log(f)
|