Basic commands for web development
==================================

After you clone this repository, run `make`. It will download, locally install
and setup virtualenv and pip, and then locally install all required packages
from `requirements.txt`.

When working with the code, always use the binaries in `./bin/`, such as
`bin/pip`, `bin/python`, ... never the global python, pip, ...
Use `make` and `./manage.py` for most things.

Use git :-)

Quickstart
----------
Run the following commands:
	make install_venv
	. env/bin/activate
	make install_web

After finishing development, run "deactivate".

Make commands
-------------

* `make install` (or `make`) - locally install and setup virtualpy, install
  required packages. Ran again installs missing packages. Run after changing
  `requirements.txt`.

* `make clean` - remove local python packages.

* `make veryclean` - remove local packages and virtualpy enviroment and
  binaries.

* `make run` - runs "./manage.py runserver_plus"

* `make push_test` - pushes the last commited version to test location.
  Only git-commited changes are pushed! Rest is re-generated from scratch.
  At test server, the media data and database are kept the same.
  Everything else not in .gitignore is deleted/overwritten on the test server.

* `make schema` - generates graph of seminar and all schemas as PDF. Supercool!

* `make sync_prod_flatpages` - downloads and applies static/flat pages from mamweb-prod

./manage.py commands
--------------------

* `./manage.py migrate` - update the database schema, initialise the database.
  You need to run this in the beginning.

* `./manage.py runserver_plus` - run a debugging server for the web. Slightly
  enhanced compared to `./manage.py runserver`.
  Open [127.0.0.1:8000](127.0.0.1:8000).

* `./manage.py testdata` - create pseudo-random seminar data and admin/admin
  user.

* `./manage.py test` - run the tests.

* `./manage.py shell` - run commands, list elemements of database, check syntax
  by importing files, etc.

Configurations
--------------

* `mamweb/settings_common.py` contains most configuration options.
* `mamweb/settings.py` is used only for local development.
* `mamweb/settings_test.py` is used for testing on atrey.
* `mamweb/settings_prod.py` is used in production deployment.

These are automatically switched by `make`.