From 0a6da3800b963b2104c8e10598ac7589a81f981e Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Sun, 24 Aug 2008 01:59:07 +0000 Subject: - Remove ``sampleapp`` sample application from bfg package itself. - Remove dependency on FormEncode (only needed by sampleapp). - Fix paster template generation so that case-sensitivity is preserved for project vs. package name. - Depend on ``z3c.pt`` version 1.0a1 (which requires the ``[lxml]`` extra currently). --- CHANGES.txt | 18 +++-- repoze/bfg/paster.py | 1 - repoze/bfg/paster_template/+package+.ini_tmpl | 12 ---- repoze/bfg/paster_template/+package+/run.py_tmpl | 6 +- repoze/bfg/paster_template/+package+/tests.py_tmpl | 8 +-- repoze/bfg/paster_template/+project+.ini_tmpl | 12 ++++ repoze/bfg/paster_template/setup.py_tmpl | 4 +- repoze/bfg/sampleapp/__init__.py | 1 - repoze/bfg/sampleapp/configure.zcml | 54 --------------- repoze/bfg/sampleapp/listeners.py | 6 -- repoze/bfg/sampleapp/models.py | 42 ------------ repoze/bfg/sampleapp/run.py | 11 --- repoze/bfg/sampleapp/templates/blog.pt | 22 ------ repoze/bfg/sampleapp/templates/blog_entry.pt | 12 ---- repoze/bfg/sampleapp/templates/blog_entry_add.pt | 29 -------- repoze/bfg/sampleapp/templates/contents.pt | 6 -- repoze/bfg/sampleapp/views.py | 79 ---------------------- repoze/bfg/tests/test_router.py | 2 +- repoze/bfg/tests/test_zcml.py | 30 ++++---- repoze/bfg/zcml.py | 2 +- setup.py | 10 +-- 21 files changed, 55 insertions(+), 312 deletions(-) delete mode 100644 repoze/bfg/paster_template/+package+.ini_tmpl create mode 100644 repoze/bfg/paster_template/+project+.ini_tmpl delete mode 100644 repoze/bfg/sampleapp/__init__.py delete mode 100644 repoze/bfg/sampleapp/configure.zcml delete mode 100644 repoze/bfg/sampleapp/listeners.py delete mode 100644 repoze/bfg/sampleapp/models.py delete mode 100644 repoze/bfg/sampleapp/run.py delete mode 100644 repoze/bfg/sampleapp/templates/blog.pt delete mode 100644 repoze/bfg/sampleapp/templates/blog_entry.pt delete mode 100644 repoze/bfg/sampleapp/templates/blog_entry_add.pt delete mode 100644 repoze/bfg/sampleapp/templates/contents.pt delete mode 100644 repoze/bfg/sampleapp/views.py diff --git a/CHANGES.txt b/CHANGES.txt index 7a04efa08..7ce675b1d 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,10 +1,20 @@ Next release + - Remove ``sampleapp`` sample application from bfg package itself. + + - Remove dependency on FormEncode (only needed by sampleapp). + + - Fix paster template generation so that case-sensitivity is + preserved for project vs. package name. + + - Depend on ``z3c.pt`` version 1.0a1 (which requires the ``[lxml]`` + extra currently). + - Read and write a pickled ZCML actions list, stored as - ``configure.zcml.pck`` next to the applications's "normal" - configuration file. A given bfg app will usually start faster - if it's able to read the pickle data. It fails gracefully - to reading the real ZCML file if it cannot read the pickle. + ``configure.zcml.cache`` next to the applications's "normal" + configuration file. A given bfg app will usually start faster if + it's able to read the pickle data. It fails gracefully to reading + the real ZCML file if it cannot read the pickle. 0.3.1 (8/20/2008) diff --git a/repoze/bfg/paster.py b/repoze/bfg/paster.py index f574a1862..ab8ceeee9 100644 --- a/repoze/bfg/paster.py +++ b/repoze/bfg/paster.py @@ -4,5 +4,4 @@ from paste.util.template import paste_script_template_renderer class BFGProjectTemplate(Template): _template_dir = 'paster_template' summary = 'repoze.bfg starter project' - vars = [] template_renderer = staticmethod(paste_script_template_renderer) diff --git a/repoze/bfg/paster_template/+package+.ini_tmpl b/repoze/bfg/paster_template/+package+.ini_tmpl deleted file mode 100644 index 2d6c4d0a2..000000000 --- a/repoze/bfg/paster_template/+package+.ini_tmpl +++ /dev/null @@ -1,12 +0,0 @@ -[DEFAULT] -debug = true - -[app:main] -use = egg:{{project}}#app -reload_templates = true - -[server:main] -use = egg:PasteScript#cherrypy -host = 0.0.0.0 -port = 6543 -numthreads = 4 diff --git a/repoze/bfg/paster_template/+package+/run.py_tmpl b/repoze/bfg/paster_template/+package+/run.py_tmpl index b3c3d1ed7..4b3322bce 100644 --- a/repoze/bfg/paster_template/+package+/run.py_tmpl +++ b/repoze/bfg/paster_template/+package+/run.py_tmpl @@ -3,9 +3,9 @@ from repoze.bfg import get_options def app(global_config, **kw): # paster app config callback - from {{project}}.models import get_root - import {{ project}} - return make_app(get_root, {{project}}, options=get_options(kw)) + from {{package}}.models import get_root + import {{package}} + return make_app(get_root, {{package}}, options=get_options(kw)) if __name__ == '__main__': from paste import httpserver diff --git a/repoze/bfg/paster_template/+package+/tests.py_tmpl b/repoze/bfg/paster_template/+package+/tests.py_tmpl index dc8dc11f3..22a7ee4e9 100644 --- a/repoze/bfg/paster_template/+package+/tests.py_tmpl +++ b/repoze/bfg/paster_template/+package+/tests.py_tmpl @@ -11,10 +11,10 @@ class ViewTests(unittest.TestCase): # should explore ways to do that rather than rely on ZCML (see # the repoze.bfg tests for inspiration). self._cleanup() - import {{project}} + import {{package}} import zope.configuration.xmlconfig zope.configuration.xmlconfig.file('configure.zcml', - package={{project}}) + package={{package}}) def tearDown(self): self._cleanup() @@ -25,13 +25,13 @@ class ViewTests(unittest.TestCase): cleanUp() def test_my_view(self): - from {{project}}.views import my_view + from {{package}}.views import my_view context = DummyContext() request = DummyRequest() result = my_view(context, request) self.assertEqual(result.status, '200 OK') body = result.app_iter[0] - self.failUnless('Welcome to {{project}}' in body) + self.failUnless('Welcome to {{package}}' in body) self.assertEqual(len(result.headerlist), 2) self.assertEqual(result.headerlist[0], ('content-type', 'text/html; charset=UTF-8')) diff --git a/repoze/bfg/paster_template/+project+.ini_tmpl b/repoze/bfg/paster_template/+project+.ini_tmpl new file mode 100644 index 000000000..2d6c4d0a2 --- /dev/null +++ b/repoze/bfg/paster_template/+project+.ini_tmpl @@ -0,0 +1,12 @@ +[DEFAULT] +debug = true + +[app:main] +use = egg:{{project}}#app +reload_templates = true + +[server:main] +use = egg:PasteScript#cherrypy +host = 0.0.0.0 +port = 6543 +numthreads = 4 diff --git a/repoze/bfg/paster_template/setup.py_tmpl b/repoze/bfg/paster_template/setup.py_tmpl index d2b4d575b..61a7302e4 100644 --- a/repoze/bfg/paster_template/setup.py_tmpl +++ b/repoze/bfg/paster_template/setup.py_tmpl @@ -35,10 +35,10 @@ setup(name='{{project}}', tests_require=[ 'repoze.bfg', ], - test_suite="{{project}}", + test_suite="{{package}}", entry_points = """\ [paste.app_factory] - app = {{project}}.run:app + app = {{package}}.run:app """ ) diff --git a/repoze/bfg/sampleapp/__init__.py b/repoze/bfg/sampleapp/__init__.py deleted file mode 100644 index ef5fe8b12..000000000 --- a/repoze/bfg/sampleapp/__init__.py +++ /dev/null @@ -1 +0,0 @@ -# a package diff --git a/repoze/bfg/sampleapp/configure.zcml b/repoze/bfg/sampleapp/configure.zcml deleted file mode 100644 index a5f27595e..000000000 --- a/repoze/bfg/sampleapp/configure.zcml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/repoze/bfg/sampleapp/listeners.py b/repoze/bfg/sampleapp/listeners.py deleted file mode 100644 index 7c80d314f..000000000 --- a/repoze/bfg/sampleapp/listeners.py +++ /dev/null @@ -1,6 +0,0 @@ -def handle_new_request(event): - assert(hasattr(event, 'request')) - -def handle_new_response(event): - assert(hasattr(event, 'response')) - diff --git a/repoze/bfg/sampleapp/models.py b/repoze/bfg/sampleapp/models.py deleted file mode 100644 index 7da6f1033..000000000 --- a/repoze/bfg/sampleapp/models.py +++ /dev/null @@ -1,42 +0,0 @@ -from zope.interface import Interface -from zope.interface import implements -from zope.location.interfaces import ILocation -from zope.location.location import Location - -from repoze.bfg.security import Everyone -from repoze.bfg.security import Allow - -import datetime - -class IMapping(Interface): - pass - -class IBlog(Interface): - pass - -class Blog(dict, Location): - __acl__ = [ - (Allow, Everyone, 'view'), - (Allow, 'group:editors', 'add'), - (Allow, 'group:editors', 'edit'), - ] - implements(IBlog, IMapping, ILocation) - -class IBlogEntry(Interface): - pass - -class BlogEntry(object): - implements(IBlogEntry) - def __init__(self, title, body, author): - self.title = title - self.body = body - self.author = author - self.created = datetime.datetime.now() - -blog = Blog() -blog['sample'] = BlogEntry('Sample Blog Entry', - '

This is a sample blog entry

', - 'chrism') -def get_root(environ): - return blog - diff --git a/repoze/bfg/sampleapp/run.py b/repoze/bfg/sampleapp/run.py deleted file mode 100644 index df2ceca39..000000000 --- a/repoze/bfg/sampleapp/run.py +++ /dev/null @@ -1,11 +0,0 @@ -from repoze.bfg import make_app -from repoze.bfg import sampleapp -from repoze.bfg.sampleapp.models import get_root - -def main(): - app = make_app(get_root, sampleapp, options={'reload_templates':True}) - from paste import httpserver - httpserver.serve(app, host='0.0.0.0', port='5432') - -if __name__ == '__main__': - main() diff --git a/repoze/bfg/sampleapp/templates/blog.pt b/repoze/bfg/sampleapp/templates/blog.pt deleted file mode 100644 index b428374fc..000000000 --- a/repoze/bfg/sampleapp/templates/blog.pt +++ /dev/null @@ -1,22 +0,0 @@ - - - -

Blog Name

- - - - - - - - - - - -
TitleAuthorCreated
${entry.title}${entry.author}${entry.created}
-

- Add blog entry -

- - diff --git a/repoze/bfg/sampleapp/templates/blog_entry.pt b/repoze/bfg/sampleapp/templates/blog_entry.pt deleted file mode 100644 index 6614e4950..000000000 --- a/repoze/bfg/sampleapp/templates/blog_entry.pt +++ /dev/null @@ -1,12 +0,0 @@ - - - -
-

Up

-

${title}

-

by ${author}

-
-
- - diff --git a/repoze/bfg/sampleapp/templates/blog_entry_add.pt b/repoze/bfg/sampleapp/templates/blog_entry_add.pt deleted file mode 100644 index f06042c03..000000000 --- a/repoze/bfg/sampleapp/templates/blog_entry_add.pt +++ /dev/null @@ -1,29 +0,0 @@ - - - - -
-

-

Add a blog entry

- - - - - - - - - - - - - - - - -
Title
Author
Body
-
- - diff --git a/repoze/bfg/sampleapp/templates/contents.pt b/repoze/bfg/sampleapp/templates/contents.pt deleted file mode 100644 index eaae20ed5..000000000 --- a/repoze/bfg/sampleapp/templates/contents.pt +++ /dev/null @@ -1,6 +0,0 @@ -
-
- ${name} -
-
diff --git a/repoze/bfg/sampleapp/views.py b/repoze/bfg/sampleapp/views.py deleted file mode 100644 index 0f536f09f..000000000 --- a/repoze/bfg/sampleapp/views.py +++ /dev/null @@ -1,79 +0,0 @@ -import formencode -import time - -from webob.exc import HTTPFound - -from repoze.bfg.template import render_template_to_response -from repoze.bfg.sampleapp.models import BlogEntry -from repoze.bfg.security import has_permission - -def datestring(dt): - return dt.strftime('%Y-%m-%d %H:%M:%S') - -def blog_default_view(context, request): - entrydata = [] - - can_add = False - if has_permission('add', context, request): - can_add = True - for name, entry in context.items(): - entrydata.append( - { - 'name':name, - 'title':entry.title, - 'author':entry.author, - 'created':datestring(entry.created), - 'message':request.params.get('message'), - } - ) - - return render_template_to_response('templates/blog.pt', - name=context.__name__, - entries=entrydata, - can_add=can_add) - -def blog_entry_default_view(context, request): - info = { - 'name':context.__name__, - 'title':context.title, - 'body':context.body, - 'author':context.author, - 'created':datestring(context.created), - } - return render_template_to_response('templates/blog_entry.pt', **info) - -class BlogAddSchema(formencode.Schema): - allow_extra_fields = True - author = formencode.validators.NotEmpty() - body = formencode.validators.NotEmpty() - title = formencode.validators.NotEmpty() - -def blog_entry_add_view(context, request): - params = request.params - - message = None - - author = params.get('author', '') - body = params.get('body', '') - title = params.get('title', '') - info = dict(request=request, author=author, body=body, title=title, - message=None) - - if params.has_key('form.submitted'): - schema = BlogAddSchema() - try: - form = schema.to_python(params) - except formencode.validators.Invalid, why: - message = str(why) - info['message'] = message - else: - author, body, title = form['author'], form['body'], form['title'] - new_entry = BlogEntry(title, body, author) - name = str(time.time()) - context[name] = new_entry - return HTTPFound(location='/') - - return render_template_to_response('templates/blog_entry_add.pt', **info) - -def contents_view(context, request): - return render_template_to_response('templates/contents.pt', context=context) diff --git a/repoze/bfg/tests/test_router.py b/repoze/bfg/tests/test_router.py index b2c5cb468..381091d56 100644 --- a/repoze/bfg/tests/test_router.py +++ b/repoze/bfg/tests/test_router.py @@ -276,7 +276,7 @@ class MakeAppTests(unittest.TestCase, PlacelessSetup): from repoze.bfg.router import make_app return make_app - def test_sampleapp(self): + def test_fixtureapp(self): from repoze.bfg.tests import fixtureapp make_app = self._getFUT() rootpolicy = make_rootpolicy(None) diff --git a/repoze/bfg/tests/test_zcml.py b/repoze/bfg/tests/test_zcml.py index 5fa5d6290..28ea04ff6 100644 --- a/repoze/bfg/tests/test_zcml.py +++ b/repoze/bfg/tests/test_zcml.py @@ -114,7 +114,7 @@ class TestViewDirective(unittest.TestCase, PlacelessSetup): self.assertEqual(regadapt['args'][4], '') self.assertEqual(regadapt['args'][5], None) -class TestSampleApp(unittest.TestCase, PlacelessSetup): +class TestFixtureApp(unittest.TestCase, PlacelessSetup): def setUp(self): PlacelessSetup.setUp(self) @@ -122,7 +122,7 @@ class TestSampleApp(unittest.TestCase, PlacelessSetup): PlacelessSetup.tearDown(self) def test_registry_actions_can_be_pickled_and_unpickled(self): - import repoze.bfg.sampleapp as package + import repoze.bfg.tests.fixtureapp as package from zope.configuration import config from zope.configuration import xmlconfig context = config.ConfigurationMachine() @@ -152,7 +152,7 @@ class TestZCMLPickling(unittest.TestCase, PlacelessSetup): self.i += 1 self.packagepath = os.path.join(tempdir, modname) fixturedir = package_path(package) - pckname = os.path.join(fixturedir, 'configure.zcml.pck') + pckname = os.path.join(fixturedir, 'configure.zcml.cache') if os.path.isfile(pckname): os.remove(pckname) shutil.copytree(fixturedir, self.packagepath) @@ -175,7 +175,7 @@ class TestZCMLPickling(unittest.TestCase, PlacelessSetup): import cPickle from repoze.bfg.zcml import file_configure self.assertEqual(False, file_configure('configure.zcml', self.module)) - picklename = os.path.join(self.packagepath, 'configure.zcml.pck') + picklename = os.path.join(self.packagepath, 'configure.zcml.cache') self.failUnless(os.path.exists(picklename)) actions = cPickle.load(open(picklename, 'rb')) self.failUnless(actions) @@ -194,7 +194,7 @@ class TestZCMLPickling(unittest.TestCase, PlacelessSetup): raise IOError self.assertEqual(False, file_configure('configure.zcml', self.module, dumpfail)) - picklename = os.path.join(self.packagepath, 'configure.zcml.pck') + picklename = os.path.join(self.packagepath, 'configure.zcml.cache') self.failIf(os.path.exists(picklename)) def test_zcml_configure_writes_pickle_when_none_exists(self): @@ -202,7 +202,7 @@ class TestZCMLPickling(unittest.TestCase, PlacelessSetup): import cPickle from repoze.bfg.zcml import zcml_configure self.assertEqual(False, zcml_configure('configure.zcml', self.module)) - picklename = os.path.join(self.packagepath, 'configure.zcml.pck') + picklename = os.path.join(self.packagepath, 'configure.zcml.cache') self.failUnless(os.path.exists(picklename)) actions = cPickle.load(open(picklename, 'rb')) self.failUnless(actions) @@ -211,7 +211,7 @@ class TestZCMLPickling(unittest.TestCase, PlacelessSetup): import os import cPickle from repoze.bfg.zcml import zcml_configure - picklename = os.path.join(self.packagepath, 'configure.zcml.pck') + picklename = os.path.join(self.packagepath, 'configure.zcml.cache') f = open(picklename, 'wb') cPickle.dump((), f) f.close() @@ -220,7 +220,7 @@ class TestZCMLPickling(unittest.TestCase, PlacelessSetup): def test_zcml_configure_uses_file_configure_with_bad_pickle2(self): import os from repoze.bfg.zcml import zcml_configure - picklename = os.path.join(self.packagepath, 'configure.zcml.pck') + picklename = os.path.join(self.packagepath, 'configure.zcml.cache') f = open(picklename, 'wb') f.write('garbage') f.close() @@ -232,7 +232,7 @@ class TestZCMLPickling(unittest.TestCase, PlacelessSetup): import time from repoze.bfg.zcml import zcml_configure basename = os.path.join(self.packagepath, 'configure.zcml') - picklename = os.path.join(self.packagepath, 'configure.zcml.pck') + picklename = os.path.join(self.packagepath, 'configure.zcml.cache') self.assertEqual(False, zcml_configure('configure.zcml', self.module)) self.failUnless(os.path.exists(picklename)) actions = cPickle.load(open(picklename, 'rb')) @@ -246,7 +246,7 @@ class TestZCMLPickling(unittest.TestCase, PlacelessSetup): import time from repoze.bfg.zcml import zcml_configure basename = os.path.join(self.packagepath, 'another.zcml') - picklename = os.path.join(self.packagepath, 'configure.zcml.pck') + picklename = os.path.join(self.packagepath, 'configure.zcml.cache') self.assertEqual(False, zcml_configure('configure.zcml', self.module)) self.failUnless(os.path.exists(picklename)) actions = cPickle.load(open(picklename, 'rb')) @@ -260,7 +260,7 @@ class TestZCMLPickling(unittest.TestCase, PlacelessSetup): from repoze.bfg.zcml import zcml_configure from zope.configuration.xmlconfig import ZopeXMLConfigurationError basename = os.path.join(self.packagepath, 'another.zcml') - picklename = os.path.join(self.packagepath, 'configure.zcml.pck') + picklename = os.path.join(self.packagepath, 'configure.zcml.cache') self.assertEqual(False, zcml_configure('configure.zcml', self.module)) self.failUnless(os.path.exists(picklename)) actions = cPickle.load(open(picklename, 'rb')) @@ -273,7 +273,7 @@ class TestZCMLPickling(unittest.TestCase, PlacelessSetup): import os from repoze.bfg.zcml import zcml_configure from repoze.bfg.zcml import PVERSION - picklename = os.path.join(self.packagepath, 'configure.zcml.pck') + picklename = os.path.join(self.packagepath, 'configure.zcml.cache') f = open(picklename, 'wb') import cPickle data = (PVERSION+1, 0, []) @@ -284,7 +284,7 @@ class TestZCMLPickling(unittest.TestCase, PlacelessSetup): import os from repoze.bfg.zcml import zcml_configure from repoze.bfg.zcml import PVERSION - picklename = os.path.join(self.packagepath, 'configure.zcml.pck') + picklename = os.path.join(self.packagepath, 'configure.zcml.cache') f = open(picklename, 'wb') import cPickle data = (PVERSION, None, []) @@ -296,7 +296,7 @@ class TestZCMLPickling(unittest.TestCase, PlacelessSetup): from repoze.bfg.zcml import zcml_configure from repoze.bfg.zcml import PVERSION import time - picklename = os.path.join(self.packagepath, 'configure.zcml.pck') + picklename = os.path.join(self.packagepath, 'configure.zcml.cache') f = open(picklename, 'wb') import cPickle data = (PVERSION, time.time()+500, None) @@ -310,7 +310,7 @@ class TestZCMLPickling(unittest.TestCase, PlacelessSetup): from repoze.bfg.zcml import zcml_configure from repoze.bfg.zcml import PVERSION basename = os.path.join(self.packagepath, 'another.zcml') - picklename = os.path.join(self.packagepath, 'configure.zcml.pck') + picklename = os.path.join(self.packagepath, 'configure.zcml.cache') self.assertEqual(False, zcml_configure('configure.zcml', self.module)) self.failUnless(os.path.exists(picklename)) actions = cPickle.load(open(picklename, 'rb')) diff --git a/repoze/bfg/zcml.py b/repoze/bfg/zcml.py index 0bb049516..1493e532e 100644 --- a/repoze/bfg/zcml.py +++ b/repoze/bfg/zcml.py @@ -98,7 +98,7 @@ PVERSION = 0 def pickle_name(name, package): path = package_path(package) basename = os.path.join(path, name) - return os.path.join(path, basename + '.pck') + return os.path.join(path, basename + '.cache') def zcml_configure(name, package, load=cPickle.load): """ Execute pickled zcml actions or fall back to parsing from file diff --git a/setup.py b/setup.py index 44aed8616..c526b3fa5 100644 --- a/setup.py +++ b/setup.py @@ -12,7 +12,7 @@ # ############################################################################## -__version__ = '0.3.1' +__version__ = '0.3.2' import os @@ -54,10 +54,8 @@ setup(name='repoze.bfg', 'zope.hookable', 'zope.event', 'WebOb', - 'Paste', - 'z3c.pt', - 'FormEncode', 'PasteScript', + 'z3c.pt [lxml]', 'Routes', ], tests_require=[ @@ -67,10 +65,8 @@ setup(name='repoze.bfg', 'zope.hookable', 'zope.event', 'WebOb', + 'z3c.pt [lxml]', 'Paste', - 'z3c.pt', - 'FormEncode', - 'PasteScript', 'Routes', 'Sphinx', 'docutils', -- cgit v1.2.3