<HTML><BODY style="word-wrap: break-word; -khtml-nbsp-mode: space; -khtml-line-break: after-white-space; "><BR><DIV><DIV>On Nov 12, 2006, at 12:56 PM, Hafeliel wrote:</DIV><BR class="Apple-interchange-newline"><BLOCKQUOTE type="cite"><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">--- Andrew Milton &lt;<A href="mailto:akm@theinternet.com.au">akm@theinternet.com.au</A>&gt; wrote:</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV> <BLOCKQUOTE type="cite"></BLOCKQUOTE><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">grumpy = getattr(container, "grumpy.jpg")</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">The edit view of grumpy.jpg shows me the Last Modified</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">time<BR></DIV></BLOCKQUOTE><DIV><BR class="khtml-block-placeholder"></DIV><DIV>I bet you are getting the last modified date from the image.  The image has attributes inside of it.</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>Are you saying that you can not track down where the python code is getting the attribute from the image?</DIV><DIV><BR class="khtml-block-placeholder"></DIV><BR><BLOCKQUOTE type="cite"><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Now I try to investigate it by poking around in</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Python.<SPAN class="Apple-converted-space">  </SPAN>I write some code to look at any properties</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">that might have been saved for me, but not documented:</DIV></BLOCKQUOTE><DIV><BR class="khtml-block-placeholder"></DIV><DIV>I don't understand... When I track stuff down, I look at the code.  Thats part of the beauty of open source.  You have the source right there to look at.</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>Also... I don't watch this email with an eagle eye, but why haven't you just asked?  These guys are terrific at answering questions and pointers.  Watch:</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>What module should I look at to help track down where the attributes of an image are coming from?</DIV><BR><BLOCKQUOTE type="cite"><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">2] A user wants to buy a print of an image in the</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">gallery.<SPAN class="Apple-converted-space">  </SPAN>He's a new user, so I get account</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">information and add it to my user list.<SPAN class="Apple-converted-space">  </SPAN>Now I want to</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">log him in from a visually appealing web form.<SPAN class="Apple-converted-space">  </SPAN>I know</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">this is possible, because I've seen other applications</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">do this.</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">However, I can't find any mention of this in the docs.</DIV></BLOCKQUOTE><DIV><BR class="khtml-block-placeholder"></DIV>I slightly agree here but only slightly.  Weitershausen's book gives a complete A-Z example of a web site including the login page, user management, etc.  And Weitershausen frequents this list.</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV><BLOCKQUOTE type="cite"><BLOCKQUOTE type="cite"><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">so you want to replace it with something that does</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">the same thing, just in a way you understand it.</DIV> </BLOCKQUOTE><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Basically, yes.<SPAN class="Apple-converted-space">  </SPAN>I want a tool that doesn't try to</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">protect me.</DIV></BLOCKQUOTE><DIV><BR class="khtml-block-placeholder"></DIV><DIV>I think, actually, you do.  The world of hackers causes web development to require a lot of security.  Zope's, the tiny bit I've used, seems very flexible.</DIV><BR><BLOCKQUOTE type="cite"><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Please don't be mean.<SPAN class="Apple-converted-space">  </SPAN>I've been a programmer since</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">1979.<SPAN class="Apple-converted-space">  </SPAN>I've done a lot of things in this last 27</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">years.<SPAN class="Apple-converted-space">  </SPAN>If I can't make a tool dance and sing within</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">two years of picking it up, then the chances are that</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">the tool itself isn't measuring up.</DIV></BLOCKQUOTE><DIV><BR class="khtml-block-placeholder"></DIV><DIV>I use the exact same logic.  "I've a smart guy; I've been swinging in the wind forever; If I can't make it work, its the tools fault."</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>But, that logic is simply wrong.</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>In my case, I have not done web development "forever".  If I had, I would not have as many problems with Zope as I do and I would understand how, what, when, where much better.  I get really frustrated... But I take a step back.  In my case, I am frustrated not with Zope but with my expectations of what I should be able to do.</DIV><BR><BLOCKQUOTE type="cite"><BLOCKQUOTE type="cite"><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">The fact of the matter is, PHP and friends have</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">greater market penetration, because "people" want to</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">do things the 'easy' way.</DIV> </BLOCKQUOTE><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Exactly.<SPAN class="Apple-converted-space">  </SPAN>The whole point of a tool is to make it easy</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">to get from point A to point B.<SPAN class="Apple-converted-space">  </SPAN>PHP presumes that the</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">code is to be trusted and doesn't stand in the way.<SPAN class="Apple-converted-space"> </SPAN></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Zope presumes that the code is suspect and is</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">desperate to keep me from getting to point B.<SPAN class="Apple-converted-space">  </SPAN>The end</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">result is that I end up not using what Zope can do</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">because I do not want to deal with the roadblocks it</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">puts up.</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV> <BLOCKQUOTE type="cite"><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">That is mixing presentation and logic all in some</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">horrid markup. Engineers appreciate the way it</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">separates these things, and makes it hard(er) to</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">have ugly templates. PHP "programmers" are a dime a</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">dozen for a reason, "anyone" can do it.</DIV> </BLOCKQUOTE><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">No offence, but that sounds like a statement from an</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">ivory tower.<SPAN class="Apple-converted-space">  </SPAN>I want a good separation of code and</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">template.<SPAN class="Apple-converted-space">  </SPAN>However, I don't see why I should have to</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">suffer to get this.</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV> <BLOCKQUOTE type="cite"><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Zope is a different beast, if you don't have good</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">engineering habits, you're not going to get very far</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">using Zope.</DIV> </BLOCKQUOTE><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">I think you have far too much faith in Zope as it</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">currently stands.<SPAN class="Apple-converted-space">  </SPAN>Incomplete documentation is the</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">norm for OSS, but in most cases, this isn't such a big</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">deal.<SPAN class="Apple-converted-space">  </SPAN>Most products don't try to protect you, so you</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">can easily find out the name of a function that</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">someone forgot to document.</DIV></BLOCKQUOTE><BR></DIV><DIV>I would not do a major project with PHP.  Zope, Vignette, what is IBM's tool called? WorldSomethingOrOther --- they exist for a reason.</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>Why use C++?  Why use Python?  Why not just stick with BASIC?  Everyone can write BASIC code, remember?</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>The same reasoning applies here.  BASIC utterly breaks down as projects grow.</DIV><DIV><BR class="khtml-block-placeholder"></DIV>Also, I would argue that PHP is where its at today due to age and the time of introduction.  Just like Windows or QuickBooks.  If they were introduced today, they would utterly fail.  But their miserable performance is tolerated today because they are intrenched.  (That is not to say that I think PHP is bad -- only that the time something is introduced plays a huge role in how fast it spreads.)<DIV><BR class="khtml-block-placeholder"></DIV><DIV>Also -- take a look at Zope 3.  I've used it more than Zope 2 which seem to be what you have tried.  I find it really great.<DIV><BR class="khtml-block-placeholder"></DIV><DIV>Good luck and take care,<BR><DIV> <SPAN class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><SPAN class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><SPAN class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><SPAN class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><SPAN class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><DIV>Perry Smith</DIV><DIV>Ease Software, Inc.</DIV><DIV><A href="mailto:pedz@easesoftware.com">pedz@easesoftware.com</A></DIV><DIV><A href="http://www.easesoftware.com">http://www.easesoftware.com</A></DIV><DIV><BR class="khtml-block-placeholder"></DIV></SPAN></SPAN>Low cost SATA Products for IBMs p5, pSeries, and RS/6000 AIX systems<BR class="Apple-interchange-newline"></SPAN><DIV><BR class="khtml-block-placeholder"></DIV><BR class="Apple-interchange-newline"></SPAN></SPAN> </DIV><BR></DIV></DIV></BODY></HTML>