[Zope3-Users] Reminder: Early Bird Registration for PyCon Ending Soon

2007-01-10 Thread Jeff Rush
Greetings.  As the co-chair for the upcoming Python conference, being held in 
Dallas (Addison) Texas, I want to remind folk to register before early bird 
registration prices end.


The event is the fifth international Python Conference, being held Feb 23-25, 
2007 at the Marriott-Quorum in Addison Texas, with early-bird registration 
ending **Jan 15**.


The conference draws approximately 400-500 attendees from diverse backgrounds 
such as scientists from national and medical labs, college/K-12 educators, web 
engineers and the myriad of IT developers and programming hobbyists.  Those 
new to the Python language are welcome, and we're offering a half-day Python 
101 tutorial on the day before the conference, Thursday Feb 22 to help you 
get up to speed and better enjoy the rest of the conference.


We have a great selection of talks this year, some of which that are relevant 
to Zope are:


  - Web Frameworks Panel
  - Introduction to Zope 3 - The Component Architecture
  - Panel: State of Zope
  - WSGI: An Introduction
  - Using Python Eggs
  - Distributing your project with Python Eggs
  - Half-Day Tutorial: zc.buildout and the Zope Component Architecture
  - Half-Day Tutorial: How to Document a Python Open Source Project

Being run by the Python community as a non-profit event, the conference 
strives to be inexpensive, with registration being only $260 (or $195 if you 
register prior to Jan 15th), with a further discount for students.  On the day 
before the conference we are running a full day of classroom tutorials (extra 
charge per class) and then after the conference is a free four-days of 
sprints, which are informal gatherings of programmers to work together in 
coding on various projects.  Sprints are excellent opportunities to do agile 
pair-programming side-by-side with experienced programmers and make new friends.


Other activities are lightning talks, which are 5-minute presentations to show 
off a cool technology or spread the word about a project, open space talks, 
which are spontaneous gatherings around a topic and, new this year, a Python 
Lab where experienced and novice programmers will work together to solve 
challenging problems and then present their solutions.


The conference is also running four keynote talks by leaders in the 
programming field, with a special focus on education this year:


  The Power of Dangerous Ideas: Python and One Laptop per Child
 by Ivan Krstic, senior member of the One Laptop per Child project

  Premise: eLearning does not Belong in Public Schools
 by Adele Goldberg, of SmallTalk fame

  Python 3000
 by Guido van Rossum, creator of Python

  The Importance of Programming Literacy
 by Robert M. r0ml Lefkowitz, a frequent speaker at O'Reilly conferences

I believe you will find the conference educational and enjoyable. More 
information about the conference along with the full schedule of presentations 
with abstracts, is available online:


  http://us.pycon.org/

Thanks for any help you can give in spreading the word,

Jeff Rush
Co-Chair PyCon 2007
___
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users


[Zope3-Users] Representation for Zope at PyCon 2007

2006-10-22 Thread Jeff Rush
PyCon 2007 will be held in Addison (Dallas) from Feb 23 to 25, and we're fast
approaching the talk submission deadline of Oct 31.  I'd like to encourage
talks about Zope, particularly how to get started with Zope and also the new
technologies coming out of Zope 3.  Information on both of those topics has
been in very short supply at PyCons.

We're also approaching the deadline, Nov 15, for half-day tutorials taught on
Feb 22.  Attendees register separately for these and teachers can earn up to
$1500 per half-day, depending upon the number of students.  The tutorial
format would be ideal for getting someone up to speed on either Zope 2 or Zope
3.  Teach a basic intro in the morning and advanced material in the afternoon.
 And if you're nervous about such a commitment, tutorials are a great
opportunity to partner with another teacher or class helper.

As a longtime advocate of Zope (both 2 and 3) I'd very much like to see
extensive coverage this year of getting started with Zope 3.  Zope has a PR
problem, partly from the immense power that comes with it, and the difficulty
in getting your arms around it all.  It evokes strong feelings and has a
distinct philosophy and design tradeoff that you have to understand before
you're productive.  And with the recent formation of the Zope Foundation,
putting forth your best image and getting new members into the community
should be a priority.  PyCon is a significant opportunity for the Zope
community to evangelize.

In the PyCon's I've attended one challenge is breaking Zope down into teaching
chunks that can be taught in 30-40 minutes.  It is very easy to leave the
audience behind in the buzzwords and concepts of Zope.  So please don't try to
teach all of Zope + Plone in 30 minutes. ;-) ;-)

One possible talk I think would fit, would help someone just getting into Zope
3 and I wish someone would tackle is the Zope 3 component architecture -
nothing about the web or databases or security.  Start with the abstract
concept of interfaces and adapters, as exists in the zope/interface package,
and then layer on it the idea of registries, as implemented in the
zope/component package.  And wrap up with the reasons why interfaces are
better than abstract base classes and what kind of problems adapters are good
at solving, including some _non-abstract_ examples.

If you'd like to get involved, check out the following conference pages:

  http://us.pycon.org/TX2007/CallForProposals

  http://us.pycon.org/TX2007/CallForTutorials

Django and TurboGears will be at PyCon in force; I hope Zope will be too.

Jeff Rush
PyCon 2007 Co-Chair
___
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users


[Zope3-Users] Call for Members of Panels on Web Technologies

2006-10-11 Thread Jeff Rush
Talks at previous PyCons have tended to be of the lecture format.  I'd like to
see if we can get some panel discussions going and am looking for participants.

At PyCon 2005 in D.C. Michelle Levesque gave a wonderful talk, PyWebOff,
contrasting a few of the web frameworks.  However, it is a lot of work to
research many of them, so how about instead we just invite some experts for
the various frameworks to debate them instead?  And answer tough questions
from the audience?

For updating, links to the following rough outlines are at:
  http://us.pycon.org/TX2007/TalkIdeas

We need some moderators to work up more questions, and to coordinate with the
panelists.  Hey, it may be easier than preparing your own presentation and 
slides.

I'd like to see three talk panels:

---
Panel - Web Frameworks
Frameworks

 * Django
 * Zope 2
 * Zope 3
 * Twisted Web
 * Quixote
 * TurboGears

Questions Put To the Panel

 * When did the framework come into existence and what problem
   was it created to solve?
 * What are its strengths and maturity level? What is it ideal
   to use for?
 * What are its weaknesses? What would you NOT use it for?

---
Panel - Web Templating Languages
Templates Covered

 * Zope TAL, TALES, METAL
 * Twisted STAN
 * Cheetah
 * Myghty
 * Django's Template Language
 * TurboGears Kid
 * Quixote Python Template Language (PTL)

Questions to Put to the Panelists

 * Python code in your HTML, or HTML in your code?
 * Which can and cannot be handed off to a graphics designer?
 * Where do they stand in performance? in Caching?
 * Which can work with less than a page i.e. Zope viewlets, widgets?
 * Which frameworks let me plug in my choice of template language?

(initially show the audience a representative sample of each)

---
Panel - Object Relational Mappers (ORMs)
Mappers Covered

 * SQLObject
 * SQLAlchemy
 * Django ORM

Questions Put to Panelists

 * Natural or artificial keys?
 * Support for existing database schemas or must I
   do it your way?
 * How is the performance?
 * How smart is it in handling complex schema?
 * Any support for access control security at the
   object level?
 * What flavor and degree of transaction support is
   offered? Per thread, per context, autocommit?

-Jeff
Co-Chair PyCon 2007
___
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users


[Zope3-Users] Seeking a ZCML Example for a CSSViewlet

2006-10-06 Thread Jeff Rush
I've got viewlets working fine (really cool too!) but I'm stumped on getting a
CSSViewlet declared.  Googling doesn't show anyone using CSSViewlets but
hopefully someone who implemented it might clarify.

The doc files show how to do it with pure Python and the utility function
viewlet.viewlet.CSSViewlet but I need it using ZCML.  I'm trying:

  browser:viewlet
name=success.css-link
manager=.interfaces.IStylingLinks
permission=zope.Public
media=screen
rel=css
class=zope.viewlet.viewlet.CSSResourceViewletBase
/

This bypasses the utility function and generates an error about there being no
 'index' attribute, which is the small template file containing the
parameterized HTML link tag, in the result class.

So I give it a template file, although I really hate putting such a full path
in my component ZCML file:

template=/usr/share/zope-3.3.0-py2.4/lib/python/zope/viewlet/css_viewlet.pt


And now it errors out about a missing '_path' class attribute, which is passed
into the utility function.

I've also thought about passing in the utility function via a 'factory='
parameter but the viewlet directive doesn't support such a parameter.  And
I've tried just passing in the utility function on a 'class=' parameter,
figuring maybe it just wants a callable.  No luck, it wants a real class to
pass into type() for instantiation.

It's only seven lines of ZCML but I sure can't see how to use it properly.
Next I'll just roll my own ZCML directive but it seems there ought to be a way
to use CSSViewlet as intended and I'm just missing it.

Help please?

-Jeff
___
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users


[Zope3-Users] Re: Versionitis with psycopgda Again

2006-09-29 Thread Jeff Rush

Philipp von Weitershausen wrote:


Jeff Rush wrote:


Studying the psycopgda repository for branches/tags I figured there 
was a tag set to match psycopgda with each Zope version released, but 
no luck.  There are no tags at all in several years.


The package has obviously been poorly maintained. Are you a contributor 
yet, Jeff? :)


A good question considering what I'm wrestling with at the moment.  I would 
very much like to get involved.  At PyCon I filled out the contributor form, 
got write access and got too busy to use it (plus it was during the quiet time 
before the 3.3.0 release).  Now my ssh key isn't working, so I need to see 
someone about resetting it.  But with the Zope Foundation situation, I may 
very well need to sign a new contributor form to do that, but I'm not sure.


I also would like to create a new project on svn.zope.org, to contain the 
various Zope3 components I'm creating for the Python advocacy effort.  However 
I'm not sure whether I can just create another z3c.advocacy namespace or 
myname.advocacy.  Is there a requirement that everything on svn.zope.org be 
licensed under the ZPL?  The PSF would like what I produce to be under either 
the Apache or Artistic license.  If the license is a problem I can use 
svn.python.org instead I suppose, but the components are of a general nature 
and I'd like to contribute them to the Zope community.


Poking around svn.zope.org, I've got a question regarding how you avoid 
overwrite conflicts on the file z3c/__init__.py file.  I see different 
projects using different such files, some with code in them (extfile).  If 
several z3c components are installed in a site, it seems that file is a 
hotspot of contention.



Any suggestions?  With the popularity of psycopg + Zope3, any chance 
we could get psycopgda added into the Zope3 distribution to mitigate 
this chasing?


I don't think that can happen. We're thinking about making the core 
smaller, not bigger :). Also, not everyone has or needs psycopg, so the 
testing would become a burden.


Understandable.  By the way, revision 40054 is the one that works with Zope 
3.2.1 and I'd like to put a meaningful tag on that when I get access.  I've 
also got a simple patch to psycopgda that lets it use psycopg2 and fallback to 
psycopg1 if not found.  It's been working great here for almost a year, with 
psycopg2.


-Jeff


___
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users


[Zope3-Users] Versionitis with psycopgda Again

2006-09-28 Thread Jeff Rush
Greetings.  The last time I was matching up psycopgda with a new Zope 
installation, I was informed I should not be using the tarball for 1.0.0 on 
zope.org but instead using the psycopgda at the subversion head.  Doing so 
worked fine with Zope 3.2.1.


Today I need to install another Zope 3.2.1 but the head of that subversion 
repository has moved on and no longer works.  It appears to have been updated 
for Zope 3.3.0, with zope.app.rdb moved under zope.app (a good thing), and I'm 
not yet able to jump this site to that version of Zope.


Studying the psycopgda repository for branches/tags I figured there was a tag 
set to match psycopgda with each Zope version released, but no luck.  There 
are no tags at all in several years.


Any suggestions?  With the popularity of psycopg + Zope3, any chance we could 
get psycopgda added into the Zope3 distribution to mitigate this chasing?


-Jeff

___
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users


[Zope3-Users] Re: Referencing objects in auto-generated forms

2006-04-16 Thread Jeff Rush

Frank Burkhardt wrote:


On Sat, Apr 15, 2006 at 08:41:57AM -0700, Ruben Gutierrez wrote:


I'm having trouble understanding some of the semantics or conventions with
Zope. One simple question I have is how do I create a list of selectable
values in a form.



Sounds like a classic use case for a vocabulary.


Frank, I thought vocabularies were being de-emphasized though, in favor of the 
newer 'sources' component?  Vocabularies were good for short lists of choices, 
but because it read them all into memory at once not so good at lazy 
evaluation.  Sources supposedly uses an iterator and is good for both short 
and long lists, as I roughly understand it.


-Jeff

___
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users


[Zope3-Users] Re: A Few Questions re Namespaces

2006-04-16 Thread Jeff Rush

Martin Aspeli wrote:



2. I finally found the + view in container/browser, but all
uses of it are as /@@+/newitem.html.  I could have sworn
I saw the + used w/o the @@ prefix someplace but can't
find it again.  Did I indeed imagine ever seeing
/+/newitem.html?



No, I've seen this too. As far as I understand, the @@ is optional, but  
useful to disambiguate views from other things. If you had an object in 
/  called '+', /+ would find that, not the add view.


I finally found uses of + as well as @+, so I wasn't crazy.  I was 
confused because the + wasn't special-cased in the scattered traversal logic 
and because I first saw it in the persistent schemas component, which didn't 
seem to fit into anything going on.


I was also trying to understand the trailing '=' on those URLS, but couldn't 
search for just a '+' or '='.  I've stepped thru all the traversal and form 
add/edit components and understand how it fits together now.


A few odd things though, the add and edit code looks written by two different 
people, with different styles and names.  And in some places there is 
aggressive removal of leading '@@' without checking if there is an item by 
that name first, so that if you use the same name for two kinds of things, the 
view will always be found but not the item.




3. What happens if you register a utility or adapter with
the -exact- same criteria including the same name?  Does
a queryAdapter() lookup return the oldest or newest?
Is that a legitimate way of overriding, other than
using an overrides.zcml?


Did you try it?


Haven't had the time to set up the test case re several ZCML files and so 
forth - was hoping for an off-the-cuff answer, as I have a long list here of 
other, more novice, experiments to try to understand the boundary cases and 
ambiguous docs.


-Jeff

___
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users


[Zope3-Users] Found a (perhaps obvious) page template speedup

2006-04-16 Thread Jeff Rush
Perhaps most of you already know this but it bit me this week.  For my project 
I've noticed some sluggish presentation of pages, and a lot of container 
queries flying around for very simple pages.  It turns out to be Javascript 
code (singleBranchTree.xml) that is walking one-level of parents, siblings and 
children for each of my pages, even though I don't have a nav tree widget in 
my skin.


I thought I was doing things the preferred way, by using the existing 
@@standard_macros/page and filling in slots to change out selected portions. 
It turns out that while there is a slot to disable the -display- of the nav 
tree, there isn't one for the page header to disable the -computation- of the 
nav tree, which is triggered from within the browser via navigation_tree.js 
upon the body load event.


It probably doesn't make a noticeable difference when your containers use the 
ZODB and only have a handful of items per folder.  In my case most of my 
containers are SQL tables, with hundreds to thousands of records, so even a 
localized tree traversal results in SQL queries and instantiation of quite a 
few objects.


Besides rolling my own skin from scratch, my solution, since I can't slot it 
out, was to layer the navigation_tree_js with my own, modified copy:


  browser:page
  for=*
  name=skin_macros
  permission=zope.View
  layer=webaccountant
  template=template_tablelayout.pt
  /
!--  layer=zope.app.rotterdam.rotterdam --

and then copy zope/app/rotterdam/template_tablelayout.pt into my project and 
edit it to comment out the line:


  !--
 metal:tree use-macro=context/@@standard_macros/navigation_tree_js /
--

It made a world of difference in performance for me.  Your milage may vary.

-Jeff

___
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users


[Zope3-Users] Use Case for a Tree of Adapter Registries?

2006-04-14 Thread Jeff Rush
I've read the code for adapter registries, how there is a global one and any 
number of local ones, arranged in a tree and that each can be disabled.


But I can't figure out when you'd want to make use of such an arrangement. 
The docstrings and .txt files use abstract examples, for unit testing, and 
don't provide a motivation for this feature.


Related to that, the global registry is loaded at server startup time from the 
various .zcml directives, and I presume that the only way to loaded up a local 
registry is thru-the-web, right?  Which means all local registries are 
persistent in the ZODB, I think.


Can anyone nudge me onto the right path?

-Jeff
___
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users


[Zope3-Users] Time for a Decimal field type in zope.schema?

2006-04-07 Thread Jeff Rush
Perhaps this is an old topic, although I've done searches.  I've seen the 
brief discussion about security proxies and the Decimal type on zope3-users, 
but (to zope3-dev) what about getting it added to the zope.schema as a 
first-class field type?  So we can have auto-generated HTML forms and such?


Has anyone already done this, in some Zope3 branch or private development?

If not, is there any good reason it should not happen?  Must Zope3 support 
Python versions prior to the introduction of the Decimal type?


I'm willing to tackle it and make a submission, otherwise.

-Jeff
___
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users


[Zope3-Users] Re: Traversal Tricks (was Seeking Reference Guide on TAL/TALES/METAL)

2006-04-01 Thread Jeff Rush

Jeff Rush wrote:


My specific question is how evaluation of the path expression X/Z is 
handled.  It *seems* to be:


X.__getitem__('Y')# X['Y']

whereas I'm trying to get:

X.__getattr__('Y')# X.Y

Under Zope 2, as I recall, it would try several algorithms; attribute, 
mapping, sequence.  And I'm wondering if that mechanism was simplified 
for Zope 3, and in what way.


Study has shown that it searches attribute then item namespace for 
non-containers, *but* item and then attribute namespace for containers.


My objects are contained containers representing specialized SQL tables 
(records are items), that also themselves have attributes.  So the search of 
item namespace first was causing bogus (and time consuming) SQL queries to 
be made.


I need control over which namespace is searched, so I added a couple of 
generic TALES namespace adapters.  Now I can do:


  h1 tal:content=context/attr:name /

to -only- search for a name attribute, and (less frequently):

  h1 tal:content=context/item:ABC123 /

to -only- search using __getitem__() calls.

Perhaps this is useful to others, and since it wasn't much code, here it is:

 cut here 

_marker = object()



class AttrPathAdapter(object):
Only search attribute not item namespace for path members.



implements(ITALESFunctionNamespace)



def __init__(self, context):
self.context = context



def setEngine(self, engine):
self.locale = removeSecurityProxy(engine.vars['request']).locale



def __getattribute__(self, name):
if name.startswith(_):
return super(AttrPathAdapter, self).__getattribute__(name)
value = getattr(self.__dict__['context'], name, _marker)
if value is _marker:
return super(AttrPathAdapter, self).__getattribute__(name)
return value



class ItemPathAdapter(object):
Only search item not attribute namespace for path members.



implements(ITALESFunctionNamespace)



def __init__(self, context):
self.context = context



def setEngine(self, engine):
self.locale = removeSecurityProxy(engine.vars['request']).locale



def __getattribute__(self, name):
if name.startswith(_):
return super(ItemPathAdapter, self).__getattribute__(name)
value = self.__dict__['context'].get(name, _marker)
if value is _marker:
return super(ItemPathAdapter, self).__getattribute__(name)
return value


    cut here 

  adapter
  factory=webaccountant.pathadapters.AttrPathAdapter



  provides=zope.app.traversing.interfaces.IPathAdapter
  for=*
  name=attr
  /



  adapter
  factory=webaccountant.pathadapters.ItemPathAdapter



  provides=zope.app.traversing.interfaces.IPathAdapter
  for=*
  name=item
  /



 cut here 

-Jeff

___
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users


[Zope3-Users] Re: Traversal Tricks (was Seeking Reference Guide on TAL/TALES/METAL)

2006-04-01 Thread Jeff Rush

Jeff Rush wrote:


My specific question is how evaluation of the path expression X/Z is 
handled.  It *seems* to be:


X.__getitem__('Y')# X['Y']

whereas I'm trying to get:

X.__getattr__('Y')# X.Y

Under Zope 2, as I recall, it would try several algorithms; attribute, 
mapping, sequence.  And I'm wondering if that mechanism was simplified 
for Zope 3, and in what way.


My approach of using attr: and item: TALES namespace adapters doesn't work 
in all cases, since those TAL templates not under my control, for ZMI, 
access the attribute/item namespaces using the old ordering.


So another approach is to override the traversal algorithm for selected 
classes of objects.


There are (at least) two traversal algorithms, one that seaches the item 
namespace first then the attribute namespace, and one that does it in the 
other order.


  zope.app.traversing.adapters.DefaultTraversable  (attr then item)

  zope.app.container.traversal.ContainerTraversable (item then attr)

Therefore I didn't need to write my own traverser, just select the 
non-content style for those containers that needs the other order.


So for my IVenture container class, I do:

  zope:adapter
  factory=zope.app.traversing.adapters.DefaultTraversable



  provides=zope.app.traversing.interfaces.ITraversable
  for=.interfaces.IVenture
  /



And the old search order is now 'attr then item'!

I thought this technique might useful to someone.

-Jeff

___
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users


Re: [Zope3-Users] Multiple containers in one object - how to implement in Zope3?

2006-04-01 Thread Jeff Rush

Alek Kowalczyk wrote:

Florian Lindner napisał(a):


Am Samstag, 1. April 2006 15:15 schrieb Alek Kowalczyk:
 

I have a single object, which can contain many objects of 2 another
types (IType1, IType2). My intention is to have those objects contained
in separate collections (because they are very different 2 types of
objects and should not be mixed in one collection)
I'd like to have each collection editable like Zope folder, i.e each
collection to be IContainer/BTreeContainer.


why don't just create two subfolders (of type zope.folder) in you Container 
object, one for IType1, one for IType2?


Good idea, thanks! In the meantime I have made something similar, i.e 
defined two more container types (IObjects1, IObjects2) and created one 
IObjects1 and one IObjects2 in the IMasterObject's (which now is also a 
IContainer) constructor .


But now the new question follows:  how to limit cardinality of items? I 
want now to have one and exactly one IObjects1 and IObjects2 instance in 
IMasterObject. Is there some type of constraint defined, similar to 
ItemTypeConstraint, for limiting number of elements of specific type, or 
I should do it on my own by overriding __setitem__ and other methods?


Alek, I do the same thing for a complex container with a fixed set of member 
sub-containers.


  IVenture(RUSH)
ILedgerSet, name ledgers
   ILedgers
   ...
IJournalSet, name journals
   IJournals
   ...

  http://sample.com/ventures/RUSH/ledgers/CASH
  http://sample.com/ventures/RUSH/journals/CHECKING

The way to get what you want is to make IMasterObject *not* an IContainer 
but an IReadContainer.


There are IWriteContainer and IReadContainer which are sub-interfaces of 
IContainer.


This way no one can ever add/remove those sub-containers.  And (presumeably 
you're doing it now) you add those the instances of Objects1 and Objects2 at 
creation time of MasterObject, and then never again need to manipulate them.


You should also place Container/Containee constraints on the IObjects1 and 
IObjects2 so they cannot be created in inappropriate places, and of course 
omit their menu entries from the ZMI so they are not manually addable.


-Jeff
___
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users


[Zope3-Users] Re: Is Zope Zope2 or Zope3?

2006-01-21 Thread Jeff Rush

David Johnson wrote:

This is unfortunate.  I do think Zope 3 will get the recognition it deserves
in time.  I feel the Zope community is more focused on how it works than how
it is marketed and this seems like the best long term approach.


Actually I think Zope3 is in danger of being rendered irrelevant by failure 
to get the word out.  I was there back in the days of Bobo and 
DocumentTemplate (i.e. before Zope2) and today is a very different world. 
Zope3 has some serious contenders in other frameworks, and if they gain 
significant mindshare, Zope3 will fade to one of those oddball frameworks 
used by one guy in the back office.


Zope3 has some really cool architecture ideas, and unless the PR picture 
changes, I predict it will be gutted/componentized and those good ideas used 
in other frameworks.  Although that's not necessarily a bad thing, that it 
cross-pollinate others, but it means Zope3 would have been just a (really 
cool) RD project, not a production framework.


In fact at this year's PyCon the Zope sprint plans to work on making the 
Zope3 components more useful outside of Zope, encouraging this approach.


  http://tinyurl.com/7hvtn   (Sprint Desc on zope.org)

  Maybe bits of Zope could be used to help write smaller applications
  than those that are well served by the application server.

That's where I'll be, since I've been experimenting with using Zope3 
components to write non-web applications.


-Jeff

___
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users


[Zope3-Users] Re: Zope 3 Capacities

2006-01-21 Thread Jeff Rush

David Johnson wrote:


In general we’re looking at using an RDBMS, but we’re trying to

 get a better feeling of when we can use the ZODB and when we
 should stick to the RDBMS.


We have various datasets:

   1. Transactions: 10-100 billion objects
   2. Users: 10-100 million objects
   3. Contacts: 100,000 objects
   4. Customers: 100-1000 objects


I see other good replies but one factor you must keep in mind for ZODB is 
that it keeps the index of all objects in memory.  With 100 billion 
transaction objects, you're going to need a LOT of RAM and have a large 
startup-time.


I've always wondered why ZODB didn't offer an option of storing the object 
index in a BTREE, but I guess its the performance issue of potential 
additional disk accesses.


-Jeff

___
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users


[Zope3-Users] Re: URL Traversal/SelectedManagementView

2006-01-21 Thread Jeff Rush

David Johnson wrote:

Thanks for the help. I think I understand, however, I think I might be
missing something.  You specified that you would get a URL such as:



  http://www.taupro.com/venture/IBM/ledger/100



This looks good, but it seems that the object is not persistent, and a
restart of the server would cause the URL to be invalid.  Am I understanding
correctly?  This also seems to be for a relatively small number of objects,
since you are creating objects on the fly. A larger number of objects may
consume the memory.


No, actually the objects ARE persistent, just not in the ZODB.

When Zope3 traveral reaches the venture folder, which is a ZODB-persistent 
object with one attribute of a RDB connection name, that connection name 
is looked up and turned into a volatile RDB connection instance.  Then a 
query to obtain the items in the folder is translated into SQL queries whose 
responses are wrapped in non-persistent classes.


To continue the example the traversal engine then picks the IBM object, 
which both acts as a folder representing a business venture -and- has 
attributes about IBM, such as legalname and such.  The IBM venture object 
is transient in memory but recreated as needed.  Since the Zope3 component 
SQLMethod I build on caches the SQL query and response, recreation takes 
little time for each successive traversal.


Now when the traversal engine queries the IBM object for its members, that 
object returns a brief canned list of magic subfolders, such as ledger, 
journal, transaction, statements, etc.  These are transient classes as well, 
that appear as folders to Zope3.  So in this case it returns the ledger 
folder object.


And then when the traversal engine queries the ledger object for ledger 
#100, the ledger transient object has retained as an attribute from its 
creation a reference to its parent, as part of the ILocation interface. 
Using such explicit locational acquisition, the ledger object can issue an 
SQL query, contextualized by the parent(s) to look for ledger #100 -OF THE 
VENTURE IBM-, and wrap that response in a transient Ledger class as well.


And now we can locate and return views based on the ILedger interface.

-Jeff

___
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users


[Zope3-Users] Re: Seeking Zope 3 Equivalent to Zope 2 LocalFS

2006-01-17 Thread Jeff Rush

Michael Haubenwallner wrote:

Jeff Rush wrote:

The Resource directive exposes a single file, say a .CSS or 
favicon.png, but I'm not seeing that it can expose an entire directory 
tree.

 
The browser:resourceDirectory works for me, here is eg. the 
'configure.zcml' of a package that just holds files and folders::


Ah, yes I'd forgotten there was a resourceDirectory as well as a resource 
directive.  I kept looking for a resource package but it's in the publisher 
package.


Thanks, although I think I'm going to have to implement LocalFS to get all 
the flexibility I need.


-Jeff

___
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users


[Zope3-Users] Anyone doing an ORM for Zope3?

2005-12-07 Thread Jeff Rush
Just wondering if anyone is currently or planning to produce any kind of 
ORM for Zope 3?


I'm representing some rows of SQL data as Zope 3 objects and find I need 
some kind of minimal layer.  While I can issue SQL requests easily, in 
Zope3 when receiving, validating and storing an add/edit form, Zope3 
wants to write to my object attributes one at a time.  I tried hooking 
setattr and issuing UPDATEs for each attribute but its (a) slow and (b) 
some combinations violate my table constraints.


What I need is something that accumulates the setattr operations and 
hooks into the Zope3 transaction mechanism.  Then when the commit 
occurs, turn those into one multi-column UPDATE operation per object 
modified.  Something like a Persistence mix-in for SQL-backed data.


Or is there another approach people are using for RDB objects?

-Jeff

___
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users


[Zope3-Users] Meaning of a Single + in a URL?

2005-12-05 Thread Jeff Rush
I've got viewing of my component working and now adding works but I 
don't quite understand how it is working.


I have the following URL, where 'ventures' is a container of mine.

  https://taupro.com/webaccountant/ventures/+/newventure.html

I want to display the form necessary to add a new entry to that 
container, so I use the ZCML tag 'browser:addform'.  The writeup for the 
'for' attribute of that tag in Philipp's book says:


  Instead, add forms are registered by default for IAdding,
   the interface of the adding view (usually +).

I'm not specifying that attribute, letting it default but does the '+' 
represent a 'view'?  I thought 'newventure.html' was my auto-generated 
view?  Or is a form something totally different from a view, with a 
separate utility registry?


And am I correct that we need '+' to disambiguate the following name 
because otherwise in the case:


   https://somehost.com/container/somename

one can't tell whether 'somename' is a item in that container or an 
view on that container?


I wish there was a one-page description of the breakdown of a Zope 3 
URL, pointing out the various special characters you might find.  The 
two Zope 3 books introduce them gradually but lacks a URL Ref Sheet. 
It would make a nice appendix in a 2nd edition of either of those books.


-Jeff

___
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users