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