From 66cf8239fc4606fcb1a8d4d1910ae254df163cea Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Sat, 27 Apr 2019 15:44:46 +1000 Subject: [PATCH 1/9] Add initial requirements for documentation --- Makefile | 17 ++++++++++------- docs/requirements.txt | 1 + 2 files changed, 11 insertions(+), 7 deletions(-) create mode 100644 docs/requirements.txt diff --git a/Makefile b/Makefile index 686b188b3c..7c066a2c95 100644 --- a/Makefile +++ b/Makefile @@ -7,13 +7,6 @@ clean: rm -rf .tox rm -f .coverage -style: - flake8 InvenTree - -test: - python InvenTree/manage.py check - python InvenTree/manage.py test build company part stock - migrate: python InvenTree/manage.py makemigrations company python InvenTree/manage.py makemigrations part @@ -28,10 +21,20 @@ install: setup: install migrate +style: + flake8 InvenTree + +test: + python InvenTree/manage.py check + python InvenTree/manage.py test build company part stock + coverage: python InvenTree/manage.py check coverage run InvenTree/manage.py test build company part stock coverage html +docs: + pip install -U -r docs/requirements.txt + superuser: python InvenTree/manage.py createsuperuser diff --git a/docs/requirements.txt b/docs/requirements.txt new file mode 100644 index 0000000000..5d14851f8a --- /dev/null +++ b/docs/requirements.txt @@ -0,0 +1 @@ +Sphinx>=2.0.1 \ No newline at end of file From e3440cbb904c5751bf1958a0f914bca8bd2fd1aa Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Sat, 27 Apr 2019 16:09:52 +1000 Subject: [PATCH 2/9] Initialize sphinx documentation - Change theme to sphinx_rtd_theme - Ignore build files for docs --- .gitignore | 3 ++ docs/Makefile | 19 +++++++++++++ docs/conf.py | 66 +++++++++++++++++++++++++++++++++++++++++++ docs/index.rst | 20 +++++++++++++ docs/make.bat | 35 +++++++++++++++++++++++ docs/requirements.txt | 3 +- 6 files changed, 145 insertions(+), 1 deletion(-) create mode 100644 docs/Makefile create mode 100644 docs/conf.py create mode 100644 docs/index.rst create mode 100644 docs/make.bat diff --git a/.gitignore b/.gitignore index e304877626..6229f979df 100644 --- a/.gitignore +++ b/.gitignore @@ -27,6 +27,9 @@ var/ local_settings.py *.sqlite3 +# Sphinx files +docs/_build + # Local media storage (only when running in development mode) InvenTree/media diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 0000000000..298ea9e213 --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,19 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +SOURCEDIR = . +BUILDDIR = _build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) \ No newline at end of file diff --git a/docs/conf.py b/docs/conf.py new file mode 100644 index 0000000000..d434752fac --- /dev/null +++ b/docs/conf.py @@ -0,0 +1,66 @@ +# Configuration file for the Sphinx documentation builder. +# +# This file only contains a selection of the most common options. For a full +# list see the documentation: +# http://www.sphinx-doc.org/en/master/config + +# -- Path setup -------------------------------------------------------------- + +# 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. +# +import os +import sys +sys.path.insert(0, os.path.abspath('../')) +sys.path.append(os.path.abspath('../InvenTree')) + + +# -- Project information ----------------------------------------------------- + +project = 'InvenTree' +copyright = '2019, Oliver Walters' +author = 'Oliver Walters' + + +# -- General configuration --------------------------------------------------- + +# 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.coverage', + 'sphinx.ext.napoleon', + 'sphinx.ext.viewcode', +] + +napoleon_google_docstring = False +napoleon_use_param = False +napoleon_use_ivar = True + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = [ + '_build', + 'Thumbs.db', + '.DS_Store', + '**/migrations/', + '**/migrations', +] + + +# -- 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 = 'sphinx_rtd_theme' + +# 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'] diff --git a/docs/index.rst b/docs/index.rst new file mode 100644 index 0000000000..9c43b19929 --- /dev/null +++ b/docs/index.rst @@ -0,0 +1,20 @@ +.. InvenTree documentation master file, created by + sphinx-quickstart on Sat Apr 27 15:45:39 2019. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to InvenTree's documentation! +===================================== + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/docs/make.bat b/docs/make.bat new file mode 100644 index 0000000000..7893348a1b --- /dev/null +++ b/docs/make.bat @@ -0,0 +1,35 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR=. +set BUILDDIR=_build + +if "%1" == "" goto help + +%SPHINXBUILD% >NUL 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 +) + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% + +:end +popd diff --git a/docs/requirements.txt b/docs/requirements.txt index 5d14851f8a..0a7db8d3a4 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1 +1,2 @@ -Sphinx>=2.0.1 \ No newline at end of file +Sphinx>=2.0.1 +sphinx_rtd_theme==0.4.3 \ No newline at end of file From 8d0df6654c64ec1d3029fbad287c6adeb6d9b5aa Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Sat, 27 Apr 2019 16:48:04 +1000 Subject: [PATCH 3/9] Ignore migration files --- docs/conf.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index d434752fac..29db84e819 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -19,8 +19,7 @@ sys.path.append(os.path.abspath('../InvenTree')) # -- Project information ----------------------------------------------------- project = 'InvenTree' -copyright = '2019, Oliver Walters' -author = 'Oliver Walters' +copyright = '2019, InvenTree' # -- General configuration --------------------------------------------------- @@ -48,8 +47,8 @@ exclude_patterns = [ '_build', 'Thumbs.db', '.DS_Store', - '**/migrations/', - '**/migrations', + 'manage.rst', # Ignore django management file + '**/*.migrations*.rst', # Ignore migration files ] From 0cec12085da00fddbbfc82f359237f7bdfb70be0 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Sat, 27 Apr 2019 17:03:37 +1000 Subject: [PATCH 4/9] Renamed key.py to keygen.py --- InvenTree/{key.py => keygen.py} | 17 ++++++++++++++--- Makefile | 2 +- 2 files changed, 15 insertions(+), 4 deletions(-) rename InvenTree/{key.py => keygen.py} (76%) diff --git a/InvenTree/key.py b/InvenTree/keygen.py similarity index 76% rename from InvenTree/key.py rename to InvenTree/keygen.py index edcdac0854..02909b0d79 100644 --- a/InvenTree/key.py +++ b/InvenTree/keygen.py @@ -1,4 +1,8 @@ -# Generate a SECRET_KEY file +""" +Module keygen +============= +This module generates a Django SECRET_KEY file to be used by manage.py +""" import random import string @@ -10,9 +14,16 @@ KEY_FN = 'secret_key.txt' KEY_DIR = os.path.dirname(os.path.realpath(__file__)) -def generate_key(): +def generate_key(length=50): + """ + Generate a random string + + :param length: Number of characters in returned string (default=50) + :returns: Randomized secret key string + """ + options = string.digits + string.ascii_letters + string.punctuation - key = ''.join([random.choice(options) for i in range(50)]) + key = ''.join([random.choice(options) for i in range(length)]) return key diff --git a/Makefile b/Makefile index 7c066a2c95..b25683e5a9 100644 --- a/Makefile +++ b/Makefile @@ -17,7 +17,7 @@ migrate: install: pip install -U -r requirements.txt - python InvenTree/key.py + python InvenTree/keygen.py setup: install migrate From ad3defffe32ecc7bfb3ae03dda190bb95f37d323 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Sat, 27 Apr 2019 17:19:51 +1000 Subject: [PATCH 5/9] Use sphinx-autoapi to generate documentation files - Select which files to ignore - Only display items with a docstring --- docs/conf.py | 22 ++++++++++++++++------ docs/requirements.txt | 3 ++- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index 29db84e819..78bcb74673 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -28,14 +28,24 @@ copyright = '2019, InvenTree' # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ - 'sphinx.ext.coverage', - 'sphinx.ext.napoleon', - 'sphinx.ext.viewcode', + 'autoapi.extension' ] -napoleon_google_docstring = False -napoleon_use_param = False -napoleon_use_ivar = True +autoapi_dirs = [ + '../InvenTree', +] + +autoapi_options = [ + 'members', +] + +autoapi_type = 'python' + +autoapi_ignore = [ + '*migrations*', + '**/test*.py', + '**/manage.py' +] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] diff --git a/docs/requirements.txt b/docs/requirements.txt index 0a7db8d3a4..7f9639c4b0 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,2 +1,3 @@ Sphinx>=2.0.1 -sphinx_rtd_theme==0.4.3 \ No newline at end of file +sphinx-auto-api==1.0.0 +sphinx-rtd-theme==0.4.3 \ No newline at end of file From 53ec42af031ce7534f11f5fdf190cce18985c348 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Sat, 27 Apr 2019 17:22:23 +1000 Subject: [PATCH 6/9] Generate documentation from makefile - Had to change 'docs' to 'documentation' to prevent directory clash --- Makefile | 3 ++- docs/requirements.txt | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index b25683e5a9..d675749c5c 100644 --- a/Makefile +++ b/Makefile @@ -33,8 +33,9 @@ coverage: coverage run InvenTree/manage.py test build company part stock coverage html -docs: +documentation: pip install -U -r docs/requirements.txt + cd docs & make html superuser: python InvenTree/manage.py createsuperuser diff --git a/docs/requirements.txt b/docs/requirements.txt index 7f9639c4b0..7b5dff3e0a 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,3 +1,3 @@ Sphinx>=2.0.1 -sphinx-auto-api==1.0.0 +sphinx-autoapi==1.0.0 sphinx-rtd-theme==0.4.3 \ No newline at end of file From 0c573684fc871ad7dcb5ce9986b8b5addf735ca7 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Sat, 27 Apr 2019 17:35:45 +1000 Subject: [PATCH 7/9] Add readthedocs configuration file --- .readthedocs.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 .readthedocs.yml diff --git a/.readthedocs.yml b/.readthedocs.yml new file mode 100644 index 0000000000..4576ffd7be --- /dev/null +++ b/.readthedocs.yml @@ -0,0 +1,14 @@ +# .readthedocs.yml +# Read the Docs configuration file +# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details + +# Location of sphinx configuration settings +sphinx: + configuration: docs/conf.py + +formats: all + +python: + version: 3.5 + install: + - requirements: docs/requirements.txt \ No newline at end of file From 63958947982b3c55437dc461a973a0b28985507b Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Sat, 27 Apr 2019 17:41:17 +1000 Subject: [PATCH 8/9] Add some more .gitignore stuff --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 6229f979df..b4aa808107 100644 --- a/.gitignore +++ b/.gitignore @@ -29,6 +29,8 @@ local_settings.py # Sphinx files docs/_build +docs/_static +docs/_templates # Local media storage (only when running in development mode) InvenTree/media From 22bfd970cca8bfb971f0472cbb85a22974ffdeaf Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Sat, 27 Apr 2019 17:45:40 +1000 Subject: [PATCH 9/9] Use v2 of readthedocs --- .readthedocs.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.readthedocs.yml b/.readthedocs.yml index 4576ffd7be..be8c4a950c 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -2,13 +2,18 @@ # Read the Docs configuration file # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details +version: 2 + # Location of sphinx configuration settings sphinx: configuration: docs/conf.py -formats: all +formats: + - pdf + - epub python: version: 3.5 install: - - requirements: docs/requirements.txt \ No newline at end of file + - requirements: docs/requirements.txt + - method: pip \ No newline at end of file