forked from treeio/treeio
/
csvapi.py
56 lines (40 loc) · 1.63 KB
/
csvapi.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# encoding: utf-8
# Copyright 2011 Tree.io Limited
# This file is part of Treeio.
# License www.tree.io/license
"""
Import/Export Contacts API
"""
import csv
from django.http import HttpResponse
import StringIO
import datetime
class ProcessTransactions():
"Import/Export Contacts"
def export_transactions(self, transactions):
"Export transactions into CSV file"
response = HttpResponse(mimetype='text/csv')
response['Content-Disposition'] = 'attachment; filename=Transactions_%s.csv'% datetime.date.today().isoformat()
writer = csv.writer(response)
headers = ['name', 'source', 'target', 'liability', 'category', 'account', 'datetime', 'value', 'details']
writer.writerow(headers)
for transaction in transactions:
row = []
row.append(transaction)
row.append(transaction.source)
row.append(transaction.target)
row.append(transaction.liability)
row.append(transaction.category)
row.append(transaction.account)
row.append(transaction.datetime)
row.append(transaction.get_relative_value())
row.append(transaction.details)
writer.writerow(row)
return response
def import_transactions(self, content):
"Import transactions from CSV file"
f = StringIO.StringIO(content)
transactions = csv.DictReader(f, delimiter=',')
self.parse_transactions(transactions)
def parse_transactions(self, transactions):
"Break down CSV file into transactions"