The music education learning management system
License: MIT
Moved to settings.
- Download Postgres for your operating system and keep note of the username and password you create in the installation process
$ pip install -r requirements/local.txt
-
Create file called .env in project root with the line
DATABASE_URL=postgres://user:pass@localhost/teleband
Where user and pass are the username and password of the postgres user you created
- Create a Postgres Database with your created user
$ python manage.py migrate
-
To create a normal user account, just go to Sign Up and fill out the form. Once you submit it, you'll see a "Verify Your E-mail Address" page. Go to your console to see a simulated email verification message. Copy the link into your browser. Now the user's email should be verified and ready to go.
-
To create an superuser account, use this command:
$ python manage.py createsuperuser
For convenience, you can keep your normal user logged in on Chrome and your superuser logged in on Firefox (or similar), so that you can see how the site behaves for both kinds of users.
- To create a Teacher: 1. use the admin pages 1. create a user 1. edit that user and select an instrument for them 1. add them to the Teacher group
Running type checks with mypy:
$ mypy teleband
To run the tests, check your test coverage, and generate an HTML coverage report:
$ coverage run -m pytest
$ coverage html
$ open htmlcov/index.html
$ pytest
Moved to Live reloading and SASS compilation.
In development, it is often nice to be able to see emails that are being sent from your application. If you choose to use MailHog when generating the project a local SMTP server with a web interface will be available.
-
Download the latest MailHog release for your OS.
-
Rename the build to
MailHog
. -
Copy the file to the project root.
-
Make it executable:
$ chmod +x MailHog
-
Spin up another terminal window and start it there:
./MailHog
-
Check out http://127.0.0.1:8025/ to see how it goes.
Now you have your own mail server running locally, ready to receive whatever you send it.
The following details how to deploy this application.
- tag the version
git tag <whatever, e.g. v0.2.2>
- push the tag
git push origin <whatever, e.g. v0.2.2>
- on the server, get to the main repo root e.g.
cd ~/MusicCPRDev
- pull on server
git pull
- checkout a new worktree for the recently pushed/fetched/tagged version
git worktree add ../dev-versions/v0.2.2 v0.2.2
- cd ~/dev-versions/v0.2.2/
- cp ..//.env* .
- source ~/venv-dev/bin/activate
- stop old version
sudo supervisorctl stop dev_api_musiccpr
- migrate
python manage.py migrate
- change symlink
cd ~/dev-versions; ls -al; rm live; ln -s /data/dev-versions/v2.0.3 live
- sudo supervisorctl start dev_api_musiccpr
- I was bad and used a non-historical model-related code in assignments/migrations/0033...
- if this migrations fails, try migrating the instruments app before the assignments app
python manage.py migrate instruments
- TODO: probably I should just make the assignments migration depend on this instruments migration?
- if this migrations fails, try migrating the instruments app before the assignments app
- maybe this is the command?
sudo certbot certonly --manual --server https://acme-v02.api.letsencrypt.org/directory --preferred-challenges dns-01 -d "musiccpr.org,dev-api.musiccpr.org,dev.musiccpr.org,api.musiccpr.org"
Prefer to have:
- same ec2 instance as dev
- a different RDS instance (for postgres database)
- a different s3 bucket (or path?)
- use web console. choose postgres, accept defaults, but choose free tier, choose some sort of connectivity thing that goes to the ec2 instance, choose existing security group(s) ("default")
- create a user for the app
1. connect to new db via psql like
psql postgres://...
1. create user withCREATE USER youruser WITH ENCRYPTED PASSWORD 'yourpass';
- create database
CREATE DATABASE yourdbname;
- give user privileges
GRANT ALL PRIVILEGES ON DATABASE yourdbname TO youruser;
- copy dev's .env and make new (prod) values.
* where to get aws access stuff?
1. create IAM user
* permissions policies:
AnyMailSESRecommended
* go to security credentials tab andcreate access key
- create s3 bucket, copy settings from existing bucket
- activate venv
- pip install -r requirements/production.txt
- python manage.py migrate
- copy (and update) nginx fe and be configs from dev for prod
- copy (and update) supervisor config from dev for prod see: `/etc/supervisorctl
- sudo supervisorctl reread
- i needed to tell s3 bucket that it should make another directory public access