================================== Development-related notes and tips ================================== Running a development environment under Docker ---------------------------------------------- To run tests, migrate database, and start the web server:: ./dev-docker To open a shell in the development environment:: ./dev-docker bash **NOTE** if you're running a firewall on your system, like ufw, make sure to allow the docker interface to interact with your system's. If you're running ufw, do so with `sudo ufw allow in on docker0`. Checklist for loading a copy of a production database ----------------------------------------------------- This procedure assumes you are using PostgreSQL in production, and will use PostgreSQL locally. If you are using sqlite, then the procedure is trivial (just copy the database file). on the server: * dump the database: pg_dump -F custom -f /tmp/dump squad locally: * create empty DB: createdb squad * copy dump: scp SERVER:/tmp/dump /tmp/ * load dump: pg_restore -d squad -j4 /tmp/dump * migrate database: ./manage.py migrate * create superuser: ./manage.py createsuperuser * anonymize data: ./manage.py prepdump # avoid mailing users Running Javascript unit tests ----------------------------- In order to run Javascript unit tests, you need to installl nodejs and npm package manager, then install the dependencies from the package-lock.json file. Depending on the distribution, you can either install npm directly from repositories or alternatevely add PPA and then install it. Here's the instructions of how to setup up after the npm package manager is installed:: sudo apt-get install chromium npm install Simply running the Django tests will also run the Javascript unit tests:: ./manage test Or, you can run only the Javascript unit tests with one of these commands:: python3 python3 test/javascript.py # or python3 -m test.javascript Log monitoring -------------- SQUAD uses Python's logging library to log events during its execution, it's important to keep track of those and sometimes it's nice to have an extra tool to give admins a heads up that things aren't working correctly for example when an `ERROR` log comes up. In such scenario, SQUAD will try to send emails with the log content to admins registered in `SQUAD_ADMINS` environment variable. SQUAD also support log monitoring and aggregation with Sentry, a tool that collects similar error logs and manage them nicer than just regular text emails. To enable Sentry support two steps are needed: * set `SENTRY_DSN` environment variable with a dsn retrieved after creating a project in sentry. * install Sentry's Python SDK: `pip install sentry-sdk`