Skip to content
This repository has been archived by the owner on Sep 14, 2023. It is now read-only.

Commit

Permalink
Starting from grok trunk.
Browse files Browse the repository at this point in the history
  • Loading branch information
trollfot committed Nov 1, 2010
0 parents commit 83b5600
Show file tree
Hide file tree
Showing 601 changed files with 38,934 additions and 0 deletions.
709 changes: 709 additions & 0 deletions CHANGES.txt

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions COPYRIGHT.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Zope Foundation and Contributors
83 changes: 83 additions & 0 deletions CREDITS.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
CREDITS
=======

* Martijn Faassen (original developer)

* Wolfgang Schnerring (original developer)

* Christian Theune (original developer)

* Philipp von Weitershausen (original developer)

* Jan-Wijbrand Kolman (early developer (Grok Zwei sprint), release manager)

* Uli Fouquet (admin interface, introspector, summer of code student)

* Darryl Cousins (website, admin interface)

* Kevin Teague (website, documentation)

* Tim Terlegård (JSON support, viewlets, grokproject)

* Maurits van Rees (grokproject, eggbasket)

* Sebastian Ware (website effort, documentation)

* Christian Zagrodnick (early grok discussions)

* Mikhail Kashkin

* Wim Boucqaert (admin interface layout improvements)

* Kevin M. Smith (skins and layers support, viewlets)

* Luciano Ramalho

* Lennart Regebro (template pluggability)

* Guido Wesdorp (template pluggability)

* Brandon Rhodes (template pluggability, grokcore.component)

* Godefroid Chapelle (conversion to Z3 configuration actions)

* Souheil Chelfouh

* Sylvain Viollon (work on martian, grokcore.formlib, grokcore.view,
grokcore.viewlet)

* Michael Haubenwallner (WSGI support, ZTK support)

* Vincent Fretin

* Reinout van Rees

* Maurits van Rees

* ME GROK (team mascot)

Thank you
---------

* The Zope 3 developers, who provided the mountain for Grok to stand
on.

* gocept for hosting the first grok sprint in Halle, Germany. Special
thanks to Felicia Faassen Wong, Christian Zagrodnick and Magda
Motyka for the delicious food.

* Philipp von Weitershausen for hosting the second grok sprint in
Dresden, Germany. Special thanks to Heinrich von Jagwitz for the
delicious food.

* The organizers of EuroPython 2007 in Vilnius for allowing us to host
the third Grok sprint after EuroPython there.

* ID StudioLab of the faculty of Industrial Design at the Delft
University of Technology for sponsoring the development of REST
support in Grok.

* The Health Agency for hosting the "Grokkerdam sprint" in 2008.

* GfU Cyrus in Cologne for generously hosting the "Neanderthal sprint" in
2007 and the "Neanderthal II sprint" in 2009.
83 changes: 83 additions & 0 deletions INSTALL.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
Preparing for grok development
------------------------------

The Grok development sandbox is set up via `zc.buildout`_

.. _zc.buildout: http://cheeseshop.python.org/pypi/zc.buildout

You may have setuptools already installed for your system Python. In
that case, you may need to upgrade it first because buildout requires
a very recent version::

$ sudo easy_install -U setuptools

If this command fails because easy_install is not available, there is
a good chance you do not have setuptools available for your system
Python. If so, there is no problem because setuptools will be
installed locally by buildout.

Bootstrap the buildout environment::

$ python bootstrap/bootstrap.py

and run the buildout command::

$ bin/buildout
[lots of stuff will be downloaded and installed here]

Note that if you have more than one sandbox for a Zope-based web
application, it will probably make sense to share the eggs between the
different sandboxes. You can tell zc.buildout to use a central eggs
directory by creating ``~/.buildout/default.cfg`` with the following
contents::

[buildout]
eggs-directory = /home/bruno/buildout-eggs

Note, that this is the grok core package. If you want to develop Grok
applications you might consider to use `grokproject
<http://pypi.python.org/pypi/grokproject>`_ instead.


Running the demo applications
-----------------------------

You can start Zope with the demo applications installed with the
following command:

$ bin/paster serve parts/etc/deploy.ini

If you now connect to port 8080 and log in with username 'grok',
password 'grok', you should be able to add the grok-based applications
(such as grokwiki) from the menu.

Running the tests
-----------------

Grok's tests are easily run by executing the test runner that's
installed in the ``bin`` directory::

$ bin/test

Generating the website files
----------------------------

Grok's tutorial documents for the website can easily be generated
using the following scripts in ``bin``::

$ bin/grokdocs2html

The output is by default written to ``build/html/``.

Run::

$ bin/grokdocs2html -h

to get all options supported.

With::

$ bin/grokdocs2latex

you get LaTeX output which can be used to generate PDF docs. This
requires a working LaTeX installed on your system.
44 changes: 44 additions & 0 deletions LICENSE.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
Zope Public License (ZPL) Version 2.1

A copyright notice accompanies this license document that identifies the
copyright holders.

This license has been certified as open source. It has also been designated as
GPL compatible by the Free Software Foundation (FSF).

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

1. Redistributions in source code must retain the accompanying copyright
notice, this list of conditions, and the following disclaimer.

2. Redistributions in binary form must reproduce the accompanying copyright
notice, this list of conditions, and the following disclaimer in the
documentation and/or other materials provided with the distribution.

3. Names of the copyright holders must not be used to endorse or promote
products derived from this software without prior written permission from the
copyright holders.

4. The right to distribute this software or to use it for any purpose does not
give you the right to use Servicemarks (sm) or Trademarks (tm) of the
copyright
holders. Use of them is covered by separate agreement with the copyright
holders.

5. If any files are modified, you must cause the modified files to carry
prominent notices stating that you changed the files and the date of any
change.

Disclaimer

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY EXPRESSED
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
48 changes: 48 additions & 0 deletions README.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
Grok
****

What is grok?
=============

Grok is a smashing web framework based on `Zope Toolkit`_ technology.

.. _`Zope Toolkit`: http://docs.zope.org/zopetoolkit

Grok uses the Component Architecture and builds on Zope concepts like
content objects (models), views, and adapters. Its simplicity lies in
using **convention over configuration** and **sensible defaults** when
wiring components together. That means neither a configuration
language like ZCML nor a lot of repetition are needed to create a web
application with grok.

You can find out much more about Grok at our http://grok.zope.org
website.

Who is grok?
============

Grok is a friendly caveman from the Stone Age. He has a big club that
he hunts mammoths with. He will also use this club to smash anything
he doesn't like.

"ME GROK SMASH ZCML!"

Getting grok
============

The easiest way to get started with grok is to install the
`grokproject <http://cheeseshop.python.org/pypi/grokproject>`_ package
(e.g. via ``easy_install grokproject``) and then create a new project
area by calling the ``grokproject`` script like so::

$ grokproject MyProject
... many lines of output here

This will create a project area in ``MyProject`` as well as download
and install grok.

You can also get grok from the subversion repository::

svn co svn://svn.zope.org/repos/main/grok/trunk grok

Then follow the instructions of ``INSTALL.txt``.
121 changes: 121 additions & 0 deletions TODO.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
====
TODO
====

Meta
====

- Check demo applications for issues with patterns (grok wiki, ldap address
book)


Core
====

- choice fields / sources (theuni)

- testing strategy for the tutorial (faassen)

- make it easier to write tests (wosc, faassen)

- error reporting during grokking (provide file/line-number information
on our extrinsically generated errors) (philikon)

- What will happen if we make a utility a old style class and use the
MRO stuff. Since we don't support non-persistent local utilities yet this
may be a rare case.

- What about local utilities that don't subclass persistent? Perhaps we
can look for IPersistent and give an error if the utility doesn't
state it is.

- Change error messages: whenever we report about a callable, add
() to the name. Core Python expections do this.

- JSON support similar to XMLRPC.


Schema/formlib support
----------------------

- support nested class 'fields' directly on a view (do we really want this?)

- list form for grok.Container (w/ zc.table?)

- delete action on list form

- make formlib macros available in some form?

- what about subclassing a model that has a 'fields'?


Need to discuss
---------------

- Do we want to ship Grok with a javascript library dependency such as
MochiKit, to enable out of-the-box AJAX?

- Make it even easier to set up the catalog (intids should be set up
automatically if not already present. Perhaps Index grokkers?).

- Testing support. Test grokkers?

- Error pages: make it easy to register application-specific error
pages for exceptions.

- Easier queries: integrate hurry.query in some way?

- fall back to a static resource that is defined in a package on a higher
level if no static resource directory is defined locally in a package?

- grok.grokkable (to allow grokking of imported things)

- skins

- form redirect

- authentication (pau integration) (faassen)

- sessions (get the session information for something, similar to
annotations?)

- menus - define a menu, associate a view with a menu (module-level,
class-level)

- making new widgets (faassen, philikon)

- IMPORTANT: different strategies: grok.definefoo() versus n =
grok.Foo(), watch out for consistency/symmetry/...

- use ZCML's conflict resolution machinery; actions for Grok.

- do not accept automatic template directory guessing convention for
__init__.py, bail out with grok error instead?

- grok.name, grok.template class restrictions (e.g. grok.template
should only be usable from grok.View subclasses)

- support grok.template(template) in addition to
grok.template('name_of_template')?

- support grok.resource on view class level?

- should grok.context and grok.Model be order-dependent?
(so their meaning becomes "below here, this is the context")

- Do we want to initialize model attributes for any schema that the model
implements (in addition to the initialization that is taking place for the
model-level fields)?


Punt
----

- making new fields

- viewlets / content providers (LATER)

- RDB - via extension: megrok.sqlalchemy for example - make it easy to
go between the different schema implementations

- containment constraints (wait for zope 3 to do them right)
Loading

0 comments on commit 83b5600

Please sign in to comment.