5.7 KiB
5.7 KiB
FastAPI Admin 1.0.4 - Complete Fix Script
Date: March 22, 2026
Purpose: Fix all compatibility issues after git pull resets the code
Quick Fix Script
Run this entire script after every git pull:
#!/bin/bash
# File: fix_fastapi_admin_1.0.4.sh
# Usage: chmod +x fix_fastapi_admin_1.0.4.sh && ./fix_fastapi_admin_1.0.4.sh
PROJECT_DIR="/www/wwwroot/irt-bank-soal"
echo "=== Fixing requirements.txt ==="
sed -i 's/fastapi-admin>=1.4.0/fastapi-admin>=1.0.0/g' $PROJECT_DIR/requirements.txt
echo "=== Fixing inputs.Select (remove options parameter) ==="
sed -i 's/inputs\.Select(options=\[[^]]*\], /inputs.Select(/g' $PROJECT_DIR/app/admin.py
sed -i 's/inputs\.Select(options=\[[^]]*\])/inputs.Select()/g' $PROJECT_DIR/app/admin.py
echo "=== Fixing displays.Select -> Display ==="
sed -i 's/displays\.Select(choices=\[[^]]*\])/displays.Display()/g' $PROJECT_DIR/app/admin.py
echo "=== Fixing displays.DateTime -> DatetimeDisplay ==="
sed -i 's/displays\.DateTime()/displays.DatetimeDisplay()/g' $PROJECT_DIR/app/admin.py
echo "=== Fixing displays.Text -> Display ==="
sed -i 's/displays\.Text([^)]*)/displays.Display()/g' $PROJECT_DIR/app/admin.py
echo "=== Fixing displays.Number -> Display ==="
sed -i 's/displays\.Number([^)]*)/displays.Display()/g' $PROJECT_DIR/app/admin.py
echo "=== Fixing admin_app.settings (comment out) ==="
# Comment out settings lines that don't exist in 1.0.4
sed -i 's/^\(\s*\)admin_app\.settings\./\1# admin_app.settings./g' $PROJECT_DIR/app/admin.py
echo "=== Reinstalling dependencies ==="
cd $PROJECT_DIR
source venv/bin/activate
pip install -r requirements.txt
echo "=== Restarting PM2 ==="
pm2 restart irt-bank-soal
echo "=== Done! Checking logs ==="
sleep 3
pm2 logs irt-bank-soal --lines 15
One-Liner Command (Copy-Paste)
Run this single command to fix everything:
cd /www/wwwroot/irt-bank-soal && \
sed -i 's/fastapi-admin>=1.4.0/fastapi-admin>=1.0.0/g' requirements.txt && \
sed -i 's/inputs\.Select(options=\[[^]]*\], /inputs.Select(/g' app/admin.py && \
sed -i 's/inputs\.Select(options=\[[^]]*\])/inputs.Select()/g' app/admin.py && \
sed -i 's/displays\.Select(choices=\[[^]]*\])/displays.Display()/g' app/admin.py && \
sed -i 's/displays\.DateTime()/displays.DatetimeDisplay()/g' app/admin.py && \
sed -i 's/displays\.Text([^)]*)/displays.Display()/g' app/admin.py && \
sed -i 's/displays\.Number([^)]*)/displays.Display()/g' app/admin.py && \
sed -i 's/^\(\s*\)admin_app\.settings\./\1# admin_app.settings./g' app/admin.py && \
source venv/bin/activate && pip install -r requirements.txt && \
pm2 restart irt-bank-soal && sleep 3 && pm2 logs irt-bank-soal --lines 15
Individual Fixes Explained
1. requirements.txt
# Change:
fastapi-admin>=1.4.0
# To:
fastapi-admin>=1.0.0
2. inputs.Select (8+ occurrences)
# Change:
input_=inputs.Select(options=["ctt", "irt", "hybrid"], default="ctt")
# To:
input_=inputs.Select(default="ctt")
3. displays.Select (8+ occurrences)
# Change:
display=displays.Select(choices=["ctt", "irt", "hybrid"])
# To:
display=displays.Display()
4. displays.DateTime (12+ occurrences)
# Change:
display=displays.DateTime()
# To:
display=displays.DatetimeDisplay()
5. displays.Text
# Change:
display=displays.Text(maxlen=100)
# To:
display=displays.Display()
6. displays.Number
# Change:
display=displays.Number()
# To:
display=displays.Display()
7. admin_app.settings (Lines ~602-606)
# Comment out these lines (API doesn't exist in 1.0.4):
# admin_app.settings.logo_url = "/static/logo.png"
# admin_app.settings.site_title = "IRT Bank Soal Admin"
# admin_app.settings.site_description = "Admin Panel for Adaptive Question Bank System"
# admin_app.settings.auth_provider = AdminAuthProvider()
Verify Fix
After running the fix:
# Test API
curl http://127.0.0.1:8000/
# Expected response:
# {"status": "healthy", "project_name": "IRT Bank Soal", "version": "1.0.0"}
Available Classes Reference
fastapi_admin.widgets.inputs (1.0.4)
| Class | Parameters |
|---|---|
Select |
help_text, default, null, disabled |
Input |
standard |
TextArea |
standard |
DateTime |
standard |
Number |
standard |
Password |
standard |
Email |
standard |
File |
standard |
Image |
standard |
Switch |
standard |
Editor |
standard |
Json |
standard |
fastapi_admin.widgets.displays (1.0.4)
| Class | Notes |
|---|---|
Display |
Generic display (use for most fields) |
DatetimeDisplay |
For datetime fields |
DateDisplay |
For date fields |
Boolean |
For boolean fields |
Image |
For image fields |
Json |
For JSON fields |
InputOnly |
Input only |
NOT available: Select, Text, Number
Permanent Solution
To avoid fixing after every git pull, update the source code in the git repository:
- On your local machine, apply all fixes to
app/admin.py - Update
requirements.txtto usefastapi-admin>=1.0.0 - Commit and push:
git add app/admin.py requirements.txt
git commit -m "fix: compatibility with fastapi-admin 1.0.4"
git push origin main
Then on server:
git pull
source venv/bin/activate
pip install -r requirements.txt
pm2 restart irt-bank-soal
Troubleshooting
Still getting errors after fix?
- Check if sed worked:
grep -n "inputs.Select(options" /www/wwwroot/irt-bank-soal/app/admin.py
grep -n "displays.Select(choices" /www/wwwroot/irt-bank-soal/app/admin.py
grep -n "admin_app.settings" /www/wwwroot/irt-bank-soal/app/admin.py
-
If any matches found, the sed didn't work. Try manual fix.
-
Check PM2 logs for new errors:
pm2 logs irt-bank-soal --lines 50
Document End