mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-11-04 03:27:12 -05:00 
			
		
		
		
	Merge branch 'dev' into feature-ocrmypdf
This commit is contained in:
		
						commit
						490f59451b
					
				@ -1,5 +1,119 @@
 | 
				
			|||||||
.. _extending:
 | 
					.. _extending:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Paperless development
 | 
				
			||||||
 | 
					#####################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This section describes the steps you need to take to start development on paperless-ng.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1.  Check out the source from github. The repository is organized in the following way:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    *   ``master`` always represents the latest release and will only see changes
 | 
				
			||||||
 | 
					        when a new release is made.
 | 
				
			||||||
 | 
					    *   ``dev`` contains the code that will be in the next release.
 | 
				
			||||||
 | 
					    *   ``feature-X`` contain bigger changes that will be in some release, but not
 | 
				
			||||||
 | 
					        necessarily the next one.
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    Apart from that, the folder structure is as follows:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    *   ``docs/`` - Documentation.
 | 
				
			||||||
 | 
					    *   ``src-ui/`` - Code of the front end.
 | 
				
			||||||
 | 
					    *   ``src/`` - Code of the back end.
 | 
				
			||||||
 | 
					    *   ``scripts/`` - Various scripts that help with different parts of development.
 | 
				
			||||||
 | 
					    *   ``docker/`` - Files required to build the docker image.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					2.  Install some dependencies.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    *   Python 3.6.
 | 
				
			||||||
 | 
					    *   All dependencies listed in the :ref:`Bare metal route <setup-bare_metal>`
 | 
				
			||||||
 | 
					    *   redis. You can either install redis or use the included scritps/start-redis.sh
 | 
				
			||||||
 | 
					        to use docker to fire up a redis instance.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Back end development
 | 
				
			||||||
 | 
					====================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The backend is a django application. I use PyCharm for development, but you can use whatever
 | 
				
			||||||
 | 
					you want.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Install the python dependencies by performing ``pipenv install --dev`` in the src/ directory.
 | 
				
			||||||
 | 
					This will also create a virtual environment, which you can enter with ``pipenv shell`` or
 | 
				
			||||||
 | 
					execute one-shot commands in with ``pipenv run``.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					In ``src/paperless.conf``, enable debug mode.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Configure the IDE to use the src/ folder as the base source folder. Configure the following
 | 
				
			||||||
 | 
					launch configurations in your IDE:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*   python3 manage.py runserver
 | 
				
			||||||
 | 
					*   python3 manage.py qcluster
 | 
				
			||||||
 | 
					*   python3 manage.py consumer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Depending on which part of paperless you're developing for, you need to have some or all of
 | 
				
			||||||
 | 
					them running.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Testing and code style:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*   Run ``pytest`` in the src/ directory to execute all tests. This also generates a HTML coverage
 | 
				
			||||||
 | 
					    report.
 | 
				
			||||||
 | 
					*   Run ``pycodestyle`` to test your code for issues with the configured code style settings.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    .. note::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        The line length rule E501 is generally useful for getting multiple source files
 | 
				
			||||||
 | 
					        next to each other on the screen. However, in some cases, its just not possible
 | 
				
			||||||
 | 
					        to make some lines fit, especially complicated IF cases. Append ``  # NOQA: E501``
 | 
				
			||||||
 | 
					        to disable this check for certain lines.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Front end development
 | 
				
			||||||
 | 
					=====================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The front end is build using angular. I use the ``Code - OSS`` IDE for development.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					In order to get started, you need ``npm``. Install the Angular CLI interface with
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. code:: shell-session
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $ npm install -g @angular/cli
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					and make sure that it's on your path. Next, in the src-ui/ directory, install the
 | 
				
			||||||
 | 
					required dependencies of the project.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. code:: shell-session
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $ npm install
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					You can launch a development server by running
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. code:: shell-session
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $ ng serve
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This will automatically update whenever you save. However, in-place compilation might fail
 | 
				
			||||||
 | 
					on syntax errors, in which case you need to restart it.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					By default, the development server is available on ``http://localhost:4200/`` and is configured
 | 
				
			||||||
 | 
					to access the API at ``http://localhost:8000/api/``, which is the default of the backend.
 | 
				
			||||||
 | 
					If you enabled DEBUG on the back end, several security overrides for allowed hosts, CORS and
 | 
				
			||||||
 | 
					X-Frame-Options are in place so that the front end behaves exactly as in production. This also
 | 
				
			||||||
 | 
					relies on you being logged into the back end. Without a valid session, The front end will simply
 | 
				
			||||||
 | 
					not work.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					In order to build the front end and serve it as part of django, execute
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. code:: shell-session
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $ ng build --prod --output-path ../src/documents/static/frontend/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This will build the front end and put it in a location from which the Django server will serve
 | 
				
			||||||
 | 
					it as static content. This way, you can verify that authentication is working.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Making a release
 | 
				
			||||||
 | 
					================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Execute the ``make-release.sh <ver>`` script.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This will test and assemble everything and also build and tag a docker image.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Extending Paperless
 | 
					Extending Paperless
 | 
				
			||||||
===================
 | 
					===================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -204,6 +204,7 @@ Docker Route
 | 
				
			|||||||
   simplifies deployment immensely. If you know your way around Docker, feel
 | 
					   simplifies deployment immensely. If you know your way around Docker, feel
 | 
				
			||||||
   free to tinker around without using compose!
 | 
					   free to tinker around without using compose!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. _`setup-bare_metal`:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Bare Metal Route
 | 
					Bare Metal Route
 | 
				
			||||||
================
 | 
					================
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user