Files
yellow-bank-soal/FASTAPI_ADMIN_1.0.4_FIX_SCRIPT.md
Dwindi Ramadhana 436bcf93be fix requirements
2026-03-22 07:32:58 +07:00

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:

  1. On your local machine, apply all fixes to app/admin.py
  2. Update requirements.txt to use fastapi-admin>=1.0.0
  3. 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?

  1. 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
  1. If any matches found, the sed didn't work. Try manual fix.

  2. Check PM2 logs for new errors:

pm2 logs irt-bank-soal --lines 50

Document End