blob: d79e342d1a2b530da5c1fbeabdbae27f4bc2eb53 [file] [log] [blame]
Joe Gregorio6e537032011-02-09 23:04:26 -05001
2<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
3<html><head><title>Python: module oauth2client.appengine</title>
4</head><body bgcolor="#f0f0f8">
5
6<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
7<tr bgcolor="#7799ee">
8<td valign=bottom>&nbsp;<br>
9<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="oauth2client.html"><font color="#ffffff">oauth2client</font></a>.appengine</strong></big></big></font></td
10><td align=right valign=bottom
Joe Gregorio66212032012-06-14 09:10:14 -040011><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/home/jcgregorio/projects/clean/oauth2client/appengine.py">/home/jcgregorio/projects/clean/oauth2client/appengine.py</a></font></td></tr></table>
Joe Gregorio6e537032011-02-09 23:04:26 -050012 <p><tt>Utilities&nbsp;for&nbsp;Google&nbsp;App&nbsp;Engine<br>
13&nbsp;<br>
Joe Gregorio3b79fa82011-02-17 11:47:17 -050014Utilities&nbsp;for&nbsp;making&nbsp;it&nbsp;easier&nbsp;to&nbsp;use&nbsp;OAuth&nbsp;2.0&nbsp;on&nbsp;Google&nbsp;App&nbsp;Engine.</tt></p>
Joe Gregorio6e537032011-02-09 23:04:26 -050015<p>
16<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
17<tr bgcolor="#aa55cc">
18<td colspan=3 valign=bottom>&nbsp;<br>
19<font color="#ffffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
20
21<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
Joe Gregorio6121dd92012-04-13 07:50:04 -040022<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="google.appengine.api.app_identity.html">google.appengine.api.app_identity</a><br>
Joe Gregorio90e7ec22011-07-06 10:09:20 -040023<a href="base64.html">base64</a><br>
Joe Gregoriob417caf2011-12-08 12:04:24 -050024<a href="oauth2client.clientsecrets.html">oauth2client.clientsecrets</a><br>
25</td><td width="25%" valign=top><a href="google.appengine.ext.db.html">google.appengine.ext.db</a><br>
26<a href="httplib2.html">httplib2</a><br>
27<a href="logging.html">logging</a><br>
28</td><td width="25%" valign=top><a href="google.appengine.api.memcache.html">google.appengine.api.memcache</a><br>
Joe Gregorioa8451672011-09-15 09:53:21 -040029<a href="pickle.html">pickle</a><br>
Joe Gregorio3d55ac52012-02-21 10:11:19 -050030<a href="json.html">json</a><br>
Joe Gregoriob417caf2011-12-08 12:04:24 -050031</td><td width="25%" valign=top><a href="time.html">time</a><br>
Joe Gregorioa8451672011-09-15 09:53:21 -040032<a href="google.appengine.api.users.html">google.appengine.api.users</a><br>
Joe Gregoriob417caf2011-12-08 12:04:24 -050033<a href="google.appengine.ext.webapp.html">google.appengine.ext.webapp</a><br>
Joe Gregorio90e7ec22011-07-06 10:09:20 -040034</td></tr></table></td></tr></table><p>
Joe Gregorio6e537032011-02-09 23:04:26 -050035<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
36<tr bgcolor="#ee77aa">
37<td colspan=3 valign=bottom>&nbsp;<br>
38<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
39
40<tr><td bgcolor="#ee77aa"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
41<td width="100%"><dl>
Joe Gregorio90e7ec22011-07-06 10:09:20 -040042<dt><font face="helvetica, arial"><a href="__builtin__.html#object">__builtin__.object</a>
43</font></dt><dd>
44<dl>
45<dt><font face="helvetica, arial"><a href="oauth2client.appengine.html#OAuth2Decorator">OAuth2Decorator</a>
Joe Gregoriob417caf2011-12-08 12:04:24 -050046</font></dt><dd>
47<dl>
48<dt><font face="helvetica, arial"><a href="oauth2client.appengine.html#OAuth2DecoratorFromClientSecrets">OAuth2DecoratorFromClientSecrets</a>
49</font></dt></dl>
50</dd>
51</dl>
52</dd>
53<dt><font face="helvetica, arial"><a href="exceptions.html#Exception">exceptions.Exception</a>(<a href="exceptions.html#BaseException">exceptions.BaseException</a>)
54</font></dt><dd>
55<dl>
56<dt><font face="helvetica, arial"><a href="oauth2client.appengine.html#InvalidClientSecretsError">InvalidClientSecretsError</a>
Joe Gregorio90e7ec22011-07-06 10:09:20 -040057</font></dt></dl>
58</dd>
59<dt><font face="helvetica, arial"><a href="google.appengine.ext.db.html#Model">google.appengine.ext.db.Model</a>(<a href="__builtin__.html#object">__builtin__.object</a>)
60</font></dt><dd>
61<dl>
62<dt><font face="helvetica, arial"><a href="oauth2client.appengine.html#CredentialsModel">CredentialsModel</a>
63</font></dt></dl>
64</dd>
Joe Gregorio6e537032011-02-09 23:04:26 -050065<dt><font face="helvetica, arial"><a href="google.appengine.ext.db.html#Property">google.appengine.ext.db.Property</a>(<a href="__builtin__.html#object">__builtin__.object</a>)
66</font></dt><dd>
67<dl>
68<dt><font face="helvetica, arial"><a href="oauth2client.appengine.html#CredentialsProperty">CredentialsProperty</a>
69</font></dt><dt><font face="helvetica, arial"><a href="oauth2client.appengine.html#FlowProperty">FlowProperty</a>
70</font></dt></dl>
71</dd>
Joe Gregorio6121dd92012-04-13 07:50:04 -040072<dt><font face="helvetica, arial"><a href="google.appengine.ext.webapp._webapp25.html#RequestHandler">google.appengine.ext.webapp._webapp25.RequestHandler</a>(<a href="__builtin__.html#object">__builtin__.object</a>)
Joe Gregorio90e7ec22011-07-06 10:09:20 -040073</font></dt><dd>
74<dl>
75<dt><font face="helvetica, arial"><a href="oauth2client.appengine.html#OAuth2Handler">OAuth2Handler</a>
76</font></dt></dl>
77</dd>
78<dt><font face="helvetica, arial"><a href="oauth2client.client.html#AssertionCredentials">oauth2client.client.AssertionCredentials</a>(<a href="oauth2client.client.html#OAuth2Credentials">oauth2client.client.OAuth2Credentials</a>)
79</font></dt><dd>
80<dl>
81<dt><font face="helvetica, arial"><a href="oauth2client.appengine.html#AppAssertionCredentials">AppAssertionCredentials</a>
82</font></dt></dl>
83</dd>
Joe Gregorio3b79fa82011-02-17 11:47:17 -050084<dt><font face="helvetica, arial"><a href="oauth2client.client.html#Storage">oauth2client.client.Storage</a>(<a href="__builtin__.html#object">__builtin__.object</a>)
85</font></dt><dd>
86<dl>
87<dt><font face="helvetica, arial"><a href="oauth2client.appengine.html#StorageByKeyName">StorageByKeyName</a>
88</font></dt></dl>
89</dd>
Joe Gregorio6e537032011-02-09 23:04:26 -050090</dl>
91 <p>
92<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
93<tr bgcolor="#ffc8d8">
94<td colspan=3 valign=bottom>&nbsp;<br>
Joe Gregorio90e7ec22011-07-06 10:09:20 -040095<font color="#000000" face="helvetica, arial"><a name="AppAssertionCredentials">class <strong>AppAssertionCredentials</strong></a>(<a href="oauth2client.client.html#AssertionCredentials">oauth2client.client.AssertionCredentials</a>)</font></td></tr>
96
97<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
98<td colspan=2><tt>Credentials&nbsp;<a href="__builtin__.html#object">object</a>&nbsp;for&nbsp;App&nbsp;Engine&nbsp;Assertion&nbsp;Grants<br>
99&nbsp;<br>
100This&nbsp;<a href="__builtin__.html#object">object</a>&nbsp;will&nbsp;allow&nbsp;an&nbsp;App&nbsp;Engine&nbsp;application&nbsp;to&nbsp;identify&nbsp;itself&nbsp;to&nbsp;Google<br>
101and&nbsp;other&nbsp;OAuth&nbsp;2.0&nbsp;servers&nbsp;that&nbsp;can&nbsp;verify&nbsp;assertions.&nbsp;It&nbsp;can&nbsp;be&nbsp;used&nbsp;for<br>
102the&nbsp;purpose&nbsp;of&nbsp;accessing&nbsp;data&nbsp;stored&nbsp;under&nbsp;an&nbsp;account&nbsp;assigned&nbsp;to&nbsp;the&nbsp;App<br>
Joe Gregorio6121dd92012-04-13 07:50:04 -0400103Engine&nbsp;application&nbsp;itself.<br>
Joe Gregorio90e7ec22011-07-06 10:09:20 -0400104&nbsp;<br>
105This&nbsp;credential&nbsp;does&nbsp;not&nbsp;require&nbsp;a&nbsp;flow&nbsp;to&nbsp;instantiate&nbsp;because&nbsp;it&nbsp;represents<br>
106a&nbsp;two&nbsp;legged&nbsp;flow,&nbsp;and&nbsp;therefore&nbsp;has&nbsp;all&nbsp;of&nbsp;the&nbsp;required&nbsp;information&nbsp;to<br>
Joe Gregoriob417caf2011-12-08 12:04:24 -0500107generate&nbsp;and&nbsp;refresh&nbsp;its&nbsp;own&nbsp;access&nbsp;tokens.<br>&nbsp;</tt></td></tr>
Joe Gregorio90e7ec22011-07-06 10:09:20 -0400108<tr><td>&nbsp;</td>
109<td width="100%"><dl><dt>Method resolution order:</dt>
110<dd><a href="oauth2client.appengine.html#AppAssertionCredentials">AppAssertionCredentials</a></dd>
111<dd><a href="oauth2client.client.html#AssertionCredentials">oauth2client.client.AssertionCredentials</a></dd>
112<dd><a href="oauth2client.client.html#OAuth2Credentials">oauth2client.client.OAuth2Credentials</a></dd>
113<dd><a href="oauth2client.client.html#Credentials">oauth2client.client.Credentials</a></dd>
114<dd><a href="__builtin__.html#object">__builtin__.object</a></dd>
115</dl>
116<hr>
117Methods defined here:<br>
Joe Gregorio6121dd92012-04-13 07:50:04 -0400118<dl><dt><a name="AppAssertionCredentials-__init__"><strong>__init__</strong></a>(self, scope, **kwargs)</dt><dd><tt>Constructor&nbsp;for&nbsp;<a href="#AppAssertionCredentials">AppAssertionCredentials</a><br>
Joe Gregorio90e7ec22011-07-06 10:09:20 -0400119&nbsp;<br>
120Args:<br>
Joe Gregorio6121dd92012-04-13 07:50:04 -0400121&nbsp;&nbsp;scope:&nbsp;string&nbsp;or&nbsp;list&nbsp;of&nbsp;strings,&nbsp;scope(s)&nbsp;of&nbsp;the&nbsp;credentials&nbsp;being&nbsp;requested.</tt></dd></dl>
Joe Gregorio90e7ec22011-07-06 10:09:20 -0400122
123<hr>
Joe Gregorioa8451672011-09-15 09:53:21 -0400124Class methods defined here:<br>
125<dl><dt><a name="AppAssertionCredentials-from_json"><strong>from_json</strong></a>(cls, json)<font color="#909090"><font face="helvetica, arial"> from <a href="__builtin__.html#type">__builtin__.type</a></font></font></dt></dl>
126
127<hr>
Joe Gregorio90e7ec22011-07-06 10:09:20 -0400128Methods inherited from <a href="oauth2client.client.html#OAuth2Credentials">oauth2client.client.OAuth2Credentials</a>:<br>
129<dl><dt><a name="AppAssertionCredentials-__getstate__"><strong>__getstate__</strong></a>(self)</dt><dd><tt>Trim&nbsp;the&nbsp;state&nbsp;down&nbsp;to&nbsp;something&nbsp;that&nbsp;can&nbsp;be&nbsp;pickled.</tt></dd></dl>
130
131<dl><dt><a name="AppAssertionCredentials-__setstate__"><strong>__setstate__</strong></a>(self, state)</dt><dd><tt>Reconstitute&nbsp;the&nbsp;state&nbsp;of&nbsp;the&nbsp;<a href="__builtin__.html#object">object</a>&nbsp;from&nbsp;being&nbsp;pickled.</tt></dd></dl>
132
Joe Gregorio3d55ac52012-02-21 10:11:19 -0500133<dl><dt><a name="AppAssertionCredentials-apply"><strong>apply</strong></a>(self, headers)</dt><dd><tt>Add&nbsp;the&nbsp;authorization&nbsp;to&nbsp;the&nbsp;headers.<br>
134&nbsp;<br>
135Args:<br>
136&nbsp;&nbsp;headers:&nbsp;dict,&nbsp;the&nbsp;headers&nbsp;to&nbsp;add&nbsp;the&nbsp;Authorization&nbsp;header&nbsp;to.</tt></dd></dl>
137
Joe Gregorio90e7ec22011-07-06 10:09:20 -0400138<dl><dt><a name="AppAssertionCredentials-authorize"><strong>authorize</strong></a>(self, http)</dt><dd><tt>Authorize&nbsp;an&nbsp;httplib2.Http&nbsp;instance&nbsp;with&nbsp;these&nbsp;credentials.<br>
139&nbsp;<br>
Joe Gregorio3d55ac52012-02-21 10:11:19 -0500140The&nbsp;modified&nbsp;http.request&nbsp;method&nbsp;will&nbsp;add&nbsp;authentication&nbsp;headers&nbsp;to&nbsp;each<br>
141request&nbsp;and&nbsp;will&nbsp;refresh&nbsp;access_tokens&nbsp;when&nbsp;a&nbsp;401&nbsp;is&nbsp;received&nbsp;on&nbsp;a<br>
142request.&nbsp;In&nbsp;addition&nbsp;the&nbsp;http.request&nbsp;method&nbsp;has&nbsp;a&nbsp;credentials&nbsp;property,<br>
143http.request.credentials,&nbsp;which&nbsp;is&nbsp;the&nbsp;Credentials&nbsp;<a href="__builtin__.html#object">object</a>&nbsp;that&nbsp;authorized<br>
144it.<br>
145&nbsp;<br>
Joe Gregorio90e7ec22011-07-06 10:09:20 -0400146Args:<br>
147&nbsp;&nbsp;&nbsp;http:&nbsp;An&nbsp;instance&nbsp;of&nbsp;httplib2.Http<br>
148&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or&nbsp;something&nbsp;that&nbsp;acts&nbsp;like&nbsp;it.<br>
149&nbsp;<br>
150Returns:<br>
151&nbsp;&nbsp;&nbsp;A&nbsp;modified&nbsp;instance&nbsp;of&nbsp;http&nbsp;that&nbsp;was&nbsp;passed&nbsp;in.<br>
152&nbsp;<br>
153Example:<br>
154&nbsp;<br>
155&nbsp;&nbsp;h&nbsp;=&nbsp;httplib2.Http()<br>
156&nbsp;&nbsp;h&nbsp;=&nbsp;credentials.<a href="#AppAssertionCredentials-authorize">authorize</a>(h)<br>
157&nbsp;<br>
Joe Gregorioa8451672011-09-15 09:53:21 -0400158You&nbsp;can't&nbsp;create&nbsp;a&nbsp;new&nbsp;OAuth&nbsp;subclass&nbsp;of&nbsp;httplib2.Authenication<br>
159because&nbsp;it&nbsp;never&nbsp;gets&nbsp;passed&nbsp;the&nbsp;absolute&nbsp;URI,&nbsp;which&nbsp;is&nbsp;needed&nbsp;for<br>
160signing.&nbsp;So&nbsp;instead&nbsp;we&nbsp;have&nbsp;to&nbsp;overload&nbsp;'request'&nbsp;with&nbsp;a&nbsp;closure<br>
161that&nbsp;adds&nbsp;in&nbsp;the&nbsp;Authorization&nbsp;header&nbsp;and&nbsp;then&nbsp;calls&nbsp;the&nbsp;original<br>
162version&nbsp;of&nbsp;'request()'.</tt></dd></dl>
Joe Gregorio90e7ec22011-07-06 10:09:20 -0400163
Joe Gregorio3d55ac52012-02-21 10:11:19 -0500164<dl><dt><a name="AppAssertionCredentials-refresh"><strong>refresh</strong></a>(self, http)</dt><dd><tt>Forces&nbsp;a&nbsp;refresh&nbsp;of&nbsp;the&nbsp;access_token.<br>
165&nbsp;<br>
166Args:<br>
167&nbsp;&nbsp;http:&nbsp;httplib2.Http,&nbsp;an&nbsp;http&nbsp;<a href="__builtin__.html#object">object</a>&nbsp;to&nbsp;be&nbsp;used&nbsp;to&nbsp;make&nbsp;the&nbsp;refresh<br>
168&nbsp;&nbsp;&nbsp;&nbsp;request.</tt></dd></dl>
169
Joe Gregorioa8451672011-09-15 09:53:21 -0400170<dl><dt><a name="AppAssertionCredentials-set_store"><strong>set_store</strong></a>(self, store)</dt><dd><tt>Set&nbsp;the&nbsp;<a href="oauth2client.client.html#Storage">Storage</a>&nbsp;for&nbsp;the&nbsp;credential.<br>
Joe Gregorio90e7ec22011-07-06 10:09:20 -0400171&nbsp;<br>
172Args:<br>
Joe Gregorioa8451672011-09-15 09:53:21 -0400173&nbsp;&nbsp;store:&nbsp;<a href="oauth2client.client.html#Storage">Storage</a>,&nbsp;an&nbsp;implementation&nbsp;of&nbsp;Stroage&nbsp;<a href="__builtin__.html#object">object</a>.<br>
Joe Gregorio90e7ec22011-07-06 10:09:20 -0400174&nbsp;&nbsp;&nbsp;&nbsp;This&nbsp;is&nbsp;needed&nbsp;to&nbsp;store&nbsp;the&nbsp;latest&nbsp;access_token&nbsp;if&nbsp;it<br>
Joe Gregorioa8451672011-09-15 09:53:21 -0400175&nbsp;&nbsp;&nbsp;&nbsp;has&nbsp;expired&nbsp;and&nbsp;been&nbsp;refreshed.&nbsp;&nbsp;This&nbsp;implementation&nbsp;uses<br>
176&nbsp;&nbsp;&nbsp;&nbsp;locking&nbsp;to&nbsp;check&nbsp;for&nbsp;updates&nbsp;before&nbsp;updating&nbsp;the<br>
177&nbsp;&nbsp;&nbsp;&nbsp;access_token.</tt></dd></dl>
178
179<dl><dt><a name="AppAssertionCredentials-to_json"><strong>to_json</strong></a>(self)</dt></dl>
Joe Gregorio90e7ec22011-07-06 10:09:20 -0400180
181<hr>
182Data descriptors inherited from <a href="oauth2client.client.html#OAuth2Credentials">oauth2client.client.OAuth2Credentials</a>:<br>
Joe Gregorioa8451672011-09-15 09:53:21 -0400183<dl><dt><strong>access_token_expired</strong></dt>
184<dd><tt>True&nbsp;if&nbsp;the&nbsp;credential&nbsp;is&nbsp;expired&nbsp;or&nbsp;invalid.<br>
185&nbsp;<br>
186If&nbsp;the&nbsp;token_expiry&nbsp;isn't&nbsp;set,&nbsp;we&nbsp;assume&nbsp;the&nbsp;token&nbsp;doesn't&nbsp;expire.</tt></dd>
Joe Gregorio90e7ec22011-07-06 10:09:20 -0400187</dl>
188<hr>
Joe Gregorioa8451672011-09-15 09:53:21 -0400189Class methods inherited from <a href="oauth2client.client.html#Credentials">oauth2client.client.Credentials</a>:<br>
190<dl><dt><a name="AppAssertionCredentials-new_from_json"><strong>new_from_json</strong></a>(cls, s)<font color="#909090"><font face="helvetica, arial"> from <a href="__builtin__.html#type">__builtin__.type</a></font></font></dt><dd><tt>Utility&nbsp;class&nbsp;method&nbsp;to&nbsp;instantiate&nbsp;a&nbsp;Credentials&nbsp;subclass&nbsp;from&nbsp;a&nbsp;JSON<br>
191representation&nbsp;produced&nbsp;by&nbsp;<a href="#AppAssertionCredentials-to_json">to_json</a>().<br>
192&nbsp;<br>
193Args:<br>
194&nbsp;&nbsp;s:&nbsp;string,&nbsp;JSON&nbsp;from&nbsp;<a href="#AppAssertionCredentials-to_json">to_json</a>().<br>
195&nbsp;<br>
196Returns:<br>
197&nbsp;&nbsp;An&nbsp;instance&nbsp;of&nbsp;the&nbsp;subclass&nbsp;of&nbsp;Credentials&nbsp;that&nbsp;was&nbsp;serialized&nbsp;with<br>
198&nbsp;&nbsp;<a href="#AppAssertionCredentials-to_json">to_json</a>().</tt></dd></dl>
199
200<hr>
Joe Gregorio90e7ec22011-07-06 10:09:20 -0400201Data descriptors inherited from <a href="oauth2client.client.html#Credentials">oauth2client.client.Credentials</a>:<br>
202<dl><dt><strong>__dict__</strong></dt>
203<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
204</dl>
205<dl><dt><strong>__weakref__</strong></dt>
206<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
207</dl>
Joe Gregorioa8451672011-09-15 09:53:21 -0400208<hr>
209Data and other attributes inherited from <a href="oauth2client.client.html#Credentials">oauth2client.client.Credentials</a>:<br>
210<dl><dt><strong>NON_SERIALIZED_MEMBERS</strong> = ['store']</dl>
211
Joe Gregorio90e7ec22011-07-06 10:09:20 -0400212</td></tr></table> <p>
213<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
214<tr bgcolor="#ffc8d8">
215<td colspan=3 valign=bottom>&nbsp;<br>
216<font color="#000000" face="helvetica, arial"><a name="CredentialsModel">class <strong>CredentialsModel</strong></a>(<a href="google.appengine.ext.db.html#Model">google.appengine.ext.db.Model</a>)</font></td></tr>
217
218<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
219<td colspan=2><tt><a href="oauth2client.client.html#Storage">Storage</a>&nbsp;for&nbsp;OAuth&nbsp;2.0&nbsp;Credentials<br>
220&nbsp;<br>
221<a href="oauth2client.client.html#Storage">Storage</a>&nbsp;of&nbsp;the&nbsp;model&nbsp;is&nbsp;keyed&nbsp;by&nbsp;the&nbsp;user.user_id().<br>&nbsp;</tt></td></tr>
222<tr><td>&nbsp;</td>
223<td width="100%"><dl><dt>Method resolution order:</dt>
224<dd><a href="oauth2client.appengine.html#CredentialsModel">CredentialsModel</a></dd>
225<dd><a href="google.appengine.ext.db.html#Model">google.appengine.ext.db.Model</a></dd>
226<dd><a href="__builtin__.html#object">__builtin__.object</a></dd>
227</dl>
228<hr>
229Data descriptors defined here:<br>
230<dl><dt><strong>credentials</strong></dt>
231<dd><tt>App&nbsp;Engine&nbsp;datastore&nbsp;Property&nbsp;for&nbsp;Credentials.<br>
232&nbsp;<br>
233Utility&nbsp;property&nbsp;that&nbsp;allows&nbsp;easy&nbsp;storage&nbsp;and&nbsp;retrieval&nbsp;of<br>
234oath2client.Credentials</tt></dd>
235</dl>
236<hr>
237Methods inherited from <a href="google.appengine.ext.db.html#Model">google.appengine.ext.db.Model</a>:<br>
238<dl><dt><a name="CredentialsModel-__init__"><strong>__init__</strong></a>(self, parent<font color="#909090">=None</font>, key_name<font color="#909090">=None</font>, _app<font color="#909090">=None</font>, _from_entity<font color="#909090">=False</font>, **kwds)</dt><dd><tt>Creates&nbsp;a&nbsp;new&nbsp;instance&nbsp;of&nbsp;this&nbsp;model.<br>
239&nbsp;<br>
240To&nbsp;create&nbsp;a&nbsp;new&nbsp;entity,&nbsp;you&nbsp;instantiate&nbsp;a&nbsp;model&nbsp;and&nbsp;then&nbsp;call&nbsp;<a href="#CredentialsModel-put">put</a>(),<br>
241which&nbsp;saves&nbsp;the&nbsp;entity&nbsp;to&nbsp;the&nbsp;datastore:<br>
242&nbsp;<br>
243&nbsp;&nbsp;&nbsp;person&nbsp;=&nbsp;Person()<br>
244&nbsp;&nbsp;&nbsp;person.name&nbsp;=&nbsp;'Bret'<br>
245&nbsp;&nbsp;&nbsp;person.<a href="#CredentialsModel-put">put</a>()<br>
246&nbsp;<br>
247You&nbsp;can&nbsp;initialize&nbsp;properties&nbsp;in&nbsp;the&nbsp;model&nbsp;in&nbsp;the&nbsp;constructor&nbsp;with&nbsp;keyword<br>
248arguments:<br>
249&nbsp;<br>
250&nbsp;&nbsp;&nbsp;person&nbsp;=&nbsp;Person(name='Bret')<br>
251&nbsp;<br>
252We&nbsp;initialize&nbsp;all&nbsp;other&nbsp;properties&nbsp;to&nbsp;the&nbsp;default&nbsp;value&nbsp;(as&nbsp;defined&nbsp;by&nbsp;the<br>
253properties&nbsp;in&nbsp;the&nbsp;model&nbsp;definition)&nbsp;if&nbsp;they&nbsp;are&nbsp;not&nbsp;provided&nbsp;in&nbsp;the<br>
254constructor.<br>
255&nbsp;<br>
256Args:<br>
257&nbsp;&nbsp;parent:&nbsp;Parent&nbsp;instance&nbsp;for&nbsp;this&nbsp;instance&nbsp;or&nbsp;None,&nbsp;indicating&nbsp;a&nbsp;top-<br>
258&nbsp;&nbsp;&nbsp;&nbsp;level&nbsp;instance.<br>
259&nbsp;&nbsp;key_name:&nbsp;Name&nbsp;for&nbsp;new&nbsp;model&nbsp;instance.<br>
260&nbsp;&nbsp;_from_entity:&nbsp;Intentionally&nbsp;undocumented.<br>
261&nbsp;&nbsp;kwds:&nbsp;Keyword&nbsp;arguments&nbsp;mapping&nbsp;to&nbsp;properties&nbsp;of&nbsp;model.&nbsp;&nbsp;Also:<br>
262&nbsp;&nbsp;&nbsp;&nbsp;key:&nbsp;Key&nbsp;instance&nbsp;for&nbsp;this&nbsp;instance,&nbsp;if&nbsp;provided&nbsp;makes&nbsp;parent&nbsp;and<br>
263&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key_name&nbsp;redundant&nbsp;(they&nbsp;do&nbsp;not&nbsp;need&nbsp;to&nbsp;be&nbsp;set&nbsp;but&nbsp;if&nbsp;they&nbsp;are<br>
264&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;they&nbsp;must&nbsp;match&nbsp;the&nbsp;key).</tt></dd></dl>
265
266<dl><dt><a name="CredentialsModel-delete"><strong>delete</strong></a>(self, **kwargs)</dt><dd><tt>Deletes&nbsp;this&nbsp;entity&nbsp;from&nbsp;the&nbsp;datastore.<br>
267&nbsp;<br>
268Args:<br>
269&nbsp;&nbsp;config:&nbsp;datastore_rpc.Configuration&nbsp;to&nbsp;use&nbsp;for&nbsp;this&nbsp;request.<br>
270&nbsp;<br>
271Raises:<br>
272&nbsp;&nbsp;TransactionFailedError&nbsp;if&nbsp;the&nbsp;data&nbsp;could&nbsp;not&nbsp;be&nbsp;committed.</tt></dd></dl>
273
274<dl><dt><a name="CredentialsModel-dynamic_properties"><strong>dynamic_properties</strong></a>(self)</dt><dd><tt>Returns&nbsp;a&nbsp;list&nbsp;of&nbsp;all&nbsp;dynamic&nbsp;properties&nbsp;defined&nbsp;for&nbsp;instance.</tt></dd></dl>
275
276<dl><dt><a name="CredentialsModel-has_key"><strong>has_key</strong></a>(self)</dt><dd><tt>Determine&nbsp;if&nbsp;this&nbsp;model&nbsp;instance&nbsp;has&nbsp;a&nbsp;complete&nbsp;key.<br>
277&nbsp;<br>
278When&nbsp;not&nbsp;using&nbsp;a&nbsp;fully&nbsp;self-assigned&nbsp;Key,&nbsp;ids&nbsp;are&nbsp;not&nbsp;assigned&nbsp;until&nbsp;the<br>
279data&nbsp;is&nbsp;saved&nbsp;to&nbsp;the&nbsp;Datastore,&nbsp;but&nbsp;instances&nbsp;with&nbsp;a&nbsp;key&nbsp;name&nbsp;always&nbsp;have<br>
280a&nbsp;full&nbsp;key.<br>
281&nbsp;<br>
282Returns:<br>
283&nbsp;&nbsp;True&nbsp;if&nbsp;the&nbsp;<a href="__builtin__.html#object">object</a>&nbsp;has&nbsp;been&nbsp;persisted&nbsp;to&nbsp;the&nbsp;datastore&nbsp;or&nbsp;has&nbsp;a&nbsp;key<br>
284&nbsp;&nbsp;or&nbsp;has&nbsp;a&nbsp;key_name,&nbsp;otherwise&nbsp;False.</tt></dd></dl>
285
286<dl><dt><a name="CredentialsModel-instance_properties"><strong>instance_properties</strong></a>(self)</dt><dd><tt>Alias&nbsp;for&nbsp;dyanmic_properties.</tt></dd></dl>
287
288<dl><dt><a name="CredentialsModel-is_saved"><strong>is_saved</strong></a>(self)</dt><dd><tt>Determine&nbsp;if&nbsp;entity&nbsp;is&nbsp;persisted&nbsp;in&nbsp;the&nbsp;datastore.<br>
289&nbsp;<br>
290New&nbsp;instances&nbsp;of&nbsp;<a href="google.appengine.ext.db.html#Model">Model</a>&nbsp;do&nbsp;not&nbsp;start&nbsp;out&nbsp;saved&nbsp;in&nbsp;the&nbsp;data.&nbsp;&nbsp;Objects&nbsp;which<br>
291are&nbsp;saved&nbsp;to&nbsp;or&nbsp;loaded&nbsp;from&nbsp;the&nbsp;Datastore&nbsp;will&nbsp;have&nbsp;a&nbsp;True&nbsp;saved&nbsp;state.<br>
292&nbsp;<br>
293Returns:<br>
294&nbsp;&nbsp;True&nbsp;if&nbsp;<a href="__builtin__.html#object">object</a>&nbsp;has&nbsp;been&nbsp;persisted&nbsp;to&nbsp;the&nbsp;datastore,&nbsp;otherwise&nbsp;False.</tt></dd></dl>
295
296<dl><dt><a name="CredentialsModel-key"><strong>key</strong></a>(self)</dt><dd><tt>Unique&nbsp;key&nbsp;for&nbsp;this&nbsp;entity.<br>
297&nbsp;<br>
298This&nbsp;property&nbsp;is&nbsp;only&nbsp;available&nbsp;if&nbsp;this&nbsp;entity&nbsp;is&nbsp;already&nbsp;stored&nbsp;in&nbsp;the<br>
299datastore&nbsp;or&nbsp;if&nbsp;it&nbsp;has&nbsp;a&nbsp;full&nbsp;key,&nbsp;so&nbsp;it&nbsp;is&nbsp;available&nbsp;if&nbsp;this&nbsp;entity&nbsp;was<br>
300fetched&nbsp;returned&nbsp;from&nbsp;a&nbsp;query,&nbsp;or&nbsp;after&nbsp;<a href="#CredentialsModel-put">put</a>()&nbsp;is&nbsp;called&nbsp;the&nbsp;first&nbsp;time<br>
301for&nbsp;new&nbsp;entities,&nbsp;or&nbsp;if&nbsp;a&nbsp;complete&nbsp;key&nbsp;was&nbsp;given&nbsp;when&nbsp;constructed.<br>
302&nbsp;<br>
303Returns:<br>
304&nbsp;&nbsp;Datastore&nbsp;key&nbsp;of&nbsp;persisted&nbsp;entity.<br>
305&nbsp;<br>
306Raises:<br>
307&nbsp;&nbsp;NotSavedError&nbsp;when&nbsp;entity&nbsp;is&nbsp;not&nbsp;persistent.</tt></dd></dl>
308
309<dl><dt><a name="CredentialsModel-parent"><strong>parent</strong></a>(self)</dt><dd><tt>Get&nbsp;the&nbsp;parent&nbsp;of&nbsp;the&nbsp;model&nbsp;instance.<br>
310&nbsp;<br>
311Returns:<br>
312&nbsp;&nbsp;Parent&nbsp;of&nbsp;contained&nbsp;entity&nbsp;or&nbsp;parent&nbsp;provided&nbsp;in&nbsp;constructor,&nbsp;None&nbsp;if<br>
313&nbsp;&nbsp;instance&nbsp;has&nbsp;no&nbsp;parent.</tt></dd></dl>
314
315<dl><dt><a name="CredentialsModel-parent_key"><strong>parent_key</strong></a>(self)</dt><dd><tt>Get&nbsp;the&nbsp;parent's&nbsp;key.<br>
316&nbsp;<br>
317This&nbsp;method&nbsp;is&nbsp;useful&nbsp;for&nbsp;avoiding&nbsp;a&nbsp;potential&nbsp;fetch&nbsp;from&nbsp;the&nbsp;datastore<br>
318but&nbsp;still&nbsp;get&nbsp;information&nbsp;about&nbsp;the&nbsp;instances&nbsp;parent.<br>
319&nbsp;<br>
320Returns:<br>
321&nbsp;&nbsp;Parent&nbsp;key&nbsp;of&nbsp;entity,&nbsp;None&nbsp;if&nbsp;there&nbsp;is&nbsp;no&nbsp;parent.</tt></dd></dl>
322
323<dl><dt><a name="CredentialsModel-put"><strong>put</strong></a>(self, **kwargs)</dt><dd><tt>Writes&nbsp;this&nbsp;model&nbsp;instance&nbsp;to&nbsp;the&nbsp;datastore.<br>
324&nbsp;<br>
325If&nbsp;this&nbsp;instance&nbsp;is&nbsp;new,&nbsp;we&nbsp;add&nbsp;an&nbsp;entity&nbsp;to&nbsp;the&nbsp;datastore.<br>
326Otherwise,&nbsp;we&nbsp;update&nbsp;this&nbsp;instance,&nbsp;and&nbsp;the&nbsp;key&nbsp;will&nbsp;remain&nbsp;the<br>
327same.<br>
328&nbsp;<br>
329Args:<br>
330&nbsp;&nbsp;config:&nbsp;datastore_rpc.Configuration&nbsp;to&nbsp;use&nbsp;for&nbsp;this&nbsp;request.<br>
331&nbsp;<br>
332Returns:<br>
333&nbsp;&nbsp;The&nbsp;key&nbsp;of&nbsp;the&nbsp;instance&nbsp;(either&nbsp;the&nbsp;existing&nbsp;key&nbsp;or&nbsp;a&nbsp;new&nbsp;key).<br>
334&nbsp;<br>
335Raises:<br>
336&nbsp;&nbsp;TransactionFailedError&nbsp;if&nbsp;the&nbsp;data&nbsp;could&nbsp;not&nbsp;be&nbsp;committed.</tt></dd></dl>
337
338<dl><dt><a name="CredentialsModel-save"><strong>save</strong></a> = put(self, **kwargs)</dt><dd><tt>Writes&nbsp;this&nbsp;model&nbsp;instance&nbsp;to&nbsp;the&nbsp;datastore.<br>
339&nbsp;<br>
340If&nbsp;this&nbsp;instance&nbsp;is&nbsp;new,&nbsp;we&nbsp;add&nbsp;an&nbsp;entity&nbsp;to&nbsp;the&nbsp;datastore.<br>
341Otherwise,&nbsp;we&nbsp;update&nbsp;this&nbsp;instance,&nbsp;and&nbsp;the&nbsp;key&nbsp;will&nbsp;remain&nbsp;the<br>
342same.<br>
343&nbsp;<br>
344Args:<br>
345&nbsp;&nbsp;config:&nbsp;datastore_rpc.Configuration&nbsp;to&nbsp;use&nbsp;for&nbsp;this&nbsp;request.<br>
346&nbsp;<br>
347Returns:<br>
348&nbsp;&nbsp;The&nbsp;key&nbsp;of&nbsp;the&nbsp;instance&nbsp;(either&nbsp;the&nbsp;existing&nbsp;key&nbsp;or&nbsp;a&nbsp;new&nbsp;key).<br>
349&nbsp;<br>
350Raises:<br>
351&nbsp;&nbsp;TransactionFailedError&nbsp;if&nbsp;the&nbsp;data&nbsp;could&nbsp;not&nbsp;be&nbsp;committed.</tt></dd></dl>
352
353<dl><dt><a name="CredentialsModel-to_xml"><strong>to_xml</strong></a>(self, _entity_class<font color="#909090">=&lt;class 'google.appengine.api.datastore.Entity'&gt;</font>)</dt><dd><tt>Generate&nbsp;an&nbsp;XML&nbsp;representation&nbsp;of&nbsp;this&nbsp;model&nbsp;instance.<br>
354&nbsp;<br>
355atom&nbsp;and&nbsp;gd:namespace&nbsp;properties&nbsp;are&nbsp;converted&nbsp;to&nbsp;XML&nbsp;according&nbsp;to&nbsp;their<br>
356respective&nbsp;schemas.&nbsp;For&nbsp;more&nbsp;information,&nbsp;see:<br>
357&nbsp;<br>
358&nbsp;&nbsp;<a href="http://www.atomenabled.org/developers/syndication/">http://www.atomenabled.org/developers/syndication/</a><br>
359&nbsp;&nbsp;<a href="http://code.google.com/apis/gdata/common-elements.html">http://code.google.com/apis/gdata/common-elements.html</a></tt></dd></dl>
360
361<hr>
362Class methods inherited from <a href="google.appengine.ext.db.html#Model">google.appengine.ext.db.Model</a>:<br>
363<dl><dt><a name="CredentialsModel-all"><strong>all</strong></a>(cls, **kwds)<font color="#909090"><font face="helvetica, arial"> from <a href="google.appengine.ext.db.html#PropertiedClass">google.appengine.ext.db.PropertiedClass</a></font></font></dt><dd><tt>Returns&nbsp;a&nbsp;query&nbsp;over&nbsp;all&nbsp;instances&nbsp;of&nbsp;this&nbsp;model&nbsp;from&nbsp;the&nbsp;datastore.<br>
364&nbsp;<br>
365Returns:<br>
366&nbsp;&nbsp;Query&nbsp;that&nbsp;will&nbsp;retrieve&nbsp;all&nbsp;instances&nbsp;from&nbsp;entity&nbsp;collection.</tt></dd></dl>
367
368<dl><dt><a name="CredentialsModel-entity_type"><strong>entity_type</strong></a>(cls)<font color="#909090"><font face="helvetica, arial"> from <a href="google.appengine.ext.db.html#PropertiedClass">google.appengine.ext.db.PropertiedClass</a></font></font></dt><dd><tt>Soon&nbsp;to&nbsp;be&nbsp;removed&nbsp;alias&nbsp;for&nbsp;kind.</tt></dd></dl>
369
370<dl><dt><a name="CredentialsModel-fields"><strong>fields</strong></a>(cls)<font color="#909090"><font face="helvetica, arial"> from <a href="google.appengine.ext.db.html#PropertiedClass">google.appengine.ext.db.PropertiedClass</a></font></font></dt><dd><tt>Soon&nbsp;to&nbsp;be&nbsp;removed&nbsp;alias&nbsp;for&nbsp;properties.</tt></dd></dl>
371
372<dl><dt><a name="CredentialsModel-from_entity"><strong>from_entity</strong></a>(cls, entity)<font color="#909090"><font face="helvetica, arial"> from <a href="google.appengine.ext.db.html#PropertiedClass">google.appengine.ext.db.PropertiedClass</a></font></font></dt><dd><tt>Converts&nbsp;the&nbsp;entity&nbsp;representation&nbsp;of&nbsp;this&nbsp;model&nbsp;to&nbsp;an&nbsp;instance.<br>
373&nbsp;<br>
374Converts&nbsp;datastore.Entity&nbsp;instance&nbsp;to&nbsp;an&nbsp;instance&nbsp;of&nbsp;cls.<br>
375&nbsp;<br>
376Args:<br>
377&nbsp;&nbsp;entity:&nbsp;Entity&nbsp;loaded&nbsp;directly&nbsp;from&nbsp;datastore.<br>
378&nbsp;<br>
379Raises:<br>
380&nbsp;&nbsp;KindError&nbsp;when&nbsp;cls&nbsp;is&nbsp;incorrect&nbsp;model&nbsp;for&nbsp;entity.</tt></dd></dl>
381
382<dl><dt><a name="CredentialsModel-get"><strong>get</strong></a>(cls, keys, **kwargs)<font color="#909090"><font face="helvetica, arial"> from <a href="google.appengine.ext.db.html#PropertiedClass">google.appengine.ext.db.PropertiedClass</a></font></font></dt><dd><tt>Fetch&nbsp;instance&nbsp;from&nbsp;the&nbsp;datastore&nbsp;of&nbsp;a&nbsp;specific&nbsp;<a href="google.appengine.ext.db.html#Model">Model</a>&nbsp;type&nbsp;using&nbsp;key.<br>
383&nbsp;<br>
384We&nbsp;support&nbsp;Key&nbsp;objects&nbsp;and&nbsp;string&nbsp;keys&nbsp;(we&nbsp;convert&nbsp;them&nbsp;to&nbsp;Key&nbsp;objects<br>
385automatically).<br>
386&nbsp;<br>
387Useful&nbsp;for&nbsp;ensuring&nbsp;that&nbsp;specific&nbsp;instance&nbsp;types&nbsp;are&nbsp;retrieved&nbsp;from&nbsp;the<br>
388datastore.&nbsp;&nbsp;It&nbsp;also&nbsp;helps&nbsp;that&nbsp;the&nbsp;source&nbsp;code&nbsp;clearly&nbsp;indicates&nbsp;what<br>
389kind&nbsp;of&nbsp;<a href="__builtin__.html#object">object</a>&nbsp;is&nbsp;being&nbsp;retreived.&nbsp;&nbsp;Example:<br>
390&nbsp;<br>
391&nbsp;&nbsp;story&nbsp;=&nbsp;Story.<a href="#CredentialsModel-get">get</a>(story_key)<br>
392&nbsp;<br>
393Args:<br>
394&nbsp;&nbsp;keys:&nbsp;Key&nbsp;within&nbsp;datastore&nbsp;entity&nbsp;collection&nbsp;to&nbsp;find;&nbsp;or&nbsp;string&nbsp;key;<br>
395&nbsp;&nbsp;&nbsp;&nbsp;or&nbsp;list&nbsp;of&nbsp;Keys&nbsp;or&nbsp;string&nbsp;keys.<br>
396&nbsp;&nbsp;config:&nbsp;datastore_rpc.Configuration&nbsp;to&nbsp;use&nbsp;for&nbsp;this&nbsp;request.<br>
397&nbsp;<br>
398Returns:<br>
399&nbsp;&nbsp;If&nbsp;a&nbsp;single&nbsp;key&nbsp;was&nbsp;given:&nbsp;a&nbsp;<a href="google.appengine.ext.db.html#Model">Model</a>&nbsp;instance&nbsp;associated&nbsp;with&nbsp;key<br>
400&nbsp;&nbsp;for&nbsp;provided&nbsp;class&nbsp;if&nbsp;it&nbsp;exists&nbsp;in&nbsp;the&nbsp;datastore,&nbsp;otherwise<br>
401&nbsp;&nbsp;None;&nbsp;if&nbsp;a&nbsp;list&nbsp;of&nbsp;keys&nbsp;was&nbsp;given:&nbsp;a&nbsp;list&nbsp;whose&nbsp;items&nbsp;are&nbsp;either<br>
402&nbsp;&nbsp;a&nbsp;<a href="google.appengine.ext.db.html#Model">Model</a>&nbsp;instance&nbsp;or&nbsp;None.<br>
403&nbsp;<br>
404Raises:<br>
405&nbsp;&nbsp;KindError&nbsp;if&nbsp;any&nbsp;of&nbsp;the&nbsp;retreived&nbsp;objects&nbsp;are&nbsp;not&nbsp;instances&nbsp;of&nbsp;the<br>
406&nbsp;&nbsp;type&nbsp;associated&nbsp;with&nbsp;call&nbsp;to&nbsp;'get'.</tt></dd></dl>
407
408<dl><dt><a name="CredentialsModel-get_by_id"><strong>get_by_id</strong></a>(cls, ids, parent<font color="#909090">=None</font>, **kwargs)<font color="#909090"><font face="helvetica, arial"> from <a href="google.appengine.ext.db.html#PropertiedClass">google.appengine.ext.db.PropertiedClass</a></font></font></dt><dd><tt>Get&nbsp;instance&nbsp;of&nbsp;<a href="google.appengine.ext.db.html#Model">Model</a>&nbsp;class&nbsp;by&nbsp;id.<br>
409&nbsp;<br>
410Args:<br>
411&nbsp;&nbsp;key_names:&nbsp;A&nbsp;single&nbsp;id&nbsp;or&nbsp;a&nbsp;list&nbsp;of&nbsp;ids.<br>
412&nbsp;&nbsp;parent:&nbsp;Parent&nbsp;of&nbsp;instances&nbsp;to&nbsp;get.&nbsp;&nbsp;Can&nbsp;be&nbsp;a&nbsp;model&nbsp;or&nbsp;key.<br>
413&nbsp;&nbsp;config:&nbsp;datastore_rpc.Configuration&nbsp;to&nbsp;use&nbsp;for&nbsp;this&nbsp;request.</tt></dd></dl>
414
415<dl><dt><a name="CredentialsModel-get_by_key_name"><strong>get_by_key_name</strong></a>(cls, key_names, parent<font color="#909090">=None</font>, **kwargs)<font color="#909090"><font face="helvetica, arial"> from <a href="google.appengine.ext.db.html#PropertiedClass">google.appengine.ext.db.PropertiedClass</a></font></font></dt><dd><tt>Get&nbsp;instance&nbsp;of&nbsp;<a href="google.appengine.ext.db.html#Model">Model</a>&nbsp;class&nbsp;by&nbsp;its&nbsp;key's&nbsp;name.<br>
416&nbsp;<br>
417Args:<br>
418&nbsp;&nbsp;key_names:&nbsp;A&nbsp;single&nbsp;key-name&nbsp;or&nbsp;a&nbsp;list&nbsp;of&nbsp;key-names.<br>
419&nbsp;&nbsp;parent:&nbsp;Parent&nbsp;of&nbsp;instances&nbsp;to&nbsp;get.&nbsp;&nbsp;Can&nbsp;be&nbsp;a&nbsp;model&nbsp;or&nbsp;key.<br>
420&nbsp;&nbsp;config:&nbsp;datastore_rpc.Configuration&nbsp;to&nbsp;use&nbsp;for&nbsp;this&nbsp;request.</tt></dd></dl>
421
422<dl><dt><a name="CredentialsModel-get_or_insert"><strong>get_or_insert</strong></a>(cls, key_name, **kwds)<font color="#909090"><font face="helvetica, arial"> from <a href="google.appengine.ext.db.html#PropertiedClass">google.appengine.ext.db.PropertiedClass</a></font></font></dt><dd><tt>Transactionally&nbsp;retrieve&nbsp;or&nbsp;create&nbsp;an&nbsp;instance&nbsp;of&nbsp;<a href="google.appengine.ext.db.html#Model">Model</a>&nbsp;class.<br>
423&nbsp;<br>
424This&nbsp;acts&nbsp;much&nbsp;like&nbsp;the&nbsp;Python&nbsp;dictionary&nbsp;setdefault()&nbsp;method,&nbsp;where&nbsp;we<br>
425first&nbsp;try&nbsp;to&nbsp;retrieve&nbsp;a&nbsp;<a href="google.appengine.ext.db.html#Model">Model</a>&nbsp;instance&nbsp;with&nbsp;the&nbsp;given&nbsp;key&nbsp;name&nbsp;and&nbsp;parent.<br>
426If&nbsp;it's&nbsp;not&nbsp;present,&nbsp;then&nbsp;we&nbsp;create&nbsp;a&nbsp;new&nbsp;instance&nbsp;(using&nbsp;the&nbsp;*kwds<br>
427supplied)&nbsp;and&nbsp;insert&nbsp;that&nbsp;with&nbsp;the&nbsp;supplied&nbsp;key&nbsp;name.<br>
428&nbsp;<br>
429Subsequent&nbsp;calls&nbsp;to&nbsp;this&nbsp;method&nbsp;with&nbsp;the&nbsp;same&nbsp;key_name&nbsp;and&nbsp;parent&nbsp;will<br>
430always&nbsp;yield&nbsp;the&nbsp;same&nbsp;entity&nbsp;(though&nbsp;not&nbsp;the&nbsp;same&nbsp;actual&nbsp;<a href="__builtin__.html#object">object</a>&nbsp;instance),<br>
431regardless&nbsp;of&nbsp;the&nbsp;*kwds&nbsp;supplied.&nbsp;If&nbsp;the&nbsp;specified&nbsp;entity&nbsp;has&nbsp;somehow<br>
432been&nbsp;deleted&nbsp;separately,&nbsp;then&nbsp;the&nbsp;next&nbsp;call&nbsp;will&nbsp;create&nbsp;a&nbsp;new&nbsp;entity&nbsp;and<br>
433return&nbsp;it.<br>
434&nbsp;<br>
435If&nbsp;the&nbsp;'parent'&nbsp;keyword&nbsp;argument&nbsp;is&nbsp;supplied,&nbsp;it&nbsp;must&nbsp;be&nbsp;a&nbsp;<a href="google.appengine.ext.db.html#Model">Model</a>&nbsp;instance.<br>
436It&nbsp;will&nbsp;be&nbsp;used&nbsp;as&nbsp;the&nbsp;parent&nbsp;of&nbsp;the&nbsp;new&nbsp;instance&nbsp;of&nbsp;this&nbsp;<a href="google.appengine.ext.db.html#Model">Model</a>&nbsp;class&nbsp;if<br>
437one&nbsp;is&nbsp;created.<br>
438&nbsp;<br>
439This&nbsp;method&nbsp;is&nbsp;especially&nbsp;useful&nbsp;for&nbsp;having&nbsp;just&nbsp;one&nbsp;unique&nbsp;entity&nbsp;for<br>
440a&nbsp;specific&nbsp;identifier.&nbsp;Insertion/retrieval&nbsp;is&nbsp;done&nbsp;transactionally,&nbsp;which<br>
441guarantees&nbsp;uniqueness.<br>
442&nbsp;<br>
443Example&nbsp;usage:<br>
444&nbsp;<br>
445&nbsp;&nbsp;class&nbsp;WikiTopic(db.<a href="google.appengine.ext.db.html#Model">Model</a>):<br>
446&nbsp;&nbsp;&nbsp;&nbsp;creation_date&nbsp;=&nbsp;db.DatetimeProperty(auto_now_add=True)<br>
447&nbsp;&nbsp;&nbsp;&nbsp;body&nbsp;=&nbsp;db.TextProperty(required=True)<br>
448&nbsp;<br>
449&nbsp;&nbsp;#&nbsp;The&nbsp;first&nbsp;time&nbsp;through&nbsp;we'll&nbsp;create&nbsp;the&nbsp;new&nbsp;topic.<br>
450&nbsp;&nbsp;wiki_word&nbsp;=&nbsp;'CommonIdioms'<br>
451&nbsp;&nbsp;topic&nbsp;=&nbsp;WikiTopic.<a href="#CredentialsModel-get_or_insert">get_or_insert</a>(wiki_word,<br>
452&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;body='This&nbsp;topic&nbsp;is&nbsp;totally&nbsp;new!')<br>
453&nbsp;&nbsp;assert&nbsp;topic.<a href="#CredentialsModel-key">key</a>().name()&nbsp;==&nbsp;'CommonIdioms'<br>
454&nbsp;&nbsp;assert&nbsp;topic.body&nbsp;==&nbsp;'This&nbsp;topic&nbsp;is&nbsp;totally&nbsp;new!'<br>
455&nbsp;<br>
456&nbsp;&nbsp;#&nbsp;The&nbsp;second&nbsp;time&nbsp;through&nbsp;will&nbsp;just&nbsp;retrieve&nbsp;the&nbsp;entity.<br>
457&nbsp;&nbsp;overwrite_topic&nbsp;=&nbsp;WikiTopic.<a href="#CredentialsModel-get_or_insert">get_or_insert</a>(wiki_word,<br>
458&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;body='A&nbsp;totally&nbsp;different&nbsp;message!')<br>
459&nbsp;&nbsp;assert&nbsp;topic.<a href="#CredentialsModel-key">key</a>().name()&nbsp;==&nbsp;'CommonIdioms'<br>
460&nbsp;&nbsp;assert&nbsp;topic.body&nbsp;==&nbsp;'This&nbsp;topic&nbsp;is&nbsp;totally&nbsp;new!'<br>
461&nbsp;<br>
462Args:<br>
463&nbsp;&nbsp;key_name:&nbsp;Key&nbsp;name&nbsp;to&nbsp;retrieve&nbsp;or&nbsp;create.<br>
464&nbsp;&nbsp;**kwds:&nbsp;Keyword&nbsp;arguments&nbsp;to&nbsp;pass&nbsp;to&nbsp;the&nbsp;constructor&nbsp;of&nbsp;the&nbsp;model&nbsp;class<br>
465&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;an&nbsp;instance&nbsp;for&nbsp;the&nbsp;specified&nbsp;key&nbsp;name&nbsp;does&nbsp;not&nbsp;already&nbsp;exist.&nbsp;If<br>
466&nbsp;&nbsp;&nbsp;&nbsp;an&nbsp;instance&nbsp;with&nbsp;the&nbsp;supplied&nbsp;key_name&nbsp;and&nbsp;parent&nbsp;already&nbsp;exists,&nbsp;the<br>
467&nbsp;&nbsp;&nbsp;&nbsp;rest&nbsp;of&nbsp;these&nbsp;arguments&nbsp;will&nbsp;be&nbsp;discarded.<br>
468&nbsp;<br>
469Returns:<br>
470&nbsp;&nbsp;Existing&nbsp;instance&nbsp;of&nbsp;<a href="google.appengine.ext.db.html#Model">Model</a>&nbsp;class&nbsp;with&nbsp;the&nbsp;specified&nbsp;key_name&nbsp;and&nbsp;parent<br>
471&nbsp;&nbsp;or&nbsp;a&nbsp;new&nbsp;one&nbsp;that&nbsp;has&nbsp;just&nbsp;been&nbsp;created.<br>
472&nbsp;<br>
473Raises:<br>
474&nbsp;&nbsp;TransactionFailedError&nbsp;if&nbsp;the&nbsp;specified&nbsp;<a href="google.appengine.ext.db.html#Model">Model</a>&nbsp;instance&nbsp;could&nbsp;not&nbsp;be<br>
475&nbsp;&nbsp;retrieved&nbsp;or&nbsp;created&nbsp;transactionally&nbsp;(due&nbsp;to&nbsp;high&nbsp;contention,&nbsp;etc).</tt></dd></dl>
476
477<dl><dt><a name="CredentialsModel-gql"><strong>gql</strong></a>(cls, query_string, *args, **kwds)<font color="#909090"><font face="helvetica, arial"> from <a href="google.appengine.ext.db.html#PropertiedClass">google.appengine.ext.db.PropertiedClass</a></font></font></dt><dd><tt>Returns&nbsp;a&nbsp;query&nbsp;using&nbsp;GQL&nbsp;query&nbsp;string.<br>
478&nbsp;<br>
479See&nbsp;appengine/ext/gql&nbsp;for&nbsp;more&nbsp;information&nbsp;about&nbsp;GQL.<br>
480&nbsp;<br>
481Args:<br>
482&nbsp;&nbsp;query_string:&nbsp;properly&nbsp;formatted&nbsp;GQL&nbsp;query&nbsp;string&nbsp;with&nbsp;the<br>
483&nbsp;&nbsp;&nbsp;&nbsp;'SELECT&nbsp;*&nbsp;FROM&nbsp;&lt;entity&gt;'&nbsp;part&nbsp;omitted<br>
484&nbsp;&nbsp;*args:&nbsp;rest&nbsp;of&nbsp;the&nbsp;positional&nbsp;arguments&nbsp;used&nbsp;to&nbsp;bind&nbsp;numeric&nbsp;references<br>
485&nbsp;&nbsp;&nbsp;&nbsp;in&nbsp;the&nbsp;query.<br>
486&nbsp;&nbsp;**kwds:&nbsp;dictionary-based&nbsp;arguments&nbsp;(for&nbsp;named&nbsp;parameters).</tt></dd></dl>
487
488<dl><dt><a name="CredentialsModel-kind"><strong>kind</strong></a>(cls)<font color="#909090"><font face="helvetica, arial"> from <a href="google.appengine.ext.db.html#PropertiedClass">google.appengine.ext.db.PropertiedClass</a></font></font></dt><dd><tt>Returns&nbsp;the&nbsp;datastore&nbsp;kind&nbsp;we&nbsp;use&nbsp;for&nbsp;this&nbsp;model.<br>
489&nbsp;<br>
490We&nbsp;just&nbsp;use&nbsp;the&nbsp;name&nbsp;of&nbsp;the&nbsp;model&nbsp;for&nbsp;now,&nbsp;ignoring&nbsp;potential&nbsp;collisions.</tt></dd></dl>
491
492<dl><dt><a name="CredentialsModel-properties"><strong>properties</strong></a>(cls)<font color="#909090"><font face="helvetica, arial"> from <a href="google.appengine.ext.db.html#PropertiedClass">google.appengine.ext.db.PropertiedClass</a></font></font></dt><dd><tt>Returns&nbsp;a&nbsp;dictionary&nbsp;of&nbsp;all&nbsp;the&nbsp;properties&nbsp;defined&nbsp;for&nbsp;this&nbsp;model.</tt></dd></dl>
493
494<hr>
495Static methods inherited from <a href="google.appengine.ext.db.html#Model">google.appengine.ext.db.Model</a>:<br>
496<dl><dt><a name="CredentialsModel-__new__"><strong>__new__</strong></a>(*args, **unused_kwds)</dt><dd><tt>Allow&nbsp;subclasses&nbsp;to&nbsp;call&nbsp;<a href="#CredentialsModel-__new__">__new__</a>()&nbsp;with&nbsp;arguments.<br>
497&nbsp;<br>
498Do&nbsp;NOT&nbsp;list&nbsp;'cls'&nbsp;as&nbsp;the&nbsp;first&nbsp;argument,&nbsp;or&nbsp;in&nbsp;the&nbsp;case&nbsp;when<br>
499the&nbsp;'unused_kwds'&nbsp;dictionary&nbsp;contains&nbsp;the&nbsp;key&nbsp;'cls',&nbsp;the&nbsp;function<br>
500will&nbsp;complain&nbsp;about&nbsp;multiple&nbsp;argument&nbsp;values&nbsp;for&nbsp;'cls'.<br>
501&nbsp;<br>
502Raises:<br>
503&nbsp;&nbsp;TypeError&nbsp;if&nbsp;there&nbsp;are&nbsp;no&nbsp;positional&nbsp;arguments.</tt></dd></dl>
504
505<hr>
506Data descriptors inherited from <a href="google.appengine.ext.db.html#Model">google.appengine.ext.db.Model</a>:<br>
507<dl><dt><strong>__dict__</strong></dt>
508<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
509</dl>
510<dl><dt><strong>__weakref__</strong></dt>
511<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
512</dl>
513<hr>
514Data and other attributes inherited from <a href="google.appengine.ext.db.html#Model">google.appengine.ext.db.Model</a>:<br>
515<dl><dt><strong>__metaclass__</strong> = &lt;class 'google.appengine.ext.db.PropertiedClass'&gt;<dd><tt>Meta-class&nbsp;for&nbsp;initializing&nbsp;<a href="google.appengine.ext.db.html#Model">Model</a>&nbsp;classes&nbsp;properties.<br>
516&nbsp;<br>
517Used&nbsp;for&nbsp;initializing&nbsp;Properties&nbsp;defined&nbsp;in&nbsp;the&nbsp;context&nbsp;of&nbsp;a&nbsp;model.<br>
518By&nbsp;using&nbsp;a&nbsp;meta-class&nbsp;much&nbsp;of&nbsp;the&nbsp;configuration&nbsp;of&nbsp;a&nbsp;<a href="google.appengine.ext.db.html#Property">Property</a><br>
519descriptor&nbsp;becomes&nbsp;implicit.&nbsp;&nbsp;By&nbsp;using&nbsp;this&nbsp;meta-class,&nbsp;descriptors<br>
520that&nbsp;are&nbsp;of&nbsp;class&nbsp;<a href="google.appengine.ext.db.html#Model">Model</a>&nbsp;are&nbsp;notified&nbsp;about&nbsp;which&nbsp;class&nbsp;they<br>
521belong&nbsp;to&nbsp;and&nbsp;what&nbsp;attribute&nbsp;they&nbsp;are&nbsp;associated&nbsp;with&nbsp;and&nbsp;can<br>
522do&nbsp;appropriate&nbsp;initialization&nbsp;via&nbsp;__property_config__.<br>
523&nbsp;<br>
524Duplicate&nbsp;properties&nbsp;are&nbsp;not&nbsp;permitted.</tt></dl>
525
526</td></tr></table> <p>
527<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
528<tr bgcolor="#ffc8d8">
529<td colspan=3 valign=bottom>&nbsp;<br>
Joe Gregorio6e537032011-02-09 23:04:26 -0500530<font color="#000000" face="helvetica, arial"><a name="CredentialsProperty">class <strong>CredentialsProperty</strong></a>(<a href="google.appengine.ext.db.html#Property">google.appengine.ext.db.Property</a>)</font></td></tr>
531
532<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
Joe Gregorio3b79fa82011-02-17 11:47:17 -0500533<td colspan=2><tt>App&nbsp;Engine&nbsp;datastore&nbsp;<a href="google.appengine.ext.db.html#Property">Property</a>&nbsp;for&nbsp;Credentials.<br>
534&nbsp;<br>
535Utility&nbsp;property&nbsp;that&nbsp;allows&nbsp;easy&nbsp;storage&nbsp;and&nbsp;retrieval&nbsp;of<br>
Joe Gregorio6e537032011-02-09 23:04:26 -0500536oath2client.Credentials<br>&nbsp;</tt></td></tr>
537<tr><td>&nbsp;</td>
538<td width="100%"><dl><dt>Method resolution order:</dt>
539<dd><a href="oauth2client.appengine.html#CredentialsProperty">CredentialsProperty</a></dd>
540<dd><a href="google.appengine.ext.db.html#Property">google.appengine.ext.db.Property</a></dd>
541<dd><a href="__builtin__.html#object">__builtin__.object</a></dd>
542</dl>
543<hr>
544Methods defined here:<br>
Joe Gregorio6e537032011-02-09 23:04:26 -0500545<dl><dt><a name="CredentialsProperty-get_value_for_datastore"><strong>get_value_for_datastore</strong></a>(self, model_instance)</dt><dd><tt>#&nbsp;For&nbsp;writing&nbsp;to&nbsp;datastore.</tt></dd></dl>
546
547<dl><dt><a name="CredentialsProperty-make_value_from_datastore"><strong>make_value_from_datastore</strong></a>(self, value)</dt><dd><tt>#&nbsp;For&nbsp;reading&nbsp;from&nbsp;datastore.</tt></dd></dl>
548
549<dl><dt><a name="CredentialsProperty-validate"><strong>validate</strong></a>(self, value)</dt></dl>
550
551<hr>
552Data and other attributes defined here:<br>
553<dl><dt><strong>data_type</strong> = &lt;class 'oauth2client.client.Credentials'&gt;<dd><tt>Base&nbsp;class&nbsp;for&nbsp;all&nbsp;Credentials&nbsp;objects.<br>
554&nbsp;<br>
Joe Gregorioa8451672011-09-15 09:53:21 -0400555Subclasses&nbsp;must&nbsp;define&nbsp;an&nbsp;authorize()&nbsp;method&nbsp;that&nbsp;applies&nbsp;the&nbsp;credentials&nbsp;to<br>
556an&nbsp;HTTP&nbsp;transport.<br>
557&nbsp;<br>
558Subclasses&nbsp;must&nbsp;also&nbsp;specify&nbsp;a&nbsp;classmethod&nbsp;named&nbsp;'from_json'&nbsp;that&nbsp;takes&nbsp;a&nbsp;JSON<br>
Joe Gregorio6121dd92012-04-13 07:50:04 -0400559string&nbsp;as&nbsp;input&nbsp;and&nbsp;returns&nbsp;an&nbsp;instaniated&nbsp;Credentials&nbsp;<a href="__builtin__.html#object">object</a>.</tt></dl>
Joe Gregorio6e537032011-02-09 23:04:26 -0500560
561<hr>
562Methods inherited from <a href="google.appengine.ext.db.html#Property">google.appengine.ext.db.Property</a>:<br>
563<dl><dt><a name="CredentialsProperty-__get__"><strong>__get__</strong></a>(self, model_instance, model_class)</dt><dd><tt>Returns&nbsp;the&nbsp;value&nbsp;for&nbsp;this&nbsp;property&nbsp;on&nbsp;the&nbsp;given&nbsp;model&nbsp;instance.<br>
564&nbsp;<br>
565See&nbsp;<a href="http://docs.python.org/ref/descriptors.html">http://docs.python.org/ref/descriptors.html</a>&nbsp;for&nbsp;a&nbsp;description&nbsp;of<br>
566the&nbsp;arguments&nbsp;to&nbsp;this&nbsp;class&nbsp;and&nbsp;what&nbsp;they&nbsp;mean.</tt></dd></dl>
567
568<dl><dt><a name="CredentialsProperty-__init__"><strong>__init__</strong></a>(self, verbose_name<font color="#909090">=None</font>, name<font color="#909090">=None</font>, default<font color="#909090">=None</font>, required<font color="#909090">=False</font>, validator<font color="#909090">=None</font>, choices<font color="#909090">=None</font>, indexed<font color="#909090">=True</font>)</dt><dd><tt>Initializes&nbsp;this&nbsp;<a href="google.appengine.ext.db.html#Property">Property</a>&nbsp;with&nbsp;the&nbsp;given&nbsp;options.<br>
569&nbsp;<br>
570Args:<br>
571&nbsp;&nbsp;verbose_name:&nbsp;User&nbsp;friendly&nbsp;name&nbsp;of&nbsp;property.<br>
Joe Gregorio3b79fa82011-02-17 11:47:17 -0500572&nbsp;&nbsp;name:&nbsp;<a href="oauth2client.client.html#Storage">Storage</a>&nbsp;name&nbsp;for&nbsp;property.&nbsp;&nbsp;By&nbsp;default,&nbsp;uses&nbsp;attribute&nbsp;name<br>
Joe Gregorio90e7ec22011-07-06 10:09:20 -0400573&nbsp;&nbsp;&nbsp;&nbsp;as&nbsp;it&nbsp;is&nbsp;assigned&nbsp;in&nbsp;the&nbsp;<a href="google.appengine.ext.db.html#Model">Model</a>&nbsp;sub-class.<br>
Joe Gregorio6e537032011-02-09 23:04:26 -0500574&nbsp;&nbsp;default:&nbsp;Default&nbsp;value&nbsp;for&nbsp;property&nbsp;if&nbsp;none&nbsp;is&nbsp;assigned.<br>
575&nbsp;&nbsp;required:&nbsp;Whether&nbsp;property&nbsp;is&nbsp;required.<br>
576&nbsp;&nbsp;validator:&nbsp;User&nbsp;provided&nbsp;method&nbsp;used&nbsp;for&nbsp;validation.<br>
577&nbsp;&nbsp;choices:&nbsp;User&nbsp;provided&nbsp;set&nbsp;of&nbsp;valid&nbsp;property&nbsp;values.<br>
578&nbsp;&nbsp;indexed:&nbsp;Whether&nbsp;property&nbsp;is&nbsp;indexed.</tt></dd></dl>
579
580<dl><dt><a name="CredentialsProperty-__property_config__"><strong>__property_config__</strong></a>(self, model_class, property_name)</dt><dd><tt>Configure&nbsp;property,&nbsp;connecting&nbsp;it&nbsp;to&nbsp;its&nbsp;model.<br>
581&nbsp;<br>
582Configure&nbsp;the&nbsp;property&nbsp;so&nbsp;that&nbsp;it&nbsp;knows&nbsp;its&nbsp;property&nbsp;name&nbsp;and&nbsp;what&nbsp;class<br>
583it&nbsp;belongs&nbsp;to.<br>
584&nbsp;<br>
585Args:<br>
Joe Gregorio90e7ec22011-07-06 10:09:20 -0400586&nbsp;&nbsp;model_class:&nbsp;<a href="google.appengine.ext.db.html#Model">Model</a>&nbsp;class&nbsp;which&nbsp;<a href="google.appengine.ext.db.html#Property">Property</a>&nbsp;will&nbsp;belong&nbsp;to.<br>
587&nbsp;&nbsp;property_name:&nbsp;Name&nbsp;of&nbsp;property&nbsp;within&nbsp;<a href="google.appengine.ext.db.html#Model">Model</a>&nbsp;instance&nbsp;to&nbsp;store&nbsp;property<br>
Joe Gregorio6e537032011-02-09 23:04:26 -0500588&nbsp;&nbsp;&nbsp;&nbsp;values&nbsp;in.&nbsp;&nbsp;By&nbsp;default&nbsp;this&nbsp;will&nbsp;be&nbsp;the&nbsp;property&nbsp;name&nbsp;preceded&nbsp;by<br>
589&nbsp;&nbsp;&nbsp;&nbsp;an&nbsp;underscore,&nbsp;but&nbsp;may&nbsp;change&nbsp;for&nbsp;different&nbsp;subclasses.</tt></dd></dl>
590
591<dl><dt><a name="CredentialsProperty-__set__"><strong>__set__</strong></a>(self, model_instance, value)</dt><dd><tt>Sets&nbsp;the&nbsp;value&nbsp;for&nbsp;this&nbsp;property&nbsp;on&nbsp;the&nbsp;given&nbsp;model&nbsp;instance.<br>
592&nbsp;<br>
593See&nbsp;<a href="http://docs.python.org/ref/descriptors.html">http://docs.python.org/ref/descriptors.html</a>&nbsp;for&nbsp;a&nbsp;description&nbsp;of<br>
594the&nbsp;arguments&nbsp;to&nbsp;this&nbsp;class&nbsp;and&nbsp;what&nbsp;they&nbsp;mean.</tt></dd></dl>
595
596<dl><dt><a name="CredentialsProperty-datastore_type"><strong>datastore_type</strong></a>(self)</dt><dd><tt>Deprecated&nbsp;backwards-compatible&nbsp;accessor&nbsp;method&nbsp;for&nbsp;self.<strong>data_type</strong>.</tt></dd></dl>
597
598<dl><dt><a name="CredentialsProperty-default_value"><strong>default_value</strong></a>(self)</dt><dd><tt>Default&nbsp;value&nbsp;for&nbsp;unassigned&nbsp;values.<br>
599&nbsp;<br>
600Returns:<br>
601&nbsp;&nbsp;Default&nbsp;value&nbsp;as&nbsp;provided&nbsp;by&nbsp;<a href="#CredentialsProperty-__init__">__init__</a>(default).</tt></dd></dl>
602
Joe Gregoriob417caf2011-12-08 12:04:24 -0500603<dl><dt><a name="CredentialsProperty-empty"><strong>empty</strong></a>(self, value)</dt><dd><tt>Determine&nbsp;if&nbsp;value&nbsp;is&nbsp;empty&nbsp;in&nbsp;the&nbsp;context&nbsp;of&nbsp;this&nbsp;property.<br>
604&nbsp;<br>
605For&nbsp;most&nbsp;kinds,&nbsp;this&nbsp;is&nbsp;equivalent&nbsp;to&nbsp;"not&nbsp;value",&nbsp;but&nbsp;for&nbsp;kinds&nbsp;like<br>
606bool,&nbsp;the&nbsp;test&nbsp;is&nbsp;more&nbsp;subtle,&nbsp;so&nbsp;subclasses&nbsp;can&nbsp;override&nbsp;this&nbsp;method<br>
607if&nbsp;necessary.<br>
608&nbsp;<br>
609Args:<br>
610&nbsp;&nbsp;value:&nbsp;Value&nbsp;to&nbsp;validate&nbsp;against&nbsp;this&nbsp;<a href="google.appengine.ext.db.html#Property">Property</a>.<br>
611&nbsp;<br>
612Returns:<br>
613&nbsp;&nbsp;True&nbsp;if&nbsp;this&nbsp;value&nbsp;is&nbsp;considered&nbsp;empty&nbsp;in&nbsp;the&nbsp;context&nbsp;of&nbsp;this&nbsp;<a href="google.appengine.ext.db.html#Property">Property</a><br>
614&nbsp;&nbsp;type,&nbsp;otherwise&nbsp;False.</tt></dd></dl>
615
Joe Gregorio6121dd92012-04-13 07:50:04 -0400616<dl><dt><a name="CredentialsProperty-get_updated_value_for_datastore"><strong>get_updated_value_for_datastore</strong></a>(self, model_instance)</dt><dd><tt>Determine&nbsp;new&nbsp;value&nbsp;for&nbsp;auto-updated&nbsp;property.<br>
617&nbsp;<br>
618Some&nbsp;properies&nbsp;(e.g.&nbsp;DateTimeProperty,&nbsp;UserProperty)&nbsp;optionally&nbsp;update&nbsp;their<br>
619value&nbsp;on&nbsp;every&nbsp;put().&nbsp;This&nbsp;call&nbsp;must&nbsp;return&nbsp;the&nbsp;new&nbsp;desired&nbsp;value&nbsp;for&nbsp;such<br>
620properties.&nbsp;For&nbsp;all&nbsp;other&nbsp;properties,&nbsp;this&nbsp;call&nbsp;must&nbsp;return<br>
621AUTO_UPDATE_UNCHANGED.<br>
622&nbsp;<br>
623Args:<br>
624&nbsp;&nbsp;model_instance:&nbsp;Instance&nbsp;to&nbsp;get&nbsp;new&nbsp;value&nbsp;for.<br>
625&nbsp;<br>
626Returns:<br>
627&nbsp;&nbsp;Datastore&nbsp;representation&nbsp;of&nbsp;the&nbsp;new&nbsp;model&nbsp;value&nbsp;in&nbsp;a&nbsp;form&nbsp;that&nbsp;is<br>
628&nbsp;&nbsp;appropriate&nbsp;for&nbsp;storing&nbsp;in&nbsp;the&nbsp;datastore,&nbsp;or&nbsp;AUTO_UPDATE_UNCHANGED.</tt></dd></dl>
629
Joe Gregorio66212032012-06-14 09:10:14 -0400630<dl><dt><a name="CredentialsProperty-make_value_from_datastore_index_value"><strong>make_value_from_datastore_index_value</strong></a>(self, index_value)</dt></dl>
631
Joe Gregorio6e537032011-02-09 23:04:26 -0500632<hr>
633Data descriptors inherited from <a href="google.appengine.ext.db.html#Property">google.appengine.ext.db.Property</a>:<br>
634<dl><dt><strong>__dict__</strong></dt>
635<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
636</dl>
637<dl><dt><strong>__weakref__</strong></dt>
638<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
639</dl>
640<hr>
641Data and other attributes inherited from <a href="google.appengine.ext.db.html#Property">google.appengine.ext.db.Property</a>:<br>
Joe Gregorio90e7ec22011-07-06 10:09:20 -0400642<dl><dt><strong>creation_counter</strong> = 1</dl>
Joe Gregorio6e537032011-02-09 23:04:26 -0500643
644</td></tr></table> <p>
645<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
646<tr bgcolor="#ffc8d8">
647<td colspan=3 valign=bottom>&nbsp;<br>
648<font color="#000000" face="helvetica, arial"><a name="FlowProperty">class <strong>FlowProperty</strong></a>(<a href="google.appengine.ext.db.html#Property">google.appengine.ext.db.Property</a>)</font></td></tr>
649
650<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
Joe Gregorio3b79fa82011-02-17 11:47:17 -0500651<td colspan=2><tt>App&nbsp;Engine&nbsp;datastore&nbsp;<a href="google.appengine.ext.db.html#Property">Property</a>&nbsp;for&nbsp;Flow.<br>
652&nbsp;<br>
653Utility&nbsp;property&nbsp;that&nbsp;allows&nbsp;easy&nbsp;storage&nbsp;and&nbsp;retreival&nbsp;of&nbsp;an<br>
Joe Gregorio6e537032011-02-09 23:04:26 -0500654oauth2client.Flow<br>&nbsp;</tt></td></tr>
655<tr><td>&nbsp;</td>
656<td width="100%"><dl><dt>Method resolution order:</dt>
657<dd><a href="oauth2client.appengine.html#FlowProperty">FlowProperty</a></dd>
658<dd><a href="google.appengine.ext.db.html#Property">google.appengine.ext.db.Property</a></dd>
659<dd><a href="__builtin__.html#object">__builtin__.object</a></dd>
660</dl>
661<hr>
662Methods defined here:<br>
663<dl><dt><a name="FlowProperty-empty"><strong>empty</strong></a>(self, value)</dt></dl>
664
665<dl><dt><a name="FlowProperty-get_value_for_datastore"><strong>get_value_for_datastore</strong></a>(self, model_instance)</dt><dd><tt>#&nbsp;For&nbsp;writing&nbsp;to&nbsp;datastore.</tt></dd></dl>
666
667<dl><dt><a name="FlowProperty-make_value_from_datastore"><strong>make_value_from_datastore</strong></a>(self, value)</dt><dd><tt>#&nbsp;For&nbsp;reading&nbsp;from&nbsp;datastore.</tt></dd></dl>
668
669<dl><dt><a name="FlowProperty-validate"><strong>validate</strong></a>(self, value)</dt></dl>
670
671<hr>
672Data and other attributes defined here:<br>
673<dl><dt><strong>data_type</strong> = &lt;class 'oauth2client.client.Flow'&gt;<dd><tt>Base&nbsp;class&nbsp;for&nbsp;all&nbsp;Flow&nbsp;objects.</tt></dl>
674
675<hr>
676Methods inherited from <a href="google.appengine.ext.db.html#Property">google.appengine.ext.db.Property</a>:<br>
677<dl><dt><a name="FlowProperty-__get__"><strong>__get__</strong></a>(self, model_instance, model_class)</dt><dd><tt>Returns&nbsp;the&nbsp;value&nbsp;for&nbsp;this&nbsp;property&nbsp;on&nbsp;the&nbsp;given&nbsp;model&nbsp;instance.<br>
678&nbsp;<br>
679See&nbsp;<a href="http://docs.python.org/ref/descriptors.html">http://docs.python.org/ref/descriptors.html</a>&nbsp;for&nbsp;a&nbsp;description&nbsp;of<br>
680the&nbsp;arguments&nbsp;to&nbsp;this&nbsp;class&nbsp;and&nbsp;what&nbsp;they&nbsp;mean.</tt></dd></dl>
681
682<dl><dt><a name="FlowProperty-__init__"><strong>__init__</strong></a>(self, verbose_name<font color="#909090">=None</font>, name<font color="#909090">=None</font>, default<font color="#909090">=None</font>, required<font color="#909090">=False</font>, validator<font color="#909090">=None</font>, choices<font color="#909090">=None</font>, indexed<font color="#909090">=True</font>)</dt><dd><tt>Initializes&nbsp;this&nbsp;<a href="google.appengine.ext.db.html#Property">Property</a>&nbsp;with&nbsp;the&nbsp;given&nbsp;options.<br>
683&nbsp;<br>
684Args:<br>
685&nbsp;&nbsp;verbose_name:&nbsp;User&nbsp;friendly&nbsp;name&nbsp;of&nbsp;property.<br>
Joe Gregorio3b79fa82011-02-17 11:47:17 -0500686&nbsp;&nbsp;name:&nbsp;<a href="oauth2client.client.html#Storage">Storage</a>&nbsp;name&nbsp;for&nbsp;property.&nbsp;&nbsp;By&nbsp;default,&nbsp;uses&nbsp;attribute&nbsp;name<br>
Joe Gregorio90e7ec22011-07-06 10:09:20 -0400687&nbsp;&nbsp;&nbsp;&nbsp;as&nbsp;it&nbsp;is&nbsp;assigned&nbsp;in&nbsp;the&nbsp;<a href="google.appengine.ext.db.html#Model">Model</a>&nbsp;sub-class.<br>
Joe Gregorio6e537032011-02-09 23:04:26 -0500688&nbsp;&nbsp;default:&nbsp;Default&nbsp;value&nbsp;for&nbsp;property&nbsp;if&nbsp;none&nbsp;is&nbsp;assigned.<br>
689&nbsp;&nbsp;required:&nbsp;Whether&nbsp;property&nbsp;is&nbsp;required.<br>
690&nbsp;&nbsp;validator:&nbsp;User&nbsp;provided&nbsp;method&nbsp;used&nbsp;for&nbsp;validation.<br>
691&nbsp;&nbsp;choices:&nbsp;User&nbsp;provided&nbsp;set&nbsp;of&nbsp;valid&nbsp;property&nbsp;values.<br>
692&nbsp;&nbsp;indexed:&nbsp;Whether&nbsp;property&nbsp;is&nbsp;indexed.</tt></dd></dl>
693
694<dl><dt><a name="FlowProperty-__property_config__"><strong>__property_config__</strong></a>(self, model_class, property_name)</dt><dd><tt>Configure&nbsp;property,&nbsp;connecting&nbsp;it&nbsp;to&nbsp;its&nbsp;model.<br>
695&nbsp;<br>
696Configure&nbsp;the&nbsp;property&nbsp;so&nbsp;that&nbsp;it&nbsp;knows&nbsp;its&nbsp;property&nbsp;name&nbsp;and&nbsp;what&nbsp;class<br>
697it&nbsp;belongs&nbsp;to.<br>
698&nbsp;<br>
699Args:<br>
Joe Gregorio90e7ec22011-07-06 10:09:20 -0400700&nbsp;&nbsp;model_class:&nbsp;<a href="google.appengine.ext.db.html#Model">Model</a>&nbsp;class&nbsp;which&nbsp;<a href="google.appengine.ext.db.html#Property">Property</a>&nbsp;will&nbsp;belong&nbsp;to.<br>
701&nbsp;&nbsp;property_name:&nbsp;Name&nbsp;of&nbsp;property&nbsp;within&nbsp;<a href="google.appengine.ext.db.html#Model">Model</a>&nbsp;instance&nbsp;to&nbsp;store&nbsp;property<br>
Joe Gregorio6e537032011-02-09 23:04:26 -0500702&nbsp;&nbsp;&nbsp;&nbsp;values&nbsp;in.&nbsp;&nbsp;By&nbsp;default&nbsp;this&nbsp;will&nbsp;be&nbsp;the&nbsp;property&nbsp;name&nbsp;preceded&nbsp;by<br>
703&nbsp;&nbsp;&nbsp;&nbsp;an&nbsp;underscore,&nbsp;but&nbsp;may&nbsp;change&nbsp;for&nbsp;different&nbsp;subclasses.</tt></dd></dl>
704
705<dl><dt><a name="FlowProperty-__set__"><strong>__set__</strong></a>(self, model_instance, value)</dt><dd><tt>Sets&nbsp;the&nbsp;value&nbsp;for&nbsp;this&nbsp;property&nbsp;on&nbsp;the&nbsp;given&nbsp;model&nbsp;instance.<br>
706&nbsp;<br>
707See&nbsp;<a href="http://docs.python.org/ref/descriptors.html">http://docs.python.org/ref/descriptors.html</a>&nbsp;for&nbsp;a&nbsp;description&nbsp;of<br>
708the&nbsp;arguments&nbsp;to&nbsp;this&nbsp;class&nbsp;and&nbsp;what&nbsp;they&nbsp;mean.</tt></dd></dl>
709
710<dl><dt><a name="FlowProperty-datastore_type"><strong>datastore_type</strong></a>(self)</dt><dd><tt>Deprecated&nbsp;backwards-compatible&nbsp;accessor&nbsp;method&nbsp;for&nbsp;self.<strong>data_type</strong>.</tt></dd></dl>
711
712<dl><dt><a name="FlowProperty-default_value"><strong>default_value</strong></a>(self)</dt><dd><tt>Default&nbsp;value&nbsp;for&nbsp;unassigned&nbsp;values.<br>
713&nbsp;<br>
714Returns:<br>
715&nbsp;&nbsp;Default&nbsp;value&nbsp;as&nbsp;provided&nbsp;by&nbsp;<a href="#FlowProperty-__init__">__init__</a>(default).</tt></dd></dl>
716
Joe Gregorio6121dd92012-04-13 07:50:04 -0400717<dl><dt><a name="FlowProperty-get_updated_value_for_datastore"><strong>get_updated_value_for_datastore</strong></a>(self, model_instance)</dt><dd><tt>Determine&nbsp;new&nbsp;value&nbsp;for&nbsp;auto-updated&nbsp;property.<br>
718&nbsp;<br>
719Some&nbsp;properies&nbsp;(e.g.&nbsp;DateTimeProperty,&nbsp;UserProperty)&nbsp;optionally&nbsp;update&nbsp;their<br>
720value&nbsp;on&nbsp;every&nbsp;put().&nbsp;This&nbsp;call&nbsp;must&nbsp;return&nbsp;the&nbsp;new&nbsp;desired&nbsp;value&nbsp;for&nbsp;such<br>
721properties.&nbsp;For&nbsp;all&nbsp;other&nbsp;properties,&nbsp;this&nbsp;call&nbsp;must&nbsp;return<br>
722AUTO_UPDATE_UNCHANGED.<br>
723&nbsp;<br>
724Args:<br>
725&nbsp;&nbsp;model_instance:&nbsp;Instance&nbsp;to&nbsp;get&nbsp;new&nbsp;value&nbsp;for.<br>
726&nbsp;<br>
727Returns:<br>
728&nbsp;&nbsp;Datastore&nbsp;representation&nbsp;of&nbsp;the&nbsp;new&nbsp;model&nbsp;value&nbsp;in&nbsp;a&nbsp;form&nbsp;that&nbsp;is<br>
729&nbsp;&nbsp;appropriate&nbsp;for&nbsp;storing&nbsp;in&nbsp;the&nbsp;datastore,&nbsp;or&nbsp;AUTO_UPDATE_UNCHANGED.</tt></dd></dl>
730
Joe Gregorio66212032012-06-14 09:10:14 -0400731<dl><dt><a name="FlowProperty-make_value_from_datastore_index_value"><strong>make_value_from_datastore_index_value</strong></a>(self, index_value)</dt></dl>
732
Joe Gregorio6e537032011-02-09 23:04:26 -0500733<hr>
734Data descriptors inherited from <a href="google.appengine.ext.db.html#Property">google.appengine.ext.db.Property</a>:<br>
735<dl><dt><strong>__dict__</strong></dt>
736<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
737</dl>
738<dl><dt><strong>__weakref__</strong></dt>
739<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
740</dl>
741<hr>
742Data and other attributes inherited from <a href="google.appengine.ext.db.html#Property">google.appengine.ext.db.Property</a>:<br>
Joe Gregorio90e7ec22011-07-06 10:09:20 -0400743<dl><dt><strong>creation_counter</strong> = 1</dl>
Joe Gregorio6e537032011-02-09 23:04:26 -0500744
745</td></tr></table> <p>
746<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
747<tr bgcolor="#ffc8d8">
748<td colspan=3 valign=bottom>&nbsp;<br>
Joe Gregoriob417caf2011-12-08 12:04:24 -0500749<font color="#000000" face="helvetica, arial"><a name="InvalidClientSecretsError">class <strong>InvalidClientSecretsError</strong></a>(<a href="exceptions.html#Exception">exceptions.Exception</a>)</font></td></tr>
750
751<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
752<td colspan=2><tt>The&nbsp;client_secrets.json&nbsp;file&nbsp;is&nbsp;malformed&nbsp;or&nbsp;missing&nbsp;required&nbsp;fields.<br>&nbsp;</tt></td></tr>
753<tr><td>&nbsp;</td>
754<td width="100%"><dl><dt>Method resolution order:</dt>
755<dd><a href="oauth2client.appengine.html#InvalidClientSecretsError">InvalidClientSecretsError</a></dd>
756<dd><a href="exceptions.html#Exception">exceptions.Exception</a></dd>
757<dd><a href="exceptions.html#BaseException">exceptions.BaseException</a></dd>
758<dd><a href="__builtin__.html#object">__builtin__.object</a></dd>
759</dl>
760<hr>
761Data descriptors defined here:<br>
762<dl><dt><strong>__weakref__</strong></dt>
763<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
764</dl>
765<hr>
766Methods inherited from <a href="exceptions.html#Exception">exceptions.Exception</a>:<br>
767<dl><dt><a name="InvalidClientSecretsError-__init__"><strong>__init__</strong></a>(...)</dt><dd><tt>x.<a href="#InvalidClientSecretsError-__init__">__init__</a>(...)&nbsp;initializes&nbsp;x;&nbsp;see&nbsp;x.__class__.__doc__&nbsp;for&nbsp;signature</tt></dd></dl>
768
769<hr>
770Data and other attributes inherited from <a href="exceptions.html#Exception">exceptions.Exception</a>:<br>
771<dl><dt><strong>__new__</strong> = &lt;built-in method __new__ of type object&gt;<dd><tt>T.<a href="#InvalidClientSecretsError-__new__">__new__</a>(S,&nbsp;...)&nbsp;-&gt;&nbsp;a&nbsp;new&nbsp;<a href="__builtin__.html#object">object</a>&nbsp;with&nbsp;type&nbsp;S,&nbsp;a&nbsp;subtype&nbsp;of&nbsp;T</tt></dl>
772
773<hr>
774Methods inherited from <a href="exceptions.html#BaseException">exceptions.BaseException</a>:<br>
775<dl><dt><a name="InvalidClientSecretsError-__delattr__"><strong>__delattr__</strong></a>(...)</dt><dd><tt>x.<a href="#InvalidClientSecretsError-__delattr__">__delattr__</a>('name')&nbsp;&lt;==&gt;&nbsp;del&nbsp;x.name</tt></dd></dl>
776
777<dl><dt><a name="InvalidClientSecretsError-__getattribute__"><strong>__getattribute__</strong></a>(...)</dt><dd><tt>x.<a href="#InvalidClientSecretsError-__getattribute__">__getattribute__</a>('name')&nbsp;&lt;==&gt;&nbsp;x.name</tt></dd></dl>
778
779<dl><dt><a name="InvalidClientSecretsError-__getitem__"><strong>__getitem__</strong></a>(...)</dt><dd><tt>x.<a href="#InvalidClientSecretsError-__getitem__">__getitem__</a>(y)&nbsp;&lt;==&gt;&nbsp;x[y]</tt></dd></dl>
780
781<dl><dt><a name="InvalidClientSecretsError-__getslice__"><strong>__getslice__</strong></a>(...)</dt><dd><tt>x.<a href="#InvalidClientSecretsError-__getslice__">__getslice__</a>(i,&nbsp;j)&nbsp;&lt;==&gt;&nbsp;x[i:j]<br>
782&nbsp;<br>
783Use&nbsp;of&nbsp;negative&nbsp;indices&nbsp;is&nbsp;not&nbsp;supported.</tt></dd></dl>
784
785<dl><dt><a name="InvalidClientSecretsError-__reduce__"><strong>__reduce__</strong></a>(...)</dt></dl>
786
787<dl><dt><a name="InvalidClientSecretsError-__repr__"><strong>__repr__</strong></a>(...)</dt><dd><tt>x.<a href="#InvalidClientSecretsError-__repr__">__repr__</a>()&nbsp;&lt;==&gt;&nbsp;repr(x)</tt></dd></dl>
788
789<dl><dt><a name="InvalidClientSecretsError-__setattr__"><strong>__setattr__</strong></a>(...)</dt><dd><tt>x.<a href="#InvalidClientSecretsError-__setattr__">__setattr__</a>('name',&nbsp;value)&nbsp;&lt;==&gt;&nbsp;x.name&nbsp;=&nbsp;value</tt></dd></dl>
790
791<dl><dt><a name="InvalidClientSecretsError-__setstate__"><strong>__setstate__</strong></a>(...)</dt></dl>
792
793<dl><dt><a name="InvalidClientSecretsError-__str__"><strong>__str__</strong></a>(...)</dt><dd><tt>x.<a href="#InvalidClientSecretsError-__str__">__str__</a>()&nbsp;&lt;==&gt;&nbsp;str(x)</tt></dd></dl>
794
795<dl><dt><a name="InvalidClientSecretsError-__unicode__"><strong>__unicode__</strong></a>(...)</dt></dl>
796
797<hr>
798Data descriptors inherited from <a href="exceptions.html#BaseException">exceptions.BaseException</a>:<br>
799<dl><dt><strong>__dict__</strong></dt>
800</dl>
801<dl><dt><strong>args</strong></dt>
802</dl>
803<dl><dt><strong>message</strong></dt>
804</dl>
805</td></tr></table> <p>
806<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
807<tr bgcolor="#ffc8d8">
808<td colspan=3 valign=bottom>&nbsp;<br>
Joe Gregorio90e7ec22011-07-06 10:09:20 -0400809<font color="#000000" face="helvetica, arial"><a name="OAuth2Decorator">class <strong>OAuth2Decorator</strong></a>(<a href="__builtin__.html#object">__builtin__.object</a>)</font></td></tr>
810
811<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
812<td colspan=2><tt>Utility&nbsp;for&nbsp;making&nbsp;OAuth&nbsp;2.0&nbsp;easier.<br>
813&nbsp;<br>
814Instantiate&nbsp;and&nbsp;then&nbsp;use&nbsp;with&nbsp;oauth_required&nbsp;or&nbsp;oauth_aware<br>
Joe Gregorio6121dd92012-04-13 07:50:04 -0400815as&nbsp;decorators&nbsp;on&nbsp;webapp.<a href="google.appengine.ext.webapp._webapp25.html#RequestHandler">RequestHandler</a>&nbsp;methods.<br>
Joe Gregorio90e7ec22011-07-06 10:09:20 -0400816&nbsp;<br>
817Example:<br>
818&nbsp;<br>
819&nbsp;&nbsp;decorator&nbsp;=&nbsp;<a href="#OAuth2Decorator">OAuth2Decorator</a>(<br>
820&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;client_id='837...ent.com',<br>
821&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;client_secret='Qh...wwI',<br>
Joe Gregoriob417caf2011-12-08 12:04:24 -0500822&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scope='https://www.googleapis.com/auth/plus')<br>
Joe Gregorio90e7ec22011-07-06 10:09:20 -0400823&nbsp;<br>
824&nbsp;<br>
Joe Gregorio6121dd92012-04-13 07:50:04 -0400825&nbsp;&nbsp;class&nbsp;MainHandler(webapp.<a href="google.appengine.ext.webapp._webapp25.html#RequestHandler">RequestHandler</a>):<br>
Joe Gregorio90e7ec22011-07-06 10:09:20 -0400826&nbsp;<br>
827&nbsp;&nbsp;&nbsp;&nbsp;@decorator.oauth_required<br>
828&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;get(self):<br>
829&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http&nbsp;=&nbsp;decorator.<a href="#OAuth2Decorator-http">http</a>()<br>
830&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;http&nbsp;is&nbsp;authorized&nbsp;with&nbsp;the&nbsp;user's&nbsp;Credentials&nbsp;and&nbsp;can&nbsp;be&nbsp;used<br>
831&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;in&nbsp;API&nbsp;calls<br>&nbsp;</tt></td></tr>
832<tr><td>&nbsp;</td>
833<td width="100%">Methods defined here:<br>
Joe Gregorio3d55ac52012-02-21 10:11:19 -0500834<dl><dt><a name="OAuth2Decorator-__init__"><strong>__init__</strong></a>(self, client_id, client_secret, scope, auth_uri<font color="#909090">='https://accounts.google.com/o/oauth2/auth'</font>, token_uri<font color="#909090">='https://accounts.google.com/o/oauth2/token'</font>, user_agent<font color="#909090">=None</font>, message<font color="#909090">=None</font>, **kwargs)</dt><dd><tt>Constructor&nbsp;for&nbsp;<a href="#OAuth2Decorator">OAuth2Decorator</a><br>
Joe Gregorio90e7ec22011-07-06 10:09:20 -0400835&nbsp;<br>
836Args:<br>
837&nbsp;&nbsp;client_id:&nbsp;string,&nbsp;client&nbsp;identifier.<br>
838&nbsp;&nbsp;client_secret:&nbsp;string&nbsp;client&nbsp;secret.<br>
Joe Gregoriob417caf2011-12-08 12:04:24 -0500839&nbsp;&nbsp;scope:&nbsp;string&nbsp;or&nbsp;list&nbsp;of&nbsp;strings,&nbsp;scope(s)&nbsp;of&nbsp;the&nbsp;credentials&nbsp;being<br>
840&nbsp;&nbsp;&nbsp;&nbsp;requested.<br>
Joe Gregorio90e7ec22011-07-06 10:09:20 -0400841&nbsp;&nbsp;auth_uri:&nbsp;string,&nbsp;URI&nbsp;for&nbsp;authorization&nbsp;endpoint.&nbsp;For&nbsp;convenience<br>
842&nbsp;&nbsp;&nbsp;&nbsp;defaults&nbsp;to&nbsp;Google's&nbsp;endpoints&nbsp;but&nbsp;any&nbsp;OAuth&nbsp;2.0&nbsp;provider&nbsp;can&nbsp;be&nbsp;used.<br>
843&nbsp;&nbsp;token_uri:&nbsp;string,&nbsp;URI&nbsp;for&nbsp;token&nbsp;endpoint.&nbsp;For&nbsp;convenience<br>
Joe Gregoriob417caf2011-12-08 12:04:24 -0500844&nbsp;&nbsp;&nbsp;&nbsp;defaults&nbsp;to&nbsp;Google's&nbsp;endpoints&nbsp;but&nbsp;any&nbsp;OAuth&nbsp;2.0&nbsp;provider&nbsp;can&nbsp;be&nbsp;used.<br>
Joe Gregorio3d55ac52012-02-21 10:11:19 -0500845&nbsp;&nbsp;user_agent:&nbsp;string,&nbsp;User&nbsp;agent&nbsp;of&nbsp;your&nbsp;application,&nbsp;default&nbsp;to&nbsp;None.<br>
Joe Gregoriob417caf2011-12-08 12:04:24 -0500846&nbsp;&nbsp;message:&nbsp;Message&nbsp;to&nbsp;display&nbsp;if&nbsp;there&nbsp;are&nbsp;problems&nbsp;with&nbsp;the&nbsp;OAuth&nbsp;2.0<br>
847&nbsp;&nbsp;&nbsp;&nbsp;configuration.&nbsp;The&nbsp;message&nbsp;may&nbsp;contain&nbsp;HTML&nbsp;and&nbsp;will&nbsp;be&nbsp;presented&nbsp;on&nbsp;the<br>
Joe Gregorio3d55ac52012-02-21 10:11:19 -0500848&nbsp;&nbsp;&nbsp;&nbsp;web&nbsp;interface&nbsp;for&nbsp;any&nbsp;method&nbsp;that&nbsp;uses&nbsp;the&nbsp;decorator.<br>
849&nbsp;&nbsp;**kwargs:&nbsp;dict,&nbsp;Keyword&nbsp;arguments&nbsp;are&nbsp;be&nbsp;passed&nbsp;along&nbsp;as&nbsp;kwargs&nbsp;to&nbsp;the<br>
850&nbsp;&nbsp;&nbsp;&nbsp;OAuth2WebServerFlow&nbsp;constructor.</tt></dd></dl>
Joe Gregorio90e7ec22011-07-06 10:09:20 -0400851
852<dl><dt><a name="OAuth2Decorator-authorize_url"><strong>authorize_url</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;URL&nbsp;to&nbsp;start&nbsp;the&nbsp;OAuth&nbsp;dance.<br>
853&nbsp;<br>
Joe Gregorio6121dd92012-04-13 07:50:04 -0400854Must&nbsp;only&nbsp;be&nbsp;called&nbsp;from&nbsp;with&nbsp;a&nbsp;webapp.<a href="google.appengine.ext.webapp._webapp25.html#RequestHandler">RequestHandler</a>&nbsp;subclassed&nbsp;method<br>
Joe Gregorio90e7ec22011-07-06 10:09:20 -0400855that&nbsp;had&nbsp;been&nbsp;decorated&nbsp;with&nbsp;either&nbsp;@oauth_required&nbsp;or&nbsp;@oauth_aware.</tt></dd></dl>
856
857<dl><dt><a name="OAuth2Decorator-has_credentials"><strong>has_credentials</strong></a>(self)</dt><dd><tt>True&nbsp;if&nbsp;for&nbsp;the&nbsp;logged&nbsp;in&nbsp;user&nbsp;there&nbsp;are&nbsp;valid&nbsp;access&nbsp;Credentials.<br>
858&nbsp;<br>
Joe Gregorio6121dd92012-04-13 07:50:04 -0400859Must&nbsp;only&nbsp;be&nbsp;called&nbsp;from&nbsp;with&nbsp;a&nbsp;webapp.<a href="google.appengine.ext.webapp._webapp25.html#RequestHandler">RequestHandler</a>&nbsp;subclassed&nbsp;method<br>
Joe Gregorio90e7ec22011-07-06 10:09:20 -0400860that&nbsp;had&nbsp;been&nbsp;decorated&nbsp;with&nbsp;either&nbsp;@oauth_required&nbsp;or&nbsp;@oauth_aware.</tt></dd></dl>
861
862<dl><dt><a name="OAuth2Decorator-http"><strong>http</strong></a>(self)</dt><dd><tt>Returns&nbsp;an&nbsp;authorized&nbsp;http&nbsp;instance.<br>
863&nbsp;<br>
864Must&nbsp;only&nbsp;be&nbsp;called&nbsp;from&nbsp;within&nbsp;an&nbsp;@oauth_required&nbsp;decorated&nbsp;method,&nbsp;or<br>
865from&nbsp;within&nbsp;an&nbsp;@oauth_aware&nbsp;decorated&nbsp;method&nbsp;where&nbsp;<a href="#OAuth2Decorator-has_credentials">has_credentials</a>()<br>
866returns&nbsp;True.</tt></dd></dl>
867
868<dl><dt><a name="OAuth2Decorator-oauth_aware"><strong>oauth_aware</strong></a>(self, method)</dt><dd><tt>Decorator&nbsp;that&nbsp;sets&nbsp;up&nbsp;for&nbsp;OAuth&nbsp;2.0&nbsp;dance,&nbsp;but&nbsp;doesn't&nbsp;do&nbsp;it.<br>
869&nbsp;<br>
870Does&nbsp;all&nbsp;the&nbsp;setup&nbsp;for&nbsp;the&nbsp;OAuth&nbsp;dance,&nbsp;but&nbsp;doesn't&nbsp;initiate&nbsp;it.<br>
871This&nbsp;decorator&nbsp;is&nbsp;useful&nbsp;if&nbsp;you&nbsp;want&nbsp;to&nbsp;create&nbsp;a&nbsp;page&nbsp;that&nbsp;knows<br>
872whether&nbsp;or&nbsp;not&nbsp;the&nbsp;user&nbsp;has&nbsp;granted&nbsp;access&nbsp;to&nbsp;this&nbsp;application.<br>
873From&nbsp;within&nbsp;a&nbsp;method&nbsp;decorated&nbsp;with&nbsp;@oauth_aware&nbsp;the&nbsp;<a href="#OAuth2Decorator-has_credentials">has_credentials</a>()<br>
874and&nbsp;<a href="#OAuth2Decorator-authorize_url">authorize_url</a>()&nbsp;methods&nbsp;can&nbsp;be&nbsp;called.<br>
875&nbsp;<br>
876Args:<br>
Joe Gregorio6121dd92012-04-13 07:50:04 -0400877&nbsp;&nbsp;method:&nbsp;callable,&nbsp;to&nbsp;be&nbsp;decorated&nbsp;method&nbsp;of&nbsp;a&nbsp;webapp.<a href="google.appengine.ext.webapp._webapp25.html#RequestHandler">RequestHandler</a><br>
Joe Gregorio90e7ec22011-07-06 10:09:20 -0400878&nbsp;&nbsp;&nbsp;&nbsp;instance.</tt></dd></dl>
879
880<dl><dt><a name="OAuth2Decorator-oauth_required"><strong>oauth_required</strong></a>(self, method)</dt><dd><tt>Decorator&nbsp;that&nbsp;starts&nbsp;the&nbsp;OAuth&nbsp;2.0&nbsp;dance.<br>
881&nbsp;<br>
882Starts&nbsp;the&nbsp;OAuth&nbsp;dance&nbsp;for&nbsp;the&nbsp;logged&nbsp;in&nbsp;user&nbsp;if&nbsp;they&nbsp;haven't&nbsp;already<br>
883granted&nbsp;access&nbsp;for&nbsp;this&nbsp;application.<br>
884&nbsp;<br>
885Args:<br>
Joe Gregorio6121dd92012-04-13 07:50:04 -0400886&nbsp;&nbsp;method:&nbsp;callable,&nbsp;to&nbsp;be&nbsp;decorated&nbsp;method&nbsp;of&nbsp;a&nbsp;webapp.<a href="google.appengine.ext.webapp._webapp25.html#RequestHandler">RequestHandler</a><br>
Joe Gregorio90e7ec22011-07-06 10:09:20 -0400887&nbsp;&nbsp;&nbsp;&nbsp;instance.</tt></dd></dl>
888
889<hr>
890Data descriptors defined here:<br>
891<dl><dt><strong>__dict__</strong></dt>
892<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
893</dl>
894<dl><dt><strong>__weakref__</strong></dt>
895<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
896</dl>
897</td></tr></table> <p>
898<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
899<tr bgcolor="#ffc8d8">
900<td colspan=3 valign=bottom>&nbsp;<br>
Joe Gregoriob417caf2011-12-08 12:04:24 -0500901<font color="#000000" face="helvetica, arial"><a name="OAuth2DecoratorFromClientSecrets">class <strong>OAuth2DecoratorFromClientSecrets</strong></a>(<a href="oauth2client.appengine.html#OAuth2Decorator">OAuth2Decorator</a>)</font></td></tr>
902
903<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
904<td colspan=2><tt>An&nbsp;<a href="#OAuth2Decorator">OAuth2Decorator</a>&nbsp;that&nbsp;builds&nbsp;from&nbsp;a&nbsp;clientsecrets&nbsp;file.<br>
905&nbsp;<br>
906Uses&nbsp;a&nbsp;clientsecrets&nbsp;file&nbsp;as&nbsp;the&nbsp;source&nbsp;for&nbsp;all&nbsp;the&nbsp;information&nbsp;when<br>
907constructing&nbsp;an&nbsp;<a href="#OAuth2Decorator">OAuth2Decorator</a>.<br>
908&nbsp;<br>
909Example:<br>
910&nbsp;<br>
911&nbsp;&nbsp;decorator&nbsp;=&nbsp;<a href="#OAuth2DecoratorFromClientSecrets">OAuth2DecoratorFromClientSecrets</a>(<br>
912&nbsp;&nbsp;&nbsp;&nbsp;os.path.join(os.path.dirname(__file__),&nbsp;'client_secrets.json')<br>
913&nbsp;&nbsp;&nbsp;&nbsp;scope='https://www.googleapis.com/auth/plus')<br>
914&nbsp;<br>
915&nbsp;<br>
Joe Gregorio6121dd92012-04-13 07:50:04 -0400916&nbsp;&nbsp;class&nbsp;MainHandler(webapp.<a href="google.appengine.ext.webapp._webapp25.html#RequestHandler">RequestHandler</a>):<br>
Joe Gregoriob417caf2011-12-08 12:04:24 -0500917&nbsp;<br>
918&nbsp;&nbsp;&nbsp;&nbsp;@decorator.oauth_required<br>
919&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;get(self):<br>
920&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http&nbsp;=&nbsp;decorator.<a href="#OAuth2DecoratorFromClientSecrets-http">http</a>()<br>
921&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;http&nbsp;is&nbsp;authorized&nbsp;with&nbsp;the&nbsp;user's&nbsp;Credentials&nbsp;and&nbsp;can&nbsp;be&nbsp;used<br>
922&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;in&nbsp;API&nbsp;calls<br>&nbsp;</tt></td></tr>
923<tr><td>&nbsp;</td>
924<td width="100%"><dl><dt>Method resolution order:</dt>
925<dd><a href="oauth2client.appengine.html#OAuth2DecoratorFromClientSecrets">OAuth2DecoratorFromClientSecrets</a></dd>
926<dd><a href="oauth2client.appengine.html#OAuth2Decorator">OAuth2Decorator</a></dd>
927<dd><a href="__builtin__.html#object">__builtin__.object</a></dd>
928</dl>
929<hr>
930Methods defined here:<br>
931<dl><dt><a name="OAuth2DecoratorFromClientSecrets-__init__"><strong>__init__</strong></a>(self, filename, scope, message<font color="#909090">=None</font>)</dt><dd><tt>Constructor<br>
932&nbsp;<br>
933Args:<br>
934&nbsp;&nbsp;filename:&nbsp;string,&nbsp;File&nbsp;name&nbsp;of&nbsp;client&nbsp;secrets.<br>
Joe Gregorio6121dd92012-04-13 07:50:04 -0400935&nbsp;&nbsp;scope:&nbsp;string&nbsp;or&nbsp;list&nbsp;of&nbsp;strings,&nbsp;scope(s)&nbsp;of&nbsp;the&nbsp;credentials&nbsp;being<br>
936&nbsp;&nbsp;&nbsp;&nbsp;requested.<br>
Joe Gregoriob417caf2011-12-08 12:04:24 -0500937&nbsp;&nbsp;message:&nbsp;string,&nbsp;A&nbsp;friendly&nbsp;string&nbsp;to&nbsp;display&nbsp;to&nbsp;the&nbsp;user&nbsp;if&nbsp;the<br>
938&nbsp;&nbsp;&nbsp;&nbsp;clientsecrets&nbsp;file&nbsp;is&nbsp;missing&nbsp;or&nbsp;invalid.&nbsp;The&nbsp;message&nbsp;may&nbsp;contain&nbsp;HTML&nbsp;and<br>
939&nbsp;&nbsp;&nbsp;&nbsp;will&nbsp;be&nbsp;presented&nbsp;on&nbsp;the&nbsp;web&nbsp;interface&nbsp;for&nbsp;any&nbsp;method&nbsp;that&nbsp;uses&nbsp;the<br>
940&nbsp;&nbsp;&nbsp;&nbsp;decorator.</tt></dd></dl>
941
942<hr>
943Methods inherited from <a href="oauth2client.appengine.html#OAuth2Decorator">OAuth2Decorator</a>:<br>
944<dl><dt><a name="OAuth2DecoratorFromClientSecrets-authorize_url"><strong>authorize_url</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;URL&nbsp;to&nbsp;start&nbsp;the&nbsp;OAuth&nbsp;dance.<br>
945&nbsp;<br>
Joe Gregorio6121dd92012-04-13 07:50:04 -0400946Must&nbsp;only&nbsp;be&nbsp;called&nbsp;from&nbsp;with&nbsp;a&nbsp;webapp.<a href="google.appengine.ext.webapp._webapp25.html#RequestHandler">RequestHandler</a>&nbsp;subclassed&nbsp;method<br>
Joe Gregoriob417caf2011-12-08 12:04:24 -0500947that&nbsp;had&nbsp;been&nbsp;decorated&nbsp;with&nbsp;either&nbsp;@oauth_required&nbsp;or&nbsp;@oauth_aware.</tt></dd></dl>
948
949<dl><dt><a name="OAuth2DecoratorFromClientSecrets-has_credentials"><strong>has_credentials</strong></a>(self)</dt><dd><tt>True&nbsp;if&nbsp;for&nbsp;the&nbsp;logged&nbsp;in&nbsp;user&nbsp;there&nbsp;are&nbsp;valid&nbsp;access&nbsp;Credentials.<br>
950&nbsp;<br>
Joe Gregorio6121dd92012-04-13 07:50:04 -0400951Must&nbsp;only&nbsp;be&nbsp;called&nbsp;from&nbsp;with&nbsp;a&nbsp;webapp.<a href="google.appengine.ext.webapp._webapp25.html#RequestHandler">RequestHandler</a>&nbsp;subclassed&nbsp;method<br>
Joe Gregoriob417caf2011-12-08 12:04:24 -0500952that&nbsp;had&nbsp;been&nbsp;decorated&nbsp;with&nbsp;either&nbsp;@oauth_required&nbsp;or&nbsp;@oauth_aware.</tt></dd></dl>
953
954<dl><dt><a name="OAuth2DecoratorFromClientSecrets-http"><strong>http</strong></a>(self)</dt><dd><tt>Returns&nbsp;an&nbsp;authorized&nbsp;http&nbsp;instance.<br>
955&nbsp;<br>
956Must&nbsp;only&nbsp;be&nbsp;called&nbsp;from&nbsp;within&nbsp;an&nbsp;@oauth_required&nbsp;decorated&nbsp;method,&nbsp;or<br>
957from&nbsp;within&nbsp;an&nbsp;@oauth_aware&nbsp;decorated&nbsp;method&nbsp;where&nbsp;<a href="#OAuth2DecoratorFromClientSecrets-has_credentials">has_credentials</a>()<br>
958returns&nbsp;True.</tt></dd></dl>
959
960<dl><dt><a name="OAuth2DecoratorFromClientSecrets-oauth_aware"><strong>oauth_aware</strong></a>(self, method)</dt><dd><tt>Decorator&nbsp;that&nbsp;sets&nbsp;up&nbsp;for&nbsp;OAuth&nbsp;2.0&nbsp;dance,&nbsp;but&nbsp;doesn't&nbsp;do&nbsp;it.<br>
961&nbsp;<br>
962Does&nbsp;all&nbsp;the&nbsp;setup&nbsp;for&nbsp;the&nbsp;OAuth&nbsp;dance,&nbsp;but&nbsp;doesn't&nbsp;initiate&nbsp;it.<br>
963This&nbsp;decorator&nbsp;is&nbsp;useful&nbsp;if&nbsp;you&nbsp;want&nbsp;to&nbsp;create&nbsp;a&nbsp;page&nbsp;that&nbsp;knows<br>
964whether&nbsp;or&nbsp;not&nbsp;the&nbsp;user&nbsp;has&nbsp;granted&nbsp;access&nbsp;to&nbsp;this&nbsp;application.<br>
965From&nbsp;within&nbsp;a&nbsp;method&nbsp;decorated&nbsp;with&nbsp;@oauth_aware&nbsp;the&nbsp;<a href="#OAuth2DecoratorFromClientSecrets-has_credentials">has_credentials</a>()<br>
966and&nbsp;<a href="#OAuth2DecoratorFromClientSecrets-authorize_url">authorize_url</a>()&nbsp;methods&nbsp;can&nbsp;be&nbsp;called.<br>
967&nbsp;<br>
968Args:<br>
Joe Gregorio6121dd92012-04-13 07:50:04 -0400969&nbsp;&nbsp;method:&nbsp;callable,&nbsp;to&nbsp;be&nbsp;decorated&nbsp;method&nbsp;of&nbsp;a&nbsp;webapp.<a href="google.appengine.ext.webapp._webapp25.html#RequestHandler">RequestHandler</a><br>
Joe Gregoriob417caf2011-12-08 12:04:24 -0500970&nbsp;&nbsp;&nbsp;&nbsp;instance.</tt></dd></dl>
971
972<dl><dt><a name="OAuth2DecoratorFromClientSecrets-oauth_required"><strong>oauth_required</strong></a>(self, method)</dt><dd><tt>Decorator&nbsp;that&nbsp;starts&nbsp;the&nbsp;OAuth&nbsp;2.0&nbsp;dance.<br>
973&nbsp;<br>
974Starts&nbsp;the&nbsp;OAuth&nbsp;dance&nbsp;for&nbsp;the&nbsp;logged&nbsp;in&nbsp;user&nbsp;if&nbsp;they&nbsp;haven't&nbsp;already<br>
975granted&nbsp;access&nbsp;for&nbsp;this&nbsp;application.<br>
976&nbsp;<br>
977Args:<br>
Joe Gregorio6121dd92012-04-13 07:50:04 -0400978&nbsp;&nbsp;method:&nbsp;callable,&nbsp;to&nbsp;be&nbsp;decorated&nbsp;method&nbsp;of&nbsp;a&nbsp;webapp.<a href="google.appengine.ext.webapp._webapp25.html#RequestHandler">RequestHandler</a><br>
Joe Gregoriob417caf2011-12-08 12:04:24 -0500979&nbsp;&nbsp;&nbsp;&nbsp;instance.</tt></dd></dl>
980
981<hr>
982Data descriptors inherited from <a href="oauth2client.appengine.html#OAuth2Decorator">OAuth2Decorator</a>:<br>
983<dl><dt><strong>__dict__</strong></dt>
984<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
985</dl>
986<dl><dt><strong>__weakref__</strong></dt>
987<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
988</dl>
989</td></tr></table> <p>
990<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
991<tr bgcolor="#ffc8d8">
992<td colspan=3 valign=bottom>&nbsp;<br>
Joe Gregorio6121dd92012-04-13 07:50:04 -0400993<font color="#000000" face="helvetica, arial"><a name="OAuth2Handler">class <strong>OAuth2Handler</strong></a>(<a href="google.appengine.ext.webapp._webapp25.html#RequestHandler">google.appengine.ext.webapp._webapp25.RequestHandler</a>)</font></td></tr>
Joe Gregorio90e7ec22011-07-06 10:09:20 -0400994
995<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
996<td colspan=2><tt>Handler&nbsp;for&nbsp;the&nbsp;redirect_uri&nbsp;of&nbsp;the&nbsp;OAuth&nbsp;2.0&nbsp;dance.<br>&nbsp;</tt></td></tr>
997<tr><td>&nbsp;</td>
998<td width="100%"><dl><dt>Method resolution order:</dt>
999<dd><a href="oauth2client.appengine.html#OAuth2Handler">OAuth2Handler</a></dd>
Joe Gregorio6121dd92012-04-13 07:50:04 -04001000<dd><a href="google.appengine.ext.webapp._webapp25.html#RequestHandler">google.appengine.ext.webapp._webapp25.RequestHandler</a></dd>
Joe Gregorio90e7ec22011-07-06 10:09:20 -04001001<dd><a href="__builtin__.html#object">__builtin__.object</a></dd>
1002</dl>
1003<hr>
1004Methods defined here:<br>
1005<dl><dt><a name="OAuth2Handler-get"><strong>get</strong></a> = check_login(self, *args)</dt></dl>
1006
1007<hr>
Joe Gregorio6121dd92012-04-13 07:50:04 -04001008Methods inherited from <a href="google.appengine.ext.webapp._webapp25.html#RequestHandler">google.appengine.ext.webapp._webapp25.RequestHandler</a>:<br>
Joe Gregorio90e7ec22011-07-06 10:09:20 -04001009<dl><dt><a name="OAuth2Handler-delete"><strong>delete</strong></a>(self, *args)</dt><dd><tt>Handler&nbsp;method&nbsp;for&nbsp;DELETE&nbsp;requests.</tt></dd></dl>
1010
1011<dl><dt><a name="OAuth2Handler-error"><strong>error</strong></a>(self, code)</dt><dd><tt>Clears&nbsp;the&nbsp;response&nbsp;output&nbsp;stream&nbsp;and&nbsp;sets&nbsp;the&nbsp;given&nbsp;HTTP&nbsp;error&nbsp;code.<br>
1012&nbsp;<br>
1013Args:<br>
1014&nbsp;&nbsp;code:&nbsp;the&nbsp;HTTP&nbsp;status&nbsp;error&nbsp;code&nbsp;(e.g.,&nbsp;501)</tt></dd></dl>
1015
1016<dl><dt><a name="OAuth2Handler-handle_exception"><strong>handle_exception</strong></a>(self, exception, debug_mode)</dt><dd><tt>Called&nbsp;if&nbsp;this&nbsp;handler&nbsp;throws&nbsp;an&nbsp;exception&nbsp;during&nbsp;execution.<br>
1017&nbsp;<br>
1018The&nbsp;default&nbsp;behavior&nbsp;is&nbsp;to&nbsp;call&nbsp;<a href="#OAuth2Handler-error">error</a>(500)&nbsp;and&nbsp;print&nbsp;a&nbsp;stack&nbsp;trace<br>
1019if&nbsp;debug_mode&nbsp;is&nbsp;True.<br>
1020&nbsp;<br>
1021Args:<br>
1022&nbsp;&nbsp;exception:&nbsp;the&nbsp;exception&nbsp;that&nbsp;was&nbsp;thrown<br>
1023&nbsp;&nbsp;debug_mode:&nbsp;True&nbsp;if&nbsp;the&nbsp;web&nbsp;application&nbsp;is&nbsp;running&nbsp;in&nbsp;debug&nbsp;mode</tt></dd></dl>
1024
1025<dl><dt><a name="OAuth2Handler-head"><strong>head</strong></a>(self, *args)</dt><dd><tt>Handler&nbsp;method&nbsp;for&nbsp;HEAD&nbsp;requests.</tt></dd></dl>
1026
1027<dl><dt><a name="OAuth2Handler-initialize"><strong>initialize</strong></a>(self, request, response)</dt><dd><tt>Initializes&nbsp;this&nbsp;request&nbsp;handler&nbsp;with&nbsp;the&nbsp;given&nbsp;Request&nbsp;and&nbsp;Response.</tt></dd></dl>
1028
1029<dl><dt><a name="OAuth2Handler-options"><strong>options</strong></a>(self, *args)</dt><dd><tt>Handler&nbsp;method&nbsp;for&nbsp;OPTIONS&nbsp;requests.</tt></dd></dl>
1030
1031<dl><dt><a name="OAuth2Handler-post"><strong>post</strong></a>(self, *args)</dt><dd><tt>Handler&nbsp;method&nbsp;for&nbsp;POST&nbsp;requests.</tt></dd></dl>
1032
1033<dl><dt><a name="OAuth2Handler-put"><strong>put</strong></a>(self, *args)</dt><dd><tt>Handler&nbsp;method&nbsp;for&nbsp;PUT&nbsp;requests.</tt></dd></dl>
1034
1035<dl><dt><a name="OAuth2Handler-redirect"><strong>redirect</strong></a>(self, uri, permanent<font color="#909090">=False</font>)</dt><dd><tt>Issues&nbsp;an&nbsp;HTTP&nbsp;redirect&nbsp;to&nbsp;the&nbsp;given&nbsp;relative&nbsp;URL.<br>
1036&nbsp;<br>
1037Args:<br>
1038&nbsp;&nbsp;uri:&nbsp;a&nbsp;relative&nbsp;or&nbsp;absolute&nbsp;URI&nbsp;(e.g.,&nbsp;'../flowers.html')<br>
1039&nbsp;&nbsp;permanent:&nbsp;if&nbsp;true,&nbsp;we&nbsp;use&nbsp;a&nbsp;301&nbsp;redirect&nbsp;instead&nbsp;of&nbsp;a&nbsp;302&nbsp;redirect</tt></dd></dl>
1040
1041<dl><dt><a name="OAuth2Handler-trace"><strong>trace</strong></a>(self, *args)</dt><dd><tt>Handler&nbsp;method&nbsp;for&nbsp;TRACE&nbsp;requests.</tt></dd></dl>
1042
1043<hr>
Joe Gregorio6121dd92012-04-13 07:50:04 -04001044Class methods inherited from <a href="google.appengine.ext.webapp._webapp25.html#RequestHandler">google.appengine.ext.webapp._webapp25.RequestHandler</a>:<br>
Joe Gregorio90e7ec22011-07-06 10:09:20 -04001045<dl><dt><a name="OAuth2Handler-get_url"><strong>get_url</strong></a>(cls, *args, **kargs)<font color="#909090"><font face="helvetica, arial"> from <a href="__builtin__.html#type">__builtin__.type</a></font></font></dt><dd><tt>Returns&nbsp;the&nbsp;url&nbsp;for&nbsp;the&nbsp;given&nbsp;handler.<br>
1046&nbsp;<br>
1047The&nbsp;default&nbsp;implementation&nbsp;uses&nbsp;the&nbsp;patterns&nbsp;passed&nbsp;to&nbsp;the&nbsp;active<br>
1048WSGIApplication&nbsp;to&nbsp;create&nbsp;a&nbsp;url.&nbsp;However,&nbsp;it&nbsp;is&nbsp;different&nbsp;from&nbsp;Django's<br>
1049urlresolvers.reverse()&nbsp;in&nbsp;the&nbsp;following&nbsp;ways:<br>
1050&nbsp;&nbsp;-&nbsp;It&nbsp;does&nbsp;not&nbsp;try&nbsp;to&nbsp;resolve&nbsp;handlers&nbsp;via&nbsp;module&nbsp;loading<br>
1051&nbsp;&nbsp;-&nbsp;It&nbsp;does&nbsp;not&nbsp;support&nbsp;named&nbsp;arguments<br>
1052&nbsp;&nbsp;-&nbsp;It&nbsp;performs&nbsp;some&nbsp;post-prosessing&nbsp;on&nbsp;the&nbsp;url&nbsp;to&nbsp;remove&nbsp;some&nbsp;regex<br>
1053&nbsp;&nbsp;&nbsp;&nbsp;operators.<br>
1054&nbsp;&nbsp;-&nbsp;It&nbsp;will&nbsp;try&nbsp;to&nbsp;fill&nbsp;in&nbsp;the&nbsp;left-most&nbsp;missing&nbsp;arguments&nbsp;with&nbsp;the&nbsp;args<br>
1055&nbsp;&nbsp;&nbsp;&nbsp;used&nbsp;in&nbsp;the&nbsp;active&nbsp;request.<br>
1056&nbsp;<br>
1057Args:<br>
1058&nbsp;&nbsp;args:&nbsp;Parameters&nbsp;for&nbsp;the&nbsp;url&nbsp;pattern's&nbsp;groups.<br>
1059&nbsp;&nbsp;kwargs:&nbsp;Optionally&nbsp;contains&nbsp;'implicit_args'&nbsp;that&nbsp;can&nbsp;either&nbsp;be&nbsp;a&nbsp;boolean<br>
1060&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or&nbsp;a&nbsp;tuple.&nbsp;When&nbsp;it&nbsp;is&nbsp;True,&nbsp;it&nbsp;will&nbsp;use&nbsp;the&nbsp;arguments&nbsp;to&nbsp;the<br>
1061&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;active&nbsp;request&nbsp;as&nbsp;implicit&nbsp;arguments.&nbsp;When&nbsp;it&nbsp;is&nbsp;False&nbsp;(default),<br>
1062&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;it&nbsp;will&nbsp;not&nbsp;use&nbsp;any&nbsp;implicit&nbsp;arguments.&nbsp;When&nbsp;it&nbsp;is&nbsp;a&nbsp;tuple,&nbsp;it<br>
1063&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;will&nbsp;use&nbsp;the&nbsp;tuple&nbsp;as&nbsp;the&nbsp;implicit&nbsp;arguments.<br>
1064&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;left-most&nbsp;args&nbsp;if&nbsp;some&nbsp;are&nbsp;missing&nbsp;from&nbsp;args.<br>
1065&nbsp;<br>
1066Returns:<br>
1067&nbsp;&nbsp;The&nbsp;url&nbsp;for&nbsp;this&nbsp;handler/args&nbsp;combination.<br>
1068&nbsp;<br>
1069Raises:<br>
1070&nbsp;&nbsp;NoUrlFoundError:&nbsp;No&nbsp;url&nbsp;pattern&nbsp;for&nbsp;this&nbsp;handler&nbsp;has&nbsp;the&nbsp;same<br>
1071&nbsp;&nbsp;&nbsp;&nbsp;number&nbsp;of&nbsp;args&nbsp;that&nbsp;were&nbsp;passed&nbsp;in.</tt></dd></dl>
1072
1073<dl><dt><a name="OAuth2Handler-new_factory"><strong>new_factory</strong></a>(cls, *args, **kwargs)<font color="#909090"><font face="helvetica, arial"> from <a href="__builtin__.html#type">__builtin__.type</a></font></font></dt><dd><tt>Create&nbsp;new&nbsp;request&nbsp;handler&nbsp;factory.<br>
1074&nbsp;<br>
1075Use&nbsp;factory&nbsp;method&nbsp;to&nbsp;create&nbsp;reusable&nbsp;request&nbsp;handlers&nbsp;that&nbsp;just<br>
1076require&nbsp;a&nbsp;few&nbsp;configuration&nbsp;parameters&nbsp;to&nbsp;construct.&nbsp;&nbsp;Also&nbsp;useful<br>
1077for&nbsp;injecting&nbsp;shared&nbsp;state&nbsp;between&nbsp;multiple&nbsp;request&nbsp;handler<br>
1078instances&nbsp;without&nbsp;relying&nbsp;on&nbsp;global&nbsp;variables.&nbsp;&nbsp;For&nbsp;example,&nbsp;to<br>
1079create&nbsp;a&nbsp;set&nbsp;of&nbsp;post&nbsp;handlers&nbsp;that&nbsp;will&nbsp;do&nbsp;simple&nbsp;text&nbsp;transformations<br>
1080you&nbsp;can&nbsp;write:<br>
1081&nbsp;<br>
Joe Gregorio6121dd92012-04-13 07:50:04 -04001082&nbsp;&nbsp;class&nbsp;ChangeTextHandler(webapp.<a href="google.appengine.ext.webapp._webapp25.html#RequestHandler">RequestHandler</a>):<br>
Joe Gregorio90e7ec22011-07-06 10:09:20 -04001083&nbsp;<br>
1084&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;<a href="#OAuth2Handler-__init__">__init__</a>(self,&nbsp;transform):<br>
1085&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.<strong>transform</strong>&nbsp;=&nbsp;transform<br>
1086&nbsp;<br>
1087&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;<a href="#OAuth2Handler-post">post</a>(self):<br>
1088&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response_text&nbsp;=&nbsp;transform(<br>
1089&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.<strong>request</strong>.request.body_file.getvalue())<br>
1090&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.<strong>response</strong>.out.write(response_text)<br>
1091&nbsp;<br>
1092&nbsp;&nbsp;application&nbsp;=&nbsp;webapp.WSGIApplication(<br>
1093&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[('/to_lower',&nbsp;ChangeTextHandler.<a href="#OAuth2Handler-new_factory">new_factory</a>(str.lower)),<br>
1094&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;('/to_upper',&nbsp;ChangeTextHandler.<a href="#OAuth2Handler-new_factory">new_factory</a>(str.upper)),<br>
1095&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;],<br>
1096&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;debug=True)<br>
1097&nbsp;<br>
1098Text&nbsp;POSTed&nbsp;to&nbsp;/to_lower&nbsp;will&nbsp;be&nbsp;lower&nbsp;cased.<br>
1099Text&nbsp;POSTed&nbsp;to&nbsp;/to_upper&nbsp;will&nbsp;be&nbsp;upper&nbsp;cased.</tt></dd></dl>
1100
1101<hr>
Joe Gregorio6121dd92012-04-13 07:50:04 -04001102Data descriptors inherited from <a href="google.appengine.ext.webapp._webapp25.html#RequestHandler">google.appengine.ext.webapp._webapp25.RequestHandler</a>:<br>
Joe Gregorio90e7ec22011-07-06 10:09:20 -04001103<dl><dt><strong>__dict__</strong></dt>
1104<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
1105</dl>
1106<dl><dt><strong>__weakref__</strong></dt>
1107<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
1108</dl>
1109</td></tr></table> <p>
1110<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
1111<tr bgcolor="#ffc8d8">
1112<td colspan=3 valign=bottom>&nbsp;<br>
Joe Gregorio3b79fa82011-02-17 11:47:17 -05001113<font color="#000000" face="helvetica, arial"><a name="StorageByKeyName">class <strong>StorageByKeyName</strong></a>(<a href="oauth2client.client.html#Storage">oauth2client.client.Storage</a>)</font></td></tr>
Joe Gregorio6e537032011-02-09 23:04:26 -05001114
1115<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
1116<td colspan=2><tt>Store&nbsp;and&nbsp;retrieve&nbsp;a&nbsp;single&nbsp;credential&nbsp;to&nbsp;and&nbsp;from<br>
1117the&nbsp;App&nbsp;Engine&nbsp;datastore.<br>
1118&nbsp;<br>
Joe Gregorio3b79fa82011-02-17 11:47:17 -05001119This&nbsp;<a href="oauth2client.client.html#Storage">Storage</a>&nbsp;helper&nbsp;presumes&nbsp;the&nbsp;Credentials<br>
Joe Gregorio6e537032011-02-09 23:04:26 -05001120have&nbsp;been&nbsp;stored&nbsp;as&nbsp;a&nbsp;CredenialsProperty<br>
1121on&nbsp;a&nbsp;datastore&nbsp;model&nbsp;class,&nbsp;and&nbsp;that&nbsp;entities<br>
1122are&nbsp;stored&nbsp;by&nbsp;key_name.<br>&nbsp;</tt></td></tr>
1123<tr><td>&nbsp;</td>
Joe Gregorio3b79fa82011-02-17 11:47:17 -05001124<td width="100%"><dl><dt>Method resolution order:</dt>
1125<dd><a href="oauth2client.appengine.html#StorageByKeyName">StorageByKeyName</a></dd>
1126<dd><a href="oauth2client.client.html#Storage">oauth2client.client.Storage</a></dd>
1127<dd><a href="__builtin__.html#object">__builtin__.object</a></dd>
1128</dl>
1129<hr>
1130Methods defined here:<br>
Joe Gregorio90e7ec22011-07-06 10:09:20 -04001131<dl><dt><a name="StorageByKeyName-__init__"><strong>__init__</strong></a>(self, model, key_name, property_name, cache<font color="#909090">=None</font>)</dt><dd><tt>Constructor&nbsp;for&nbsp;<a href="oauth2client.client.html#Storage">Storage</a>.<br>
Joe Gregorio6e537032011-02-09 23:04:26 -05001132&nbsp;<br>
1133Args:<br>
Joe Gregorio90e7ec22011-07-06 10:09:20 -04001134&nbsp;&nbsp;model:&nbsp;db.<a href="google.appengine.ext.db.html#Model">Model</a>,&nbsp;model&nbsp;class<br>
Joe Gregorio6e537032011-02-09 23:04:26 -05001135&nbsp;&nbsp;key_name:&nbsp;string,&nbsp;key&nbsp;name&nbsp;for&nbsp;the&nbsp;entity&nbsp;that&nbsp;has&nbsp;the&nbsp;credentials<br>
Joe Gregorio90e7ec22011-07-06 10:09:20 -04001136&nbsp;&nbsp;property_name:&nbsp;string,&nbsp;name&nbsp;of&nbsp;the&nbsp;property&nbsp;that&nbsp;is&nbsp;a&nbsp;<a href="#CredentialsProperty">CredentialsProperty</a><br>
1137&nbsp;&nbsp;cache:&nbsp;memcache,&nbsp;a&nbsp;write-through&nbsp;cache&nbsp;to&nbsp;put&nbsp;in&nbsp;front&nbsp;of&nbsp;the&nbsp;datastore</tt></dd></dl>
Joe Gregorio6e537032011-02-09 23:04:26 -05001138
Joe Gregorio3d55ac52012-02-21 10:11:19 -05001139<dl><dt><a name="StorageByKeyName-locked_delete"><strong>locked_delete</strong></a>(self)</dt><dd><tt>Delete&nbsp;Credential&nbsp;from&nbsp;datastore.</tt></dd></dl>
1140
Joe Gregoriob417caf2011-12-08 12:04:24 -05001141<dl><dt><a name="StorageByKeyName-locked_get"><strong>locked_get</strong></a>(self)</dt><dd><tt>Retrieve&nbsp;Credential&nbsp;from&nbsp;datastore.<br>
Joe Gregorio6e537032011-02-09 23:04:26 -05001142&nbsp;<br>
1143Returns:<br>
1144&nbsp;&nbsp;oauth2client.Credentials</tt></dd></dl>
1145
Joe Gregoriob417caf2011-12-08 12:04:24 -05001146<dl><dt><a name="StorageByKeyName-locked_put"><strong>locked_put</strong></a>(self, credentials)</dt><dd><tt>Write&nbsp;a&nbsp;Credentials&nbsp;to&nbsp;the&nbsp;datastore.<br>
Joe Gregorio6e537032011-02-09 23:04:26 -05001147&nbsp;<br>
1148Args:<br>
1149&nbsp;&nbsp;credentials:&nbsp;Credentials,&nbsp;the&nbsp;credentials&nbsp;to&nbsp;store.</tt></dd></dl>
1150
1151<hr>
Joe Gregorioa8451672011-09-15 09:53:21 -04001152Methods inherited from <a href="oauth2client.client.html#Storage">oauth2client.client.Storage</a>:<br>
1153<dl><dt><a name="StorageByKeyName-acquire_lock"><strong>acquire_lock</strong></a>(self)</dt><dd><tt>Acquires&nbsp;any&nbsp;lock&nbsp;necessary&nbsp;to&nbsp;access&nbsp;this&nbsp;<a href="oauth2client.client.html#Storage">Storage</a>.<br>
1154&nbsp;<br>
1155This&nbsp;lock&nbsp;is&nbsp;not&nbsp;reentrant.</tt></dd></dl>
1156
Joe Gregorio3d55ac52012-02-21 10:11:19 -05001157<dl><dt><a name="StorageByKeyName-delete"><strong>delete</strong></a>(self)</dt><dd><tt>Delete&nbsp;credential.<br>
1158&nbsp;<br>
1159Frees&nbsp;any&nbsp;resources&nbsp;associated&nbsp;with&nbsp;storing&nbsp;the&nbsp;credential.<br>
1160The&nbsp;<a href="oauth2client.client.html#Storage">Storage</a>&nbsp;lock&nbsp;must&nbsp;*not*&nbsp;be&nbsp;held&nbsp;when&nbsp;this&nbsp;is&nbsp;called.<br>
1161&nbsp;<br>
1162Returns:<br>
1163&nbsp;&nbsp;None</tt></dd></dl>
1164
Joe Gregoriob417caf2011-12-08 12:04:24 -05001165<dl><dt><a name="StorageByKeyName-get"><strong>get</strong></a>(self)</dt><dd><tt>Retrieve&nbsp;credential.<br>
Joe Gregorioa8451672011-09-15 09:53:21 -04001166&nbsp;<br>
Joe Gregoriob417caf2011-12-08 12:04:24 -05001167The&nbsp;<a href="oauth2client.client.html#Storage">Storage</a>&nbsp;lock&nbsp;must&nbsp;*not*&nbsp;be&nbsp;held&nbsp;when&nbsp;this&nbsp;is&nbsp;called.<br>
Joe Gregorioa8451672011-09-15 09:53:21 -04001168&nbsp;<br>
1169Returns:<br>
1170&nbsp;&nbsp;oauth2client.client.Credentials</tt></dd></dl>
1171
Joe Gregoriob417caf2011-12-08 12:04:24 -05001172<dl><dt><a name="StorageByKeyName-put"><strong>put</strong></a>(self, credentials)</dt><dd><tt>Write&nbsp;a&nbsp;credential.<br>
Joe Gregorioa8451672011-09-15 09:53:21 -04001173&nbsp;<br>
1174The&nbsp;<a href="oauth2client.client.html#Storage">Storage</a>&nbsp;lock&nbsp;must&nbsp;be&nbsp;held&nbsp;when&nbsp;this&nbsp;is&nbsp;called.<br>
1175&nbsp;<br>
1176Args:<br>
1177&nbsp;&nbsp;credentials:&nbsp;Credentials,&nbsp;the&nbsp;credentials&nbsp;to&nbsp;store.</tt></dd></dl>
1178
1179<dl><dt><a name="StorageByKeyName-release_lock"><strong>release_lock</strong></a>(self)</dt><dd><tt>Release&nbsp;the&nbsp;<a href="oauth2client.client.html#Storage">Storage</a>&nbsp;lock.<br>
1180&nbsp;<br>
1181Trying&nbsp;to&nbsp;release&nbsp;a&nbsp;lock&nbsp;that&nbsp;isn't&nbsp;held&nbsp;will&nbsp;result&nbsp;in&nbsp;a<br>
1182RuntimeError.</tt></dd></dl>
1183
1184<hr>
Joe Gregorio3b79fa82011-02-17 11:47:17 -05001185Data descriptors inherited from <a href="oauth2client.client.html#Storage">oauth2client.client.Storage</a>:<br>
Joe Gregorio6e537032011-02-09 23:04:26 -05001186<dl><dt><strong>__dict__</strong></dt>
1187<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
1188</dl>
1189<dl><dt><strong>__weakref__</strong></dt>
1190<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
1191</dl>
1192</td></tr></table></td></tr></table><p>
1193<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
Joe Gregorio90e7ec22011-07-06 10:09:20 -04001194<tr bgcolor="#eeaa77">
1195<td colspan=3 valign=bottom>&nbsp;<br>
1196<font color="#ffffff" face="helvetica, arial"><big><strong>Functions</strong></big></font></td></tr>
1197
1198<tr><td bgcolor="#eeaa77"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
1199<td width="100%"><dl><dt><a name="-main"><strong>main</strong></a>()</dt></dl>
Joe Gregoriob417caf2011-12-08 12:04:24 -05001200 <dl><dt><a name="-oauth2decorator_from_clientsecrets"><strong>oauth2decorator_from_clientsecrets</strong></a>(filename, scope, message<font color="#909090">=None</font>)</dt><dd><tt>Creates&nbsp;an&nbsp;<a href="#OAuth2Decorator">OAuth2Decorator</a>&nbsp;populated&nbsp;from&nbsp;a&nbsp;clientsecrets&nbsp;file.<br>
1201&nbsp;<br>
1202Args:<br>
1203&nbsp;&nbsp;filename:&nbsp;string,&nbsp;File&nbsp;name&nbsp;of&nbsp;client&nbsp;secrets.<br>
Joe Gregorio6121dd92012-04-13 07:50:04 -04001204&nbsp;&nbsp;scope:&nbsp;string&nbsp;or&nbsp;list&nbsp;of&nbsp;strings,&nbsp;scope(s)&nbsp;of&nbsp;the&nbsp;credentials&nbsp;being<br>
1205&nbsp;&nbsp;&nbsp;&nbsp;requested.<br>
Joe Gregoriob417caf2011-12-08 12:04:24 -05001206&nbsp;&nbsp;message:&nbsp;string,&nbsp;A&nbsp;friendly&nbsp;string&nbsp;to&nbsp;display&nbsp;to&nbsp;the&nbsp;user&nbsp;if&nbsp;the<br>
1207&nbsp;&nbsp;&nbsp;&nbsp;clientsecrets&nbsp;file&nbsp;is&nbsp;missing&nbsp;or&nbsp;invalid.&nbsp;The&nbsp;message&nbsp;may&nbsp;contain&nbsp;HTML&nbsp;and<br>
1208&nbsp;&nbsp;&nbsp;&nbsp;will&nbsp;be&nbsp;presented&nbsp;on&nbsp;the&nbsp;web&nbsp;interface&nbsp;for&nbsp;any&nbsp;method&nbsp;that&nbsp;uses&nbsp;the<br>
1209&nbsp;&nbsp;&nbsp;&nbsp;decorator.<br>
1210&nbsp;<br>
1211Returns:&nbsp;An&nbsp;<a href="#OAuth2Decorator">OAuth2Decorator</a></tt></dd></dl>
Joe Gregorio90e7ec22011-07-06 10:09:20 -04001212</td></tr></table><p>
1213<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
Joe Gregorio6e537032011-02-09 23:04:26 -05001214<tr bgcolor="#55aa55">
1215<td colspan=3 valign=bottom>&nbsp;<br>
1216<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
1217
1218<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
Joe Gregorio90e7ec22011-07-06 10:09:20 -04001219<td width="100%"><strong>OAUTH2CLIENT_NAMESPACE</strong> = 'oauth2client#ns'<br>
1220<strong>__author__</strong> = 'jcgregorio@google.com (Joe Gregorio)'<br>
Joe Gregorio6121dd92012-04-13 07:50:04 -04001221<strong>application</strong> = &lt;google.appengine.ext.webapp._webapp25.WSGIApplication object&gt;</td></tr></table><p>
Joe Gregorio6e537032011-02-09 23:04:26 -05001222<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
1223<tr bgcolor="#7799ee">
1224<td colspan=3 valign=bottom>&nbsp;<br>
1225<font color="#ffffff" face="helvetica, arial"><big><strong>Author</strong></big></font></td></tr>
1226
1227<tr><td bgcolor="#7799ee"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
1228<td width="100%">jcgregorio@google.com&nbsp;(Joe&nbsp;Gregorio)</td></tr></table>
1229</body></html>