This repository has been archived by the owner on Sep 14, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 83b5600
Showing
601 changed files
with
38,934 additions
and
0 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
Zope Foundation and Contributors |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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``. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |
Oops, something went wrong.