o ckF['@slddlmZddlmZddlmZddlZddlmZGddde Z Gdd d e Z Gd d d e Z dS) )PropertyKey)QueryN)filtercs eZdZdZfddZZS) ModelMetazMetaclass for all Modelsc stt||||g|_ddlm}zStdd|rd|D]}|j|q|||_| D]}t ||t rB||}| ||q/g}| } | D]} | jjdsZ|| jqKt|d|WdSWdStypYdSw)Nr) get_managercSs t|tSN) issubclassModel)br 3/usr/lib/python3/dist-packages/boto/sdb/db/model.py(s z$ModelMeta.__init__.._ _prop_names)superr__init____sub_classes__boto.sdb.db.managerrrappend_managerkeys isinstancer__property_config__ properties __class____name__ startswithnamesetattr NameError) clsrbasesdictrbasekeyproperty prop_namespropsproprr rrs0      zModelMeta.__init__)r __module__ __qualname____doc__r __classcell__r r r+rrsrc@sJeZdZeZdZdZeddZeddZ edddZeddZeddZeddZdCsz%Model.get_lineage...)mroreversejoin)r"lr r r get_lineageAs zModel.get_lineagecCs|jSr r0r"r r rkindGsz Model.kindcCs|s|j}|||Sr )r get_object)r"idmanagerr r r _get_by_idKs zModel._get_by_idcs*t|trfdd|D}|S|S)Ncsg|]}|qSr )r?)r1r=r:r rr3Tsz#Model.get_by_id..)rlistr?)r"idsparentobjsr r:r get_by_idQs  zModel.get_by_idcCtd)Nz%Key Names are not currently supportedNotImplementedError)r" key_namesrBr r rget_by_key_name[zModel.get_by_key_namecKs4t|||d}|D] \}}|d||q |S)Nlimit next_tokenz%s =)ritemsr)r"rLrMparamsqr&valuer r rfind_sz Model.findcCs|j||dS)NrK)rR)r"rLrMr r rallfsz Model.allcKrE)Nz%get_or_insert not currently supportedrF)key_namekwr r r get_or_insertjrJzModel.get_or_insertTcCsng}|r5|jD]}|j|}t|tr#|s|jjds#||q t|j dkr1|j d}nd}|s|SNrr) __dict__rrrrrrrlen __bases__)r"hiddenrr&r*r r rrns     zModel.propertiescCsnd}|r5|jD]}|j|}t|tr#|jjds#||jkr#|}q t|j dkr1|j d}nd}|s|SrW) rXrrrrrrrrYrZ)r" prop_namer'r&r*r r r find_property}s    zModel.find_propertyc Cs6t|dsddlm}||dddddddd |_|jS)N _xmlmanagerr) XMLManagerF)hasattrboto.sdb.db.manager.xmlmanagerr_r^)r"r_r r rget_xmlmanagers    zModel.get_xmlmanagercCs|}||Sr )rbunmarshal_object)r"fp xmlmanagerr r rfrom_xmls zModel.from_xmlc Ksd|_|jddD]}z t||j|Wq tyYq wd|vr)|d|_||_|D])}|dkrWz t||||Wq.tyV}z t j |WYd}~q.d}~wwq.dS)NFr[r>) _loadedrr r default_value ValueErrorrr= Exceptionbotolog exception)selfr=rUr*r&er r rrs(  zModel.__init__cCsd|jj|jfS)Nz%s<%s>)rrr=ror r r__repr__szModel.__repr__cCs t|jSr )strr=rqr r r__str__ z Model.__str__cCs|o t|to |j|jkSr )rr r=)rootherr r r__eq__sz Model.__eq__cCs |j|Sr )r get_raw_itemrqr r r _get_raw_items zModel._get_raw_itemcCs$|jr|js|j|dSdSdSr r=rhr load_objectrqr r rloads z Model.loadcCs |jrd|_|j|dSdS)NFrzrqr r rreloadsz Model.reloadcCs|j|||S)a 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` )r save_object)roexpected_valuer r rputs z Model.putcCs\t|ts Jd|D]}||}||}|sJd||j||||q ||S)z 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` z.Argument must be a dict of key->values to savezProperty not found: %s)rr$r]r set_propertyr})roattrsr\rQr*r r rput_attributess  zModel.put_attributescCs0t|ts Jd|jj|j|||S)z 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` z3Argument must be a list of names of keys to delete.)rr@rdomaindelete_attributesr=r})rorr r rrs zModel.delete_attributescCs|j|dSr )r delete_objectrqr r rdeletesz Model.deletecCs t|dS)N)objrrqr r rr&ruz Model.keycCs ||_dSr )r)ror>r r r set_managerruzModel.set_managercCs@i}|jddD] }t||j||j<q||jd}|jj|iS)NFrg)rr=)rgetattrrr=rr)ror)r*rr r rto_dicts z Model.to_dictcCs|}|||}|Sr )rbmarshal_object)rodocrer r rto_xmls z Model.to_xmlcCs8||jkr|S|jD]}||}|dur|Sq dS)z!Find a subclass with a given nameN)rr find_subclass)r"rscrr r rr s   zModel.find_subclassr )NN)T)'rr,r-r __metaclass____consistent__r= classmethodr9r;r?rD get_by_idsrIrRrSrVrr]rbrfrrrrtrwryr|r}rsaverrsave_attributesrr&rrrrr r r rr <s`               r c@seZdZddZddZdS)ExpandocCst||jvrt|||dS|drt|||dS|dkr)t|||dS|j|||t|||dS)Nrr=)robject __setattr__rr set_key_valuerorrQr r rrs  zExpando.__setattr__cCs2|ds|j||}|rt||||St)Nr)rr get_key_valuerrAttributeErrorrr r r __getattr__"s zExpando.__getattr__N)rr,r-rrr r r rrs r)boto.sdb.db.propertyrboto.sdb.db.keyrboto.sdb.db.queryrrl boto.compatrtyperrr rr r r rs     Z