/gdata/apps/__init__.py

http://radioappz.googlecode.com/ · Python · 526 lines · 381 code · 109 blank · 36 comment · 31 complexity · 1183412d4438372e7e54b8f3256bc3cf MD5 · raw file

  1. #!/usr/bin/python
  2. #
  3. # Copyright (C) 2007 SIOS Technology, Inc.
  4. #
  5. # Licensed under the Apache License, Version 2.0 (the "License");
  6. # you may not use this file except in compliance with the License.
  7. # You may obtain a copy of the License at
  8. #
  9. # http://www.apache.org/licenses/LICENSE-2.0
  10. #
  11. # Unless required by applicable law or agreed to in writing, software
  12. # distributed under the License is distributed on an "AS IS" BASIS,
  13. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. # See the License for the specific language governing permissions and
  15. # limitations under the License.
  16. """Contains objects used with Google Apps."""
  17. __author__ = 'tmatsuo@sios.com (Takashi MATSUO)'
  18. import atom
  19. import gdata
  20. # XML namespaces which are often used in Google Apps entity.
  21. APPS_NAMESPACE = 'http://schemas.google.com/apps/2006'
  22. APPS_TEMPLATE = '{http://schemas.google.com/apps/2006}%s'
  23. class EmailList(atom.AtomBase):
  24. """The Google Apps EmailList element"""
  25. _tag = 'emailList'
  26. _namespace = APPS_NAMESPACE
  27. _children = atom.AtomBase._children.copy()
  28. _attributes = atom.AtomBase._attributes.copy()
  29. _attributes['name'] = 'name'
  30. def __init__(self, name=None, extension_elements=None,
  31. extension_attributes=None, text=None):
  32. self.name = name
  33. self.text = text
  34. self.extension_elements = extension_elements or []
  35. self.extension_attributes = extension_attributes or {}
  36. def EmailListFromString(xml_string):
  37. return atom.CreateClassFromXMLString(EmailList, xml_string)
  38. class Who(atom.AtomBase):
  39. """The Google Apps Who element"""
  40. _tag = 'who'
  41. _namespace = gdata.GDATA_NAMESPACE
  42. _children = atom.AtomBase._children.copy()
  43. _attributes = atom.AtomBase._attributes.copy()
  44. _attributes['rel'] = 'rel'
  45. _attributes['email'] = 'email'
  46. def __init__(self, rel=None, email=None, extension_elements=None,
  47. extension_attributes=None, text=None):
  48. self.rel = rel
  49. self.email = email
  50. self.text = text
  51. self.extension_elements = extension_elements or []
  52. self.extension_attributes = extension_attributes or {}
  53. def WhoFromString(xml_string):
  54. return atom.CreateClassFromXMLString(Who, xml_string)
  55. class Login(atom.AtomBase):
  56. """The Google Apps Login element"""
  57. _tag = 'login'
  58. _namespace = APPS_NAMESPACE
  59. _children = atom.AtomBase._children.copy()
  60. _attributes = atom.AtomBase._attributes.copy()
  61. _attributes['userName'] = 'user_name'
  62. _attributes['password'] = 'password'
  63. _attributes['suspended'] = 'suspended'
  64. _attributes['admin'] = 'admin'
  65. _attributes['changePasswordAtNextLogin'] = 'change_password'
  66. _attributes['agreedToTerms'] = 'agreed_to_terms'
  67. _attributes['ipWhitelisted'] = 'ip_whitelisted'
  68. _attributes['hashFunctionName'] = 'hash_function_name'
  69. def __init__(self, user_name=None, password=None, suspended=None,
  70. ip_whitelisted=None, hash_function_name=None,
  71. admin=None, change_password=None, agreed_to_terms=None,
  72. extension_elements=None, extension_attributes=None,
  73. text=None):
  74. self.user_name = user_name
  75. self.password = password
  76. self.suspended = suspended
  77. self.admin = admin
  78. self.change_password = change_password
  79. self.agreed_to_terms = agreed_to_terms
  80. self.ip_whitelisted = ip_whitelisted
  81. self.hash_function_name = hash_function_name
  82. self.text = text
  83. self.extension_elements = extension_elements or []
  84. self.extension_attributes = extension_attributes or {}
  85. def LoginFromString(xml_string):
  86. return atom.CreateClassFromXMLString(Login, xml_string)
  87. class Quota(atom.AtomBase):
  88. """The Google Apps Quota element"""
  89. _tag = 'quota'
  90. _namespace = APPS_NAMESPACE
  91. _children = atom.AtomBase._children.copy()
  92. _attributes = atom.AtomBase._attributes.copy()
  93. _attributes['limit'] = 'limit'
  94. def __init__(self, limit=None, extension_elements=None,
  95. extension_attributes=None, text=None):
  96. self.limit = limit
  97. self.text = text
  98. self.extension_elements = extension_elements or []
  99. self.extension_attributes = extension_attributes or {}
  100. def QuotaFromString(xml_string):
  101. return atom.CreateClassFromXMLString(Quota, xml_string)
  102. class Name(atom.AtomBase):
  103. """The Google Apps Name element"""
  104. _tag = 'name'
  105. _namespace = APPS_NAMESPACE
  106. _children = atom.AtomBase._children.copy()
  107. _attributes = atom.AtomBase._attributes.copy()
  108. _attributes['familyName'] = 'family_name'
  109. _attributes['givenName'] = 'given_name'
  110. def __init__(self, family_name=None, given_name=None,
  111. extension_elements=None, extension_attributes=None, text=None):
  112. self.family_name = family_name
  113. self.given_name = given_name
  114. self.text = text
  115. self.extension_elements = extension_elements or []
  116. self.extension_attributes = extension_attributes or {}
  117. def NameFromString(xml_string):
  118. return atom.CreateClassFromXMLString(Name, xml_string)
  119. class Nickname(atom.AtomBase):
  120. """The Google Apps Nickname element"""
  121. _tag = 'nickname'
  122. _namespace = APPS_NAMESPACE
  123. _children = atom.AtomBase._children.copy()
  124. _attributes = atom.AtomBase._attributes.copy()
  125. _attributes['name'] = 'name'
  126. def __init__(self, name=None,
  127. extension_elements=None, extension_attributes=None, text=None):
  128. self.name = name
  129. self.text = text
  130. self.extension_elements = extension_elements or []
  131. self.extension_attributes = extension_attributes or {}
  132. def NicknameFromString(xml_string):
  133. return atom.CreateClassFromXMLString(Nickname, xml_string)
  134. class NicknameEntry(gdata.GDataEntry):
  135. """A Google Apps flavor of an Atom Entry for Nickname"""
  136. _tag = 'entry'
  137. _namespace = atom.ATOM_NAMESPACE
  138. _children = gdata.GDataEntry._children.copy()
  139. _attributes = gdata.GDataEntry._attributes.copy()
  140. _children['{%s}login' % APPS_NAMESPACE] = ('login', Login)
  141. _children['{%s}nickname' % APPS_NAMESPACE] = ('nickname', Nickname)
  142. def __init__(self, author=None, category=None, content=None,
  143. atom_id=None, link=None, published=None,
  144. title=None, updated=None,
  145. login=None, nickname=None,
  146. extended_property=None,
  147. extension_elements=None, extension_attributes=None, text=None):
  148. gdata.GDataEntry.__init__(self, author=author, category=category,
  149. content=content,
  150. atom_id=atom_id, link=link, published=published,
  151. title=title, updated=updated)
  152. self.login = login
  153. self.nickname = nickname
  154. self.extended_property = extended_property or []
  155. self.text = text
  156. self.extension_elements = extension_elements or []
  157. self.extension_attributes = extension_attributes or {}
  158. def NicknameEntryFromString(xml_string):
  159. return atom.CreateClassFromXMLString(NicknameEntry, xml_string)
  160. class NicknameFeed(gdata.GDataFeed, gdata.LinkFinder):
  161. """A Google Apps Nickname feed flavor of an Atom Feed"""
  162. _tag = 'feed'
  163. _namespace = atom.ATOM_NAMESPACE
  164. _children = gdata.GDataFeed._children.copy()
  165. _attributes = gdata.GDataFeed._attributes.copy()
  166. _children['{%s}entry' % atom.ATOM_NAMESPACE] = ('entry', [NicknameEntry])
  167. def __init__(self, author=None, category=None, contributor=None,
  168. generator=None, icon=None, atom_id=None, link=None, logo=None,
  169. rights=None, subtitle=None, title=None, updated=None,
  170. entry=None, total_results=None, start_index=None,
  171. items_per_page=None, extension_elements=None,
  172. extension_attributes=None, text=None):
  173. gdata.GDataFeed.__init__(self, author=author, category=category,
  174. contributor=contributor, generator=generator,
  175. icon=icon, atom_id=atom_id, link=link,
  176. logo=logo, rights=rights, subtitle=subtitle,
  177. title=title, updated=updated, entry=entry,
  178. total_results=total_results,
  179. start_index=start_index,
  180. items_per_page=items_per_page,
  181. extension_elements=extension_elements,
  182. extension_attributes=extension_attributes,
  183. text=text)
  184. def NicknameFeedFromString(xml_string):
  185. return atom.CreateClassFromXMLString(NicknameFeed, xml_string)
  186. class UserEntry(gdata.GDataEntry):
  187. """A Google Apps flavor of an Atom Entry"""
  188. _tag = 'entry'
  189. _namespace = atom.ATOM_NAMESPACE
  190. _children = gdata.GDataEntry._children.copy()
  191. _attributes = gdata.GDataEntry._attributes.copy()
  192. _children['{%s}login' % APPS_NAMESPACE] = ('login', Login)
  193. _children['{%s}name' % APPS_NAMESPACE] = ('name', Name)
  194. _children['{%s}quota' % APPS_NAMESPACE] = ('quota', Quota)
  195. # This child may already be defined in GDataEntry, confirm before removing.
  196. _children['{%s}feedLink' % gdata.GDATA_NAMESPACE] = ('feed_link',
  197. [gdata.FeedLink])
  198. _children['{%s}who' % gdata.GDATA_NAMESPACE] = ('who', Who)
  199. def __init__(self, author=None, category=None, content=None,
  200. atom_id=None, link=None, published=None,
  201. title=None, updated=None,
  202. login=None, name=None, quota=None, who=None, feed_link=None,
  203. extended_property=None,
  204. extension_elements=None, extension_attributes=None, text=None):
  205. gdata.GDataEntry.__init__(self, author=author, category=category,
  206. content=content,
  207. atom_id=atom_id, link=link, published=published,
  208. title=title, updated=updated)
  209. self.login = login
  210. self.name = name
  211. self.quota = quota
  212. self.who = who
  213. self.feed_link = feed_link or []
  214. self.extended_property = extended_property or []
  215. self.text = text
  216. self.extension_elements = extension_elements or []
  217. self.extension_attributes = extension_attributes or {}
  218. def UserEntryFromString(xml_string):
  219. return atom.CreateClassFromXMLString(UserEntry, xml_string)
  220. class UserFeed(gdata.GDataFeed, gdata.LinkFinder):
  221. """A Google Apps User feed flavor of an Atom Feed"""
  222. _tag = 'feed'
  223. _namespace = atom.ATOM_NAMESPACE
  224. _children = gdata.GDataFeed._children.copy()
  225. _attributes = gdata.GDataFeed._attributes.copy()
  226. _children['{%s}entry' % atom.ATOM_NAMESPACE] = ('entry', [UserEntry])
  227. def __init__(self, author=None, category=None, contributor=None,
  228. generator=None, icon=None, atom_id=None, link=None, logo=None,
  229. rights=None, subtitle=None, title=None, updated=None,
  230. entry=None, total_results=None, start_index=None,
  231. items_per_page=None, extension_elements=None,
  232. extension_attributes=None, text=None):
  233. gdata.GDataFeed.__init__(self, author=author, category=category,
  234. contributor=contributor, generator=generator,
  235. icon=icon, atom_id=atom_id, link=link,
  236. logo=logo, rights=rights, subtitle=subtitle,
  237. title=title, updated=updated, entry=entry,
  238. total_results=total_results,
  239. start_index=start_index,
  240. items_per_page=items_per_page,
  241. extension_elements=extension_elements,
  242. extension_attributes=extension_attributes,
  243. text=text)
  244. def UserFeedFromString(xml_string):
  245. return atom.CreateClassFromXMLString(UserFeed, xml_string)
  246. class EmailListEntry(gdata.GDataEntry):
  247. """A Google Apps EmailList flavor of an Atom Entry"""
  248. _tag = 'entry'
  249. _namespace = atom.ATOM_NAMESPACE
  250. _children = gdata.GDataEntry._children.copy()
  251. _attributes = gdata.GDataEntry._attributes.copy()
  252. _children['{%s}emailList' % APPS_NAMESPACE] = ('email_list', EmailList)
  253. # Might be able to remove this _children entry.
  254. _children['{%s}feedLink' % gdata.GDATA_NAMESPACE] = ('feed_link',
  255. [gdata.FeedLink])
  256. def __init__(self, author=None, category=None, content=None,
  257. atom_id=None, link=None, published=None,
  258. title=None, updated=None,
  259. email_list=None, feed_link=None,
  260. extended_property=None,
  261. extension_elements=None, extension_attributes=None, text=None):
  262. gdata.GDataEntry.__init__(self, author=author, category=category,
  263. content=content,
  264. atom_id=atom_id, link=link, published=published,
  265. title=title, updated=updated)
  266. self.email_list = email_list
  267. self.feed_link = feed_link or []
  268. self.extended_property = extended_property or []
  269. self.text = text
  270. self.extension_elements = extension_elements or []
  271. self.extension_attributes = extension_attributes or {}
  272. def EmailListEntryFromString(xml_string):
  273. return atom.CreateClassFromXMLString(EmailListEntry, xml_string)
  274. class EmailListFeed(gdata.GDataFeed, gdata.LinkFinder):
  275. """A Google Apps EmailList feed flavor of an Atom Feed"""
  276. _tag = 'feed'
  277. _namespace = atom.ATOM_NAMESPACE
  278. _children = gdata.GDataFeed._children.copy()
  279. _attributes = gdata.GDataFeed._attributes.copy()
  280. _children['{%s}entry' % atom.ATOM_NAMESPACE] = ('entry', [EmailListEntry])
  281. def __init__(self, author=None, category=None, contributor=None,
  282. generator=None, icon=None, atom_id=None, link=None, logo=None,
  283. rights=None, subtitle=None, title=None, updated=None,
  284. entry=None, total_results=None, start_index=None,
  285. items_per_page=None, extension_elements=None,
  286. extension_attributes=None, text=None):
  287. gdata.GDataFeed.__init__(self, author=author, category=category,
  288. contributor=contributor, generator=generator,
  289. icon=icon, atom_id=atom_id, link=link,
  290. logo=logo, rights=rights, subtitle=subtitle,
  291. title=title, updated=updated, entry=entry,
  292. total_results=total_results,
  293. start_index=start_index,
  294. items_per_page=items_per_page,
  295. extension_elements=extension_elements,
  296. extension_attributes=extension_attributes,
  297. text=text)
  298. def EmailListFeedFromString(xml_string):
  299. return atom.CreateClassFromXMLString(EmailListFeed, xml_string)
  300. class EmailListRecipientEntry(gdata.GDataEntry):
  301. """A Google Apps EmailListRecipient flavor of an Atom Entry"""
  302. _tag = 'entry'
  303. _namespace = atom.ATOM_NAMESPACE
  304. _children = gdata.GDataEntry._children.copy()
  305. _attributes = gdata.GDataEntry._attributes.copy()
  306. _children['{%s}who' % gdata.GDATA_NAMESPACE] = ('who', Who)
  307. def __init__(self, author=None, category=None, content=None,
  308. atom_id=None, link=None, published=None,
  309. title=None, updated=None,
  310. who=None,
  311. extended_property=None,
  312. extension_elements=None, extension_attributes=None, text=None):
  313. gdata.GDataEntry.__init__(self, author=author, category=category,
  314. content=content,
  315. atom_id=atom_id, link=link, published=published,
  316. title=title, updated=updated)
  317. self.who = who
  318. self.extended_property = extended_property or []
  319. self.text = text
  320. self.extension_elements = extension_elements or []
  321. self.extension_attributes = extension_attributes or {}
  322. def EmailListRecipientEntryFromString(xml_string):
  323. return atom.CreateClassFromXMLString(EmailListRecipientEntry, xml_string)
  324. class EmailListRecipientFeed(gdata.GDataFeed, gdata.LinkFinder):
  325. """A Google Apps EmailListRecipient feed flavor of an Atom Feed"""
  326. _tag = 'feed'
  327. _namespace = atom.ATOM_NAMESPACE
  328. _children = gdata.GDataFeed._children.copy()
  329. _attributes = gdata.GDataFeed._attributes.copy()
  330. _children['{%s}entry' % atom.ATOM_NAMESPACE] = ('entry',
  331. [EmailListRecipientEntry])
  332. def __init__(self, author=None, category=None, contributor=None,
  333. generator=None, icon=None, atom_id=None, link=None, logo=None,
  334. rights=None, subtitle=None, title=None, updated=None,
  335. entry=None, total_results=None, start_index=None,
  336. items_per_page=None, extension_elements=None,
  337. extension_attributes=None, text=None):
  338. gdata.GDataFeed.__init__(self, author=author, category=category,
  339. contributor=contributor, generator=generator,
  340. icon=icon, atom_id=atom_id, link=link,
  341. logo=logo, rights=rights, subtitle=subtitle,
  342. title=title, updated=updated, entry=entry,
  343. total_results=total_results,
  344. start_index=start_index,
  345. items_per_page=items_per_page,
  346. extension_elements=extension_elements,
  347. extension_attributes=extension_attributes,
  348. text=text)
  349. def EmailListRecipientFeedFromString(xml_string):
  350. return atom.CreateClassFromXMLString(EmailListRecipientFeed, xml_string)
  351. class Property(atom.AtomBase):
  352. """The Google Apps Property element"""
  353. _tag = 'property'
  354. _namespace = APPS_NAMESPACE
  355. _children = atom.AtomBase._children.copy()
  356. _attributes = atom.AtomBase._attributes.copy()
  357. _attributes['name'] = 'name'
  358. _attributes['value'] = 'value'
  359. def __init__(self, name=None, value=None, extension_elements=None,
  360. extension_attributes=None, text=None):
  361. self.name = name
  362. self.value = value
  363. self.text = text
  364. self.extension_elements = extension_elements or []
  365. self.extension_attributes = extension_attributes or {}
  366. def PropertyFromString(xml_string):
  367. return atom.CreateClassFromXMLString(Property, xml_string)
  368. class PropertyEntry(gdata.GDataEntry):
  369. """A Google Apps Property flavor of an Atom Entry"""
  370. _tag = 'entry'
  371. _namespace = atom.ATOM_NAMESPACE
  372. _children = gdata.GDataEntry._children.copy()
  373. _attributes = gdata.GDataEntry._attributes.copy()
  374. _children['{%s}property' % APPS_NAMESPACE] = ('property', [Property])
  375. def __init__(self, author=None, category=None, content=None,
  376. atom_id=None, link=None, published=None,
  377. title=None, updated=None,
  378. property=None,
  379. extended_property=None,
  380. extension_elements=None, extension_attributes=None, text=None):
  381. gdata.GDataEntry.__init__(self, author=author, category=category,
  382. content=content,
  383. atom_id=atom_id, link=link, published=published,
  384. title=title, updated=updated)
  385. self.property = property
  386. self.extended_property = extended_property or []
  387. self.text = text
  388. self.extension_elements = extension_elements or []
  389. self.extension_attributes = extension_attributes or {}
  390. def PropertyEntryFromString(xml_string):
  391. return atom.CreateClassFromXMLString(PropertyEntry, xml_string)
  392. class PropertyFeed(gdata.GDataFeed, gdata.LinkFinder):
  393. """A Google Apps Property feed flavor of an Atom Feed"""
  394. _tag = 'feed'
  395. _namespace = atom.ATOM_NAMESPACE
  396. _children = gdata.GDataFeed._children.copy()
  397. _attributes = gdata.GDataFeed._attributes.copy()
  398. _children['{%s}entry' % atom.ATOM_NAMESPACE] = ('entry', [PropertyEntry])
  399. def __init__(self, author=None, category=None, contributor=None,
  400. generator=None, icon=None, atom_id=None, link=None, logo=None,
  401. rights=None, subtitle=None, title=None, updated=None,
  402. entry=None, total_results=None, start_index=None,
  403. items_per_page=None, extension_elements=None,
  404. extension_attributes=None, text=None):
  405. gdata.GDataFeed.__init__(self, author=author, category=category,
  406. contributor=contributor, generator=generator,
  407. icon=icon, atom_id=atom_id, link=link,
  408. logo=logo, rights=rights, subtitle=subtitle,
  409. title=title, updated=updated, entry=entry,
  410. total_results=total_results,
  411. start_index=start_index,
  412. items_per_page=items_per_page,
  413. extension_elements=extension_elements,
  414. extension_attributes=extension_attributes,
  415. text=text)
  416. def PropertyFeedFromString(xml_string):
  417. return atom.CreateClassFromXMLString(PropertyFeed, xml_string)