Merge branch 'master' of github.com:Pylons/pyramid
30 files deleted
13 files added
25 files modified
| | |
| | | Next release |
| | | ============ |
| | | |
| | | Features |
| | | -------- |
| | | |
| | | - Updated scaffolds with new theme, fixed documentation and sample project. |
| | | |
| | | Bug Fixes |
| | | --------- |
| | | |
| | | - Depend on a newer version of WebOb so that we pull in some crucial bug-fixes |
| | | that were showstoppers for functionality in Pyramid. |
| | | |
| | | - Add a trailing semicolon to the JSONP response. This fixes JavaScript syntax |
| | | errors for old IE versions. See https://github.com/Pylons/pyramid/pull/1205 |
| | | |
| | | 1.5a3 (2013-12-10) |
| | | ================== |
| | | |
| | |
| | | Bug Fixes |
| | | --------- |
| | | |
| | | - Fix the ``pcreate`` script so that when the target directory name ends with a |
| | | slash it does not produce a non-working project directory structure. |
| | | Previously saying ``pcreate -s starter /foo/bar/`` produced different output |
| | | - Fix the ``pcreate`` script so that when the target directory name ends with a |
| | | slash it does not produce a non-working project directory structure. |
| | | Previously saying ``pcreate -s starter /foo/bar/`` produced different output |
| | | than saying ``pcreate -s starter /foo/bar``. The former did not work |
| | | properly. |
| | | |
| | | - Fix the ``principals_allowed_by_permission`` method of |
| | | ``ACLAuthorizationPolicy`` so it anticipates a callable ``__acl__`` |
| | | - Fix the ``principals_allowed_by_permission`` method of |
| | | ``ACLAuthorizationPolicy`` so it anticipates a callable ``__acl__`` |
| | | on resources. Previously it did not try to call the ``__acl__`` |
| | | if it was callable. |
| | | |
| | |
| | | |
| | | - Added a "Quick Tutorial" to go with the Quick Tour |
| | | |
| | | - Removed mention of ``pyramid_beaker`` from docs. Beaker is no longer |
| | | - Removed mention of ``pyramid_beaker`` from docs. Beaker is no longer |
| | | maintained. Point people at ``pyramid_redis_sessions`` instead. |
| | | |
| | | - Add documentation for ``pyramid.interfaces.IRendererFactory`` and |
| | |
| | | ill-defined and became unused when Mako and Chameleon template bindings were |
| | | split into their own packages. |
| | | |
| | | - The ``pyramid.session.UnencryptedCookieSessionFactoryConfig`` API has been |
| | | deprecated and is superseded by the |
| | | - The ``pyramid.session.UnencryptedCookieSessionFactoryConfig`` API has been |
| | | deprecated and is superseded by the |
| | | ``pyramid.session.SignedCookieSessionFactory``. Note that while the cookies |
| | | generated by the ``UnencryptedCookieSessionFactoryConfig`` |
| | | are compatible with cookies generated by old releases, cookies generated by |
| | | the SignedCookieSessionFactory are not. See |
| | | the SignedCookieSessionFactory are not. See |
| | | https://github.com/Pylons/pyramid/pull/1142 |
| | | |
| | | - The ``pyramid.security.has_permission`` API is now deprecated. Instead, use |
| | |
| | | -------- |
| | | |
| | | - Users can now provide dotted Python names to as the ``factory`` argument |
| | | the Configurator methods named ``add_{view,route,subscriber}_predicate`` |
| | | (instead of passing the predicate factory directly, you can pass a |
| | | the Configurator methods named ``add_{view,route,subscriber}_predicate`` |
| | | (instead of passing the predicate factory directly, you can pass a |
| | | dotted name which refers to the factory). |
| | | |
| | | Bug Fixes |
| | |
| | | |
| | | ValueError: No such renderer factory .mak |
| | | |
| | | Support for Mako templating has been moved into an add-on package named |
| | | ``pyramid_mako``, and support for Chameleon templating has been moved into |
| | | an add-on package named ``pyramid_chameleon``. These packages are drop-in |
| | | replacements for the old built-in support for these templating langauges. |
| | | Support for Mako templating has been moved into an add-on package named |
| | | ``pyramid_mako``, and support for Chameleon templating has been moved into |
| | | an add-on package named ``pyramid_chameleon``. These packages are drop-in |
| | | replacements for the old built-in support for these templating langauges. |
| | | All you have to do is install them and make them active in your configuration |
| | | to register renderer factories for ``.pt`` and/or ``.mako`` (or ``.mak``) to |
| | | make your application work again. |
| | |
| | | ], |
| | | ) |
| | | |
| | | * Within the portion of your application which instantiates a Pyramid |
| | | ``pyramid.config.Configurator`` (often the ``main()`` function in |
| | | your project's ``__init__.py`` file), tell Pyramid to include the |
| | | * Within the portion of your application which instantiates a Pyramid |
| | | ``pyramid.config.Configurator`` (often the ``main()`` function in |
| | | your project's ``__init__.py`` file), tell Pyramid to include the |
| | | ``pyramid_mako`` includeme:: |
| | | |
| | | config = Configurator(.....) |
| | |
| | | |
| | | * Make sure the ``pyramid_chameleon`` package is installed. One way to do |
| | | this is by adding ``pyramid_chameleon`` to the ``install_requires`` section |
| | | of your package's ``setup.py`` file and afterwards rerunning |
| | | of your package's ``setup.py`` file and afterwards rerunning |
| | | ``setup.py develop``:: |
| | | |
| | | setup( |
| | |
| | | ], |
| | | ) |
| | | |
| | | * Within the portion of your application which instantiates a Pyramid |
| | | ``~pyramid.config.Configurator`` (often the ``main()`` function in |
| | | your project's ``__init__.py`` file), tell Pyramid to include the |
| | | * Within the portion of your application which instantiates a Pyramid |
| | | ``~pyramid.config.Configurator`` (often the ``main()`` function in |
| | | your project's ``__init__.py`` file), tell Pyramid to include the |
| | | ``pyramid_chameleon`` includeme:: |
| | | |
| | | config = Configurator(.....) |
| | |
| | | compatibility when you eventually do upgrade to Pyramid 1.5. |
| | | |
| | | With the removal of Mako and Chameleon support from the core, some |
| | | unit tests that use the ``pyramid.renderers.render*`` methods may begin to |
| | | fail. If any of your unit tests are invoking either |
| | | unit tests that use the ``pyramid.renderers.render*`` methods may begin to |
| | | fail. If any of your unit tests are invoking either |
| | | ``pyramid.renderers.render()`` or ``pyramid.renderers.render_to_response()`` |
| | | with either Mako or Chameleon templates then the |
| | | with either Mako or Chameleon templates then the |
| | | ``pyramid.config.Configurator`` instance in effect during |
| | | the unit test should be also be updated to include the addons, as shown |
| | | above. For example:: |
| | |
| | | result = pyramid.renderers.render('mypkg:templates/home.pt', {}) |
| | | |
| | | - If you're using the Pyramid debug toolbar, when you upgrade Pyramid to |
| | | 1.5a2+, you'll also need to upgrade the ``pyramid_debugtoolbar`` package to |
| | | at least version 1.0.8, as older toolbar versions are not compatible with |
| | | Pyramid 1.5a2+ due to the removal of Mako support from the core. It's |
| | | 1.5a2+, you'll also need to upgrade the ``pyramid_debugtoolbar`` package to |
| | | at least version 1.0.8, as older toolbar versions are not compatible with |
| | | Pyramid 1.5a2+ due to the removal of Mako support from the core. It's |
| | | fine to use this newer version of the toolbar code with older Pyramids too. |
| | | |
| | | - Removed the ``request.response_*`` varying attributes. These attributes |
| | | have been deprecated since Pyramid 1.1, and as per the deprecation policy, |
| | | have now been removed. |
| | | |
| | | - ``request.response`` will no longer be mutated when using the |
| | | ``pyramid.renderers.render()`` API. Almost all renderers mutate the |
| | | - ``request.response`` will no longer be mutated when using the |
| | | ``pyramid.renderers.render()`` API. Almost all renderers mutate the |
| | | ``request.response`` response object (for example, the JSON renderer sets |
| | | ``request.response.content_type`` to ``application/json``), but this is |
| | | only necessary when the renderer is generating a response; it was a bug |
| | |
| | | |
| | | - Removed the ``bfg2pyramid`` fixer script. |
| | | |
| | | - The ``pyramid.events.NewResponse`` event is now sent **after** response |
| | | - The ``pyramid.events.NewResponse`` event is now sent **after** response |
| | | callbacks are executed. It previously executed before response callbacks |
| | | were executed. Rationale: it's more useful to be able to inspect the response |
| | | after response callbacks have done their jobs instead of before. |
| | |
| | | |
| | | - A new http exception subclass named ``pyramid.httpexceptions.HTTPSuccessful`` |
| | | was added. You can use this class as the ``context`` of an exception |
| | | view to catch all 200-series "exceptions" (e.g. "raise HTTPOk"). This |
| | | view to catch all 200-series "exceptions" (e.g. "raise HTTPOk"). This |
| | | also allows you to catch *only* the ``HTTPOk`` exception itself; previously |
| | | this was impossible because a number of other exceptions |
| | | this was impossible because a number of other exceptions |
| | | (such as ``HTTPNoContent``) inherited from ``HTTPOk``, but now they do not. |
| | | |
| | | - You can now generate "hybrid" urldispatch/traversal URLs more easily |
| | | by using the new ``route_name``, ``route_kw`` and ``route_remainder_name`` |
| | | by using the new ``route_name``, ``route_kw`` and ``route_remainder_name`` |
| | | arguments to ``request.resource_url`` and ``request.resource_path``. See |
| | | the new section of the "Combining Traversal and URL Dispatch" documentation |
| | | the new section of the "Combining Traversal and URL Dispatch" documentation |
| | | chapter entitled "Hybrid URL Generation". |
| | | |
| | | - It is now possible to escape double braces in Pyramid scaffolds (unescaped, |
| | | - It is now possible to escape double braces in Pyramid scaffolds (unescaped, |
| | | these represent replacement values). You can use ``\{\{a\}\}`` to |
| | | represent a "bare" ``{{a}}``. See |
| | | represent a "bare" ``{{a}}``. See |
| | | https://github.com/Pylons/pyramid/pull/862 |
| | | |
| | | - Add ``localizer`` and ``locale_name`` properties (reified) to the request. |
| | | See https://github.com/Pylons/pyramid/issues/508. Note that the |
| | | See https://github.com/Pylons/pyramid/issues/508. Note that the |
| | | ``pyramid.i18n.get_localizer`` and ``pyramid.i18n.get_locale_name`` functions |
| | | now simply look up these properties on the request. |
| | | |
| | |
| | | externally-hosted static URLs to be generated based on the current protocol. |
| | | |
| | | - The ``AuthTktAuthenticationPolicy`` has two new options to configure its |
| | | domain usage: |
| | | domain usage: |
| | | |
| | | * ``parent_domain``: if set the authentication cookie is set on |
| | | the parent domain. This is useful if you have multiple sites sharing the |
| | |
| | | |
| | | - The ``pyramid.config.Configurator.add_route`` method now supports being |
| | | called with an external URL as pattern. See |
| | | https://github.com/Pylons/pyramid/issues/611 and the documentation section |
| | | https://github.com/Pylons/pyramid/issues/611 and the documentation section |
| | | in the "URL Dispatch" chapter entitled "External Routes" for more information. |
| | | |
| | | Bug Fixes |
| | |
| | | |
| | | - It was not possible to use ``pyramid.httpexceptions.HTTPException`` as |
| | | the ``context`` of an exception view as very general catchall for |
| | | http-related exceptions when you wanted that exception view to override the |
| | | http-related exceptions when you wanted that exception view to override the |
| | | default exception view. See https://github.com/Pylons/pyramid/issues/985 |
| | | |
| | | - When the ``pyramid.reload_templates`` setting was true, and a Chameleon |
| | | template was reloaded, and the renderer specification named a macro |
| | | - When the ``pyramid.reload_templates`` setting was true, and a Chameleon |
| | | template was reloaded, and the renderer specification named a macro |
| | | (e.g. ``foo#macroname.pt``), renderings of the template after the template |
| | | was reloaded due to a file change would produce the entire template body |
| | | instead of just a rendering of the macro. See |
| | | was reloaded due to a file change would produce the entire template body |
| | | instead of just a rendering of the macro. See |
| | | https://github.com/Pylons/pyramid/issues/1013. |
| | | |
| | | - Fix an obscure problem when combining a virtual root with a route with a |
| | | - Fix an obscure problem when combining a virtual root with a route with a |
| | | ``*traverse`` in its pattern. Now the traversal path generated in |
| | | such a configuration will be correct, instead of an element missing |
| | | a leading slash. |
| | |
| | | previously returned the URL without the query string by default, it now does |
| | | attach the query string unless it is overriden. |
| | | |
| | | - The ``route_url`` and ``route_path`` APIs no longer quote ``/`` |
| | | - The ``route_url`` and ``route_path`` APIs no longer quote ``/`` |
| | | to ``%2F`` when a replacement value contains a ``/``. This was pointless, |
| | | as WSGI servers always unquote the slash anyway, and Pyramid never sees the |
| | | as WSGI servers always unquote the slash anyway, and Pyramid never sees the |
| | | quoted value. |
| | | |
| | | - It is no longer possible to set a ``locale_name`` attribute of the request, |
| | | - It is no longer possible to set a ``locale_name`` attribute of the request, |
| | | nor is it possible to set a ``localizer`` attribute of the request. These |
| | | are now "reified" properties that look up a locale name and localizer |
| | | respectively using the machinery described in the "Internationalization" |
| | |
| | | ### |
| | | # app configuration |
| | | # http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/environment.html |
| | | ### |
| | | |
| | | [app:main] |
| | | use = egg:MyProject |
| | | |
| | |
| | | pyramid.debug_notfound = false |
| | | pyramid.debug_routematch = false |
| | | pyramid.default_locale_name = en |
| | | pyramid.includes = |
| | | pyramid.includes = |
| | | pyramid_debugtoolbar |
| | | |
| | | # By default, the toolbar only appears for clients from IP addresses |
| | | # '127.0.0.1' and '::1'. |
| | | # debugtoolbar.hosts = 127.0.0.1 ::1 |
| | | |
| | | ### |
| | | # wsgi server configuration |
| | | ### |
| | | |
| | | [server:main] |
| | | use = egg:waitress#main |
| | | host = 0.0.0.0 |
| | | port = 6543 |
| | | |
| | | # Begin logging configuration |
| | | ### |
| | | # logging configuration |
| | | # http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/logging.html |
| | | ### |
| | | |
| | | [loggers] |
| | | keys = root, myproject |
| | |
| | | |
| | | [formatter_generic] |
| | | format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s |
| | | |
| | | # End logging configuration |
New file |
| | |
| | | @import url(//fonts.googleapis.com/css?family=Open+Sans:300,400,600,700); |
| | | body { |
| | | font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; |
| | | font-weight: 300; |
| | | color: #ffffff; |
| | | background: #bc2131; |
| | | } |
| | | h1, |
| | | h2, |
| | | h3, |
| | | h4, |
| | | h5, |
| | | h6 { |
| | | font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; |
| | | font-weight: 300; |
| | | } |
| | | p { |
| | | font-weight: 300; |
| | | } |
| | | .font-normal { |
| | | font-weight: 400; |
| | | } |
| | | .font-semi-bold { |
| | | font-weight: 600; |
| | | } |
| | | .font-bold { |
| | | font-weight: 700; |
| | | } |
| | | .starter-template { |
| | | margin-top: 250px; |
| | | } |
| | | .starter-template .content { |
| | | margin-left: 10px; |
| | | } |
| | | .starter-template .content h1 { |
| | | margin-top: 10px; |
| | | font-size: 60px; |
| | | } |
| | | .starter-template .content h1 .smaller { |
| | | font-size: 40px; |
| | | color: #f2b7bd; |
| | | } |
| | | .starter-template .content .lead { |
| | | font-size: 25px; |
| | | color: #f2b7bd; |
| | | } |
| | | .starter-template .content .lead .font-normal { |
| | | color: #ffffff; |
| | | } |
| | | .starter-template .links { |
| | | float: right; |
| | | right: 0; |
| | | margin-top: 125px; |
| | | } |
| | | .starter-template .links ul { |
| | | display: block; |
| | | padding: 0; |
| | | margin: 0; |
| | | } |
| | | .starter-template .links ul li { |
| | | list-style: none; |
| | | display: inline; |
| | | margin: 0 10px; |
| | | } |
| | | .starter-template .links ul li:first-child { |
| | | margin-left: 0; |
| | | } |
| | | .starter-template .links ul li:last-child { |
| | | margin-right: 0; |
| | | } |
| | | .starter-template .links ul li.current-version { |
| | | color: #f2b7bd; |
| | | font-weight: 400; |
| | | } |
| | | .starter-template .links ul li a { |
| | | color: #ffffff; |
| | | } |
| | | .starter-template .links ul li a:hover { |
| | | text-decoration: underline; |
| | | } |
| | | .starter-template .links ul li .icon-muted { |
| | | color: #eb8b95; |
| | | margin-right: 5px; |
| | | } |
| | | .starter-template .links ul li:hover .icon-muted { |
| | | color: #ffffff; |
| | | } |
| | | .starter-template .copyright { |
| | | margin-top: 10px; |
| | | font-size: 0.9em; |
| | | color: #f2b7bd; |
| | | text-transform: lowercase; |
| | | float: right; |
| | | right: 0; |
| | | } |
| | | @media (max-width: 1199px) { |
| | | .starter-template .content h1 { |
| | | font-size: 45px; |
| | | } |
| | | .starter-template .content h1 .smaller { |
| | | font-size: 30px; |
| | | } |
| | | .starter-template .content .lead { |
| | | font-size: 20px; |
| | | } |
| | | } |
| | | @media (max-width: 991px) { |
| | | .starter-template { |
| | | margin-top: 0; |
| | | } |
| | | .starter-template .logo { |
| | | margin: 40px auto; |
| | | } |
| | | .starter-template .content { |
| | | margin-left: 0; |
| | | text-align: center; |
| | | } |
| | | .starter-template .content h1 { |
| | | margin-bottom: 20px; |
| | | } |
| | | .starter-template .links { |
| | | float: none; |
| | | text-align: center; |
| | | margin-top: 60px; |
| | | } |
| | | .starter-template .copyright { |
| | | float: none; |
| | | text-align: center; |
| | | } |
| | | } |
| | | @media (max-width: 767px) { |
| | | .starter-template .content h1 .smaller { |
| | | font-size: 25px; |
| | | display: block; |
| | | } |
| | | .starter-template .content .lead { |
| | | font-size: 16px; |
| | | } |
| | | .starter-template .links { |
| | | margin-top: 40px; |
| | | } |
| | | .starter-template .links ul li { |
| | | display: block; |
| | | margin: 0; |
| | | } |
| | | .starter-template .links ul li .icon-muted { |
| | | display: none; |
| | | } |
| | | .starter-template .copyright { |
| | | margin-top: 20px; |
| | | } |
| | | } |
New file |
| | |
| | | @import url(//fonts.googleapis.com/css?family=Open+Sans:300,400,600,700);body{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:300;color:#fff;background:#bc2131}h1,h2,h3,h4,h5,h6{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:300}p{font-weight:300}.font-normal{font-weight:400}.font-semi-bold{font-weight:600}.font-bold{font-weight:700}.starter-template{margin-top:250px}.starter-template .content{margin-left:10px}.starter-template .content h1{margin-top:10px;font-size:60px}.starter-template .content h1 .smaller{font-size:40px;color:#f2b7bd}.starter-template .content .lead{font-size:25px;color:#f2b7bd}.starter-template .content .lead .font-normal{color:#fff}.starter-template .links{float:right;right:0;margin-top:125px}.starter-template .links ul{display:block;padding:0;margin:0}.starter-template .links ul li{list-style:none;display:inline;margin:0 10px}.starter-template .links ul li:first-child{margin-left:0}.starter-template .links ul li:last-child{margin-right:0}.starter-template .links ul li.current-version{color:#f2b7bd;font-weight:400}.starter-template .links ul li a{color:#fff}.starter-template .links ul li a:hover{text-decoration:underline}.starter-template .links ul li .icon-muted{color:#eb8b95;margin-right:5px}.starter-template .links ul li:hover .icon-muted{color:#fff}.starter-template .copyright{margin-top:10px;font-size:.9em;color:#f2b7bd;text-transform:lowercase;float:right;right:0}@media (max-width:1199px){.starter-template .content h1{font-size:45px}.starter-template .content h1 .smaller{font-size:30px}.starter-template .content .lead{font-size:20px}}@media (max-width:991px){.starter-template{margin-top:0}.starter-template .logo{margin:40px auto}.starter-template .content{margin-left:0;text-align:center}.starter-template .content h1{margin-bottom:20px}.starter-template .links{float:none;text-align:center;margin-top:60px}.starter-template .copyright{float:none;text-align:center}}@media (max-width:767px){.starter-template .content h1 .smaller{font-size:25px;display:block}.starter-template .content .lead{font-size:16px}.starter-template .links{margin-top:40px}.starter-template .links ul li{display:block;margin:0}.starter-template .links ul li .icon-muted{display:none}.starter-template .copyright{margin-top:20px}} |
| | |
| | | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
| | | <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" xmlns:tal="http://xml.zope.org/namespaces/tal"> |
| | | <head> |
| | | <title>The Pyramid Web Framework</title> |
| | | <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/> |
| | | <meta name="keywords" content="python web application" /> |
| | | <meta name="description" content="pyramid web application" /> |
| | | <link rel="shortcut icon" href="/static/favicon.ico" /> |
| | | <link rel="stylesheet" href="/static/pylons.css" type="text/css" media="screen" charset="utf-8" /> |
| | | <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/nobile/stylesheet.css" media="screen" /> |
| | | <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/neuton/stylesheet.css" media="screen" /> |
| | | <!--[if lte IE 6]> |
| | | <link rel="stylesheet" href="/static/ie6.css" type="text/css" media="screen" charset="utf-8" /> |
| | | <![endif]--> |
| | | </head> |
| | | <body> |
| | | <div id="wrap"> |
| | | <div id="top"> |
| | | <div class="top align-center"> |
| | | <div><img src="/static/pyramid.png" width="750" height="169" alt="pyramid"/></div> |
| | | </div> |
| | | </div> |
| | | <div id="middle"> |
| | | <div class="middle align-center"> |
| | | <p class="app-welcome"> |
| | | Welcome to <span class="app-name">${project}</span>, an application generated by<br/> |
| | | the Pyramid Web Framework. |
| | | </p> |
| | | </div> |
| | | </div> |
| | | <div id="bottom"> |
| | | <div class="bottom"> |
| | | <div id="left" class="align-right"> |
| | | <h2>Search documentation</h2> |
| | | <form method="get" action="http://docs.pylonsproject.org/projects/pyramid/current/search.html"> |
| | | <input type="text" id="q" name="q" value="" /> |
| | | <input type="submit" id="x" value="Go" /> |
| | | </form> |
| | | <!DOCTYPE html> |
| | | <html lang="${request.locale_name}"> |
| | | <head> |
| | | <meta charset="utf-8"> |
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge"> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| | | <meta name="description" content="pyramid web application"> |
| | | <meta name="author" content="Pylons Project"> |
| | | <link rel="shortcut icon" href="${request.static_url('myproject:static/pyramid-16x16.png')}"> |
| | | |
| | | <title>Starter Template for The Pyramid Web Framework</title> |
| | | |
| | | <!-- Bootstrap core CSS --> |
| | | <link href="//oss.maxcdn.com/libs/twitter-bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet"> |
| | | |
| | | <!-- Custom styles for this template --> |
| | | <link href="${request.static_url('myproject:static/theme.css')}" rel="stylesheet"> |
| | | |
| | | <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries --> |
| | | <!--[if lt IE 9]> |
| | | <script src="//oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> |
| | | <script src="//oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script> |
| | | <![endif]--> |
| | | </head> |
| | | |
| | | <body> |
| | | |
| | | <div class="starter-template"> |
| | | <div class="container"> |
| | | <div class="row"> |
| | | <div class="col-md-2"> |
| | | <img class="logo img-responsive" src="${request.static_url('myproject:static/pyramid.png')}" alt="pyramid web framework"> |
| | | </div> |
| | | <div class="col-md-10"> |
| | | <div class="content"> |
| | | <h1><span class="font-semi-bold">Pyramid</span> <span class="smaller">starter template</span></h1> |
| | | <p class="lead">Welcome to <span class="font-normal">${project}</span>, an application generated by<br>the <span class="font-normal">Pyramid Web Framework</span>.</p> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div id="right" class="align-left"> |
| | | <h2>Pyramid links</h2> |
| | | <ul class="links"> |
| | | <li> |
| | | <a href="http://pylonsproject.org">Pylons Website</a> |
| | | </li> |
| | | <li> |
| | | <a href="http://docs.pylonsproject.org/projects/pyramid/en/1.3-branch/#narrative-documentation">Narrative Documentation</a> |
| | | </li> |
| | | <li> |
| | | <a href="http://docs.pylonsproject.org/projects/pyramid/en/1.3-branch/#reference-material">API Documentation</a> |
| | | </li> |
| | | <li> |
| | | <a href="http://docs.pylonsproject.org/projects/pyramid/en/1.3-branch/#tutorials">Tutorials</a> |
| | | </li> |
| | | <li> |
| | | <a href="http://docs.pylonsproject.org/projects/pyramid/en/1.3-branch/#detailed-change-history">Change History</a> |
| | | </li> |
| | | <li> |
| | | <a href="http://docs.pylonsproject.org/projects/pyramid/en/1.3-branch/#sample-applications">Sample Applications</a> |
| | | </li> |
| | | <li> |
| | | <a href="http://docs.pylonsproject.org/projects/pyramid/en/1.3-branch/#support-and-development">Support and Development</a> |
| | | </li> |
| | | <li> |
| | | <a href="irc://irc.freenode.net#pyramid">IRC Channel</a> |
| | | </li> |
| | | </ul> |
| | | <div class="row"> |
| | | <div class="links"> |
| | | <ul> |
| | | <li class="current-version">Currently v1.5</li> |
| | | <li><i class="glyphicon glyphicon-bookmark icon-muted"></i><a href="http://docs.pylonsproject.org">Docs</a></li> |
| | | <li><i class="glyphicon glyphicon-cog icon-muted"></i><a href="https://github.com/Pylons/pyramid">Github Project</a></li> |
| | | <li><i class="glyphicon glyphicon-globe icon-muted"></i><a href="irc://irc.freenode.net#pyramid">IRC Channel</a></li> |
| | | <li><i class="glyphicon glyphicon-home icon-muted"></i><a href="http://pylonsproject.org">Pylons Project</a></li> |
| | | </div> |
| | | </div> |
| | | <div class="row"> |
| | | <div class="copyright"> |
| | | Copyright © Pylons Project |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div id="footer"> |
| | | <div class="footer">© Copyright 2008-2011, Agendaless Consulting.</div> |
| | | </div> |
| | | </body> |
| | | |
| | | |
| | | <!-- Bootstrap core JavaScript |
| | | ================================================== --> |
| | | <!-- Placed at the end of the document so the pages load faster --> |
| | | <script src="//oss.maxcdn.com/libs/jquery/1.10.2/jquery.min.js"></script> |
| | | <script src="//oss.maxcdn.com/libs/twitter-bootstrap/3.0.3/js/bootstrap.min.js"></script> |
| | | </body> |
| | | </html> |
| | |
| | | ### |
| | | # app configuration |
| | | # http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/environment.html |
| | | ### |
| | | |
| | | [app:main] |
| | | use = egg:MyProject |
| | | |
| | |
| | | pyramid.debug_routematch = false |
| | | pyramid.default_locale_name = en |
| | | |
| | | ### |
| | | # wsgi server configuration |
| | | ### |
| | | |
| | | [server:main] |
| | | use = egg:waitress#main |
| | | host = 0.0.0.0 |
| | | port = 6543 |
| | | |
| | | # Begin logging configuration |
| | | ### |
| | | # logging configuration |
| | | # http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/logging.html |
| | | ### |
| | | |
| | | [loggers] |
| | | keys = root, myproject |
| | |
| | | |
| | | [formatter_generic] |
| | | format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s |
| | | |
| | | # End logging configuration |
| | |
| | | main = myproject:main |
| | | """, |
| | | ) |
| | | |
| | |
| | | |
| | | Implicit Tween Chain (not used) |
| | | |
| | | Position Name Alias |
| | | -------- ---- ----- |
| | | - - INGRESS |
| | | 0 pyramid_debugtoolbar.toolbar.toolbar_tween_factory pdbt |
| | | 1 pyramid.tweens.excview_tween_factory excview |
| | | - - MAIN |
| | | Position Name |
| | | -------- ---- |
| | | - INGRESS |
| | | 0 pyramid_debugtoolbar.toolbar.toolbar_tween_factory |
| | | 1 pyramid.tweens.excview_tween_factory |
| | | - MAIN |
| | | |
| | | Here's the application configuration section of the ``development.ini`` used |
| | | by the above ``ptweens`` command which reports that the explicit tween chain |
| | |
| | | def aview(request): |
| | | localizer = request.localizer |
| | | num = 1 |
| | | translated = localizer.pluralize( |
| | | _('item_plural', default="${number} items"), |
| | | None, num, 'mydomain', mapping={'number':num} |
| | | ) |
| | | translated = localizer.pluralize('item_plural', '${number} items', |
| | | num, 'mydomain', mapping={'number':num}) |
| | | |
| | | The corresponding message catalog must have language plural definitions and |
| | | plural alternatives set. |
| | |
| | | .. code-block:: text |
| | | |
| | | MyProject/ |
| | | |-- CHANGES.txt |
| | | |-- development.ini |
| | | |-- MANIFEST.in |
| | | |-- myproject |
| | | | |-- __init__.py |
| | | | |-- static |
| | | | | |-- favicon.ico |
| | | | | |-- logo.png |
| | | | | `-- pylons.css |
| | | | |-- templates |
| | | | | `-- mytemplate.pt |
| | | | |-- tests.py |
| | | | `-- views.py |
| | | |-- production.ini |
| | | |-- README.txt |
| | | |-- setup.cfg |
| | | `-- setup.py |
| | | ├── CHANGES.txt |
| | | ├── MANIFEST.in |
| | | ├── README.txt |
| | | ├── development.ini |
| | | ├── myproject |
| | | │ ├── __init__.py |
| | | │ ├── static |
| | | │ │ ├── pyramid-16x16.png |
| | | │ │ ├── pyramid.png |
| | | │ │ ├── theme.css |
| | | │ │ └── theme.min.css |
| | | │ ├── templates |
| | | │ │ └── mytemplate.pt |
| | | │ ├── tests.py |
| | | │ └── views.py |
| | | ├── production.ini |
| | | ├── setup.cfg |
| | | └── setup.py |
| | | |
| | | The ``MyProject`` :term:`Project` |
| | | --------------------------------- |
| | |
| | | from pyramid.renderers import render_to_response |
| | | |
| | | def sample_view(request): |
| | | return render_to_response('templates/foo.pt', |
| | | {'foo':1, 'bar':2}, |
| | | return render_to_response('templates/foo.pt', |
| | | {'foo':1, 'bar':2}, |
| | | request=request) |
| | | |
| | | The ``sample_view`` :term:`view callable` function above returns a |
| | |
| | | defines the ``sample_view`` function. Although a renderer path is |
| | | usually just a simple relative pathname, a path named as a renderer |
| | | can be absolute, starting with a slash on UNIX or a drive letter |
| | | prefix on Windows. The path can alternately be a |
| | | prefix on Windows. The path can alternately be an |
| | | :term:`asset specification` in the form |
| | | ``some.dotted.package_name:relative/path``. This makes it possible to |
| | | address template assets which live in another package. For example: |
| | |
| | | |
| | | An asset specification points at a file within a Python *package*. |
| | | In this case, it points at a file named ``foo.pt`` within the |
| | | ``templates`` directory of the ``mypackage`` package. Using a |
| | | ``templates`` directory of the ``mypackage`` package. Using an |
| | | asset specification instead of a relative template name is usually |
| | | a good idea, because calls to :func:`~pyramid.renderers.render_to_response` |
| | | using asset specifications will continue to work properly if you move the |
| | | code containing them around. |
| | | code containing them to another location. |
| | | |
| | | In the examples above we pass in a keyword argument named ``request`` |
| | | representing the current :app:`Pyramid` request. Passing a request |
| | |
| | | which use a :term:`renderer` named via view configuration (which we'll |
| | | see shortly). The :func:`pyramid.renderers.render_to_response` |
| | | function is a shortcut function that actually returns a response |
| | | object. This allows the example view above to simply return the result |
| | | of its call to ``render_to_response()`` directly. |
| | | object. This allows the example view above to simply return the result |
| | | of its call to ``render_to_response()`` directly. |
| | | |
| | | Obviously not all APIs you might call to get response data will return a |
| | | response object. For example, you might render one or more templates to |
| | |
| | | from pyramid.response import Response |
| | | |
| | | def sample_view(request): |
| | | result = render('mypackage:templates/foo.pt', |
| | | {'foo':1, 'bar':2}, |
| | | result = render('mypackage:templates/foo.pt', |
| | | {'foo':1, 'bar':2}, |
| | | request=request) |
| | | response = Response(result) |
| | | return response |
| | |
| | | |
| | | def sample_view(request): |
| | | result = render('mypackage:templates/foo.pt', |
| | | {'foo':1, 'bar':2}, |
| | | {'foo':1, 'bar':2}, |
| | | request=request) |
| | | response = Response(result) |
| | | response.content_type = 'text/plain' |
| | |
| | | The renderer name used to perform the rendering, |
| | | e.g. ``mypackage:templates/foo.pt``. |
| | | |
| | | ``renderer_info`` |
| | | ``renderer_info`` |
| | | An object implementing the :class:`pyramid.interfaces.IRendererInfo` |
| | | interface. Basically, an object with the following attributes: ``name``, |
| | | ``package`` and ``type``. |
| | |
| | | An alternative to using :func:`~pyramid.renderers.render_to_response` |
| | | to render templates manually in your view callable code, is |
| | | to specify the template as a :term:`renderer` in your |
| | | *view configuration*. This can be done with any of the |
| | | *view configuration*. This can be done with any of the |
| | | templating languages supported by :app:`Pyramid`. |
| | | |
| | | To use a renderer via view configuration, specify a template |
| | |
| | | decorator function will be called with the view callable as a single |
| | | argument. The view callable it is passed will accept ``(context, |
| | | request)``. The decorator must return a replacement view callable which |
| | | also accepts ``(context, request)``. |
| | | also accepts ``(context, request)``. The ``decorator`` may also be an |
| | | iterable of decorators, in which case they will be applied one after the |
| | | other to the view, in reverse order. For example:: |
| | | |
| | | @view_config(..., decorator=(decorator2, decorator1)) |
| | | def myview(request): |
| | | ... |
| | | |
| | | Is similar to doing:: |
| | | |
| | | @view_config(...) |
| | | @decorator2 |
| | | @decorator1 |
| | | def myview(request): |
| | | ... |
| | | |
| | | ``mapper`` |
| | | A Python object or :term:`dotted Python name` which refers to a :term:`view |
| | |
| | | import cgi |
| | | import re |
| | | from docutils.core import publish_parts |
| | | |
| | |
| | | exists = DBSession.query(Page).filter_by(name=word).all() |
| | | if exists: |
| | | view_url = request.route_url('view_page', pagename=word) |
| | | return '<a href="%s">%s</a>' % (view_url, word) |
| | | return '<a href="%s">%s</a>' % (view_url, cgi.escape(word)) |
| | | else: |
| | | add_url = request.route_url('add_page', pagename=word) |
| | | return '<a href="%s">%s</a>' % (add_url, word) |
| | | return '<a href="%s">%s</a>' % (add_url, cgi.escape(word)) |
| | | |
| | | content = publish_parts(page.data, writer_name='html')['html_body'] |
| | | content = wikiwords.sub(check, content) |
| | |
| | | :term:`message identifier` objects as a singular/plural pair |
| | | and an ``n`` value representing the number that appears in the |
| | | message using gettext plural forms support. The ``singular`` |
| | | and ``plural`` objects passed may be translation strings or |
| | | unicode strings. ``n`` represents the number of elements. |
| | | ``domain`` is the translation domain to use to do the |
| | | pluralization, and ``mapping`` is the interpolation mapping |
| | | that should be used on the result. Note that if the objects |
| | | passed are translation strings, their domains and mappings are |
| | | ignored. The domain and mapping arguments must be used |
| | | instead. If the ``domain`` is not supplied, a default domain |
| | | is used (usually ``messages``). |
| | | |
| | | and ``plural`` objects should be unicode strings. There is no |
| | | reason to use translation string objects as arguments as all |
| | | metadata is ignored. |
| | | |
| | | ``n`` represents the number of elements. ``domain`` is the |
| | | translation domain to use to do the pluralization, and ``mapping`` |
| | | is the interpolation mapping that should be used on the result. If |
| | | the ``domain`` is not supplied, a default domain is used (usually |
| | | ``messages``). |
| | | |
| | | Example:: |
| | | |
| | | num = 1 |
| | |
| | | num, |
| | | mapping={'num':num}) |
| | | |
| | | If using the gettext plural support, which is required for |
| | | languages that have pluralisation rules other than n != 1, the |
| | | ``singular`` argument must be the message_id defined in the |
| | | translation file. The plural argument is not used in this case. |
| | | |
| | | Example:: |
| | | |
| | | num = 1 |
| | | translated = localizer.pluralize('item_plural', |
| | | '', |
| | | num, |
| | | mapping={'num':num}) |
| | | |
| | | |
| | | """ |
| | | if self.pluralizer is None: |
| | |
| | | body = val |
| | | else: |
| | | ct = 'application/javascript' |
| | | body = '%s(%s)' % (callback, val) |
| | | body = '%s(%s);' % (callback, val) |
| | | response = request.response |
| | | if response.content_type == response.default_content_type: |
| | | response.content_type = ct |
New file |
| | |
| | | @import url(//fonts.googleapis.com/css?family=Open+Sans:300,400,600,700); |
| | | body { |
| | | font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; |
| | | font-weight: 300; |
| | | color: #ffffff; |
| | | background: #bc2131; |
| | | } |
| | | h1, |
| | | h2, |
| | | h3, |
| | | h4, |
| | | h5, |
| | | h6 { |
| | | font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; |
| | | font-weight: 300; |
| | | } |
| | | p { |
| | | font-weight: 300; |
| | | } |
| | | .font-normal { |
| | | font-weight: 400; |
| | | } |
| | | .font-semi-bold { |
| | | font-weight: 600; |
| | | } |
| | | .font-bold { |
| | | font-weight: 700; |
| | | } |
| | | .starter-template { |
| | | margin-top: 250px; |
| | | } |
| | | .starter-template .content { |
| | | margin-left: 10px; |
| | | } |
| | | .starter-template .content h1 { |
| | | margin-top: 10px; |
| | | font-size: 60px; |
| | | } |
| | | .starter-template .content h1 .smaller { |
| | | font-size: 40px; |
| | | color: #f2b7bd; |
| | | } |
| | | .starter-template .content .lead { |
| | | font-size: 25px; |
| | | color: #f2b7bd; |
| | | } |
| | | .starter-template .content .lead .font-normal { |
| | | color: #ffffff; |
| | | } |
| | | .starter-template .links { |
| | | float: right; |
| | | right: 0; |
| | | margin-top: 125px; |
| | | } |
| | | .starter-template .links ul { |
| | | display: block; |
| | | padding: 0; |
| | | margin: 0; |
| | | } |
| | | .starter-template .links ul li { |
| | | list-style: none; |
| | | display: inline; |
| | | margin: 0 10px; |
| | | } |
| | | .starter-template .links ul li:first-child { |
| | | margin-left: 0; |
| | | } |
| | | .starter-template .links ul li:last-child { |
| | | margin-right: 0; |
| | | } |
| | | .starter-template .links ul li.current-version { |
| | | color: #f2b7bd; |
| | | font-weight: 400; |
| | | } |
| | | .starter-template .links ul li a { |
| | | color: #ffffff; |
| | | } |
| | | .starter-template .links ul li a:hover { |
| | | text-decoration: underline; |
| | | } |
| | | .starter-template .links ul li .icon-muted { |
| | | color: #eb8b95; |
| | | margin-right: 5px; |
| | | } |
| | | .starter-template .links ul li:hover .icon-muted { |
| | | color: #ffffff; |
| | | } |
| | | .starter-template .copyright { |
| | | margin-top: 10px; |
| | | font-size: 0.9em; |
| | | color: #f2b7bd; |
| | | text-transform: lowercase; |
| | | float: right; |
| | | right: 0; |
| | | } |
| | | @media (max-width: 1199px) { |
| | | .starter-template .content h1 { |
| | | font-size: 45px; |
| | | } |
| | | .starter-template .content h1 .smaller { |
| | | font-size: 30px; |
| | | } |
| | | .starter-template .content .lead { |
| | | font-size: 20px; |
| | | } |
| | | } |
| | | @media (max-width: 991px) { |
| | | .starter-template { |
| | | margin-top: 0; |
| | | } |
| | | .starter-template .logo { |
| | | margin: 40px auto; |
| | | } |
| | | .starter-template .content { |
| | | margin-left: 0; |
| | | text-align: center; |
| | | } |
| | | .starter-template .content h1 { |
| | | margin-bottom: 20px; |
| | | } |
| | | .starter-template .links { |
| | | float: none; |
| | | text-align: center; |
| | | margin-top: 60px; |
| | | } |
| | | .starter-template .copyright { |
| | | float: none; |
| | | text-align: center; |
| | | } |
| | | } |
| | | @media (max-width: 767px) { |
| | | .starter-template .content h1 .smaller { |
| | | font-size: 25px; |
| | | display: block; |
| | | } |
| | | .starter-template .content .lead { |
| | | font-size: 16px; |
| | | } |
| | | .starter-template .links { |
| | | margin-top: 40px; |
| | | } |
| | | .starter-template .links ul li { |
| | | display: block; |
| | | margin: 0; |
| | | } |
| | | .starter-template .links ul li .icon-muted { |
| | | display: none; |
| | | } |
| | | .starter-template .copyright { |
| | | margin-top: 20px; |
| | | } |
| | | } |
New file |
| | |
| | | @import url(//fonts.googleapis.com/css?family=Open+Sans:300,400,600,700);body{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:300;color:#fff;background:#bc2131}h1,h2,h3,h4,h5,h6{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:300}p{font-weight:300}.font-normal{font-weight:400}.font-semi-bold{font-weight:600}.font-bold{font-weight:700}.starter-template{margin-top:250px}.starter-template .content{margin-left:10px}.starter-template .content h1{margin-top:10px;font-size:60px}.starter-template .content h1 .smaller{font-size:40px;color:#f2b7bd}.starter-template .content .lead{font-size:25px;color:#f2b7bd}.starter-template .content .lead .font-normal{color:#fff}.starter-template .links{float:right;right:0;margin-top:125px}.starter-template .links ul{display:block;padding:0;margin:0}.starter-template .links ul li{list-style:none;display:inline;margin:0 10px}.starter-template .links ul li:first-child{margin-left:0}.starter-template .links ul li:last-child{margin-right:0}.starter-template .links ul li.current-version{color:#f2b7bd;font-weight:400}.starter-template .links ul li a{color:#fff}.starter-template .links ul li a:hover{text-decoration:underline}.starter-template .links ul li .icon-muted{color:#eb8b95;margin-right:5px}.starter-template .links ul li:hover .icon-muted{color:#fff}.starter-template .copyright{margin-top:10px;font-size:.9em;color:#f2b7bd;text-transform:lowercase;float:right;right:0}@media (max-width:1199px){.starter-template .content h1{font-size:45px}.starter-template .content h1 .smaller{font-size:30px}.starter-template .content .lead{font-size:20px}}@media (max-width:991px){.starter-template{margin-top:0}.starter-template .logo{margin:40px auto}.starter-template .content{margin-left:0;text-align:center}.starter-template .content h1{margin-bottom:20px}.starter-template .links{float:none;text-align:center;margin-top:60px}.starter-template .copyright{float:none;text-align:center}}@media (max-width:767px){.starter-template .content h1 .smaller{font-size:25px;display:block}.starter-template .content .lead{font-size:16px}.starter-template .links{margin-top:40px}.starter-template .links ul li{display:block;margin:0}.starter-template .links ul li .icon-muted{display:none}.starter-template .copyright{margin-top:20px}} |
| | |
| | | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
| | | <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" xmlns:tal="http://xml.zope.org/namespaces/tal"> |
| | | <head> |
| | | <title>The Pyramid Web Framework</title> |
| | | <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/> |
| | | <meta name="keywords" content="python web application" /> |
| | | <meta name="description" content="pyramid web application" /> |
| | | <link rel="shortcut icon" href="${request.static_url('{{package}}:static/favicon.ico')}" /> |
| | | <link rel="stylesheet" href="${request.static_url('{{package}}:static/pylons.css')}" type="text/css" media="screen" charset="utf-8" /> |
| | | <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/nobile/stylesheet.css" media="screen" /> |
| | | <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/neuton/stylesheet.css" media="screen" /> |
| | | <!--[if lte IE 6]> |
| | | <link rel="stylesheet" href="${request.static_url('{{package}}:static/ie6.css')}" type="text/css" media="screen" charset="utf-8" /> |
| | | <![endif]--> |
| | | </head> |
| | | <body> |
| | | <div id="wrap"> |
| | | <div id="top"> |
| | | <div class="top align-center"> |
| | | <div><img src="${request.static_url('{{package}}:static/pyramid.png')}" width="750" height="169" alt="pyramid"/></div> |
| | | </div> |
| | | </div> |
| | | <div id="middle"> |
| | | <div class="middle align-center"> |
| | | <p class="app-welcome"> |
| | | Welcome to <span class="app-name">${project}</span>, an application generated by<br/> |
| | | the Pyramid Web Framework. |
| | | </p> |
| | | </div> |
| | | </div> |
| | | <div id="bottom"> |
| | | <div class="bottom"> |
| | | <div id="left" class="align-right"> |
| | | <h2>Search documentation</h2> |
| | | <form method="get" action="http://docs.pylonsproject.org/projects/pyramid/en/1.4-branch/search.html"> |
| | | <input type="text" id="q" name="q" value="" /> |
| | | <input type="submit" id="x" value="Go" /> |
| | | </form> |
| | | <!DOCTYPE html> |
| | | <html lang="${request.locale_name}"> |
| | | <head> |
| | | <meta charset="utf-8"> |
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge"> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| | | <meta name="description" content="pyramid web application"> |
| | | <meta name="author" content="Pylons Project"> |
| | | <link rel="shortcut icon" href="${request.static_url('{{package}}:static/pyramid-16x16.png')}"> |
| | | |
| | | <title>Starter Template for The Pyramid Web Framework</title> |
| | | |
| | | <!-- Bootstrap core CSS --> |
| | | <link href="//oss.maxcdn.com/libs/twitter-bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet"> |
| | | |
| | | <!-- Custom styles for this template --> |
| | | <link href="${request.static_url('{{package}}:static/theme.css')}" rel="stylesheet"> |
| | | |
| | | <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries --> |
| | | <!--[if lt IE 9]> |
| | | <script src="//oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> |
| | | <script src="//oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script> |
| | | <![endif]--> |
| | | </head> |
| | | |
| | | <body> |
| | | |
| | | <div class="starter-template"> |
| | | <div class="container"> |
| | | <div class="row"> |
| | | <div class="col-md-2"> |
| | | <img class="logo img-responsive" src="${request.static_url('{{package}}:static/pyramid.png')}" alt="pyramid web framework"> |
| | | </div> |
| | | <div class="col-md-10"> |
| | | <div class="content"> |
| | | <h1><span class="font-semi-bold">Pyramid</span> <span class="smaller">starter template</span></h1> |
| | | <p class="lead">Welcome to <span class="font-normal">${project}</span>, an application generated by<br>the <span class="font-normal">Pyramid Web Framework</span>.</p> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div id="right" class="align-left"> |
| | | <h2>Pyramid links</h2> |
| | | <ul class="links"> |
| | | <li> |
| | | <a href="http://pylonsproject.org">Pylons Website</a> |
| | | </li> |
| | | <li> |
| | | <a href="http://docs.pylonsproject.org/projects/pyramid/en/1.4-branch/#narrative-documentation">Narrative Documentation</a> |
| | | </li> |
| | | <li> |
| | | <a href="http://docs.pylonsproject.org/projects/pyramid/en/1.4-branch/#reference-material">API Documentation</a> |
| | | </li> |
| | | <li> |
| | | <a href="http://docs.pylonsproject.org/projects/pyramid/en/1.4-branch/#tutorials">Tutorials</a> |
| | | </li> |
| | | <li> |
| | | <a href="http://docs.pylonsproject.org/projects/pyramid/en/1.4-branch/#detailed-change-history">Change History</a> |
| | | </li> |
| | | <li> |
| | | <a href="http://docs.pylonsproject.org/projects/pyramid/en/1.4-branch/#sample-applications">Sample Applications</a> |
| | | </li> |
| | | <li> |
| | | <a href="http://docs.pylonsproject.org/projects/pyramid/en/1.4-branch/#support-and-development">Support and Development</a> |
| | | </li> |
| | | <li> |
| | | <a href="irc://irc.freenode.net#pyramid">IRC Channel</a> |
| | | </li> |
| | | </ul> |
| | | <div class="row"> |
| | | <div class="links"> |
| | | <ul> |
| | | <li class="current-version">Currently v1.5</li> |
| | | <li><i class="glyphicon glyphicon-bookmark icon-muted"></i><a href="http://docs.pylonsproject.org">Docs</a></li> |
| | | <li><i class="glyphicon glyphicon-cog icon-muted"></i><a href="https://github.com/Pylons/pyramid">Github Project</a></li> |
| | | <li><i class="glyphicon glyphicon-globe icon-muted"></i><a href="irc://irc.freenode.net#pyramid">IRC Channel</a></li> |
| | | <li><i class="glyphicon glyphicon-home icon-muted"></i><a href="http://pylonsproject.org">Pylons Project</a></li> |
| | | </div> |
| | | </div> |
| | | <div class="row"> |
| | | <div class="copyright"> |
| | | Copyright © Pylons Project |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </body> |
| | | |
| | | |
| | | <!-- Bootstrap core JavaScript |
| | | ================================================== --> |
| | | <!-- Placed at the end of the document so the pages load faster --> |
| | | <script src="//oss.maxcdn.com/libs/jquery/1.10.2/jquery.min.js"></script> |
| | | <script src="//oss.maxcdn.com/libs/twitter-bootstrap/3.0.3/js/bootstrap.min.js"></script> |
| | | </body> |
| | | </html> |
New file |
| | |
| | | @import url(//fonts.googleapis.com/css?family=Open+Sans:300,400,600,700); |
| | | body { |
| | | font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; |
| | | font-weight: 300; |
| | | color: #ffffff; |
| | | background: #bc2131; |
| | | } |
| | | h1, |
| | | h2, |
| | | h3, |
| | | h4, |
| | | h5, |
| | | h6 { |
| | | font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; |
| | | font-weight: 300; |
| | | } |
| | | p { |
| | | font-weight: 300; |
| | | } |
| | | .font-normal { |
| | | font-weight: 400; |
| | | } |
| | | .font-semi-bold { |
| | | font-weight: 600; |
| | | } |
| | | .font-bold { |
| | | font-weight: 700; |
| | | } |
| | | .starter-template { |
| | | margin-top: 250px; |
| | | } |
| | | .starter-template .content { |
| | | margin-left: 10px; |
| | | } |
| | | .starter-template .content h1 { |
| | | margin-top: 10px; |
| | | font-size: 60px; |
| | | } |
| | | .starter-template .content h1 .smaller { |
| | | font-size: 40px; |
| | | color: #f2b7bd; |
| | | } |
| | | .starter-template .content .lead { |
| | | font-size: 25px; |
| | | color: #f2b7bd; |
| | | } |
| | | .starter-template .content .lead .font-normal { |
| | | color: #ffffff; |
| | | } |
| | | .starter-template .links { |
| | | float: right; |
| | | right: 0; |
| | | margin-top: 125px; |
| | | } |
| | | .starter-template .links ul { |
| | | display: block; |
| | | padding: 0; |
| | | margin: 0; |
| | | } |
| | | .starter-template .links ul li { |
| | | list-style: none; |
| | | display: inline; |
| | | margin: 0 10px; |
| | | } |
| | | .starter-template .links ul li:first-child { |
| | | margin-left: 0; |
| | | } |
| | | .starter-template .links ul li:last-child { |
| | | margin-right: 0; |
| | | } |
| | | .starter-template .links ul li.current-version { |
| | | color: #f2b7bd; |
| | | font-weight: 400; |
| | | } |
| | | .starter-template .links ul li a { |
| | | color: #ffffff; |
| | | } |
| | | .starter-template .links ul li a:hover { |
| | | text-decoration: underline; |
| | | } |
| | | .starter-template .links ul li .icon-muted { |
| | | color: #eb8b95; |
| | | margin-right: 5px; |
| | | } |
| | | .starter-template .links ul li:hover .icon-muted { |
| | | color: #ffffff; |
| | | } |
| | | .starter-template .copyright { |
| | | margin-top: 10px; |
| | | font-size: 0.9em; |
| | | color: #f2b7bd; |
| | | text-transform: lowercase; |
| | | float: right; |
| | | right: 0; |
| | | } |
| | | @media (max-width: 1199px) { |
| | | .starter-template .content h1 { |
| | | font-size: 45px; |
| | | } |
| | | .starter-template .content h1 .smaller { |
| | | font-size: 30px; |
| | | } |
| | | .starter-template .content .lead { |
| | | font-size: 20px; |
| | | } |
| | | } |
| | | @media (max-width: 991px) { |
| | | .starter-template { |
| | | margin-top: 0; |
| | | } |
| | | .starter-template .logo { |
| | | margin: 40px auto; |
| | | } |
| | | .starter-template .content { |
| | | margin-left: 0; |
| | | text-align: center; |
| | | } |
| | | .starter-template .content h1 { |
| | | margin-bottom: 20px; |
| | | } |
| | | .starter-template .links { |
| | | float: none; |
| | | text-align: center; |
| | | margin-top: 60px; |
| | | } |
| | | .starter-template .copyright { |
| | | float: none; |
| | | text-align: center; |
| | | } |
| | | } |
| | | @media (max-width: 767px) { |
| | | .starter-template .content h1 .smaller { |
| | | font-size: 25px; |
| | | display: block; |
| | | } |
| | | .starter-template .content .lead { |
| | | font-size: 16px; |
| | | } |
| | | .starter-template .links { |
| | | margin-top: 40px; |
| | | } |
| | | .starter-template .links ul li { |
| | | display: block; |
| | | margin: 0; |
| | | } |
| | | .starter-template .links ul li .icon-muted { |
| | | display: none; |
| | | } |
| | | .starter-template .copyright { |
| | | margin-top: 20px; |
| | | } |
| | | } |
New file |
| | |
| | | @import url(//fonts.googleapis.com/css?family=Open+Sans:300,400,600,700);body{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:300;color:#fff;background:#bc2131}h1,h2,h3,h4,h5,h6{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:300}p{font-weight:300}.font-normal{font-weight:400}.font-semi-bold{font-weight:600}.font-bold{font-weight:700}.starter-template{margin-top:250px}.starter-template .content{margin-left:10px}.starter-template .content h1{margin-top:10px;font-size:60px}.starter-template .content h1 .smaller{font-size:40px;color:#f2b7bd}.starter-template .content .lead{font-size:25px;color:#f2b7bd}.starter-template .content .lead .font-normal{color:#fff}.starter-template .links{float:right;right:0;margin-top:125px}.starter-template .links ul{display:block;padding:0;margin:0}.starter-template .links ul li{list-style:none;display:inline;margin:0 10px}.starter-template .links ul li:first-child{margin-left:0}.starter-template .links ul li:last-child{margin-right:0}.starter-template .links ul li.current-version{color:#f2b7bd;font-weight:400}.starter-template .links ul li a{color:#fff}.starter-template .links ul li a:hover{text-decoration:underline}.starter-template .links ul li .icon-muted{color:#eb8b95;margin-right:5px}.starter-template .links ul li:hover .icon-muted{color:#fff}.starter-template .copyright{margin-top:10px;font-size:.9em;color:#f2b7bd;text-transform:lowercase;float:right;right:0}@media (max-width:1199px){.starter-template .content h1{font-size:45px}.starter-template .content h1 .smaller{font-size:30px}.starter-template .content .lead{font-size:20px}}@media (max-width:991px){.starter-template{margin-top:0}.starter-template .logo{margin:40px auto}.starter-template .content{margin-left:0;text-align:center}.starter-template .content h1{margin-bottom:20px}.starter-template .links{float:none;text-align:center;margin-top:60px}.starter-template .copyright{float:none;text-align:center}}@media (max-width:767px){.starter-template .content h1 .smaller{font-size:25px;display:block}.starter-template .content .lead{font-size:16px}.starter-template .links{margin-top:40px}.starter-template .links ul li{display:block;margin:0}.starter-template .links ul li .icon-muted{display:none}.starter-template .copyright{margin-top:20px}} |
| | |
| | | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
| | | <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" xmlns:tal="http://xml.zope.org/namespaces/tal"> |
| | | <head> |
| | | <title>The Pyramid Web Framework</title> |
| | | <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/> |
| | | <meta name="keywords" content="python web application" /> |
| | | <meta name="description" content="pyramid web application" /> |
| | | <link rel="shortcut icon" href="${request.static_url('{{package}}:static/favicon.ico')}" /> |
| | | <link rel="stylesheet" href="${request.static_url('{{package}}:static/pylons.css')}" type="text/css" media="screen" charset="utf-8" /> |
| | | <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/nobile/stylesheet.css" media="screen" /> |
| | | <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/neuton/stylesheet.css" media="screen" /> |
| | | <!--[if lte IE 6]> |
| | | <link rel="stylesheet" href="${request.static_url('{{package}}:static/ie6.css')}" type="text/css" media="screen" charset="utf-8" /> |
| | | <![endif]--> |
| | | </head> |
| | | <body> |
| | | <div id="wrap"> |
| | | <div id="top"> |
| | | <div class="top align-center"> |
| | | <div><img src="${request.static_url('{{package}}:static/pyramid.png')}" width="750" height="169" alt="pyramid"/></div> |
| | | </div> |
| | | </div> |
| | | <div id="middle"> |
| | | <div class="middle align-center"> |
| | | <p class="app-welcome"> |
| | | Welcome to <span class="app-name">${project}</span>, an application generated by<br/> |
| | | the Pyramid Web Framework. |
| | | </p> |
| | | </div> |
| | | </div> |
| | | <div id="bottom"> |
| | | <div class="bottom"> |
| | | <div id="left" class="align-right"> |
| | | <h2>Search documentation</h2> |
| | | <form method="get" action="http://docs.pylonsproject.org/projects/pyramid/en/1.4-branch/search.html"> |
| | | <input type="text" id="q" name="q" value="" /> |
| | | <input type="submit" id="x" value="Go" /> |
| | | </form> |
| | | <!DOCTYPE html> |
| | | <html lang="${request.locale_name}"> |
| | | <head> |
| | | <meta charset="utf-8"> |
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge"> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| | | <meta name="description" content="pyramid web application"> |
| | | <meta name="author" content="Pylons Project"> |
| | | <link rel="shortcut icon" href="${request.static_url('{{package}}:static/pyramid-16x16.png')}"> |
| | | |
| | | <title>Starter Template for The Pyramid Web Framework</title> |
| | | |
| | | <!-- Bootstrap core CSS --> |
| | | <link href="//oss.maxcdn.com/libs/twitter-bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet"> |
| | | |
| | | <!-- Custom styles for this template --> |
| | | <link href="${request.static_url('{{package}}:static/theme.css')}" rel="stylesheet"> |
| | | |
| | | <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries --> |
| | | <!--[if lt IE 9]> |
| | | <script src="//oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> |
| | | <script src="//oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script> |
| | | <![endif]--> |
| | | </head> |
| | | |
| | | <body> |
| | | |
| | | <div class="starter-template"> |
| | | <div class="container"> |
| | | <div class="row"> |
| | | <div class="col-md-2"> |
| | | <img class="logo img-responsive" src="${request.static_url('{{package}}:static/pyramid.png')}" alt="pyramid web framework"> |
| | | </div> |
| | | <div class="col-md-10"> |
| | | <div class="content"> |
| | | <h1><span class="font-semi-bold">Pyramid</span> <span class="smaller">starter template</span></h1> |
| | | <p class="lead">Welcome to <span class="font-normal">${project}</span>, an application generated by<br>the <span class="font-normal">Pyramid Web Framework</span>.</p> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div id="right" class="align-left"> |
| | | <h2>Pyramid links</h2> |
| | | <ul class="links"> |
| | | <li> |
| | | <a href="http://pylonsproject.org">Pylons Website</a> |
| | | </li> |
| | | <li> |
| | | <a href="http://docs.pylonsproject.org/projects/pyramid/en/1.4-branch/#narrative-documentation">Narrative Documentation</a> |
| | | </li> |
| | | <li> |
| | | <a href="http://docs.pylonsproject.org/projects/pyramid/en/1.4-branch/#reference-material">API Documentation</a> |
| | | </li> |
| | | <li> |
| | | <a href="http://docs.pylonsproject.org/projects/pyramid/en/1.4-branch/#tutorials">Tutorials</a> |
| | | </li> |
| | | <li> |
| | | <a href="http://docs.pylonsproject.org/projects/pyramid/en/1.4-branch/#detailed-change-history">Change History</a> |
| | | </li> |
| | | <li> |
| | | <a href="http://docs.pylonsproject.org/projects/pyramid/en/1.4-branch/#sample-applications">Sample Applications</a> |
| | | </li> |
| | | <li> |
| | | <a href="http://docs.pylonsproject.org/projects/pyramid/en/1.4-branch/#support-and-development">Support and Development</a> |
| | | </li> |
| | | <li> |
| | | <a href="irc://irc.freenode.net#pyramid">IRC Channel</a> |
| | | </li> |
| | | </ul> |
| | | <div class="row"> |
| | | <div class="links"> |
| | | <ul> |
| | | <li class="current-version">Currently v1.5</li> |
| | | <li><i class="glyphicon glyphicon-bookmark icon-muted"></i><a href="http://docs.pylonsproject.org">Docs</a></li> |
| | | <li><i class="glyphicon glyphicon-cog icon-muted"></i><a href="https://github.com/Pylons/pyramid">Github Project</a></li> |
| | | <li><i class="glyphicon glyphicon-globe icon-muted"></i><a href="irc://irc.freenode.net#pyramid">IRC Channel</a></li> |
| | | <li><i class="glyphicon glyphicon-home icon-muted"></i><a href="http://pylonsproject.org">Pylons Project</a></li> |
| | | </div> |
| | | </div> |
| | | <div class="row"> |
| | | <div class="copyright"> |
| | | Copyright © Pylons Project |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </body> |
| | | |
| | | |
| | | <!-- Bootstrap core JavaScript |
| | | ================================================== --> |
| | | <!-- Placed at the end of the document so the pages load faster --> |
| | | <script src="//oss.maxcdn.com/libs/jquery/1.10.2/jquery.min.js"></script> |
| | | <script src="//oss.maxcdn.com/libs/twitter-bootstrap/3.0.3/js/bootstrap.min.js"></script> |
| | | </body> |
| | | </html> |
New file |
| | |
| | | @import url(//fonts.googleapis.com/css?family=Open+Sans:300,400,600,700); |
| | | body { |
| | | font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; |
| | | font-weight: 300; |
| | | color: #ffffff; |
| | | background: #bc2131; |
| | | } |
| | | h1, |
| | | h2, |
| | | h3, |
| | | h4, |
| | | h5, |
| | | h6 { |
| | | font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; |
| | | font-weight: 300; |
| | | } |
| | | p { |
| | | font-weight: 300; |
| | | } |
| | | .font-normal { |
| | | font-weight: 400; |
| | | } |
| | | .font-semi-bold { |
| | | font-weight: 600; |
| | | } |
| | | .font-bold { |
| | | font-weight: 700; |
| | | } |
| | | .starter-template { |
| | | margin-top: 250px; |
| | | } |
| | | .starter-template .content { |
| | | margin-left: 10px; |
| | | } |
| | | .starter-template .content h1 { |
| | | margin-top: 10px; |
| | | font-size: 60px; |
| | | } |
| | | .starter-template .content h1 .smaller { |
| | | font-size: 40px; |
| | | color: #f2b7bd; |
| | | } |
| | | .starter-template .content .lead { |
| | | font-size: 25px; |
| | | color: #f2b7bd; |
| | | } |
| | | .starter-template .content .lead .font-normal { |
| | | color: #ffffff; |
| | | } |
| | | .starter-template .links { |
| | | float: right; |
| | | right: 0; |
| | | margin-top: 125px; |
| | | } |
| | | .starter-template .links ul { |
| | | display: block; |
| | | padding: 0; |
| | | margin: 0; |
| | | } |
| | | .starter-template .links ul li { |
| | | list-style: none; |
| | | display: inline; |
| | | margin: 0 10px; |
| | | } |
| | | .starter-template .links ul li:first-child { |
| | | margin-left: 0; |
| | | } |
| | | .starter-template .links ul li:last-child { |
| | | margin-right: 0; |
| | | } |
| | | .starter-template .links ul li.current-version { |
| | | color: #f2b7bd; |
| | | font-weight: 400; |
| | | } |
| | | .starter-template .links ul li a { |
| | | color: #ffffff; |
| | | } |
| | | .starter-template .links ul li a:hover { |
| | | text-decoration: underline; |
| | | } |
| | | .starter-template .links ul li .icon-muted { |
| | | color: #eb8b95; |
| | | margin-right: 5px; |
| | | } |
| | | .starter-template .links ul li:hover .icon-muted { |
| | | color: #ffffff; |
| | | } |
| | | .starter-template .copyright { |
| | | margin-top: 10px; |
| | | font-size: 0.9em; |
| | | color: #f2b7bd; |
| | | text-transform: lowercase; |
| | | float: right; |
| | | right: 0; |
| | | } |
| | | @media (max-width: 1199px) { |
| | | .starter-template .content h1 { |
| | | font-size: 45px; |
| | | } |
| | | .starter-template .content h1 .smaller { |
| | | font-size: 30px; |
| | | } |
| | | .starter-template .content .lead { |
| | | font-size: 20px; |
| | | } |
| | | } |
| | | @media (max-width: 991px) { |
| | | .starter-template { |
| | | margin-top: 0; |
| | | } |
| | | .starter-template .logo { |
| | | margin: 40px auto; |
| | | } |
| | | .starter-template .content { |
| | | margin-left: 0; |
| | | text-align: center; |
| | | } |
| | | .starter-template .content h1 { |
| | | margin-bottom: 20px; |
| | | } |
| | | .starter-template .links { |
| | | float: none; |
| | | text-align: center; |
| | | margin-top: 60px; |
| | | } |
| | | .starter-template .copyright { |
| | | float: none; |
| | | text-align: center; |
| | | } |
| | | } |
| | | @media (max-width: 767px) { |
| | | .starter-template .content h1 .smaller { |
| | | font-size: 25px; |
| | | display: block; |
| | | } |
| | | .starter-template .content .lead { |
| | | font-size: 16px; |
| | | } |
| | | .starter-template .links { |
| | | margin-top: 40px; |
| | | } |
| | | .starter-template .links ul li { |
| | | display: block; |
| | | margin: 0; |
| | | } |
| | | .starter-template .links ul li .icon-muted { |
| | | display: none; |
| | | } |
| | | .starter-template .copyright { |
| | | margin-top: 20px; |
| | | } |
| | | } |
New file |
| | |
| | | @import url(//fonts.googleapis.com/css?family=Open+Sans:300,400,600,700);body{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:300;color:#fff;background:#bc2131}h1,h2,h3,h4,h5,h6{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:300}p{font-weight:300}.font-normal{font-weight:400}.font-semi-bold{font-weight:600}.font-bold{font-weight:700}.starter-template{margin-top:250px}.starter-template .content{margin-left:10px}.starter-template .content h1{margin-top:10px;font-size:60px}.starter-template .content h1 .smaller{font-size:40px;color:#f2b7bd}.starter-template .content .lead{font-size:25px;color:#f2b7bd}.starter-template .content .lead .font-normal{color:#fff}.starter-template .links{float:right;right:0;margin-top:125px}.starter-template .links ul{display:block;padding:0;margin:0}.starter-template .links ul li{list-style:none;display:inline;margin:0 10px}.starter-template .links ul li:first-child{margin-left:0}.starter-template .links ul li:last-child{margin-right:0}.starter-template .links ul li.current-version{color:#f2b7bd;font-weight:400}.starter-template .links ul li a{color:#fff}.starter-template .links ul li a:hover{text-decoration:underline}.starter-template .links ul li .icon-muted{color:#eb8b95;margin-right:5px}.starter-template .links ul li:hover .icon-muted{color:#fff}.starter-template .copyright{margin-top:10px;font-size:.9em;color:#f2b7bd;text-transform:lowercase;float:right;right:0}@media (max-width:1199px){.starter-template .content h1{font-size:45px}.starter-template .content h1 .smaller{font-size:30px}.starter-template .content .lead{font-size:20px}}@media (max-width:991px){.starter-template{margin-top:0}.starter-template .logo{margin:40px auto}.starter-template .content{margin-left:0;text-align:center}.starter-template .content h1{margin-bottom:20px}.starter-template .links{float:none;text-align:center;margin-top:60px}.starter-template .copyright{float:none;text-align:center}}@media (max-width:767px){.starter-template .content h1 .smaller{font-size:25px;display:block}.starter-template .content .lead{font-size:16px}.starter-template .links{margin-top:40px}.starter-template .links ul li{display:block;margin:0}.starter-template .links ul li .icon-muted{display:none}.starter-template .copyright{margin-top:20px}} |
New file |
| | |
| | | <!DOCTYPE html> |
| | | <html lang="${request.locale_name}"> |
| | | <head> |
| | | <meta charset="utf-8"> |
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge"> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| | | <meta name="description" content="pyramid web application"> |
| | | <meta name="author" content="Pylons Project"> |
| | | <link rel="shortcut icon" href="${request.static_url('{{package}}:static/pyramid-16x16.png')}"> |
| | | |
| | | <title>Starter Template for The Pyramid Web Framework</title> |
| | | |
| | | <!-- Bootstrap core CSS --> |
| | | <link href="//oss.maxcdn.com/libs/twitter-bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet"> |
| | | |
| | | <!-- Custom styles for this template --> |
| | | <link href="${request.static_url('{{package}}:static/theme.css')}" rel="stylesheet"> |
| | | |
| | | <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries --> |
| | | <!--[if lt IE 9]> |
| | | <script src="//oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> |
| | | <script src="//oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script> |
| | | <![endif]--> |
| | | </head> |
| | | |
| | | <body> |
| | | |
| | | <div class="starter-template"> |
| | | <div class="container"> |
| | | <div class="row"> |
| | | <div class="col-md-2"> |
| | | <img class="logo img-responsive" src="${request.static_url('{{package}}:static/pyramid.png')}" alt="pyramid web framework"> |
| | | </div> |
| | | <div class="col-md-10"> |
| | | <div class="content"> |
| | | <h1><span class="font-semi-bold">Pyramid</span> <span class="smaller">starter template</span></h1> |
| | | <p class="lead">Welcome to <span class="font-normal">${project}</span>, an application generated by<br>the <span class="font-normal">Pyramid Web Framework</span>.</p> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="row"> |
| | | <div class="links"> |
| | | <ul> |
| | | <li class="current-version">Currently v1.5</li> |
| | | <li><i class="glyphicon glyphicon-bookmark icon-muted"></i><a href="http://docs.pylonsproject.org">Docs</a></li> |
| | | <li><i class="glyphicon glyphicon-cog icon-muted"></i><a href="https://github.com/Pylons/pyramid">Github Project</a></li> |
| | | <li><i class="glyphicon glyphicon-globe icon-muted"></i><a href="irc://irc.freenode.net#pyramid">IRC Channel</a></li> |
| | | <li><i class="glyphicon glyphicon-home icon-muted"></i><a href="http://pylonsproject.org">Pylons Project</a></li> |
| | | </div> |
| | | </div> |
| | | <div class="row"> |
| | | <div class="copyright"> |
| | | Copyright © Pylons Project |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | |
| | | <!-- Bootstrap core JavaScript |
| | | ================================================== --> |
| | | <!-- Placed at the end of the document so the pages load faster --> |
| | | <script src="//oss.maxcdn.com/libs/jquery/1.10.2/jquery.min.js"></script> |
| | | <script src="//oss.maxcdn.com/libs/twitter-bootstrap/3.0.3/js/bootstrap.min.js"></script> |
| | | </body> |
| | | </html> |
| | |
| | | Parameters: |
| | | |
| | | ``serializer`` |
| | | An object with two methods: `loads`` and ``dumps``. The ``loads`` method |
| | | An object with two methods: ``loads`` and ``dumps``. The ``loads`` method |
| | | should accept bytes and return a Python object. The ``dumps`` method |
| | | should accept a Python object and return bytes. A ``ValueError`` should |
| | | be raised for malformed inputs. |
| | |
| | | while rendering a view. Default: ``True``. |
| | | |
| | | ``serializer`` |
| | | An object with two methods: `loads`` and ``dumps``. The ``loads`` method |
| | | An object with two methods: ``loads`` and ``dumps``. The ``loads`` method |
| | | should accept bytes and return a Python object. The ``dumps`` method |
| | | should accept a Python object and return bytes. A ``ValueError`` should |
| | | be raised for malformed inputs. If a serializer is not passed, the |
| | |
| | | request = testing.DummyRequest() |
| | | request.GET['callback'] = 'callback' |
| | | result = renderer({'a':'1'}, {'request':request}) |
| | | self.assertEqual(result, 'callback({"a": "1"})') |
| | | self.assertEqual(result, 'callback({"a": "1"});') |
| | | self.assertEqual(request.response.content_type, |
| | | 'application/javascript') |
| | | |
| | |
| | | .. warning:: if no ``elements`` arguments are specified, the resource |
| | | URL will end with a trailing slash. If any |
| | | ``elements`` are used, the generated URL will *not* |
| | | end in trailing a slash. |
| | | end in a trailing slash. |
| | | |
| | | If a keyword argument ``query`` is present, it will be used to compose |
| | | a query string that will be tacked on to the end of the URL. The value |
| | |
| | | |
| | | install_requires=[ |
| | | 'setuptools', |
| | | 'WebOb >= 1.3', # request.domain and CookieProfile |
| | | 'WebOb >= 1.3.1', # request.domain and CookieProfile |
| | | 'repoze.lru >= 0.4', # py3 compat |
| | | 'zope.interface >= 3.8.0', # has zope.interface.registry |
| | | 'zope.deprecation >= 3.5.0', # py3 compat |