-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathundoist_c.py
More file actions
75 lines (59 loc) · 2.02 KB
/
undoist_c.py
File metadata and controls
75 lines (59 loc) · 2.02 KB
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#coding: utf-8
import datetime
class Project:
def __init__(self, name, owner):
# Create the root item node
self.root = Item(name, 0, False)
# Set owner
self.owner = owner
def __str__(self):
return unicode(self.root)
def get_as_file(self):
# Create OPML header
output = '<?xml version="1.0" encoding="UTF-8"?> \n' \
+ '<opml version="2.0"> \n' \
+ ' <head>\n' \
+ ' <title>' + self.root.text + '</title>\n' \
+ ' <ownerName>' + self.owner + '</ownerName>\n' \
+ ' </head>\n' \
+ ' <body>\n'
# Add OPML outline elements
output += unicode(self)
# Add OPML footer
output += ' </body>\n' \
+ '</opml>'
return unicode(output)
class Item:
def __init__(self, text, parent, indent, date=False):
self.text = text
self.parent = parent
self.indent = indent
# Set and parse date
self.date = date
if self.date:
dt = datetime.datetime.now()
self.date = dt.strptime(self.date, "%a %b %d %H:%M:%S %Y")
# Create empty subitems list
self.subitems = []
def __str__(self):
# Create correct indent
indent = ' ' * self.indent
# Generate date string
date = ''
if self.date:
date = ' due="' + self.date.strftime('%Y-%m-%d') + '"'
# Create outline XML tag
out = indent + '<outline text="' + self.text + '" status="open"' + date
# If there are subitems, add them.
if len(self.subitems) > 0:
out += '>\n'
for item in self.subitems:
out += unicode(item)
out += indent + '</outline>\n'
else:
out += '/>\n'
# Return the result
return out
# A simple adder
def additem(self, item):
self.subitems.append(item)