From e26700528995b1807c5e55a4295a6f788a5603de Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Mon, 25 Oct 2010 17:58:11 -0400 Subject: adjust wiki2 tutorial for pyramid --- docs/tutorials/wiki2/src/views/CHANGES.txt | 4 + docs/tutorials/wiki2/src/views/README.txt | 4 + docs/tutorials/wiki2/src/views/setup.cfg | 27 ++ docs/tutorials/wiki2/src/views/setup.py | 46 +++ docs/tutorials/wiki2/src/views/tutorial.ini | 23 ++ .../tutorials/wiki2/src/views/tutorial/__init__.py | 2 + .../wiki2/src/views/tutorial/configure.zcml | 38 +++ docs/tutorials/wiki2/src/views/tutorial/models.py | 43 +++ docs/tutorials/wiki2/src/views/tutorial/run.py | 24 ++ .../wiki2/src/views/tutorial/templates/edit.pt | 32 ++ .../src/views/tutorial/templates/mytemplate.pt | 99 ++++++ .../views/tutorial/templates/static/default.css | 380 +++++++++++++++++++++ .../tutorial/templates/static/images/img01.gif | Bin 0 -> 3840 bytes .../tutorial/templates/static/images/img02.gif | Bin 0 -> 4689 bytes .../tutorial/templates/static/images/img03.gif | Bin 0 -> 229 bytes .../tutorial/templates/static/images/img04.gif | Bin 0 -> 92 bytes .../tutorial/templates/static/images/spacer.gif | Bin 0 -> 43 bytes .../src/views/tutorial/templates/static/style.css | 109 ++++++ .../tutorial/templates/static/templatelicense.txt | 243 +++++++++++++ .../wiki2/src/views/tutorial/templates/view.pt | 28 ++ docs/tutorials/wiki2/src/views/tutorial/tests.py | 140 ++++++++ docs/tutorials/wiki2/src/views/tutorial/views.py | 65 ++++ 22 files changed, 1307 insertions(+) create mode 100644 docs/tutorials/wiki2/src/views/CHANGES.txt create mode 100644 docs/tutorials/wiki2/src/views/README.txt create mode 100644 docs/tutorials/wiki2/src/views/setup.cfg create mode 100644 docs/tutorials/wiki2/src/views/setup.py create mode 100644 docs/tutorials/wiki2/src/views/tutorial.ini create mode 100644 docs/tutorials/wiki2/src/views/tutorial/__init__.py create mode 100644 docs/tutorials/wiki2/src/views/tutorial/configure.zcml create mode 100644 docs/tutorials/wiki2/src/views/tutorial/models.py create mode 100644 docs/tutorials/wiki2/src/views/tutorial/run.py create mode 100644 docs/tutorials/wiki2/src/views/tutorial/templates/edit.pt create mode 100644 docs/tutorials/wiki2/src/views/tutorial/templates/mytemplate.pt create mode 100644 docs/tutorials/wiki2/src/views/tutorial/templates/static/default.css create mode 100644 docs/tutorials/wiki2/src/views/tutorial/templates/static/images/img01.gif create mode 100644 docs/tutorials/wiki2/src/views/tutorial/templates/static/images/img02.gif create mode 100644 docs/tutorials/wiki2/src/views/tutorial/templates/static/images/img03.gif create mode 100644 docs/tutorials/wiki2/src/views/tutorial/templates/static/images/img04.gif create mode 100644 docs/tutorials/wiki2/src/views/tutorial/templates/static/images/spacer.gif create mode 100644 docs/tutorials/wiki2/src/views/tutorial/templates/static/style.css create mode 100644 docs/tutorials/wiki2/src/views/tutorial/templates/static/templatelicense.txt create mode 100644 docs/tutorials/wiki2/src/views/tutorial/templates/view.pt create mode 100644 docs/tutorials/wiki2/src/views/tutorial/tests.py create mode 100644 docs/tutorials/wiki2/src/views/tutorial/views.py (limited to 'docs/tutorials/wiki2/src/views') diff --git a/docs/tutorials/wiki2/src/views/CHANGES.txt b/docs/tutorials/wiki2/src/views/CHANGES.txt new file mode 100644 index 000000000..35a34f332 --- /dev/null +++ b/docs/tutorials/wiki2/src/views/CHANGES.txt @@ -0,0 +1,4 @@ +0.0 +--- + +- Initial version diff --git a/docs/tutorials/wiki2/src/views/README.txt b/docs/tutorials/wiki2/src/views/README.txt new file mode 100644 index 000000000..d41f7f90f --- /dev/null +++ b/docs/tutorials/wiki2/src/views/README.txt @@ -0,0 +1,4 @@ +tutorial README + + + diff --git a/docs/tutorials/wiki2/src/views/setup.cfg b/docs/tutorials/wiki2/src/views/setup.cfg new file mode 100644 index 000000000..23b2ad983 --- /dev/null +++ b/docs/tutorials/wiki2/src/views/setup.cfg @@ -0,0 +1,27 @@ +[nosetests] +match=^test +nocapture=1 +cover-package=tutorial +with-coverage=1 +cover-erase=1 + +[compile_catalog] +directory = tutorial/locale +domain = tutorial +statistics = true + +[extract_messages] +add_comments = TRANSLATORS: +output_file = tutorial/locale/tutorial.pot +width = 80 + +[init_catalog] +domain = tutorial +input_file = tutorial/locale/tutorial.pot +output_dir = tutorial/locale + +[update_catalog] +domain = tutorial +input_file = tutorial/locale/tutorial.pot +output_dir = tutorial/locale +previous = true diff --git a/docs/tutorials/wiki2/src/views/setup.py b/docs/tutorials/wiki2/src/views/setup.py new file mode 100644 index 000000000..eeac5c397 --- /dev/null +++ b/docs/tutorials/wiki2/src/views/setup.py @@ -0,0 +1,46 @@ +import os +import sys + +from setuptools import setup, find_packages + +here = os.path.abspath(os.path.dirname(__file__)) +README = open(os.path.join(here, 'README.txt')).read() +CHANGES = open(os.path.join(here, 'CHANGES.txt')).read() + +requires = [ + 'pyramid', + 'SQLAlchemy', + 'transaction', + 'repoze.tm2', + 'zope.sqlalchemy', + 'docutils' + ] + +if sys.version_info[:3] < (2,5,0): + requires.append('pysqlite') + +setup(name='tutorial', + version='0.0', + description='tutorial', + long_description=README + '\n\n' + CHANGES, + classifiers=[ + "Programming Language :: Python", + "Framework :: Pylons", + "Topic :: Internet :: WWW/HTTP", + "Topic :: Internet :: WWW/HTTP :: WSGI :: Application", + ], + author='', + author_email='', + url='', + keywords='web wsgi pylons pyramid bfg', + packages=find_packages(), + include_package_data=True, + zip_safe=False, + test_suite='tutorial', + install_requires = requires, + entry_points = """\ + [paste.app_factory] + app = tutorial.run:app + """ + ) + diff --git a/docs/tutorials/wiki2/src/views/tutorial.ini b/docs/tutorials/wiki2/src/views/tutorial.ini new file mode 100644 index 000000000..85f131c2e --- /dev/null +++ b/docs/tutorials/wiki2/src/views/tutorial.ini @@ -0,0 +1,23 @@ +[DEFAULT] +debug = true + +[app:sqlalchemy] +use = egg:tutorial#app +reload_templates = true +debug_authorization = false +debug_notfound = false +debug_templates = true +default_locale_name = en +db_string = sqlite:///%(here)s/tutorial.db +db_echo = false + +[pipeline:main] +pipeline = + egg:Paste#evalerror + egg:repoze.tm2#tm + sqlalchemy + +[server:main] +use = egg:Paste#http +host = 0.0.0.0 +port = 6543 diff --git a/docs/tutorials/wiki2/src/views/tutorial/__init__.py b/docs/tutorials/wiki2/src/views/tutorial/__init__.py new file mode 100644 index 000000000..cbdfd3ac6 --- /dev/null +++ b/docs/tutorials/wiki2/src/views/tutorial/__init__.py @@ -0,0 +1,2 @@ +# A package + diff --git a/docs/tutorials/wiki2/src/views/tutorial/configure.zcml b/docs/tutorials/wiki2/src/views/tutorial/configure.zcml new file mode 100644 index 000000000..3a2e13a7a --- /dev/null +++ b/docs/tutorials/wiki2/src/views/tutorial/configure.zcml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + diff --git a/docs/tutorials/wiki2/src/views/tutorial/models.py b/docs/tutorials/wiki2/src/views/tutorial/models.py new file mode 100644 index 000000000..8c3f14915 --- /dev/null +++ b/docs/tutorials/wiki2/src/views/tutorial/models.py @@ -0,0 +1,43 @@ +import transaction + +from sqlalchemy import create_engine +from sqlalchemy import Column +from sqlalchemy import Integer +from sqlalchemy import Text + +from sqlalchemy.exc import IntegrityError +from sqlalchemy.ext.declarative import declarative_base + +from sqlalchemy.orm import scoped_session +from sqlalchemy.orm import sessionmaker + +from zope.sqlalchemy import ZopeTransactionExtension + +DBSession = scoped_session(sessionmaker( + extension=ZopeTransactionExtension())) +Base = declarative_base() + +class Page(Base): + """ The SQLAlchemy declarative model class for a Page object. """ + __tablename__ = 'pages' + id = Column(Integer, primary_key=True) + name = Column(Text, unique=True) + data = Column(Text) + + def __init__(self, name, data): + self.name = name + self.data = data + +def initialize_sql(db_string, echo=False): + engine = create_engine(db_string, echo=echo) + DBSession.configure(bind=engine) + Base.metadata.bind = engine + Base.metadata.create_all(engine) + try: + session = DBSession() + page = Page('FrontPage', 'initial data') + session.add(page) + transaction.commit() + except IntegrityError: + # already created + pass diff --git a/docs/tutorials/wiki2/src/views/tutorial/run.py b/docs/tutorials/wiki2/src/views/tutorial/run.py new file mode 100644 index 000000000..7225987ee --- /dev/null +++ b/docs/tutorials/wiki2/src/views/tutorial/run.py @@ -0,0 +1,24 @@ +from pyramid.configuration import Configurator +from paste.deploy.converters import asbool + +from tutorial.models import initialize_sql + +def app(global_config, **settings): + """ This function returns a WSGI application. + + It is usually called by the PasteDeploy framework during + ``paster serve``. + """ + zcml_file = settings.get('configure_zcml', 'configure.zcml') + db_string = settings.get('db_string') + if db_string is None: + raise ValueError( + "No 'db_string' value in application configuration.") + db_echo = settings.get('db_echo', 'false') + initialize_sql(db_string, asbool(db_echo)) + config = Configurator(settings=settings) + config.begin() + config.load_zcml(zcml_file) + config.end() + return config.make_wsgi_app() + diff --git a/docs/tutorials/wiki2/src/views/tutorial/templates/edit.pt b/docs/tutorials/wiki2/src/views/tutorial/templates/edit.pt new file mode 100644 index 000000000..047a64eb3 --- /dev/null +++ b/docs/tutorials/wiki2/src/views/tutorial/templates/edit.pt @@ -0,0 +1,32 @@ + + + + + + Pyramid tutorial wiki (based on TurboGears 20-Minute Wiki) + Editing: ${page.name} + + + + + +
+
Viewing + Page Name Goes Here
+ You can return to the FrontPage. +
+ +
+
+