Ñò ³•ìJc @sÚdZddkZddkZddklZlZddklZl Z l Z yddkl Z Wne j o e Z nXh dd6dd6dd6dd 6dd 6dd 6dd 6dd 6dd6Zdd,d„ƒYZdefd„ƒYZeiihdd6dd6dd6dd6dd6ƒZdefd„ƒYZdefd„ƒYZd efd!„ƒYZd"efd#„ƒYZd$efd%„ƒYZd&efd'„ƒYZd(efd)„ƒYZd*eifd+„ƒYZdS(-s  schema.py - support for subSchemaSubEntry information See http://www.python-ldap.org/ for details. \$Id: models.py,v 1.38 2009/10/31 19:52:45 stroeder Exp $ iÿÿÿÿN(t split_tokenstextract_tokens(t TupleTypet StringTypetIntType(t BooleanTypes1.3.6.1.4.1.1466.115.121.1.4s1.3.6.1.4.1.1466.115.121.1.5s1.3.6.1.4.1.1466.115.121.1.8s1.3.6.1.4.1.1466.115.121.1.9s1.3.6.1.4.1.1466.115.121.1.10s1.3.6.1.4.1.1466.115.121.1.23s1.3.6.1.4.1.1466.115.121.1.28s1.3.6.1.4.1.1466.115.121.1.40s1.3.6.1.4.1.1466.115.121.1.49t SchemaElementcBsfeZdZhd d6Zd d„Zd„Zd„Zd„Zdd„Z ddd „Z d „Z RS( sC Base class for all schema element classes. Not used directly! tDESCcCst|oit||iƒ}|i|dƒt|iƒƒtjpt‚t||iƒ}|i||ƒndS(Ni( Rttoken_defaultstset_idttypetget_idRtAssertionErrorRt _set_attrs(tselftschema_element_strtltd((s8/usr/lib64/python2.6/site-packages/ldap/schema/models.pyt__init__*s  cCs|dd|_dS(NRi(tdesc(RRR((s8/usr/lib64/python2.6/site-packages/ldap/schema/models.pyR 2scCs ||_dS(N(toid(Rt element_id((s8/usr/lib64/python2.6/site-packages/ldap/schema/models.pyR 6scCs|iS(N(R(R((s8/usr/lib64/python2.6/site-packages/ldap/schema/models.pyR 9sicCs}|djp-t|ƒtjpttdt|ƒƒ‚|o4|od||iddƒfSd||fSndSdS(Ns%value has to be of StringType, was %ss %s '%s't's\'s %s %st(tNoneR RR t TypeErrortreprtreplace(Rtkeytvaluetquoted((s8/usr/lib64/python2.6/site-packages/ldap/schema/models.pytkey_attr<s :t cCs²t|ƒtjpttdƒ‚|pdS|o5g}|D]}|d|iddƒqA~}n|}t|ƒdjod||dfSd ||i|ƒfSdS( Nsvalues has to be of ListTypeRs'%s'Rs\'is %s %sis %s ( %s )(R RR RRtlentjoin(RRtvaluestsepRt_[1]Rt quoted_values((s8/usr/lib64/python2.6/site-packages/ldap/schema/models.pytkey_listFs#5cCsEt|iƒg}|i|id|iddƒƒddi|ƒS(NRRis( %s )R(tstrRtappendRRR"(Rtresult((s8/usr/lib64/python2.6/site-packages/ldap/schema/models.pyt__str__Ss"N(N( t__name__t __module__t__doc__RRRR R R RR'R+(((s8/usr/lib64/python2.6/site-packages/ldap/schema/models.pyR"s       t ObjectClasscBskeZdZdZh d d6dd6dd6dd6dd6dd6dd6dd 6dd 6Zd „Zd „ZRS(sª ObjectClassDescription = "(" whsp numericoid whsp ; ObjectClass identifier [ "NAME" qdescrs ] [ "DESC" qdstring ] [ "OBSOLETE" whsp ] [ "SUP" oids ] ; Superior ObjectClasses [ ( "ABSTRACT" / "STRUCTURAL" / "AUXILIARY" ) whsp ] ; default structural [ "MUST" oids ] ; AttributeTypes [ "MAY" oids ] ; AttributeTypes whsp ")" t objectClassestNAMERtOBSOLETEtSUPt STRUCTURALt AUXILIARYtABSTRACTtMUSTtMAYcCsÕ|ddj|_|d|_|dd|_|d|_|d|_d|_|ddjo d|_n|d djo d |_n|idjo)|d  o|id jo d|_n|d |_t |iƒt jpt ‚|idjpt |iƒt jpt ‚t |iƒt jo |idjp|idjpt ‚t |iƒt jpt ‚t |iƒtjpt ‚t |iƒt jpt ‚t |iƒt jpt ‚dS(NR2R1RiR7R8R6iR5iR3s2.5.6.0ttop(stop(RtobsoletetnamesRtmusttmaytkindRtsupR RR RRR(RRR((s8/usr/lib64/python2.6/site-packages/ldap/schema/models.pyR ts*      ,  -=cCst|iƒg}|i|id|iddƒƒ|i|id|iddƒƒ|i|id|iddƒƒ|ihdd 6d d6|iƒ|ihd d 6d d6d d6|i ƒ|i|id|i ddƒƒ|i|id|i ddƒƒddi |ƒS(NR1RiRR3R$s $ Ris OBSOLETEs STRUCTURALs ABSTRACTs AUXILIARYiR7R8s( %s )( R(RR)R'R;RRR?R:R>R<R=R"(RR*((s8/usr/lib64/python2.6/site-packages/ldap/schema/models.pyR+Žs"""")""(N(N((((R,R-R.tschema_attributeRRR R+(((s8/usr/lib64/python2.6/site-packages/ldap/schema/models.pyR/Ys   ituserApplicationtuserApplicationsitdirectoryOperationitdistributedOperationit dSAOperationt AttributeTypecBs€eZdZdZh dd6dd6dd6dd6dd6dd6dd6dd 6dd 6dd 6dd 6dd6Zd„Zd„ZRS(sq AttributeTypeDescription = "(" whsp numericoid whsp ; AttributeType identifier [ "NAME" qdescrs ] ; name used in AttributeType [ "DESC" qdstring ] ; description [ "OBSOLETE" whsp ] [ "SUP" woid ] ; derived from this other ; AttributeType [ "EQUALITY" woid ; Matching Rule name [ "ORDERING" woid ; Matching Rule name [ "SUBSTR" woid ] ; Matching Rule name [ "SYNTAX" whsp noidlen whsp ] ; see section 4.3 [ "SINGLE-VALUE" whsp ] ; default multi-valued [ "COLLECTIVE" whsp ] ; default not collective [ "NO-USER-MODIFICATION" whsp ]; default user modifiable [ "USAGE" whsp AttributeUsage ]; default userApplications whsp ")" AttributeUsage = "userApplications" / "directoryOperation" / "distributedOperation" / ; DSA-shared "dSAOperation" ; DSA-specific, value depends on server tattributeTypesR1RR2R3tEQUALITYtORDERINGtSUBSTRtSYNTAXs SINGLE-VALUEt COLLECTIVEsNO-USER-MODIFICATIONRBtUSAGEcCsš|d|_|dd|_|ddj|_|d|_|dd|_|dd|_|dd|_y|d d}Wn%tj od|_ d|_ n×X|djod|_ d|_ n³y$|d di d ƒ\|_ }Wnxt j ol|d d|_ d|_ x`|D]@}|i d ƒo*|id ƒot|d d !ƒ|_ q$q$WnXt|d ƒ|_ |ddj|_|ddj|_|ddj|_yt|dd|_Wntj o ‚nXti|dddƒ|_t|iƒtjpt‚|idjpt|iƒtjpt‚t|iƒtjptdt|iƒ‚t|iƒtjo |idjp|id jpt‚t|iƒtjo |idjp|id jpt‚t|iƒtjo |idjp|id jpt‚|i djpt|i ƒtjpt‚|i djp#t|i ƒtdƒjpt‚dS(NR1RiR2R3RHRIRJRKt{t}iiÿÿÿÿs SINGLE-VALUERLsNO-USER-MODIFICATIONRMsattribute sup has type %sl(R;RRR:R?tequalitytorderingtsubstrt IndexErrortsyntaxt syntax_lentsplitt ValueErrort startswithtendswithtlongt single_valuet collectivet no_user_modtAttributeUsagetusagetKeyErrortgetR RR RR(RRRRTRUti((s8/usr/lib64/python2.6/site-packages/ldap/schema/models.pyR ÌsT      $  #--===-3cCsæt|iƒg}|i|id|iddƒƒ|i|id|iddƒƒ|i|id|iddƒƒ|ihdd 6d d6|iƒ|i|id |i ƒƒ|i|id |i ƒƒ|i|id |i ƒƒ|i|id|i ƒƒ|i djo%|id|i |i d jƒn|ihdd 6dd6|iƒ|ihdd 6dd6|iƒ|ihdd 6dd6|iƒ|ihdd 6dd6dd6dd6|iƒddi|ƒS(NR1RiRR3R$s $ Ris OBSOLETERHRIRJRKs{%d}s SINGLE-VALUEs COLLECTIVEs NO-USER-MODIFICATIONs USAGE directoryOperations USAGE distributedOperationis USAGE dSAOperationis( %s )(R(RR)R'R;RRR?R:RPRQRRRTRURR[R\R]R_R"(RR*((s8/usr/lib64/python2.6/site-packages/ldap/schema/models.pyR+ús,""""%""" (N(N((N(N(N(N(RB(R,R-R.R@RRR R+(((s8/usr/lib64/python2.6/site-packages/ldap/schema/models.pyRF£s"  .t LDAPSyntaxcBs:eZdZdZhdd6dd6Zd„Zd„ZRS( sa SyntaxDescription = "(" whsp numericoid whsp [ "DESC" qdstring ] whsp ")" t ldapSyntaxesRsX-NOT-HUMAN-READABLEcCsl|dd|_ti|iƒp|dddj|_|idjpt|iƒtjpt‚dS(NRisX-NOT-HUMAN-READABLEtTRUE( Rt NOT_HUMAN_READABLE_LDAP_SYNTAXESthas_keyRtnot_human_readableRR RR (RRR((s8/usr/lib64/python2.6/site-packages/ldap/schema/models.pyR !s -cCsgt|iƒg}|i|id|iddƒƒ|ihdd6dd6|iƒddi|ƒS(NRRiRis X-NOT-HUMAN-READABLE 'TRUE's( %s )(R(RR)RRRhR"(RR*((s8/usr/lib64/python2.6/site-packages/ldap/schema/models.pyR+)s "N(N(N(R,R-R.R@RRR R+(((s8/usr/lib64/python2.6/site-packages/ldap/schema/models.pyRcs  t MatchingRulecBsHeZdZdZhdd6d d6d d6d d6Zd„Zd„ZRS( sË MatchingRuleDescription = "(" whsp numericoid whsp ; MatchingRule identifier [ "NAME" qdescrs ] [ "DESC" qdstring ] [ "OBSOLETE" whsp ] "SYNTAX" numericoid whsp ")" t matchingRulesR1RR2RKcCsú|d|_|dd|_|ddj|_|dd|_t|iƒtjpt‚|idjpt|iƒtjpt‚t|iƒt jo |idjp|idjpt‚|idjpt|iƒtjpt‚dS(NR1RiR2RKi( R;RRR:RTR RR RR(RRR((s8/usr/lib64/python2.6/site-packages/ldap/schema/models.pyR Ds -=-cCs¥t|iƒg}|i|id|iddƒƒ|i|id|iddƒƒ|ihdd6dd6|iƒ|i|id|iƒƒd di |ƒS( NR1RiRRis OBSOLETERKs( %s )( R(RR)R'R;RRR:RTR"(RR*((s8/usr/lib64/python2.6/site-packages/ldap/schema/models.pyR+Os """(N(N(N(R,R-R.R@RRR R+(((s8/usr/lib64/python2.6/site-packages/ldap/schema/models.pyRi2s   tMatchingRuleUsecBsHeZdZdZhdd6d d6d d6d d6Zd„Zd„ZRS( sþ MatchingRuleUseDescription = "(" whsp numericoid [ space "NAME" space qdescrs ] [ space "DESC" space qdstring ] [ space "OBSOLETE" ] space "APPLIES" space oids ; AttributeType identifiers extensions whsp ")" tmatchingRuleUseR1RR2tAPPLIEScCsæ|d|_|dd|_|ddj|_|d|_t|iƒtjpt‚|idjpt|iƒtjpt‚t|iƒt jo |idjp|idjpt‚t|iƒtjpt‚dS(NR1RiR2Rmi( R;RRR:tappliesR RR RR(RRR((s8/usr/lib64/python2.6/site-packages/ldap/schema/models.pyR ks  -=cCs«t|iƒg}|i|id|iddƒƒ|i|id|iddƒƒ|ihdd6dd6|iƒ|i|id|id d ƒƒd di |ƒS( NR1RiRRis OBSOLETERmR$s $ s( %s )( R(RR)R'R;RRR:RnR"(RR*((s8/usr/lib64/python2.6/site-packages/ldap/schema/models.pyR+vs """"(N(N((R,R-R.R@RRR R+(((s8/usr/lib64/python2.6/site-packages/ldap/schema/models.pyRkXs   tDITContentRulecBs]eZdZdZhd d6d d6d d6dd6dd6dd6dd6Zd „Zd „ZRS(sï DITContentRuleDescription = LPAREN WSP numericoid ; object identifer [ SP "NAME" SP qdescrs ] ; short names [ SP "DESC" SP qdstring ] ; description [ SP "OBSOLETE" ] ; not active [ SP "AUX" SP oids ] ; auxiliary object classes [ SP "MUST" SP oids ] ; attribute types [ SP "MAY" SP oids ] ; attribute types [ SP "NOT" SP oids ] ; attribute types extensions WSP RPAREN ; extensions tdITContentRulesR1RR2tAUXR7R8tNOTcCsd|d|_|dd|_|ddj|_|d|_|d|_|d|_|d|_t|iƒt jpt ‚|idjpt|iƒt jpt ‚t|iƒt jo |idjp|id jpt ‚t|iƒt jpt ‚t|iƒt jpt ‚t|iƒt jpt ‚t|iƒt jpt ‚dS( NR1RiR2RqR7R8Rri( R;RRR:tauxR<R=tnotsR RR RR(RRR((s8/usr/lib64/python2.6/site-packages/ldap/schema/models.pyR —s     -=cCst|iƒg}|i|id|iddƒƒ|i|id|iddƒƒ|ihdd6dd6|iƒ|i|id|id d ƒƒ|i|id |i d d ƒƒ|i|id |i d d ƒƒ|i|id |i d d ƒƒddi |ƒS(NR1RiRRis OBSOLETERqR$s $ R7R8Rrs( %s )( R(RR)R'R;RRR:RsR<R=RtR"(RR*((s8/usr/lib64/python2.6/site-packages/ldap/schema/models.pyR+¨s"""""""(N(N(((((R,R-R.R@RRR R+(((s8/usr/lib64/python2.6/site-packages/ldap/schema/models.pyRos   tDITStructureRulecBsaeZdZdZhd d6d d6d d6dd6dd6Zd„Zd„Zd „Zd „Z RS(sy DITStructureRuleDescription = LPAREN WSP ruleid ; rule identifier [ SP "NAME" SP qdescrs ] ; short names [ SP "DESC" SP qdstring ] ; description [ SP "OBSOLETE" ] ; not active SP "FORM" SP oid ; NameForm [ SP "SUP" ruleids ] ; superior rules extensions WSP RPAREN ; extensions tdITStructureRulesR1RR2tFORMR3cCs ||_dS(N(truleid(RR((s8/usr/lib64/python2.6/site-packages/ldap/schema/models.pyR ÉscCs|iS(N(Rx(R((s8/usr/lib64/python2.6/site-packages/ldap/schema/models.pyR ÌscCs|d|_|dd|_|ddj|_|dd|_|d|_t|iƒtjpt‚|idjpt|iƒt jpt‚t|iƒt jo |idjp|idjpt‚t|iƒt jpt‚t|iƒtjpt‚dS(NR1RiR2RwR3i( R;RRR:tformR?R RR RR(RRR((s8/usr/lib64/python2.6/site-packages/ldap/schema/models.pyR Ïs  -=cCsÍt|iƒg}|i|id|iddƒƒ|i|id|iddƒƒ|ihdd6dd6|iƒ|i|id|iddƒƒ|i|id |i d d ƒƒd di |ƒS( NR1RiRRis OBSOLETERwR3R$s $ s( %s )( R(RxR)R'R;RRR:RyR?R"(RR*((s8/usr/lib64/python2.6/site-packages/ldap/schema/models.pyR+Üs"""""(N(N(N(( R,R-R.R@RRR R R R+(((s8/usr/lib64/python2.6/site-packages/ldap/schema/models.pyRu´s     tNameFormcBsVeZdZdZhd d6d d6d d6d d6dd6dd6Zd„Zd „ZRS(sµ NameFormDescription = LPAREN WSP numericoid ; object identifer [ SP "NAME" SP qdescrs ] ; short names [ SP "DESC" SP qdstring ] ; description [ SP "OBSOLETE" ] ; not active SP "OC" SP oid ; structural object class SP "MUST" SP oids ; attribute types [ SP "MAY" SP oids ] ; attribute types extensions WSP RPAREN ; extensions t nameFormsR1RR2tOCR7R8cCs>|d|_|dd|_|ddj|_|dd|_|d|_|d|_t|iƒtjpt ‚|idjpt|iƒt jpt ‚t|iƒt jo |idjp|idjpt ‚t|iƒt jpt ‚t|iƒtjpt ‚t|iƒtjpt ‚dS( NR1RiR2R|R7R8i( R;RRR:tocR<R=R RR RR(RRR((s8/usr/lib64/python2.6/site-packages/ldap/schema/models.pyR üs   -=cCsét|iƒg}|i|id|iddƒƒ|i|id|iddƒƒ|ihdd6dd6|iƒ|i|id|iƒƒ|i|id |i d d ƒƒ|i|id |i d d ƒƒd di |ƒS(NR1RiRRis OBSOLETER|R7R$s $ R8s( %s )( R(RR)R'R;RRR:R}R<R=R"(RR*((s8/usr/lib64/python2.6/site-packages/ldap/schema/models.pyR+ s"""""(N(N(N(((R,R-R.R@RRR R+(((s8/usr/lib64/python2.6/site-packages/ldap/schema/models.pyRzæs   tEntrycBs€eZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z dd d „ZRS(s‘ Schema-aware implementation of an LDAP entry class. Mainly it holds the attributes in a string-keyed dictionary with the OID as key. cCsHh|_h|_||_||_tii|hƒ|i|ƒdS(N(t_keytuple2attrtypet_attrtype2keytuplet_stdntUserDictRtupdate(RtschemaR‚tentry((s8/usr/lib64/python2.6/site-packages/ldap/schema/models.pyRs     cCs}y|i|SWngtj o[|iitii|ƒ}|iƒidƒ}||dscCs-|i|ƒ}||i|<||i|sB  7A  q&'520