forked from BobRupholdt/Sample-Python-Application
/
marshall.py
135 lines (112 loc) · 4.04 KB
/
marshall.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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#!/usr/bin/env python
import logging
from google.appengine.dist import use_library
use_library('django', '1.2')
from google.appengine.api.datastore_errors import BadArgumentError
from models import User
from models import CompanySubscription
from xml.dom import minidom
from xml.dom.minidom import Document
class EventXml(Document):
eventXml = None
eventType = None
creator = None
payload = None
prettyPrint = ""
def __init__(self, xmlDocument):
self.eventXml = xmlDocument
self.eventType = self.eventXml.getElementsByTagName('type')[0]\
.childNodes[0].data
self.creator = UserXml(self.eventXml, field = "creator")
self.payload = PayloadXml(self.eventXml)
self.prettyPrint = xmlDocument.toprettyxml()
def __str__(self):
return self.prettyPrint
class UserXml(Document):
userXml = None
openid = None
email = None
firstName = None
lastName = None
def __init__(self, xmlDocument, field = "user"):
elements = xmlDocument.getElementsByTagName(field)
if len(elements) == 0:
return
self.userXml = elements[0]
self.openid = self.userXml.getElementsByTagName("openId")[0]\
.childNodes[0].data
self.email = self.userXml.getElementsByTagName("email")[0]\
.childNodes[0].data
self.firstName = self.userXml.getElementsByTagName("firstName")[0]\
.childNodes[0].data
self.lastName = self.userXml.getElementsByTagName("lastName")[0]\
.childNodes[0].data
def __str__(self):
return self.email
"""Creates a datastore model"""
def CreateUserModel(self, companySubscription):
user = User.get_or_insert(self.openid)
user.email = self.email
user.openid = self.openid
user.first = self.firstName
user.last = self.lastName
user.subscription = companySubscription
return user
class OrderXml(Document):
orderXml = None
edition = None
def __init__(self, xmlDocument):
elements = xmlDocument.getElementsByTagName('order')
if len(elements) == 0:
return
self.orderXml = elements[0]
self.edition = self.orderXml.getElementsByTagName("editionCode")[0]\
.childNodes[0].data
def __str__(self):
return self.edition
class PayloadXml(Document):
payloadXml = None
account = None
user = None
order = None
company = None
def __init__(self, xmlDocument):
elements = xmlDocument.getElementsByTagName('payload')
if len(elements) == 0:
return
self.payloadXml = elements[0]
self.account = AccountXml(self.payloadXml)
self.user = UserXml(self.payloadXml)
self.order = OrderXml(self.payloadXml)
self.company = CompanyXml(self.payloadXml)
def CreateSubscription(self):
companySubscription = CompanySubscription()
companySubscription.edition = self.order.edition
companySubscription.name = self.company.name
companySubscription.website = self.company.website
return companySubscription
class CompanyXml(Document):
companyXml = None
name = None
website = None
def __init__(self, xmlDocument):
elements = xmlDocument.getElementsByTagName('company')
if len(elements) == 0:
return
self.companyXml = elements[0]
self.name = self.companyXml.getElementsByTagName('name')[0].childNodes[0].data
self.website = self.companyXml.getElementsByTagName('website')[0].childNodes[0].data
def __str__(self):
return self.name
class AccountXml(Document):
accountXml = None
accountIdentifier = None
def __init__(self, xmlDocument):
elements = xmlDocument.getElementsByTagName('account')
if len(elements) == 0:
return
self.accountXml = elements[0]
self.accountIdentifier = self.accountXml\
.getElementsByTagName('accountIdentifier')[0].childNodes[0].data
def __str__(self):
return self.accountIdentifier