Holger Frey
7 years ago
45 changed files with 1856 additions and 0 deletions
@ -0,0 +1,21 @@ |
|||||||
|
# http://editorconfig.org |
||||||
|
|
||||||
|
root = true |
||||||
|
|
||||||
|
[*] |
||||||
|
indent_style = space |
||||||
|
indent_size = 4 |
||||||
|
trim_trailing_whitespace = true |
||||||
|
insert_final_newline = true |
||||||
|
charset = utf-8 |
||||||
|
end_of_line = lf |
||||||
|
|
||||||
|
[*.bat] |
||||||
|
indent_style = tab |
||||||
|
end_of_line = crlf |
||||||
|
|
||||||
|
[LICENSE] |
||||||
|
insert_final_newline = false |
||||||
|
|
||||||
|
[Makefile] |
||||||
|
indent_style = tab |
@ -0,0 +1,15 @@ |
|||||||
|
* Ordr2 version: |
||||||
|
* Python version: |
||||||
|
* Operating System: |
||||||
|
|
||||||
|
### Description |
||||||
|
|
||||||
|
Describe what you were trying to get done. |
||||||
|
Tell us what happened, what went wrong, and what you expected to happen. |
||||||
|
|
||||||
|
### What I Did |
||||||
|
|
||||||
|
``` |
||||||
|
Paste the command(s) you ran and the output. |
||||||
|
If there was a crash, please include the traceback here. |
||||||
|
``` |
@ -0,0 +1,13 @@ |
|||||||
|
======= |
||||||
|
Credits |
||||||
|
======= |
||||||
|
|
||||||
|
Development Lead |
||||||
|
---------------- |
||||||
|
|
||||||
|
* Holger Frey <frey@imtek.de> |
||||||
|
|
||||||
|
Contributors |
||||||
|
------------ |
||||||
|
|
||||||
|
None yet. Why not be the first? |
@ -0,0 +1,114 @@ |
|||||||
|
.. highlight:: shell |
||||||
|
|
||||||
|
============ |
||||||
|
Contributing |
||||||
|
============ |
||||||
|
|
||||||
|
Contributions are welcome, and they are greatly appreciated! Every |
||||||
|
little bit helps, and credit will always be given. |
||||||
|
|
||||||
|
You can contribute in many ways: |
||||||
|
|
||||||
|
Types of Contributions |
||||||
|
---------------------- |
||||||
|
|
||||||
|
Report Bugs |
||||||
|
~~~~~~~~~~~ |
||||||
|
|
||||||
|
Report bugs at https://github.com/holgi/ordr2/issues. |
||||||
|
|
||||||
|
If you are reporting a bug, please include: |
||||||
|
|
||||||
|
* Your operating system name and version. |
||||||
|
* Any details about your local setup that might be helpful in troubleshooting. |
||||||
|
* Detailed steps to reproduce the bug. |
||||||
|
|
||||||
|
Fix Bugs |
||||||
|
~~~~~~~~ |
||||||
|
|
||||||
|
Look through the GitHub issues for bugs. Anything tagged with "bug" |
||||||
|
and "help wanted" is open to whoever wants to implement it. |
||||||
|
|
||||||
|
Implement Features |
||||||
|
~~~~~~~~~~~~~~~~~~ |
||||||
|
|
||||||
|
Look through the GitHub issues for features. Anything tagged with "enhancement" |
||||||
|
and "help wanted" is open to whoever wants to implement it. |
||||||
|
|
||||||
|
Write Documentation |
||||||
|
~~~~~~~~~~~~~~~~~~~ |
||||||
|
|
||||||
|
Ordr2 could always use more documentation, whether as part of the |
||||||
|
official Ordr2 docs, in docstrings, or even on the web in blog posts, |
||||||
|
articles, and such. |
||||||
|
|
||||||
|
Submit Feedback |
||||||
|
~~~~~~~~~~~~~~~ |
||||||
|
|
||||||
|
The best way to send feedback is to file an issue at https://github.com/holgi/ordr2/issues. |
||||||
|
|
||||||
|
If you are proposing a feature: |
||||||
|
|
||||||
|
* Explain in detail how it would work. |
||||||
|
* Keep the scope as narrow as possible, to make it easier to implement. |
||||||
|
* Remember that this is a volunteer-driven project, and that contributions |
||||||
|
are welcome :) |
||||||
|
|
||||||
|
Get Started! |
||||||
|
------------ |
||||||
|
|
||||||
|
Ready to contribute? Here's how to set up `ordr2` for local development. |
||||||
|
|
||||||
|
1. Fork the `ordr2` repo on GitHub. |
||||||
|
2. Clone your fork locally:: |
||||||
|
|
||||||
|
$ git clone git@github.com:your_name_here/ordr2.git |
||||||
|
|
||||||
|
3. Install your local copy into a virtualenv. Assuming you have virtualenvwrapper installed, this is how you set up your fork for local development:: |
||||||
|
|
||||||
|
$ mkvirtualenv ordr2 |
||||||
|
$ cd ordr2/ |
||||||
|
$ python setup.py develop |
||||||
|
|
||||||
|
4. Create a branch for local development:: |
||||||
|
|
||||||
|
$ git checkout -b name-of-your-bugfix-or-feature |
||||||
|
|
||||||
|
Now you can make your changes locally. |
||||||
|
|
||||||
|
5. When you're done making changes, check that your changes pass flake8 and the tests, including testing other Python versions with tox:: |
||||||
|
|
||||||
|
$ flake8 ordr2 tests |
||||||
|
$ python setup.py test or py.test |
||||||
|
$ tox |
||||||
|
|
||||||
|
To get flake8 and tox, just pip install them into your virtualenv. |
||||||
|
|
||||||
|
6. Commit your changes and push your branch to GitHub:: |
||||||
|
|
||||||
|
$ git add . |
||||||
|
$ git commit -m "Your detailed description of your changes." |
||||||
|
$ git push origin name-of-your-bugfix-or-feature |
||||||
|
|
||||||
|
7. Submit a pull request through the GitHub website. |
||||||
|
|
||||||
|
Pull Request Guidelines |
||||||
|
----------------------- |
||||||
|
|
||||||
|
Before you submit a pull request, check that it meets these guidelines: |
||||||
|
|
||||||
|
1. The pull request should include tests. |
||||||
|
2. If the pull request adds functionality, the docs should be updated. Put |
||||||
|
your new functionality into a function with a docstring, and add the |
||||||
|
feature to the list in README.rst. |
||||||
|
3. The pull request should work for Python 2.6, 2.7, 3.3, 3.4 and 3.5, and for PyPy. Check |
||||||
|
https://travis-ci.org/holgi/ordr2/pull_requests |
||||||
|
and make sure that the tests pass for all supported Python versions. |
||||||
|
|
||||||
|
Tips |
||||||
|
---- |
||||||
|
|
||||||
|
To run a subset of tests:: |
||||||
|
|
||||||
|
$ py.test tests.test_ordr2 |
||||||
|
|
@ -0,0 +1,8 @@ |
|||||||
|
======= |
||||||
|
History |
||||||
|
======= |
||||||
|
|
||||||
|
0.0.1 (2017-09-26) |
||||||
|
------------------ |
||||||
|
|
||||||
|
* First release on PyPI. |
@ -0,0 +1,31 @@ |
|||||||
|
|
||||||
|
BSD License |
||||||
|
|
||||||
|
Copyright (c) 2017, Holger Frey |
||||||
|
All rights reserved. |
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without modification, |
||||||
|
are permitted provided that the following conditions are met: |
||||||
|
|
||||||
|
* Redistributions of source code must retain the above copyright notice, this |
||||||
|
list of conditions and the following disclaimer. |
||||||
|
|
||||||
|
* Redistributions in binary form must reproduce the above copyright notice, this |
||||||
|
list of conditions and the following disclaimer in the documentation and/or |
||||||
|
other materials provided with the distribution. |
||||||
|
|
||||||
|
* Neither the name of the copyright holder nor the names of its |
||||||
|
contributors may be used to endorse or promote products derived from this |
||||||
|
software without specific prior written permission. |
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND |
||||||
|
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
||||||
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
||||||
|
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, |
||||||
|
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, |
||||||
|
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
||||||
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY |
||||||
|
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE |
||||||
|
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED |
||||||
|
OF THE POSSIBILITY OF SUCH DAMAGE. |
||||||
|
|
@ -0,0 +1,13 @@ |
|||||||
|
include AUTHORS.rst |
||||||
|
include CONTRIBUTING.rst |
||||||
|
include HISTORY.rst |
||||||
|
include LICENSE |
||||||
|
include README.rst |
||||||
|
include *.ini *.cfg |
||||||
|
|
||||||
|
recursive-include tests * |
||||||
|
recursive-exclude * __pycache__ |
||||||
|
recursive-exclude * *.py[co] |
||||||
|
|
||||||
|
recursive-include docs *.rst conf.py Makefile make.bat |
||||||
|
recursive-include ordr2 *.ico *.png *.css *.gif *.jpg *.pt *.txt *.mak *.mako *.js *.html *.xml *.jinja2 |
@ -0,0 +1,87 @@ |
|||||||
|
.PHONY: clean clean-test clean-pyc clean-build docs help |
||||||
|
.DEFAULT_GOAL := help |
||||||
|
define BROWSER_PYSCRIPT |
||||||
|
import os, webbrowser, sys |
||||||
|
try: |
||||||
|
from urllib import pathname2url |
||||||
|
except: |
||||||
|
from urllib.request import pathname2url |
||||||
|
|
||||||
|
webbrowser.open("file://" + pathname2url(os.path.abspath(sys.argv[1]))) |
||||||
|
endef |
||||||
|
export BROWSER_PYSCRIPT |
||||||
|
|
||||||
|
define PRINT_HELP_PYSCRIPT |
||||||
|
import re, sys |
||||||
|
|
||||||
|
for line in sys.stdin: |
||||||
|
match = re.match(r'^([a-zA-Z_-]+):.*?## (.*)$$', line) |
||||||
|
if match: |
||||||
|
target, help = match.groups() |
||||||
|
print("%-20s %s" % (target, help)) |
||||||
|
endef |
||||||
|
export PRINT_HELP_PYSCRIPT |
||||||
|
BROWSER := python -c "$$BROWSER_PYSCRIPT" |
||||||
|
|
||||||
|
help: |
||||||
|
@python -c "$$PRINT_HELP_PYSCRIPT" < $(MAKEFILE_LIST) |
||||||
|
|
||||||
|
clean: clean-build clean-pyc clean-test ## remove all build, test, coverage and Python artifacts
|
||||||
|
|
||||||
|
|
||||||
|
clean-build: ## remove build artifacts
|
||||||
|
rm -fr build/ |
||||||
|
rm -fr dist/ |
||||||
|
rm -fr .eggs/ |
||||||
|
find . -name '*.egg-info' -exec rm -fr {} + |
||||||
|
find . -name '*.egg' -exec rm -f {} + |
||||||
|
|
||||||
|
clean-pyc: ## remove Python file artifacts
|
||||||
|
find . -name '*.pyc' -exec rm -f {} + |
||||||
|
find . -name '*.pyo' -exec rm -f {} + |
||||||
|
find . -name '*~' -exec rm -f {} + |
||||||
|
find . -name '__pycache__' -exec rm -fr {} + |
||||||
|
|
||||||
|
clean-test: ## remove test and coverage artifacts
|
||||||
|
rm -fr .tox/ |
||||||
|
rm -f .coverage |
||||||
|
rm -fr htmlcov/ |
||||||
|
|
||||||
|
lint: ## check style with flake8
|
||||||
|
flake8 ordr2 tests |
||||||
|
|
||||||
|
test: ## run tests quickly with the default Python
|
||||||
|
py.test |
||||||
|
|
||||||
|
|
||||||
|
test-all: ## run tests on every Python version with tox
|
||||||
|
tox |
||||||
|
|
||||||
|
coverage: ## check code coverage quickly with the default Python
|
||||||
|
coverage run --source ordr2 -m pytest |
||||||
|
coverage report -m |
||||||
|
coverage html |
||||||
|
$(BROWSER) htmlcov/index.html |
||||||
|
|
||||||
|
docs: ## generate Sphinx HTML documentation, including API docs
|
||||||
|
rm -f docs/ordr2.rst |
||||||
|
rm -f docs/modules.rst |
||||||
|
sphinx-apidoc -o docs/ ordr2 |
||||||
|
$(MAKE) -C docs clean |
||||||
|
$(MAKE) -C docs html |
||||||
|
$(BROWSER) docs/_build/html/index.html |
||||||
|
|
||||||
|
servedocs: docs ## compile the docs watching for changes
|
||||||
|
watchmedo shell-command -p '*.rst' -c '$(MAKE) -C docs html' -R -D . |
||||||
|
|
||||||
|
release: clean ## package and upload a release
|
||||||
|
python setup.py sdist upload |
||||||
|
python setup.py bdist_wheel upload |
||||||
|
|
||||||
|
dist: clean ## builds source and wheel package
|
||||||
|
python setup.py sdist |
||||||
|
python setup.py bdist_wheel |
||||||
|
ls -l dist |
||||||
|
|
||||||
|
install: clean ## install the package to the active Python's site-packages
|
||||||
|
python setup.py install |
@ -0,0 +1,40 @@ |
|||||||
|
===== |
||||||
|
Ordr2 |
||||||
|
===== |
||||||
|
|
||||||
|
|
||||||
|
.. image:: https://img.shields.io/pypi/v/ordr2.svg |
||||||
|
:target: https://pypi.python.org/pypi/ordr2 |
||||||
|
|
||||||
|
.. image:: https://img.shields.io/travis/holgi/ordr2.svg |
||||||
|
:target: https://travis-ci.org/holgi/ordr2 |
||||||
|
|
||||||
|
.. image:: https://readthedocs.org/projects/ordr2/badge/?version=latest |
||||||
|
:target: https://ordr2.readthedocs.io/en/latest/?badge=latest |
||||||
|
:alt: Documentation Status |
||||||
|
|
||||||
|
.. image:: https://pyup.io/repos/github/holgi/ordr2/shield.svg |
||||||
|
:target: https://pyup.io/repos/github/holgi/ordr2/ |
||||||
|
:alt: Updates |
||||||
|
|
||||||
|
|
||||||
|
Ordering System for CPI |
||||||
|
|
||||||
|
|
||||||
|
* Free software: BSD license |
||||||
|
* Documentation: https://ordr2.readthedocs.io. |
||||||
|
|
||||||
|
|
||||||
|
Features |
||||||
|
-------- |
||||||
|
|
||||||
|
* TODO |
||||||
|
|
||||||
|
Credits |
||||||
|
--------- |
||||||
|
|
||||||
|
This package was created with Cookiecutter_ and the `audreyr/cookiecutter-pypackage`_ project template. |
||||||
|
|
||||||
|
.. _Cookiecutter: https://github.com/audreyr/cookiecutter |
||||||
|
.. _`audreyr/cookiecutter-pypackage`: https://github.com/audreyr/cookiecutter-pypackage |
||||||
|
|
@ -0,0 +1,69 @@ |
|||||||
|
### |
||||||
|
# app configuration |
||||||
|
# http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/environment.html |
||||||
|
### |
||||||
|
|
||||||
|
[app:main] |
||||||
|
use = egg:ordr2 |
||||||
|
|
||||||
|
pyramid.reload_templates = true |
||||||
|
pyramid.debug_authorization = false |
||||||
|
pyramid.debug_notfound = false |
||||||
|
pyramid.debug_routematch = false |
||||||
|
pyramid.default_locale_name = en |
||||||
|
pyramid.includes = |
||||||
|
pyramid_debugtoolbar |
||||||
|
|
||||||
|
sqlalchemy.url = sqlite:///%(here)s/ordr2.sqlite |
||||||
|
|
||||||
|
# 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 |
||||||
|
listen = 127.0.0.1:6543 [::1]:6543 |
||||||
|
|
||||||
|
### |
||||||
|
# logging configuration |
||||||
|
# http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/logging.html |
||||||
|
### |
||||||
|
|
||||||
|
[loggers] |
||||||
|
keys = root, ordr2, sqlalchemy |
||||||
|
|
||||||
|
[handlers] |
||||||
|
keys = console |
||||||
|
|
||||||
|
[formatters] |
||||||
|
keys = generic |
||||||
|
|
||||||
|
[logger_root] |
||||||
|
level = INFO |
||||||
|
handlers = console |
||||||
|
|
||||||
|
[logger_ordr2] |
||||||
|
level = DEBUG |
||||||
|
handlers = |
||||||
|
qualname = ordr2 |
||||||
|
|
||||||
|
[logger_sqlalchemy] |
||||||
|
level = INFO |
||||||
|
handlers = |
||||||
|
qualname = sqlalchemy.engine |
||||||
|
# "level = INFO" logs SQL queries. |
||||||
|
# "level = DEBUG" logs SQL queries and results. |
||||||
|
# "level = WARN" logs neither. (Recommended for production systems.) |
||||||
|
|
||||||
|
[handler_console] |
||||||
|
class = StreamHandler |
||||||
|
args = (sys.stderr,) |
||||||
|
level = NOTSET |
||||||
|
formatter = generic |
||||||
|
|
||||||
|
[formatter_generic] |
||||||
|
format = %(asctime)s %(levelname)-5.5s [%(name)s:%(lineno)s][%(threadName)s] %(message)s |
@ -0,0 +1,177 @@ |
|||||||
|
# Makefile for Sphinx documentation
|
||||||
|
#
|
||||||
|
|
||||||
|
# You can set these variables from the command line.
|
||||||
|
SPHINXOPTS = |
||||||
|
SPHINXBUILD = sphinx-build |
||||||
|
PAPER = |
||||||
|
BUILDDIR = _build |
||||||
|
|
||||||
|
# User-friendly check for sphinx-build
|
||||||
|
ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) |
||||||
|
$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) |
||||||
|
endif |
||||||
|
|
||||||
|
# Internal variables.
|
||||||
|
PAPEROPT_a4 = -D latex_paper_size=a4 |
||||||
|
PAPEROPT_letter = -D latex_paper_size=letter |
||||||
|
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . |
||||||
|
# the i18n builder cannot share the environment and doctrees with the others
|
||||||
|
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . |
||||||
|
|
||||||
|
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext |
||||||
|
|
||||||
|
help: |
||||||
|
@echo "Please use \`make <target>' where <target> is one of" |
||||||
|
@echo " html to make standalone HTML files" |
||||||
|
@echo " dirhtml to make HTML files named index.html in directories" |
||||||
|
@echo " singlehtml to make a single large HTML file" |
||||||
|
@echo " pickle to make pickle files" |
||||||
|
@echo " json to make JSON files" |
||||||
|
@echo " htmlhelp to make HTML files and a HTML help project" |
||||||
|
@echo " qthelp to make HTML files and a qthelp project" |
||||||
|
@echo " devhelp to make HTML files and a Devhelp project" |
||||||
|
@echo " epub to make an epub" |
||||||
|
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" |
||||||
|
@echo " latexpdf to make LaTeX files and run them through pdflatex" |
||||||
|
@echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" |
||||||
|
@echo " text to make text files" |
||||||
|
@echo " man to make manual pages" |
||||||
|
@echo " texinfo to make Texinfo files" |
||||||
|
@echo " info to make Texinfo files and run them through makeinfo" |
||||||
|
@echo " gettext to make PO message catalogs" |
||||||
|
@echo " changes to make an overview of all changed/added/deprecated items" |
||||||
|
@echo " xml to make Docutils-native XML files" |
||||||
|
@echo " pseudoxml to make pseudoxml-XML files for display purposes" |
||||||
|
@echo " linkcheck to check all external links for integrity" |
||||||
|
@echo " doctest to run all doctests embedded in the documentation (if enabled)" |
||||||
|
|
||||||
|
clean: |
||||||
|
rm -rf $(BUILDDIR)/* |
||||||
|
|
||||||
|
html: |
||||||
|
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html |
||||||
|
@echo |
||||||
|
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html." |
||||||
|
|
||||||
|
dirhtml: |
||||||
|
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml |
||||||
|
@echo |
||||||
|
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." |
||||||
|
|
||||||
|
singlehtml: |
||||||
|
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml |
||||||
|
@echo |
||||||
|
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." |
||||||
|
|
||||||
|
pickle: |
||||||
|
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle |
||||||
|
@echo |
||||||
|
@echo "Build finished; now you can process the pickle files." |
||||||
|
|
||||||
|
json: |
||||||
|
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json |
||||||
|
@echo |
||||||
|
@echo "Build finished; now you can process the JSON files." |
||||||
|
|
||||||
|
htmlhelp: |
||||||
|
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp |
||||||
|
@echo |
||||||
|
@echo "Build finished; now you can run HTML Help Workshop with the" \
|
||||||
|
".hhp project file in $(BUILDDIR)/htmlhelp." |
||||||
|
|
||||||
|
qthelp: |
||||||
|
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp |
||||||
|
@echo |
||||||
|
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
|
||||||
|
".qhcp project file in $(BUILDDIR)/qthelp, like this:" |
||||||
|
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/ordr2.qhcp" |
||||||
|
@echo "To view the help file:" |
||||||
|
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/ordr2.qhc" |
||||||
|
|
||||||
|
devhelp: |
||||||
|
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp |
||||||
|
@echo |
||||||
|
@echo "Build finished." |
||||||
|
@echo "To view the help file:" |
||||||
|
@echo "# mkdir -p $$HOME/.local/share/devhelp/ordr2" |
||||||
|
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/ordr2" |
||||||
|
@echo "# devhelp" |
||||||
|
|
||||||
|
epub: |
||||||
|
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub |
||||||
|
@echo |
||||||
|
@echo "Build finished. The epub file is in $(BUILDDIR)/epub." |
||||||
|
|
||||||
|
latex: |
||||||
|
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex |
||||||
|
@echo |
||||||
|
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." |
||||||
|
@echo "Run \`make' in that directory to run these through (pdf)latex" \
|
||||||
|
"(use \`make latexpdf' here to do that automatically)." |
||||||
|
|
||||||
|
latexpdf: |
||||||
|
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex |
||||||
|
@echo "Running LaTeX files through pdflatex..." |
||||||
|
$(MAKE) -C $(BUILDDIR)/latex all-pdf |
||||||
|
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." |
||||||
|
|
||||||
|
latexpdfja: |
||||||
|
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex |
||||||
|
@echo "Running LaTeX files through platex and dvipdfmx..." |
||||||
|
$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja |
||||||
|
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." |
||||||
|
|
||||||
|
text: |
||||||
|
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text |
||||||
|
@echo |
||||||
|
@echo "Build finished. The text files are in $(BUILDDIR)/text." |
||||||
|
|
||||||
|
man: |
||||||
|
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man |
||||||
|
@echo |
||||||
|
@echo "Build finished. The manual pages are in $(BUILDDIR)/man." |
||||||
|
|
||||||
|
texinfo: |
||||||
|
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo |
||||||
|
@echo |
||||||
|
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." |
||||||
|
@echo "Run \`make' in that directory to run these through makeinfo" \
|
||||||
|
"(use \`make info' here to do that automatically)." |
||||||
|
|
||||||
|
info: |
||||||
|
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo |
||||||
|
@echo "Running Texinfo files through makeinfo..." |
||||||
|
make -C $(BUILDDIR)/texinfo info |
||||||
|
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." |
||||||
|
|
||||||
|
gettext: |
||||||
|
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale |
||||||
|
@echo |
||||||
|
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." |
||||||
|
|
||||||
|
changes: |
||||||
|
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes |
||||||
|
@echo |
||||||
|
@echo "The overview file is in $(BUILDDIR)/changes." |
||||||
|
|
||||||
|
linkcheck: |
||||||
|
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck |
||||||
|
@echo |
||||||
|
@echo "Link check complete; look for any errors in the above output " \
|
||||||
|
"or in $(BUILDDIR)/linkcheck/output.txt." |
||||||
|
|
||||||
|
doctest: |
||||||
|
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest |
||||||
|
@echo "Testing of doctests in the sources finished, look at the " \
|
||||||
|
"results in $(BUILDDIR)/doctest/output.txt." |
||||||
|
|
||||||
|
xml: |
||||||
|
$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml |
||||||
|
@echo |
||||||
|
@echo "Build finished. The XML files are in $(BUILDDIR)/xml." |
||||||
|
|
||||||
|
pseudoxml: |
||||||
|
$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml |
||||||
|
@echo |
||||||
|
@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." |
@ -0,0 +1,275 @@ |
|||||||
|
#!/usr/bin/env python |
||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# |
||||||
|
# ordr2 documentation build configuration file, created by |
||||||
|
# sphinx-quickstart on Tue Jul 9 22:26:36 2013. |
||||||
|
# |
||||||
|
# This file is execfile()d with the current directory set to its |
||||||
|
# containing dir. |
||||||
|
# |
||||||
|
# Note that not all possible configuration values are present in this |
||||||
|
# autogenerated file. |
||||||
|
# |
||||||
|
# All configuration values have a default; values that are commented out |
||||||
|
# serve to show the default. |
||||||
|
|
||||||
|
import sys |
||||||
|
import os |
||||||
|
|
||||||
|
# If extensions (or modules to document with autodoc) are in another |
||||||
|
# directory, add these directories to sys.path here. If the directory is |
||||||
|
# relative to the documentation root, use os.path.abspath to make it |
||||||
|
# absolute, like shown here. |
||||||
|
#sys.path.insert(0, os.path.abspath('.')) |
||||||
|
|
||||||
|
# Get the project root dir, which is the parent dir of this |
||||||
|
cwd = os.getcwd() |
||||||
|
project_root = os.path.dirname(cwd) |
||||||
|
|
||||||
|
# Insert the project root dir as the first element in the PYTHONPATH. |
||||||
|
# This lets us ensure that the source package is imported, and that its |
||||||
|
# version is used. |
||||||
|
sys.path.insert(0, project_root) |
||||||
|
|
||||||
|
import ordr2 |
||||||
|
|
||||||
|
# -- General configuration --------------------------------------------- |
||||||
|
|
||||||
|
# If your documentation needs a minimal Sphinx version, state it here. |
||||||
|
#needs_sphinx = '1.0' |
||||||
|
|
||||||
|
# Add any Sphinx extension module names here, as strings. They can be |
||||||
|
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones. |
||||||
|
extensions = ['sphinx.ext.autodoc', 'sphinx.ext.viewcode'] |
||||||
|
|
||||||
|
# Add any paths that contain templates here, relative to this directory. |
||||||
|
templates_path = ['_templates'] |
||||||
|
|
||||||
|
# The suffix of source filenames. |
||||||
|
source_suffix = '.rst' |
||||||
|
|
||||||
|
# The encoding of source files. |
||||||
|
#source_encoding = 'utf-8-sig' |
||||||
|
|
||||||
|
# The master toctree document. |
||||||
|
master_doc = 'index' |
||||||
|
|
||||||
|
# General information about the project. |
||||||
|
project = u'Ordr2' |
||||||
|
copyright = u"2017, Holger Frey" |
||||||
|
|
||||||
|
# The version info for the project you're documenting, acts as replacement |
||||||
|
# for |version| and |release|, also used in various other places throughout |
||||||
|
# the built documents. |
||||||
|
# |
||||||
|
# The short X.Y version. |
||||||
|
version = ordr2.__version__ |
||||||
|
# The full version, including alpha/beta/rc tags. |
||||||
|
release = ordr2.__version__ |
||||||
|
|
||||||
|
# The language for content autogenerated by Sphinx. Refer to documentation |
||||||
|
# for a list of supported languages. |
||||||
|
#language = None |
||||||
|
|
||||||
|
# There are two options for replacing |today|: either, you set today to |
||||||
|
# some non-false value, then it is used: |
||||||
|
#today = '' |
||||||
|
# Else, today_fmt is used as the format for a strftime call. |
||||||
|
#today_fmt = '%B %d, %Y' |
||||||
|
|
||||||
|
# List of patterns, relative to source directory, that match files and |
||||||
|
# directories to ignore when looking for source files. |
||||||
|
exclude_patterns = ['_build'] |
||||||
|
|
||||||
|
# The reST default role (used for this markup: `text`) to use for all |
||||||
|
# documents. |
||||||
|
#default_role = None |
||||||
|
|
||||||
|
# If true, '()' will be appended to :func: etc. cross-reference text. |
||||||
|
#add_function_parentheses = True |
||||||
|
|
||||||
|
# If true, the current module name will be prepended to all description |
||||||
|
# unit titles (such as .. function::). |
||||||
|
#add_module_names = True |
||||||
|
|
||||||
|
# If true, sectionauthor and moduleauthor directives will be shown in the |
||||||
|
# output. They are ignored by default. |
||||||
|
#show_authors = False |
||||||
|
|
||||||
|
# The name of the Pygments (syntax highlighting) style to use. |
||||||
|
pygments_style = 'sphinx' |
||||||
|
|
||||||
|
# A list of ignored prefixes for module index sorting. |
||||||
|
#modindex_common_prefix = [] |
||||||
|
|
||||||
|
# If true, keep warnings as "system message" paragraphs in the built |
||||||
|
# documents. |
||||||
|
#keep_warnings = False |
||||||
|
|
||||||
|
|
||||||
|
# -- Options for HTML output ------------------------------------------- |
||||||
|
|
||||||
|
# The theme to use for HTML and HTML Help pages. See the documentation for |
||||||
|
# a list of builtin themes. |
||||||
|
html_theme = 'default' |
||||||
|
|
||||||
|
# Theme options are theme-specific and customize the look and feel of a |
||||||
|
# theme further. For a list of options available for each theme, see the |
||||||
|
# documentation. |
||||||
|
#html_theme_options = {} |
||||||
|
|
||||||
|
# Add any paths that contain custom themes here, relative to this directory. |
||||||
|
#html_theme_path = [] |
||||||
|
|
||||||
|
# The name for this set of Sphinx documents. If None, it defaults to |
||||||
|
# "<project> v<release> documentation". |
||||||
|
#html_title = None |
||||||
|
|
||||||
|
# A shorter title for the navigation bar. Default is the same as |
||||||
|
# html_title. |
||||||
|
#html_short_title = None |
||||||
|
|
||||||
|
# The name of an image file (relative to this directory) to place at the |
||||||
|
# top of the sidebar. |
||||||
|
#html_logo = None |
||||||
|
|
||||||
|
# The name of an image file (within the static path) to use as favicon |
||||||
|
# of the docs. This file should be a Windows icon file (.ico) being |
||||||
|
# 16x16 or 32x32 pixels large. |
||||||
|
#html_favicon = None |
||||||
|
|
||||||
|
# Add any paths that contain custom static files (such as style sheets) |
||||||
|
# here, relative to this directory. They are copied after the builtin |
||||||
|
# static files, so a file named "default.css" will overwrite the builtin |
||||||
|
# "default.css". |
||||||
|
html_static_path = ['_static'] |
||||||
|
|
||||||
|
# If not '', a 'Last updated on:' timestamp is inserted at every page |
||||||
|
# bottom, using the given strftime format. |
||||||
|
#html_last_updated_fmt = '%b %d, %Y' |
||||||
|
|
||||||
|
# If true, SmartyPants will be used to convert quotes and dashes to |
||||||
|
# typographically correct entities. |
||||||
|
#html_use_smartypants = True |
||||||
|
|
||||||
|
# Custom sidebar templates, maps document names to template names. |
||||||
|
#html_sidebars = {} |
||||||
|
|
||||||
|
# Additional templates that should be rendered to pages, maps page names |
||||||
|
# to template names. |
||||||
|
#html_additional_pages = {} |
||||||
|
|
||||||
|
# If false, no module index is generated. |
||||||
|
#html_domain_indices = True |
||||||
|
|
||||||
|
# If false, no index is generated. |
||||||
|
#html_use_index = True |
||||||
|
|
||||||
|
# If true, the index is split into individual pages for each letter. |
||||||
|
#html_split_index = False |
||||||
|
|
||||||
|
# If true, links to the reST sources are added to the pages. |
||||||
|
#html_show_sourcelink = True |
||||||
|
|
||||||
|
# If true, "Created using Sphinx" is shown in the HTML footer. |
||||||
|
# Default is True. |
||||||
|
#html_show_sphinx = True |
||||||
|
|
||||||
|
# If true, "(C) Copyright ..." is shown in the HTML footer. |
||||||
|
# Default is True. |
||||||
|
#html_show_copyright = True |
||||||
|
|
||||||
|
# If true, an OpenSearch description file will be output, and all pages |
||||||
|
# will contain a <link> tag referring to it. The value of this option |
||||||
|
# must be the base URL from which the finished HTML is served. |
||||||
|
#html_use_opensearch = '' |
||||||
|
|
||||||
|
# This is the file name suffix for HTML files (e.g. ".xhtml"). |
||||||
|
#html_file_suffix = None |
||||||
|
|
||||||
|
# Output file base name for HTML help builder. |
||||||
|
htmlhelp_basename = 'ordr2doc' |
||||||
|
|
||||||
|
|
||||||
|
# -- Options for LaTeX output ------------------------------------------ |
||||||
|
|
||||||
|
latex_elements = { |
||||||
|
# The paper size ('letterpaper' or 'a4paper'). |
||||||
|
#'papersize': 'letterpaper', |
||||||
|
|
||||||
|
# The font size ('10pt', '11pt' or '12pt'). |
||||||
|
#'pointsize': '10pt', |
||||||
|
|
||||||
|
# Additional stuff for the LaTeX preamble. |
||||||
|
#'preamble': '', |
||||||
|
} |
||||||
|
|
||||||
|
# Grouping the document tree into LaTeX files. List of tuples |
||||||
|
# (source start file, target name, title, author, documentclass |
||||||
|
# [howto/manual]). |
||||||
|
latex_documents = [ |
||||||
|
('index', 'ordr2.tex', |
||||||
|
u'Ordr2 Documentation', |
||||||
|
u'Holger Frey', 'manual'), |
||||||
|
] |
||||||
|
|
||||||
|
# The name of an image file (relative to this directory) to place at |
||||||
|
# the top of the title page. |
||||||
|
#latex_logo = None |
||||||
|
|
||||||
|
# For "manual" documents, if this is true, then toplevel headings |
||||||
|
# are parts, not chapters. |
||||||
|
#latex_use_parts = False |
||||||
|
|
||||||
|
# If true, show page references after internal links. |
||||||
|
#latex_show_pagerefs = False |
||||||
|
|
||||||
|
# If true, show URL addresses after external links. |
||||||
|
#latex_show_urls = False |
||||||
|
|
||||||
|
# Documents to append as an appendix to all manuals. |
||||||
|
#latex_appendices = [] |
||||||
|
|
||||||
|
# If false, no module index is generated. |
||||||
|
#latex_domain_indices = True |
||||||
|
|
||||||
|
|
||||||
|
# -- Options for manual page output ------------------------------------ |
||||||
|
|
||||||
|
# One entry per manual page. List of tuples |
||||||
|
# (source start file, name, description, authors, manual section). |
||||||
|
man_pages = [ |
||||||
|
('index', 'ordr2', |
||||||
|
u'Ordr2 Documentation', |
||||||
|
[u'Holger Frey'], 1) |
||||||
|
] |
||||||
|
|
||||||
|
# If true, show URL addresses after external links. |
||||||
|
#man_show_urls = False |
||||||
|
|
||||||
|
|
||||||
|
# -- Options for Texinfo output ---------------------------------------- |
||||||
|
|
||||||
|
# Grouping the document tree into Texinfo files. List of tuples |
||||||
|
# (source start file, target name, title, author, |
||||||
|
# dir menu entry, description, category) |
||||||
|
texinfo_documents = [ |
||||||
|
('index', 'ordr2', |
||||||
|
u'Ordr2 Documentation', |
||||||
|
u'Holger Frey', |
||||||
|
'ordr2', |
||||||
|
'One line description of project.', |
||||||
|
'Miscellaneous'), |
||||||
|
] |
||||||
|
|
||||||
|
# Documents to append as an appendix to all manuals. |
||||||
|
#texinfo_appendices = [] |
||||||
|
|
||||||
|
# If false, no module index is generated. |
||||||
|
#texinfo_domain_indices = True |
||||||
|
|
||||||
|
# How to display URL addresses: 'footnote', 'no', or 'inline'. |
||||||
|
#texinfo_show_urls = 'footnote' |
||||||
|
|
||||||
|
# If true, do not generate a @detailmenu in the "Top" node's menu. |
||||||
|
#texinfo_no_detailmenu = False |
@ -0,0 +1,22 @@ |
|||||||
|
Welcome to Ordr2's documentation! |
||||||
|
====================================== |
||||||
|
|
||||||
|
Contents: |
||||||
|
|
||||||
|
.. toctree:: |
||||||
|
:maxdepth: 2 |
||||||
|
|
||||||
|
readme |
||||||
|
installation |
||||||
|
usage |
||||||
|
modules |
||||||
|
contributing |
||||||
|
authors |
||||||
|
history |
||||||
|
|
||||||
|
Indices and tables |
||||||
|
================== |
||||||
|
|
||||||
|
* :ref:`genindex` |
||||||
|
* :ref:`modindex` |
||||||
|
* :ref:`search` |
@ -0,0 +1,51 @@ |
|||||||
|
.. highlight:: shell |
||||||
|
|
||||||
|
============ |
||||||
|
Installation |
||||||
|
============ |
||||||
|
|
||||||
|
|
||||||
|
Stable release |
||||||
|
-------------- |
||||||
|
|
||||||
|
To install Ordr2, run this command in your terminal: |
||||||
|
|
||||||
|
.. code-block:: console |
||||||
|
|
||||||
|
$ pip install ordr2 |
||||||
|
|
||||||
|
This is the preferred method to install Ordr2, as it will always install the most recent stable release. |
||||||
|
|
||||||
|
If you don't have `pip`_ installed, this `Python installation guide`_ can guide |
||||||
|
you through the process. |
||||||
|
|
||||||
|
.. _pip: https://pip.pypa.io |
||||||
|
.. _Python installation guide: http://docs.python-guide.org/en/latest/starting/installation/ |
||||||
|
|
||||||
|
|
||||||
|
From sources |
||||||
|
------------ |
||||||
|
|
||||||
|
The sources for Ordr2 can be downloaded from the `Github repo`_. |
||||||
|
|
||||||
|
You can either clone the public repository: |
||||||
|
|
||||||
|
.. code-block:: console |
||||||
|
|
||||||
|
$ git clone git://github.com/holgi/ordr2 |
||||||
|
|
||||||
|
Or download the `tarball`_: |
||||||
|
|
||||||
|
.. code-block:: console |
||||||
|
|
||||||
|
$ curl -OL https://github.com/holgi/ordr2/tarball/master |
||||||
|
|
||||||
|
Once you have a copy of the source, you can install it with: |
||||||
|
|
||||||
|
.. code-block:: console |
||||||
|
|
||||||
|
$ python setup.py install |
||||||
|
|
||||||
|
|
||||||
|
.. _Github repo: https://github.com/holgi/ordr2 |
||||||
|
.. _tarball: https://github.com/holgi/ordr2/tarball/master |
@ -0,0 +1,242 @@ |
|||||||
|
@ECHO OFF |
||||||
|
|
||||||
|
REM Command file for Sphinx documentation |
||||||
|
|
||||||
|
if "%SPHINXBUILD%" == "" ( |
||||||
|
set SPHINXBUILD=sphinx-build |
||||||
|
) |
||||||
|
set BUILDDIR=_build |
||||||
|
set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% . |
||||||
|
set I18NSPHINXOPTS=%SPHINXOPTS% . |
||||||
|
if NOT "%PAPER%" == "" ( |
||||||
|
set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% |
||||||
|
set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS% |
||||||
|
) |
||||||
|
|
||||||
|
if "%1" == "" goto help |
||||||
|
|
||||||
|
if "%1" == "help" ( |
||||||
|
:help |
||||||
|
echo.Please use `make ^<target^>` where ^<target^> is one of |
||||||
|
echo. html to make standalone HTML files |
||||||
|
echo. dirhtml to make HTML files named index.html in directories |
||||||
|
echo. singlehtml to make a single large HTML file |
||||||
|
echo. pickle to make pickle files |
||||||
|
echo. json to make JSON files |
||||||
|
echo. htmlhelp to make HTML files and a HTML help project |
||||||
|
echo. qthelp to make HTML files and a qthelp project |
||||||
|
echo. devhelp to make HTML files and a Devhelp project |
||||||
|
echo. epub to make an epub |
||||||
|
echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter |
||||||
|
echo. text to make text files |
||||||
|
echo. man to make manual pages |
||||||
|
echo. texinfo to make Texinfo files |
||||||
|
echo. gettext to make PO message catalogs |
||||||
|
echo. changes to make an overview over all changed/added/deprecated items |
||||||
|
echo. xml to make Docutils-native XML files |
||||||
|
echo. pseudoxml to make pseudoxml-XML files for display purposes |
||||||
|
echo. linkcheck to check all external links for integrity |
||||||
|
echo. doctest to run all doctests embedded in the documentation if enabled |
||||||
|
goto end |
||||||
|
) |
||||||
|
|
||||||
|
if "%1" == "clean" ( |
||||||
|
for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i |
||||||
|
del /q /s %BUILDDIR%\* |
||||||
|
goto end |
||||||
|
) |
||||||
|
|
||||||
|
|
||||||
|
%SPHINXBUILD% 2> nul |
||||||
|
if errorlevel 9009 ( |
||||||
|
echo. |
||||||
|
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx |
||||||
|
echo.installed, then set the SPHINXBUILD environment variable to point |
||||||
|
echo.to the full path of the 'sphinx-build' executable. Alternatively you |
||||||
|
echo.may add the Sphinx directory to PATH. |
||||||
|
echo. |
||||||
|
echo.If you don't have Sphinx installed, grab it from |
||||||
|
echo.http://sphinx-doc.org/ |
||||||
|
exit /b 1 |
||||||
|
) |
||||||
|
|
||||||
|
if "%1" == "html" ( |
||||||
|
%SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html |
||||||
|
if errorlevel 1 exit /b 1 |
||||||
|
echo. |
||||||
|
echo.Build finished. The HTML pages are in %BUILDDIR%/html. |
||||||
|
goto end |
||||||
|
) |
||||||
|
|
||||||
|
if "%1" == "dirhtml" ( |
||||||
|
%SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml |
||||||
|
if errorlevel 1 exit /b 1 |
||||||
|
echo. |
||||||
|
echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. |
||||||
|
goto end |
||||||
|
) |
||||||
|
|
||||||
|
if "%1" == "singlehtml" ( |
||||||
|
%SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml |
||||||
|
if errorlevel 1 exit /b 1 |
||||||
|
echo. |
||||||
|
echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. |
||||||
|
goto end |
||||||
|
) |
||||||
|
|
||||||
|
if "%1" == "pickle" ( |
||||||
|
%SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle |
||||||
|
if errorlevel 1 exit /b 1 |
||||||
|
echo. |
||||||
|
echo.Build finished; now you can process the pickle files. |
||||||
|
goto end |
||||||
|
) |
||||||
|
|
||||||
|
if "%1" == "json" ( |
||||||
|
%SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json |
||||||
|
if errorlevel 1 exit /b 1 |
||||||
|
echo. |
||||||
|
echo.Build finished; now you can process the JSON files. |
||||||
|
goto end |
||||||
|
) |
||||||
|
|
||||||
|
if "%1" == "htmlhelp" ( |
||||||
|
%SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp |
||||||
|
if errorlevel 1 exit /b 1 |
||||||
|
echo. |
||||||
|
echo.Build finished; now you can run HTML Help Workshop with the ^ |
||||||
|
.hhp project file in %BUILDDIR%/htmlhelp. |
||||||
|
goto end |
||||||
|
) |
||||||
|
|
||||||
|
if "%1" == "qthelp" ( |
||||||
|
%SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp |
||||||
|
if errorlevel 1 exit /b 1 |
||||||
|
echo. |
||||||
|
echo.Build finished; now you can run "qcollectiongenerator" with the ^ |
||||||
|
.qhcp project file in %BUILDDIR%/qthelp, like this: |
||||||
|
echo.^> qcollectiongenerator %BUILDDIR%\qthelp\ordr2.qhcp |
||||||
|
echo.To view the help file: |
||||||
|
echo.^> assistant -collectionFile %BUILDDIR%\qthelp\ordr2.ghc |
||||||
|
goto end |
||||||
|
) |
||||||
|
|
||||||
|
if "%1" == "devhelp" ( |
||||||
|
%SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp |
||||||
|
if errorlevel 1 exit /b 1 |
||||||
|
echo. |
||||||
|
echo.Build finished. |
||||||
|
goto end |
||||||
|
) |
||||||
|
|
||||||
|
if "%1" == "epub" ( |
||||||
|
%SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub |
||||||
|
if errorlevel 1 exit /b 1 |
||||||
|
echo. |
||||||
|
echo.Build finished. The epub file is in %BUILDDIR%/epub. |
||||||
|
goto end |
||||||
|
) |
||||||
|
|
||||||
|
if "%1" == "latex" ( |
||||||
|
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex |
||||||
|
if errorlevel 1 exit /b 1 |
||||||
|
echo. |
||||||
|
echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. |
||||||
|
goto end |
||||||
|
) |
||||||
|
|
||||||
|
if "%1" == "latexpdf" ( |
||||||
|
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex |
||||||
|
cd %BUILDDIR%/latex |
||||||
|
make all-pdf |
||||||
|
cd %BUILDDIR%/.. |
||||||
|
echo. |
||||||
|
echo.Build finished; the PDF files are in %BUILDDIR%/latex. |
||||||
|
goto end |
||||||
|
) |
||||||
|
|
||||||
|
if "%1" == "latexpdfja" ( |
||||||
|
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex |
||||||
|
cd %BUILDDIR%/latex |
||||||
|
make all-pdf-ja |
||||||
|
cd %BUILDDIR%/.. |
||||||
|
echo. |
||||||
|
echo.Build finished; the PDF files are in %BUILDDIR%/latex. |
||||||
|
goto end |
||||||
|
) |
||||||
|
|
||||||
|
if "%1" == "text" ( |
||||||
|
%SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text |
||||||
|
if errorlevel 1 exit /b 1 |
||||||
|
echo. |
||||||
|
echo.Build finished. The text files are in %BUILDDIR%/text. |
||||||
|
goto end |
||||||
|
) |
||||||
|
|
||||||
|
if "%1" == "man" ( |
||||||
|
%SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man |
||||||
|
if errorlevel 1 exit /b 1 |
||||||
|
echo. |
||||||
|
echo.Build finished. The manual pages are in %BUILDDIR%/man. |
||||||
|
goto end |
||||||
|
) |
||||||
|
|
||||||
|
if "%1" == "texinfo" ( |
||||||
|
%SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo |
||||||
|
if errorlevel 1 exit /b 1 |
||||||
|
echo. |
||||||
|
echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo. |
||||||
|
goto end |
||||||
|
) |
||||||
|
|
||||||
|
if "%1" == "gettext" ( |
||||||
|
%SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale |
||||||
|
if errorlevel 1 exit /b 1 |
||||||
|
echo. |
||||||
|
echo.Build finished. The message catalogs are in %BUILDDIR%/locale. |
||||||
|
goto end |
||||||
|
) |
||||||
|
|
||||||
|
if "%1" == "changes" ( |
||||||
|
%SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes |
||||||
|
if errorlevel 1 exit /b 1 |
||||||
|
echo. |
||||||
|
echo.The overview file is in %BUILDDIR%/changes. |
||||||
|
goto end |
||||||
|
) |
||||||
|
|
||||||
|
if "%1" == "linkcheck" ( |
||||||
|
%SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck |
||||||
|
if errorlevel 1 exit /b 1 |
||||||
|
echo. |
||||||
|
echo.Link check complete; look for any errors in the above output ^ |
||||||
|
or in %BUILDDIR%/linkcheck/output.txt. |
||||||
|
goto end |
||||||
|
) |
||||||
|
|
||||||
|
if "%1" == "doctest" ( |
||||||
|
%SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest |
||||||
|
if errorlevel 1 exit /b 1 |
||||||
|
echo. |
||||||
|
echo.Testing of doctests in the sources finished, look at the ^ |
||||||
|
results in %BUILDDIR%/doctest/output.txt. |
||||||
|
goto end |
||||||
|
) |
||||||
|
|
||||||
|
if "%1" == "xml" ( |
||||||
|
%SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml |
||||||
|
if errorlevel 1 exit /b 1 |
||||||
|
echo. |
||||||
|
echo.Build finished. The XML files are in %BUILDDIR%/xml. |
||||||
|
goto end |
||||||
|
) |
||||||
|
|
||||||
|
if "%1" == "pseudoxml" ( |
||||||
|
%SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml |
||||||
|
if errorlevel 1 exit /b 1 |
||||||
|
echo. |
||||||
|
echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml. |
||||||
|
goto end |
||||||
|
) |
||||||
|
|
||||||
|
:end |
@ -0,0 +1,7 @@ |
|||||||
|
===== |
||||||
|
Usage |
||||||
|
===== |
||||||
|
|
||||||
|
To use Ordr2 in a project:: |
||||||
|
|
||||||
|
import ordr2 |
@ -0,0 +1,21 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
|
||||||
|
''' Top-level package for Ordr2. ''' |
||||||
|
|
||||||
|
__author__ = '''Holger Frey''' |
||||||
|
__email__ = 'frey@imtek.de' |
||||||
|
__version__ = '0.0.1' |
||||||
|
|
||||||
|
|
||||||
|
from pyramid.config import Configurator |
||||||
|
|
||||||
|
|
||||||
|
def main(global_config, **settings): |
||||||
|
""" This function returns a Pyramid WSGI application. |
||||||
|
""" |
||||||
|
config = Configurator(settings=settings) |
||||||
|
config.include('pyramid_jinja2') |
||||||
|
config.include('.models') |
||||||
|
config.include('.routes') |
||||||
|
config.scan() |
||||||
|
return config.make_wsgi_app() |
@ -0,0 +1,73 @@ |
|||||||
|
from sqlalchemy import engine_from_config |
||||||
|
from sqlalchemy.orm import sessionmaker |
||||||
|
from sqlalchemy.orm import configure_mappers |
||||||
|
import zope.sqlalchemy |
||||||
|
|
||||||
|
# import or define all models here to ensure they are attached to the |
||||||
|
# Base.metadata prior to any initialization routines |
||||||
|
from .mymodel import MyModel # flake8: noqa |
||||||
|
|
||||||
|
# run configure_mappers after defining all of the models to ensure |
||||||
|
# all relationships can be setup |
||||||
|
configure_mappers() |
||||||
|
|
||||||
|
|
||||||
|
def get_engine(settings, prefix='sqlalchemy.'): |
||||||
|
return engine_from_config(settings, prefix) |
||||||
|
|
||||||
|
|
||||||
|
def get_session_factory(engine): |
||||||
|
factory = sessionmaker() |
||||||
|
factory.configure(bind=engine) |
||||||
|
return factory |
||||||
|
|
||||||
|
|
||||||
|
def get_tm_session(session_factory, transaction_manager): |
||||||
|
""" |
||||||
|
Get a ``sqlalchemy.orm.Session`` instance backed by a transaction. |
||||||
|
|
||||||
|
This function will hook the session to the transaction manager which |
||||||
|
will take care of committing any changes. |
||||||
|
|
||||||
|
- When using pyramid_tm it will automatically be committed or aborted |
||||||
|
depending on whether an exception is raised. |
||||||
|
|
||||||
|
- When using scripts you should wrap the session in a manager yourself. |
||||||
|
For example:: |
||||||
|
|
||||||
|
import transaction |
||||||
|
|
||||||
|
engine = get_engine(settings) |
||||||
|
session_factory = get_session_factory(engine) |
||||||
|
with transaction.manager: |
||||||
|
dbsession = get_tm_session(session_factory, transaction.manager) |
||||||
|
|
||||||
|
""" |
||||||
|
dbsession = session_factory() |
||||||
|
zope.sqlalchemy.register( |
||||||
|
dbsession, transaction_manager=transaction_manager) |
||||||
|
return dbsession |
||||||
|
|
||||||
|
|
||||||
|
def includeme(config): |
||||||
|
""" |
||||||
|
Initialize the model for a Pyramid app. |
||||||
|
|
||||||
|
Activate this setup using ``config.include('ordr2.models')``. |
||||||
|
|
||||||
|
""" |
||||||
|
settings = config.get_settings() |
||||||
|
|
||||||
|
# use pyramid_tm to hook the transaction lifecycle to the request |
||||||
|
config.include('pyramid_tm') |
||||||
|
|
||||||
|
session_factory = get_session_factory(get_engine(settings)) |
||||||
|
config.registry['dbsession_factory'] = session_factory |
||||||
|
|
||||||
|
# make request.dbsession available for use in Pyramid |
||||||
|
config.add_request_method( |
||||||
|
# r.tm is the transaction manager used by pyramid_tm |
||||||
|
lambda r: get_tm_session(session_factory, r.tm), |
||||||
|
'dbsession', |
||||||
|
reify=True |
||||||
|
) |
@ -0,0 +1,16 @@ |
|||||||
|
from sqlalchemy.ext.declarative import declarative_base |
||||||
|
from sqlalchemy.schema import MetaData |
||||||
|
|
||||||
|
# Recommended naming convention used by Alembic, as various different database |
||||||
|
# providers will autogenerate vastly different names making migrations more |
||||||
|
# difficult. See: http://alembic.zzzcomputing.com/en/latest/naming.html |
||||||
|
NAMING_CONVENTION = { |
||||||
|
"ix": 'ix_%(column_0_label)s', |
||||||
|
"uq": "uq_%(table_name)s_%(column_0_name)s", |
||||||
|
"ck": "ck_%(table_name)s_%(constraint_name)s", |
||||||
|
"fk": "fk_%(table_name)s_%(column_0_name)s_%(referred_table_name)s", |
||||||
|
"pk": "pk_%(table_name)s" |
||||||
|
} |
||||||
|
|
||||||
|
metadata = MetaData(naming_convention=NAMING_CONVENTION) |
||||||
|
Base = declarative_base(metadata=metadata) |
@ -0,0 +1,18 @@ |
|||||||
|
from sqlalchemy import ( |
||||||
|
Column, |
||||||
|
Index, |
||||||
|
Integer, |
||||||
|
Text, |
||||||
|
) |
||||||
|
|
||||||
|
from .meta import Base |
||||||
|
|
||||||
|
|
||||||
|
class MyModel(Base): |
||||||
|
__tablename__ = 'models' |
||||||
|
id = Column(Integer, primary_key=True) |
||||||
|
name = Column(Text) |
||||||
|
value = Column(Integer) |
||||||
|
|
||||||
|
|
||||||
|
Index('my_index', MyModel.name, unique=True, mysql_length=255) |
@ -0,0 +1,3 @@ |
|||||||
|
def includeme(config): |
||||||
|
config.add_static_view('static', 'static', cache_max_age=3600) |
||||||
|
config.add_route('home', '/') |
@ -0,0 +1,45 @@ |
|||||||
|
import os |
||||||
|
import sys |
||||||
|
import transaction |
||||||
|
|
||||||
|
from pyramid.paster import ( |
||||||
|
get_appsettings, |
||||||
|
setup_logging, |
||||||
|
) |
||||||
|
|
||||||
|
from pyramid.scripts.common import parse_vars |
||||||
|
|
||||||
|
from ..models.meta import Base |
||||||
|
from ..models import ( |
||||||
|
get_engine, |
||||||
|
get_session_factory, |
||||||
|
get_tm_session, |
||||||
|
) |
||||||
|
from ..models import MyModel |
||||||
|
|
||||||
|
|
||||||
|
def usage(argv): |
||||||
|
cmd = os.path.basename(argv[0]) |
||||||
|
print('usage: %s <config_uri> [var=value]\n' |
||||||
|
'(example: "%s development.ini")' % (cmd, cmd)) |
||||||
|
sys.exit(1) |
||||||
|
|
||||||
|
|
||||||
|
def main(argv=sys.argv): |
||||||
|
if len(argv) < 2: |
||||||
|
usage(argv) |
||||||
|
config_uri = argv[1] |
||||||
|
options = parse_vars(argv[2:]) |
||||||
|
setup_logging(config_uri) |
||||||
|
settings = get_appsettings(config_uri, options=options) |
||||||
|
|
||||||
|
engine = get_engine(settings) |
||||||
|
Base.metadata.create_all(engine) |
||||||
|
|
||||||
|
session_factory = get_session_factory(engine) |
||||||
|
|
||||||
|
with transaction.manager: |
||||||
|
dbsession = get_tm_session(session_factory, transaction.manager) |
||||||
|
|
||||||
|
model = MyModel(name='one', value=1) |
||||||
|
dbsession.add(model) |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 13 KiB |
@ -0,0 +1,154 @@ |
|||||||
|
@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, a { |
||||||
|
color: #f2b7bd; |
||||||
|
text-decoration: underline; |
||||||
|
} |
||||||
|
.starter-template .links ul li a:hover, a:hover { |
||||||
|
color: #ffffff; |
||||||
|
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; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,8 @@ |
|||||||
|
{% extends "layout.jinja2" %} |
||||||
|
|
||||||
|
{% block content %} |
||||||
|
<div class="content"> |
||||||
|
<h1><span class="font-semi-bold">Pyramid</span> <span class="smaller">Alchemy scaffold</span></h1> |
||||||
|
<p class="lead"><span class="font-semi-bold">404</span> Page Not Found</p> |
||||||
|
</div> |
||||||
|
{% endblock content %} |
@ -0,0 +1,64 @@ |
|||||||
|
<!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('ordr2:static/pyramid-16x16.png')}}"> |
||||||
|
|
||||||
|
<title>Cookiecutter Alchemy project 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 scaffold --> |
||||||
|
<link href="{{request.static_url('ordr2: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('ordr2:static/pyramid.png') }}" alt="pyramid web framework"> |
||||||
|
</div> |
||||||
|
<div class="col-md-10"> |
||||||
|
{% block content %} |
||||||
|
<p>No content</p> |
||||||
|
{% endblock content %} |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="row"> |
||||||
|
<div class="links"> |
||||||
|
<ul> |
||||||
|
<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="https://webchat.freenode.net/?channels=pyramid">IRC Channel</a></li> |
||||||
|
<li><i class="glyphicon glyphicon-home icon-muted"></i><a href="http://pylonsproject.org">Pylons Project</a></li> |
||||||
|
</ul> |
||||||
|
</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> |
@ -0,0 +1,8 @@ |
|||||||
|
{% extends "layout.jinja2" %} |
||||||
|
|
||||||
|
{% block content %} |
||||||
|
<div class="content"> |
||||||
|
<h1><span class="font-semi-bold">Pyramid</span> <span class="smaller">Alchemy project</span></h1> |
||||||
|
<p class="lead">Welcome to <span class="font-normal">Ordr2</span>, a Pyramid application generated by<br><span class="font-normal">Cookiecutter</span>.</p> |
||||||
|
</div> |
||||||
|
{% endblock content %} |
@ -0,0 +1,33 @@ |
|||||||
|
from pyramid.response import Response |
||||||
|
from pyramid.view import view_config |
||||||
|
|
||||||
|
from sqlalchemy.exc import DBAPIError |
||||||
|
|
||||||
|
from ..models import MyModel |
||||||
|
|
||||||
|
|
||||||
|
@view_config(route_name='home', renderer='../templates/mytemplate.jinja2') |
||||||
|
def my_view(request): |
||||||
|
try: |
||||||
|
query = request.dbsession.query(MyModel) |
||||||
|
one = query.filter(MyModel.name == 'one').first() |
||||||
|
except DBAPIError: |
||||||
|
return Response(db_err_msg, content_type='text/plain', status=500) |
||||||
|
return {'one': one, 'project': 'Ordr2'} |
||||||
|
|
||||||
|
|
||||||
|
db_err_msg = """\ |
||||||
|
Pyramid is having a problem using your SQL database. The problem |
||||||
|
might be caused by one of the following things: |
||||||
|
|
||||||
|
1. You may need to run the "initialize_ordr2_db" script |
||||||
|
to initialize your database tables. Check your virtual |
||||||
|
environment's "bin" directory for this script and try to run it. |
||||||
|
|
||||||
|
2. Your database server may not be running. Check that the |
||||||
|
database server referred to by the "sqlalchemy.url" setting in |
||||||
|
your "development.ini" file is running. |
||||||
|
|
||||||
|
After you fix the problem, please restart the Pyramid application to |
||||||
|
try it again. |
||||||
|
""" |
@ -0,0 +1,7 @@ |
|||||||
|
from pyramid.view import notfound_view_config |
||||||
|
|
||||||
|
|
||||||
|
@notfound_view_config(renderer='../templates/404.jinja2') |
||||||
|
def notfound_view(request): |
||||||
|
request.response.status = 404 |
||||||
|
return {} |
@ -0,0 +1,63 @@ |
|||||||
|
### |
||||||
|
# app configuration |
||||||
|
# http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/environment.html |
||||||
|
### |
||||||
|
|
||||||
|
[app:main] |
||||||
|
use = egg:ordr2 |
||||||
|
|
||||||
|
pyramid.reload_templates = false |
||||||
|
pyramid.debug_authorization = false |
||||||
|
pyramid.debug_notfound = false |
||||||
|
pyramid.debug_routematch = false |
||||||
|
pyramid.default_locale_name = en |
||||||
|
|
||||||
|
sqlalchemy.url = sqlite:///%(here)s/ordr2.sqlite |
||||||
|
|
||||||
|
### |
||||||
|
# wsgi server configuration |
||||||
|
### |
||||||
|
|
||||||
|
[server:main] |
||||||
|
use = egg:waitress#main |
||||||
|
listen = *:6543 |
||||||
|
|
||||||
|
### |
||||||
|
# logging configuration |
||||||
|
# http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/logging.html |
||||||
|
### |
||||||
|
|
||||||
|
[loggers] |
||||||
|
keys = root, ordr2, sqlalchemy |
||||||
|
|
||||||
|
[handlers] |
||||||
|
keys = console |
||||||
|
|
||||||
|
[formatters] |
||||||
|
keys = generic |
||||||
|
|
||||||
|
[logger_root] |
||||||
|
level = WARN |
||||||
|
handlers = console |
||||||
|
|
||||||
|
[logger_ordr2] |
||||||
|
level = WARN |
||||||
|
handlers = |
||||||
|
qualname = ordr2 |
||||||
|
|
||||||
|
[logger_sqlalchemy] |
||||||
|
level = WARN |
||||||
|
handlers = |
||||||
|
qualname = sqlalchemy.engine |
||||||
|
# "level = INFO" logs SQL queries. |
||||||
|
# "level = DEBUG" logs SQL queries and results. |
||||||
|
# "level = WARN" logs neither. (Recommended for production systems.) |
||||||
|
|
||||||
|
[handler_console] |
||||||
|
class = StreamHandler |
||||||
|
args = (sys.stderr,) |
||||||
|
level = NOTSET |
||||||
|
formatter = generic |
||||||
|
|
||||||
|
[formatter_generic] |
||||||
|
format = %(asctime)s %(levelname)-5.5s [%(name)s:%(lineno)s][%(threadName)s] %(message)s |
@ -0,0 +1,11 @@ |
|||||||
|
pip==8.1.2 |
||||||
|
bumpversion==0.5.3 |
||||||
|
wheel==0.29.0 |
||||||
|
watchdog==0.8.3 |
||||||
|
flake8==2.6.0 |
||||||
|
tox==2.3.1 |
||||||
|
coverage==4.1 |
||||||
|
Sphinx==1.4.8 |
||||||
|
|
||||||
|
pytest==2.9.2 |
||||||
|
pytest-runner==2.11.1 |
@ -0,0 +1,22 @@ |
|||||||
|
[bumpversion] |
||||||
|
current_version = 0.0.1 |
||||||
|
commit = True |
||||||
|
tag = True |
||||||
|
|
||||||
|
[bumpversion:file:setup.py] |
||||||
|
search = version='{current_version}' |
||||||
|
replace = version='{new_version}' |
||||||
|
|
||||||
|
[bumpversion:file:ordr2/__init__.py] |
||||||
|
search = __version__ = '{current_version}' |
||||||
|
replace = __version__ = '{new_version}' |
||||||
|
|
||||||
|
[bdist_wheel] |
||||||
|
universal = 1 |
||||||
|
|
||||||
|
[flake8] |
||||||
|
exclude = docs |
||||||
|
|
||||||
|
[aliases] |
||||||
|
test = pytest |
||||||
|
# Define setup.py command aliases here |
@ -0,0 +1,86 @@ |
|||||||
|
#!/usr/bin/env python |
||||||
|
# -*- coding: utf-8 -*- |
||||||
|
|
||||||
|
''' The setup script. ''' |
||||||
|
|
||||||
|
from setuptools import setup, find_packages |
||||||
|
|
||||||
|
with open('README.rst') as readme_file: |
||||||
|
readme = readme_file.read() |
||||||
|
|
||||||
|
with open('HISTORY.rst') as history_file: |
||||||
|
history = history_file.read() |
||||||
|
|
||||||
|
requirements = [ |
||||||
|
'pyramid', |
||||||
|
'pyramid_jinja2', |
||||||
|
'pyramid_debugtoolbar', |
||||||
|
'pyramid_tm', |
||||||
|
'SQLAlchemy', |
||||||
|
'transaction', |
||||||
|
'zope.sqlalchemy', |
||||||
|
'waitress', |
||||||
|
] |
||||||
|
|
||||||
|
setup_requirements = [ |
||||||
|
'pytest-runner', |
||||||
|
# TODO(holgi): put setup requirements (distutils extensions, etc.) here |
||||||
|
] |
||||||
|
|
||||||
|
test_requirements = [ |
||||||
|
'WebTest >= 1.3.1', # py3 compat |
||||||
|
'pytest', |
||||||
|
'pytest-cov', |
||||||
|
# TODO: put package test requirements here |
||||||
|
] |
||||||
|
|
||||||
|
setup( |
||||||
|
name='ordr2', |
||||||
|
|
||||||
|
version='0.0.1', |
||||||
|
|
||||||
|
description='Ordering System for CPI', |
||||||
|
long_description=readme + '\n\n' + history, |
||||||
|
|
||||||
|
author='Holger Frey', |
||||||
|
author_email='frey@imtek.de', |
||||||
|
url='https://github.com/holgi/ordr2', |
||||||
|
|
||||||
|
packages=find_packages(include=['ordr2']), |
||||||
|
|
||||||
|
include_package_data=True, |
||||||
|
install_requires=requirements, |
||||||
|
license='BSD license', |
||||||
|
|
||||||
|
zip_safe=False, |
||||||
|
|
||||||
|
keywords='ordr2 web pyramid pylons', |
||||||
|
|
||||||
|
# see https://pypi.python.org/pypi?%3Aaction=list_classifiers |
||||||
|
classifiers=[ |
||||||
|
'Development Status :: 2 - Pre-Alpha', |
||||||
|
'Intended Audience :: Developers', |
||||||
|
'License :: OSI Approved :: BSD License', |
||||||
|
'Natural Language :: English', |
||||||
|
'Programming Language :: Python :: 3', |
||||||
|
'Programming Language :: Python :: 3.4', |
||||||
|
'Programming Language :: Python :: 3.5', |
||||||
|
'Programming Language :: Python :: 3.6', |
||||||
|
'Framework :: Pyramid', |
||||||
|
'Topic :: Internet :: WWW/HTTP', |
||||||
|
'Topic :: Internet :: WWW/HTTP :: WSGI :: Application', |
||||||
|
], |
||||||
|
|
||||||
|
test_suite='tests', |
||||||
|
tests_require=test_requirements, |
||||||
|
|
||||||
|
setup_requires=setup_requirements, |
||||||
|
entry_points={ |
||||||
|
'paste.app_factory': [ |
||||||
|
'main = ordr2:main', |
||||||
|
], |
||||||
|
'console_scripts': [ |
||||||
|
'initialize_ordr2_db = ordr2.scripts.initializedb:main', |
||||||
|
], |
||||||
|
}, |
||||||
|
) |
@ -0,0 +1,3 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
|
||||||
|
''' Unit test package for ordr2. ''' |
@ -0,0 +1,25 @@ |
|||||||
|
#!/usr/bin/env python |
||||||
|
# -*- coding: utf-8 -*- |
||||||
|
|
||||||
|
''' Tests for `ordr2` package. ''' |
||||||
|
|
||||||
|
import pytest |
||||||
|
|
||||||
|
|
||||||
|
import ordr2 |
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture |
||||||
|
def response(): |
||||||
|
''' Sample pytest fixture. |
||||||
|
|
||||||
|
See more at: http://doc.pytest.org/en/latest/fixture.html |
||||||
|
''' |
||||||
|
# import requests |
||||||
|
# return requests.get('https://github.com/audreyr/cookiecutter-pypackage') |
||||||
|
|
||||||
|
|
||||||
|
def test_content(response): |
||||||
|
''' Sample pytest test function with the pytest fixture as an argument. ''' |
||||||
|
# from bs4 import BeautifulSoup |
||||||
|
# assert 'GitHub' in BeautifulSoup(response.content).title.string |
Reference in new issue