dibbler/write_logfile.py

39 lines
1.1 KiB
Python
Executable File

#!/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)