ó FRTc@s’ddlmZddlmZddlmZddlZddlmZde fd„ƒYZ de fd „ƒYZ d e fd „ƒYZ dS( iÿÿÿÿ(tProperty(tKey(tQueryN(tfiltert ModelMetacBseZdZd„ZRS(sMetaclass for all Modelsc Cs8tt|ƒj|||ƒg|_ddlm}yëtd„|ƒrx|D]}|jj|ƒqQW||ƒ|_xD|j ƒD]6}t ||t ƒr‡||}|j ||ƒq‡q‡Wg}|j ƒ} x6| D].} | jjjdƒsÚ|j| jƒqÚqÚWt|d|ƒnWntk r3nXdS(Niÿÿÿÿ(t get_managercSs t|tƒS(N(t issubclasstModel(tb((s>/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/model.pyt(st_t _prop_names(tsuperRt__init__t__sub_classes__tboto.sdb.db.managerRRtappendt_managertkeyst isinstanceRt__property_config__t propertiest __class__t__name__t startswithtnametsetattrt NameError( tclsRtbasestdictRtbasetkeytpropertyt prop_namestpropstprop((s>/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/model.pyR s(      (Rt __module__t__doc__R (((s>/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/model.pyRsRcBsšeZeZeZdZed„ƒZ ed„ƒZ edd„ƒZ eddd„ƒZ e Z edd„ƒZeddd„ƒZeddd„ƒZed„ƒZeed„ƒZed „ƒZed „ƒZed „ƒZdd „Zd „Zd„Zd„Zd„Zd„Zd„Zdd„ZeZd„Z d„Z!e Z"d„Z#d„Z$d„Z%d„Z&dd„Z'ed„ƒZ(RS(cCs9g|jƒD]}|j^q }|jƒdj|ƒS(Nt.(tmroRtreversetjoin(Rtctl((s>/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/model.pyt get_lineageAs" cCs|jS(N(R(R((s>/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/model.pytkindGscCs"|s|j}n|j||ƒS(N(Rt get_object(Rtidtmanager((s>/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/model.pyt _get_by_idKs cCsFt|tƒr5g|D]}|j|ƒ^q}|S|j|ƒSdS(N(RtlistR2(RtidstparentR0tobjs((s>/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/model.pyt get_by_idQs"cCstdƒ‚dS(Ns%Key Names are not currently supported(tNotImplementedError(Rt key_namesR5((s>/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/model.pytget_by_key_name[scKsMt|d|d|ƒ}x.|jƒD] \}}|jd||ƒq%W|S(Ntlimitt next_tokens%s =(RtitemsR(RR;R<tparamstqR tvalue((s>/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/model.pytfind_scCs|jd|d|ƒS(NR;R<(RA(RR;R<((s>/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/model.pytallfscKstdƒ‚dS(Ns%get_or_insert not currently supported(R8(tkey_nametkw((s>/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/model.pyt get_or_insertjscCs§g}xš|r¢xb|jjƒD]Q}|j|}t|tƒr|s]|jjjdƒ rp|j|ƒqpqqWt|j ƒdkr™|j d}q d}q W|S(NR i( t__dict__RRRRRRRtlent __bases__tNone(RthiddenRR R$((s>/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/model.pyRns   cCs©d}xœ|r¤xd|jjƒD]S}|j|}t|tƒr|jjjdƒ rr||jkrr|}qrqqWt |j ƒdkr›|j d}q d}q W|S(NR i( RIRFRRRRRRRRGRH(Rt prop_nameR!R R$((s>/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/model.pyt find_property}s  % c CsPt|dƒsIddlm}||dddddddtƒ |_n|jS(Nt _xmlmanageriÿÿÿÿ(t XMLManager(thasattrtboto.sdb.db.manager.xmlmanagerRNRItFalseRM(RRN((s>/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/model.pytget_xmlmanagerŒs cCs|jƒ}|j|ƒS(N(RRtunmarshal_object(Rtfpt xmlmanager((s>/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/model.pytfrom_xml”s cKsÞt|_xK|jdtƒD]7}yt||j|jƒƒWqtk rRqXqWd|krs|d|_n||_x[|D]S}|dkrƒyt||||ƒWqÖt k rÒ}t j j |ƒqÖXqƒqƒWdS(NRJR1( RQt_loadedRRRt default_valuet ValueErrorRR0t Exceptiontbototlogt exception(tselfR0RDR$R te((s>/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/model.pyR ™s      cCsd|jj|jfS(Ns%s<%s>(RRR0(R^((s>/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/model.pyt__repr__­scCs t|jƒS(N(tstrR0(R^((s>/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/model.pyt__str__°scCs%|o$t|tƒo$|j|jkS(N(RRR0(R^tother((s>/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/model.pyt__eq__³scCs|jj|ƒS(N(Rt get_raw_item(R^((s>/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/model.pyt _get_raw_item¶scCs*|jr&|j r&|jj|ƒndS(N(R0RWRt load_object(R^((s>/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/model.pytload¹scCs)|jr%t|_|jj|ƒndS(N(R0RQRWRRg(R^((s>/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/model.pytreload½s  cCs|jj||ƒ|S(s Save this object as it is, with an optional expected value :param expected_value: Optional tuple of Attribute, and Value that must be the same in order to save this object. If this condition is not met, an SDBResponseError will be raised with a Confict status code. :type expected_value: tuple or list :return: This object :rtype: :class:`boto.sdb.db.model.Model` (Rt save_object(R^texpected_value((s>/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/model.pytputÂs cCs‚t|tƒstdƒ‚xV|D]N}||}|j|ƒ}|sWtd|ƒ‚|jj||||ƒq"W|jƒ|S(sâ Save just these few attributes, not the whole object :param attrs: Attributes to save, key->value dict :type attrs: dict :return: self :rtype: :class:`boto.sdb.db.model.Model` s.Argument must be a dict of key->values to savesProperty not found: %s(RRtAssertionErrorRLRt set_propertyRi(R^tattrsRKR@R$((s>/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/model.pytput_attributesÓs    cCsBt|tƒstdƒ‚|jjj|j|ƒ|jƒ|S(së Delete just these attributes, not the whole object. :param attrs: Attributes to save, as a list of string names :type attrs: list :return: self :rtype: :class:`boto.sdb.db.model.Model` s3Argument must be a list of names of keys to delete.(RR3RmRtdomaintdelete_attributesR0Ri(R^Ro((s>/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/model.pyRrås  cCs|jj|ƒdS(N(Rt delete_object(R^((s>/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/model.pytdeleteõscCs td|ƒS(Ntobj(R(R^((s>/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/model.pyR øscCs ||_dS(N(R(R^R1((s>/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/model.pyt set_managerûscCsdi}x3|jdtƒD]}t||jƒ||j/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/model.pytto_dictþs   cCs"|jƒ}|j||ƒ}|S(N(RRtmarshal_object(R^tdocRU((s>/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/model.pytto_xmls cCsJ||jkr|Sx0|jD]%}|j|ƒ}|dk r|SqWdS(s!Find a subclass with a given nameN(RRt find_subclassRI(RRtsctr((s>/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/model.pyR| s  N()RR%Rt __metaclass__RQt__consistent__RIR0t classmethodR-R.R2R7t get_by_idsR:RARBREtTrueRRLRRRVR R`RbRdRfRhRiRltsaveRpRrtsave_attributesRtR RvRxR{R|(((s>/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/model.pyR<sP               tExpandocBseZd„Zd„ZRS(cCs™||jkr%tj|||ƒnp|jdƒrJtj|||ƒnK|dkrltj|||ƒn)|jj|||ƒtj|||ƒdS(NR R0(R tobjectt __setattr__RRt set_key_value(R^RR@((s>/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/model.pyRˆs cCsN|jdƒsD|jj||ƒ}|rDtj|||ƒ|Snt‚dS(NR (RRt get_key_valueR‡RˆtAttributeError(R^RR@((s>/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/model.pyt __getattr__"s (RR%RˆRŒ(((s>/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/model.pyR†s (tboto.sdb.db.propertyRtboto.sdb.db.keyRtboto.sdb.db.queryRR[t boto.compatRttypeRR‡RR†(((s>/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/model.pyts  Ù