1 |
< |
#!/usr/local/bin/python |
2 |
< |
# Credit Card |
1 |
> |
# Credit Cards |
2 |
|
# |
3 |
|
# Douglas Thrift |
4 |
|
# |
5 |
|
# $Id$ |
6 |
|
|
7 |
|
import atom |
9 |
– |
import common |
8 |
|
from datetime import date, timedelta |
9 |
|
import gdata.calendar |
12 |
– |
import gdata.calendar.service |
10 |
|
|
11 |
< |
if __name__ == '__main__': |
12 |
< |
parser = common.OptionParser() |
16 |
< |
options = parser.parse_args()[0] |
11 |
> |
def main(calendar, config, banks, debug): |
12 |
> |
reminder = gdata.calendar.Reminder(minutes = 10) |
13 |
|
|
14 |
< |
config, banks = common.config(parser, options, '.creditcard') |
15 |
< |
service = gdata.calendar.service.CalendarService() |
14 |
> |
for module in config.getlist('banks'): |
15 |
> |
bank = banks.bank(module) |
16 |
|
|
17 |
< |
service.ClientLogin(config.get('google', 'username'), common.decode(config.get('google', 'password'))) |
18 |
< |
|
23 |
< |
for bank, accounts in banks.iteritems(): |
24 |
< |
bank = common.bank(bank, options, config) |
25 |
< |
|
26 |
< |
for account in accounts: |
27 |
< |
name, account = account.rsplit(' ', 1) |
28 |
< |
due = bank.due(account) |
17 |
> |
for name, number in bank.accounts(): |
18 |
> |
due = bank.due(number) |
19 |
|
today = date.today() |
20 |
|
|
21 |
|
if due <= today: |
24 |
|
title = '%s Due' % name |
25 |
|
query = gdata.calendar.service.CalendarEventQuery('default', 'private', 'full', '"%s"' % title) |
26 |
|
query.start_min = str(today) |
27 |
< |
events = service.CalendarQuery(query).entry |
27 |
> |
events = calendar.CalendarQuery(query).entry |
28 |
|
|
29 |
< |
if events == []: |
29 |
> |
if not events: |
30 |
|
event = gdata.calendar.CalendarEventEntry() |
31 |
|
event.title = atom.Title(text = title) |
32 |
|
event.transparency = gdata.calendar.Transparency() |
35 |
|
event.visibility.value = 'PRIVATE' |
36 |
|
|
37 |
|
event.when.append(gdata.calendar.When(start_time = str(due), end_time = str(due + timedelta(1)))) |
38 |
< |
event.when[0].reminder.append(gdata.calendar.Reminder(minutes = 10)) |
39 |
< |
|
50 |
< |
service.InsertEvent(event, '/calendar/feeds/default/private/full') |
38 |
> |
event.when[0].reminder.append(reminder) |
39 |
> |
calendar.InsertEvent(event, '/calendar/feeds/default/private/full') |
40 |
|
else: |
41 |
|
for index, event in enumerate(filter(lambda event: event.title.text == title, events)): |
42 |
|
if index == 0: |
45 |
|
event.when[0].start_time = str(due) |
46 |
|
event.when[0].end_time = str(due + timedelta(1)) |
47 |
|
|
48 |
< |
if event.when[0].reminder != []: |
49 |
< |
event.when[0].reminder[0].minutes = str(10) |
48 |
> |
if event.when[0].reminder: |
49 |
> |
event.when[0].reminder[0] = reminder |
50 |
|
else: |
51 |
< |
event.when[0].reminder.append(gdata.calendar.Reminder(minutes = 10)) |
51 |
> |
event.when[0].reminder.append(reminder) |
52 |
|
|
53 |
< |
service.UpdateEvent(event.GetEditLink().href, event) |
53 |
> |
calendar.UpdateEvent(event.GetEditLink().href, event) |
54 |
|
else: |
55 |
< |
service.DeleteEvent(event.GetEditLink().href) |
55 |
> |
calendar.DeleteEvent(event.GetEditLink().href) |