- n;csydklZdZ dZdZ"dZ,defdYZdefdYZd S( (s ObjectBasecsd}t|}xQt|D]@}||||} ||djo |d}nq.W |SdS(sVMake contents of list into format with commas between the non-last items and return itsis, N(soutputslenslistslistlensrangesisformat(sformatslistslistlensisoutput((s./plantobjs.pysrendercommalists  cs d}t|}xst|D]b}|d||}||||}|d}||djo|d}nq.W|SdS(sVMake contents of list into format with commas between the non-last items and return itss sis, N(soutputslenslistslistlensrangesisformat(sformatslistslistlensisoutput((s./plantobjs.pysrendertargetcommalist s   cs`d}t|djo0|}|t||}||}n |SdS(sORender list as string using format and begin and end as begin and end of stringsiN(soutputslenslistsbeginsrendercommalistsformatsend(sbeginsformatsendslistsoutput((s./plantobjs.pysrendercommalist2s  cs"#|djp$|djp|djp |djo$ddfSnV%|djp$|djp|djp |d jo&dd fSn(d d fSdS( Nsyesstruesystisnosfalsesnsfi(sdata(sdata((s./plantobjs.pys checkyesno"s 77s PlantGroupcsz,tZdZ.0dZ7dZ;dZIdZPddZ[ddZxdZ {d Z RS( sOContainer to hold plants or other plant lists, and renders itself and contentscsC01g|_2g|_3g|_4d|_5g|_dS(Ns(sselfsnamess nicknamess commonnamesstypeslist(sself((s./plantobjs.pys__init__0s     cs 789dS(s-Handle element starts that contain attributesN((sselfsnamesattrs((s./plantobjs.pysgetelementattributes7scs;<=|djp|djp |djo>|ii|n?|djp |djo@|ii|niA|djp |djoB||_n<C|djp |d joD|ii|nFd SGd Sd S( sHandle our member elementssnamesscientificnamessnsnicknamesnnstypests commonnamescniiN(snamesselfsnamessappendsdatas nicknamesstypes commonnames(sselfsnamesdata((s./plantobjs.pys handledata;s*csYIJK|idjoL|iGnMtd|iGHNtddd|iGHdS(sRender this plant list in htmlss%ss(s)N(sselfstypesrendertargetcommalistsnamessrendercommalist2s nicknames(sself((s./plantobjs.pys renderselfIs icsmPQR| o SdGHnT|iUdGHVx!|iDV]}W|iq?WXdGHYdGHdS(s/Render this plant list and its contents in htmls
  • ss
  • N(stopsselfs renderselfslistsentrysrender(sselfstopsentry((s./plantobjs.pysrenderPs    cs0[\]|o^dGH_dGH`dGHnJbd}c|idjod|d|i}ne|d}f|GHhx |iDh]}id|GHqWjx |iDj]}kd |GHqWlx |iDl]}md |GHqWox!|i Do]}p|i qWs|o td GHn vd GHd S(s"Render plant list in plantlist XMLs%s+s ss#%ss%ss%ss sN( stopsoutputsselfstypesnamessnames commonnamess commonnames nicknamessnicknameslistsentrys xmlrender(sselfstops commonnamesnamesentrysoutputsnickname((s./plantobjs.pys xmlrender[s2          csxy|iddS(Ni(sselfsrender(sself((s./plantobjs.pys toprenderxscs{||iddS(Ni(sselfs xmlrender(sself((s./plantobjs.pys xmltoprender{s( s__name__s __module__s__doc__s__init__sgetelementattributess handledatas renderselfsrenders xmlrenders toprenders xmltoprender(((s./plantobjs.pys PlantGroup,s      sPlantcs\tZdZdZdZdZdZdZdZRS(sHolds plant data and renders itcs[g|_g|_g|_g|_g|_d|_d|_dS(Ni(sselfsnamess commonnamess nicknamessimagess grownotess isspontaneouss isnonnative(sself((s./plantobjs.pys__init__s      csE|djp |djo|ii|dndS(s-Handle element starts that contain attributessimagesimgssrcN(snamesselfsimagessappendsattrs(sselfsnamesattrs((s./plantobjs.pysgetelementattributesscs|djp|djp |djo|ii|ni|djp |djo|ii|n5|djp |djo|ii|n|djp |d jo|ii|n|d jp|d jp |d jo|ii|n|d jo2t |\}|_ | o dSnnJ|djo2t |\}|_ | o dSnndSdSdS(sHandle our member elementssnamesscientificnamessns commonnamescnsnicknamesnnsimagesimgsgrownotes grownotessgns spontaneousis nonnativeiN( snamesselfsnamessappendsdatas commonnamess nicknamessimagess grownotess checkyesnosvalids isspontaneouss isnonnative(sselfsnamesdatasvalid((s./plantobjs.pys handledatas***  cst|i}|idjo dGHntd|iGHt|i}t|i}||}|djod}|t d|i}|djo |djo|d}n|t d|i}|d}|GHn|idjo d GHnt|i }|djod }x^t|D]M}|d |i ||df}||djo|d}nqhW|d }|GHnt|idjotd dd|iGHndS(sRenders this plant in htmliss%sis(s, s"%s"s)ss[s%ds]s(s)N(slensselfsnamessnumnamess isspontaneoussrendertargetcommalists commonnamess commonlens nicknamessnicklenssizesoutputsrendercommalistsimagess numimagessxrangesimagenums grownotessrendercommalist2(sselfs numimagessnumnamess commonlensimagenumsoutputsnicklenssize((s./plantobjs.pys renderselfs<        "  cs'dGH|idGHdS(s(Render this plant in html as a list items
  • s
  • N(sselfs renderself(sself((s./plantobjs.pysrenders cs6d}|idjo|d}n|idjo|d}n|d}|GHx |iD]}d|GHqyWx |iD]}d|GHqWx |iD]}d|GHqWx |i D]}d |GHqWx |i D]}d |GHqWd GHd S( sRender plant in plantlist XMLss#%ss%ss%ss%sssN(soutputsselfs isspontaneouss isnonnativesnamessnames commonnamess commonnames nicknamessnicknames grownotessnotesimagessimage(sselfsnotesnames commonnamesoutputsnicknamesimage((s./plantobjs.pys xmlrenders0       ( s__name__s __module__s__doc__s__init__sgetelementattributess handledatas renderselfsrenders xmlrender(((s./plantobjs.pysPlants   N(s objectparses ObjectBasesrendercommalistsrendertargetcommalistsrendercommalist2s checkyesnos PlantGroupsPlant(s checkyesnos ObjectBasesrendercommalistsrendercommalist2srendertargetcommalistsPlants PlantGroup((s./plantobjs.pys?s  S