mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-21 12:51:10 -05:00
Add comprehensive tests for Parks API and models
- Implemented extensive test cases for the Parks API, covering endpoints for listing, retrieving, creating, updating, and deleting parks. - Added tests for filtering, searching, and ordering parks in the API. - Created tests for error handling in the API, including malformed JSON and unsupported methods. - Developed model tests for Park, ParkArea, Company, and ParkReview models, ensuring validation and constraints are enforced. - Introduced utility mixins for API and model testing to streamline assertions and enhance test readability. - Included integration tests to validate complete workflows involving park creation, retrieval, updating, and deletion.
This commit is contained in:
206
scripts/unraid/autoinstall-user-data.yaml
Normal file
206
scripts/unraid/autoinstall-user-data.yaml
Normal file
@@ -0,0 +1,206 @@
|
||||
#cloud-config
|
||||
autoinstall:
|
||||
# version is an Autoinstall required field.
|
||||
version: 1
|
||||
|
||||
# Install Ubuntu server packages and ThrillWiki dependencies
|
||||
packages:
|
||||
- ubuntu-server
|
||||
- curl
|
||||
- wget
|
||||
- git
|
||||
- python3
|
||||
- python3-pip
|
||||
- python3-venv
|
||||
- nginx
|
||||
- postgresql
|
||||
- postgresql-contrib
|
||||
- redis-server
|
||||
- nodejs
|
||||
- npm
|
||||
- build-essential
|
||||
- ufw
|
||||
- fail2ban
|
||||
- htop
|
||||
- tree
|
||||
- vim
|
||||
- tmux
|
||||
- qemu-guest-agent
|
||||
|
||||
# User creation
|
||||
identity:
|
||||
realname: 'ThrillWiki Admin'
|
||||
username: thrillwiki
|
||||
# Default [PASSWORD-REMOVED] (change after login)
|
||||
password: '$6$rounds=4096$saltsalt$[AWS-SECRET-REMOVED]AzpI8g8T14F8VnhXo0sUkZV2NV6/.c77tHgVi34DgbPu.'
|
||||
hostname: thrillwiki-vm
|
||||
|
||||
locale: en_US.UTF-8
|
||||
keyboard:
|
||||
layout: us
|
||||
|
||||
package_update: true
|
||||
package_upgrade: true
|
||||
|
||||
# Use direct storage layout (no LVM)
|
||||
storage:
|
||||
swap:
|
||||
size: 0
|
||||
layout:
|
||||
name: direct
|
||||
|
||||
# SSH configuration
|
||||
ssh:
|
||||
allow-pw: true
|
||||
install-server: true
|
||||
authorized-keys:
|
||||
- {SSH_PUBLIC_KEY}
|
||||
|
||||
# Network configuration - will be replaced with proper config
|
||||
network:
|
||||
version: 2
|
||||
ethernets:
|
||||
enp1s0:
|
||||
dhcp4: true
|
||||
dhcp-identifier: mac
|
||||
|
||||
# Commands to run after installation
|
||||
late-commands:
|
||||
# Update GRUB
|
||||
- curtin in-target -- update-grub
|
||||
|
||||
# Enable and start services
|
||||
- curtin in-target -- systemctl enable qemu-guest-agent
|
||||
- curtin in-target -- systemctl enable postgresql
|
||||
- curtin in-target -- systemctl enable redis-server
|
||||
- curtin in-target -- systemctl enable nginx
|
||||
|
||||
# Configure PostgreSQL
|
||||
- curtin in-target -- sudo -u postgres createuser -s thrillwiki
|
||||
- curtin in-target -- sudo -u postgres createdb thrillwiki_db
|
||||
- curtin in-target -- sudo -u postgres psql -c "ALTER USER thrillwiki PASSWORD 'thrillwiki123';"
|
||||
|
||||
# Configure firewall
|
||||
- curtin in-target -- ufw allow OpenSSH
|
||||
- curtin in-target -- ufw allow 'Nginx Full'
|
||||
- curtin in-target -- ufw --force enable
|
||||
|
||||
# Clone ThrillWiki repository if provided
|
||||
- curtin in-target -- bash -c 'if [ -n "{GITHUB_REPO}" ]; then cd /home/thrillwiki && git clone "{GITHUB_REPO}" thrillwiki-app && chown -R thrillwiki:thrillwiki thrillwiki-app; fi'
|
||||
|
||||
# Create deployment script
|
||||
- curtin in-target -- tee /home/thrillwiki/deploy-thrillwiki.sh << 'EOF'
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
echo "=== ThrillWiki Deployment Script ==="
|
||||
|
||||
# Check if repo was cloned
|
||||
if [ ! -d "/home/thrillwiki/thrillwiki-app" ]; then
|
||||
echo "Repository not found. Please clone your ThrillWiki repository:"
|
||||
echo "git clone YOUR_REPO_URL thrillwiki-app"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cd /home/thrillwiki/thrillwiki-app
|
||||
|
||||
# Create virtual environment
|
||||
python3 -m venv venv
|
||||
source venv/bin/activate
|
||||
|
||||
# Install Python dependencies
|
||||
if [ -f "requirements.txt" ]; then
|
||||
pip install -r requirements.txt
|
||||
else
|
||||
echo "Warning: requirements.txt not found"
|
||||
fi
|
||||
|
||||
# Install Django if not in requirements
|
||||
pip install django psycopg2-binary redis celery gunicorn
|
||||
|
||||
# Set up environment variables
|
||||
cat > ***REMOVED*** << 'ENVEOF'
|
||||
DEBUG=False
|
||||
SECRET_KEY=your-secret-key-change-this
|
||||
DATABASE_URL=[DATABASE-URL-REMOVED]
|
||||
REDIS_URL=redis://localhost:6379/0
|
||||
ALLOWED_HOSTS=localhost,127.0.0.1,thrillwiki-vm
|
||||
ENVEOF
|
||||
|
||||
# Run Django setup commands
|
||||
if [ -f "manage.py" ]; then
|
||||
python manage.py collectstatic --noinput
|
||||
python manage.py migrate
|
||||
echo "from django.contrib.auth import get_user_model; User = get_user_model(); User.objects.create_superuser('admin', 'admin@thrillwiki.com', 'thrillwiki123') if not User.objects.filter(username='admin').exists() else None" | python manage.py shell
|
||||
fi
|
||||
|
||||
# Configure Nginx
|
||||
sudo tee /etc/nginx/sites-available/thrillwiki << 'NGINXEOF'
|
||||
server {
|
||||
listen 80;
|
||||
server_name _;
|
||||
|
||||
location /static/ {
|
||||
alias /home/thrillwiki/thrillwiki-app/staticfiles/;
|
||||
}
|
||||
|
||||
location /media/ {
|
||||
alias /home/thrillwiki/thrillwiki-app/media/;
|
||||
}
|
||||
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:8000;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
}
|
||||
NGINXEOF
|
||||
|
||||
# Enable Nginx site
|
||||
sudo ln -sf /etc/nginx/sites-available/thrillwiki /etc/nginx/sites-enabled/
|
||||
sudo rm -f /etc/nginx/sites-enabled/default
|
||||
sudo systemctl reload nginx
|
||||
|
||||
# Create systemd service for Django
|
||||
sudo tee /etc/systemd/system/thrillwiki.service << 'SERVICEEOF'
|
||||
[Unit]
|
||||
Description=ThrillWiki Django App
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
User=thrillwiki
|
||||
Group=thrillwiki
|
||||
[AWS-SECRET-REMOVED]wiki-app
|
||||
[AWS-SECRET-REMOVED]wiki-app/venv/bin
|
||||
ExecStart=/home/thrillwiki/thrillwiki-app/venv/bin/gunicorn --workers 3 --bind 127.0.0.1:8000 thrillwiki.wsgi:application
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
SERVICEEOF
|
||||
|
||||
# Enable and start ThrillWiki service
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable thrillwiki
|
||||
sudo systemctl start thrillwiki
|
||||
|
||||
echo "=== ThrillWiki deployment complete! ==="
|
||||
echo "Access your application at: http://$(hostname -I | awk '{print $1}')"
|
||||
echo "Django Admin: http://$(hostname -I | awk '{print $1}')/admin"
|
||||
echo "Default superuser: admin / thrillwiki123"
|
||||
echo ""
|
||||
echo "Important: Change default passwords!"
|
||||
EOF
|
||||
|
||||
# Make deployment script executable
|
||||
- curtin in-target -- chmod +x /home/thrillwiki/deploy-thrillwiki.sh
|
||||
- curtin in-target -- chown thrillwiki:thrillwiki /home/thrillwiki/deploy-thrillwiki.sh
|
||||
|
||||
# Clean up
|
||||
- curtin in-target -- apt-get autoremove -y
|
||||
- curtin in-target -- apt-get autoclean
|
||||
|
||||
# Reboot after installation
|
||||
shutdown: reboot
|
||||
Reference in New Issue
Block a user