11from datetime import datetime
2+ from dateutil .tz import tzlocal
23
34import json as _json
45import dateutil .parser
@@ -11,6 +12,25 @@ class Model(object):
1112 def __init__ (self ):
1213 self ._valid_properties = {}
1314
15+ def as_dict (self ):
16+ """ Returns a dict representation of the resource """
17+ result = {}
18+ for key in self ._valid_properties :
19+ val = getattr (self , key )
20+ if isinstance (val , datetime ):
21+ val = val .isoformat ()
22+ # Parse custom classes
23+ elif val and not isinstance (val , (str , list , dict )):
24+ val = val .as_dict ()
25+ # Parse lists of objects
26+ elif isinstance (val , list ):
27+ val = [e .as_dict () for e in val ]
28+
29+ # Add it if it's not None
30+ if val :
31+ result [key ] = val
32+ return result
33+
1434 @classmethod
1535 def parse (cls , json ):
1636 """Parse a JSON object into a model instance."""
@@ -19,8 +39,8 @@ def parse(cls, json):
1939
2040class Campaign (Model ):
2141 _valid_properties = {
22- 'id' : None , 'name' : None , 'created_date' : datetime .now (),
23- 'launch_date' : datetime .now (), 'completed_date' : None , 'template' : None ,
42+ 'id' : None , 'name' : None , 'created_date' : datetime .now (tzlocal () ),
43+ 'launch_date' : datetime .now (tzlocal () ), 'completed_date' : None , 'template' : None ,
2444 'page' : None , 'results' : [], 'status' : None , 'timeline' : [],
2545 'smtp' : None , 'url' : None }
2646
@@ -106,7 +126,7 @@ def parse(cls, json):
106126class Group (Model ):
107127 """ Groups contain one or more users """
108128 _valid_properties = {
109- 'id' : None , 'name' : None , 'modified_date' : datetime .now (),
129+ 'id' : None , 'name' : None , 'modified_date' : datetime .now (tzlocal () ),
110130 'targets' : []}
111131
112132 def __init__ (self , ** kwargs ):
@@ -131,7 +151,7 @@ class SMTP(Model):
131151 _valid_properties = {
132152 'id' : None , 'interface_type' : 'SMTP' , 'name' : None , 'host' : None ,
133153 'from_address' : None , 'ignore_cert_errors' : False ,
134- 'modified_date' : datetime .now ()}
154+ 'modified_date' : datetime .now (tzlocal () )}
135155
136156 def __init__ (self , ** kwargs ):
137157 for key , default in SMTP ._valid_properties .items ():
@@ -151,7 +171,7 @@ def parse(cls, json):
151171class Template (Model ):
152172 _valid_properties = {
153173 'id' : None , 'name' : None , 'text' : None , 'html' : None ,
154- 'modified_date' : datetime .now (), 'subject' : None , 'attachments' : []}
174+ 'modified_date' : datetime .now (tzlocal () ), 'subject' : None , 'attachments' : []}
155175
156176 def __init__ (self , ** kwargs ):
157177 for key , default in Template ._valid_properties .items ():
@@ -173,7 +193,7 @@ def parse(cls, json):
173193
174194class Page (Model ):
175195 _valid_properties = {
176- 'id' : None , 'name' : None , 'html' : None , 'modified_date' : datetime .now (),
196+ 'id' : None , 'name' : None , 'html' : None , 'modified_date' : datetime .now (tzlocal () ),
177197 'capture_credentials' : False , 'capture_passwords' : False ,
178198 'redirect_url' : None }
179199
0 commit comments