django_setup()
{
    PRJ_DIR=/home/django-user/django-projects/demo
    PRJ_NAME=demo

    ip_addr=$(ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | cut -f1 -d'/')
    secret=$(</dev/urandom tr -dc '1234567890@#$()qwertQWERTasdfgASDFGzxcvbZXCVB' | head -c50; echo "")

    info "Setting Django database password"
    db_pass=$(< /dev/urandom tr -dc A-Z-a-z-0-9 | head -c28)
    sudo -u postgres psql -c "ALTER USER django WITH PASSWORD '${db_pass}';"

    if [ $? != 0 ]; then
        error "ERROR: Failed to set PostgreSQL password..."
        exit 5
    fi
    info "Password for PostgreSQL successfully set"

    info "Configuring Django"
    sed 's/.*PASSWORD.*/\t'\'PASSWORD\':' '\'${db_pass}\','/g' -i ${PRJ_DIR}/${PRJ_NAME}/settings.py
    sed 's/ALLOWED_HOSTS.*/ALLOWED_HOSTS = \['\'${ip_addr}\'']/g' -i ${PRJ_DIR}/${PRJ_NAME}/settings.py
    sed 's/^SECRET_KEY.*/SECRET_KEY = '\'${secret}\''/' -i ${PRJ_DIR}/${PRJ_NAME}/settings.py
    sed '0,/.*server_name.*/s//    server_name '${ip_addr}';/' -i /etc/nginx/sites-available/django

    sudo -u django-user echo "from django.contrib.auth.models import User; admUser = User.objects.get(username='admin'); admUser.set_password('${panelpassword}'); admUser.save()" | python3 ${PRJ_DIR}/manage.py shell
    if [ $? != 0 ]; then
        error "ERROR: Failed to set Django admin password..."
        exit 5
    fi
    info "Password for Django admin user successfully set"
    info "Restarting services"
    systemctl restart gunicorn.socket
    systemctl restart nginx

}

app_setup()
{
    django_setup
    if [ $? != 0 ]; then
        error "ERROR: Failed to setup django..."
        exit 3
    fi
}
