Passerelle provides an uniform access to multiple data sources and services.

Quickstart
==========

Setting up an environment (virtualenv)
--------------------------------------

The first thing you'll need is the Python virtualenv package. You probably
already have this, but if not, you can install it with:

    $ easy_install -UZ virtualenv

Once that's done, choose a location for the environment, and create it with the
virtualenv command. For our guide, we're going to choose "venv" in the current
directory:

    $ virtualenv venv
    $ source venv/bin/activate

From Passerelle source directory install required Python packages:

    $ pip install -e .

Initializing the database (quickstart: sqlite3)
-----------------------------------------------

To create the database, execute the following line:

    $ python manage.py migrate

The new database is created inside `passerelle.sqlite3` in the current
directory.

Create a first user with administrative rights:

    $ python manage.py createsuperuser


Running
-------

The command line for starting is:

    $ python manage.py runserver

Passerelle is available on http://127.0.0.1:8000/


Settings
--------

Default settings are loaded from settings.py, they can be overloaded by a
local_settings.py file set in the same directory, or by a file referenced
in the PASSERELLE_SETTINGS_FILE environment variable.


Code Style
----------

black is used to format the code, using thoses parameters:

    black --target-version py37 --skip-string-normalization --line-length 110

isort is used to format the imports, using those parameters:

    isort --profile black --line-length 110

pyupgrade is used to automatically upgrade syntax, using those parameters:

    pyupgrade --keep-percent-format --py37-plus

djhtml is used to automatically indent html files, using those parameters:

    djhtml --tabwidth 2

django-upgrade is used to automatically upgrade Django syntax, using those parameters:

    django-upgrade --target-version 3.2

There is .pre-commit-config.yaml to use pre-commit to automatically run these tools
before commits. (execute `pre-commit install` to install the git hook.)

The .git-blame-ignore-revs file could be used to hide the related
changes into the sources:

    git blame --ignore-revs-file .git-blame-ignore-revs


Tests
-----

Unit tests are written using py.test, and its pytest-django support library and
run using tox.

  tox

To run a specific test under a specific environment.

  tox -e py3-django111 -- -vv tests/test_csv_datasource.py

LICENSES
========

Passerelle
Copyright (C) 2013-2014 Entr'ouvert <info@entrouvert.com>

This program is free software: you can redistribute it and/or modify it under
the terms of the GNU Affero General Public License as published by the Free
Software Foundation, either version 3 of the License, or (at your option) any
later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.  See the GNU Affero General Public License for more
details.

You should have received a copy of the GNU Affero General Public License along
with this program (LICENSE file). If not, see <http://www.gnu.org/licenses/>.


Copyright
---------

django-jsonresponse (https://github.com/jjay/django-jsonresponse)
 # Files: passerelle/utils/jsonresponse.py
 # Copyright (c) 2012 Yasha Borevich <j.borevich@gmail.com>
 # Licensed under the BSD license

tweetnacl-js (https://github.com/dchest/tweetnacl-js)
 # Files: passerelle/apps/qrcode/static/qrcode/js/nacl.min.js
 # Copyright: https://github.com/dchest/tweetnacl-js/blob/master/AUTHORS.md
 # Licensed under the Unlicense license (public domain)

zxing-browser (https://github.com/zxing-js/browser/)
 # Files: passerelle/apps/qrcode/static/qrcode/js/zxing-browser.min.js
 # Copyright: (c) 2018 ZXing for JS
 # Licensed under the MIT license.

zxing-js (https://github.com/zxing-js/library/)
 # Files: passerelle/apps/qrcode/static/qrcode/js/zxing-browser.min.js
 # Copyright: (c) 2018 ZXing for JS
 # Licensed under the Apache License.

RemixIcon (https://github.com/Remix-Design/RemixIcon)
 # Files: passerelle/apps/qrcode/static/qrcode/img/favicon.ico
 # Copyright (c) 2020 RemixIcon.com
 # Licensed under the Apache License Version 2.0

nunjucks.js (https://mozilla.github.io/nunjucks/): 
 # Files: passerelle/apps/qrcode/static/qrcode/nunjucks.min.js
 # Copyright (c) 2012-2015, James Long
 # Licensed under the BSD 2-Clause "Simplified" License
