HEX
Server: LiteSpeed
System: Linux houston.panomity.com 6.8.0-100-generic #100-Ubuntu SMP PREEMPT_DYNAMIC Tue Jan 13 16:40:06 UTC 2026 x86_64
User: nudepix (1011)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //opt/kw-schueler.bak.21032025/migrate_data.sh
#!/bin/bash
# Skript zur Installation und Migration der Klausurenweb-Datenbank

# Farben für Ausgaben
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

echo -e "${GREEN}=== Klausurenweb Datenbank-Setup ===${NC}"

# Prüfe, ob Umgebungsvariablen gesetzt sind
if [ -z "$MYSQL_HOST" ] || [ -z "$MYSQL_USER" ] || [ -z "$MYSQL_PASSWORD" ]; then
    echo -e "${RED}Bitte setze die Umgebungsvariablen MYSQL_HOST, MYSQL_USER und MYSQL_PASSWORD.${NC}"
    echo -e "Beispiel: ${YELLOW}export MYSQL_HOST=localhost MYSQL_USER=root MYSQL_PASSWORD=root_password${NC}"
    exit 1
fi

# Datenbankname
DB_NAME="klausurenweb_db"

echo -e "\n${GREEN}1. Erstelle und konfiguriere die Datenbank${NC}"
mysql -h $MYSQL_HOST -u $MYSQL_USER -p$MYSQL_PASSWORD < mysql_setup.sql
if [ $? -ne 0 ]; then
    echo -e "${RED}Fehler bei der Datenbankerstellung. Bitte überprüfe die MySQL-Verbindung.${NC}"
    exit 1
fi
echo -e "${GREEN}Datenbank erfolgreich erstellt.${NC}"

# Entfernen des UNIQUE KEY-Constraints, falls es eine bestehende Installation ist
echo -e "\n${GREEN}1a. Entferne UNIQUE KEY-Constraint auf assignment_types.name${NC}"
mysql -h $MYSQL_HOST -u $MYSQL_USER -p$MYSQL_PASSWORD < remove_unique_constraint.sql
if [ $? -ne 0 ]; then
    echo -e "${YELLOW}Hinweis: Konnte UNIQUE KEY nicht entfernen. Dies kann bei Neuinstallationen normal sein.${NC}"
else
    echo -e "${GREEN}UNIQUE KEY-Constraint erfolgreich entfernt.${NC}"
fi

echo -e "\n${GREEN}2. Importiere Lehrerkonten${NC}"
if [ -f "teachers_import.csv" ]; then
    python update_teacher_passwords.py \
        --host=$MYSQL_HOST \
        --user=$MYSQL_USER \
        --password=$MYSQL_PASSWORD \
        --database=$DB_NAME \
        --csv-file=teachers_import.csv
    
    if [ $? -ne 0 ]; then
        echo -e "${RED}Fehler beim Import der Lehrerkonten.${NC}"
        exit 1
    fi
    echo -e "${GREEN}Lehrerkonten erfolgreich importiert.${NC}"
else
    echo -e "${YELLOW}Die Datei teachers_import.csv wurde nicht gefunden. Lehrerkonten werden nicht importiert.${NC}"
    echo -e "${YELLOW}Du kannst die Beispieldatei teachers_import_example.csv als Vorlage verwenden.${NC}"
fi

echo -e "\n${GREEN}3. Migriere Fächer und Aufgabentypen${NC}"
if [ -f "fach_aufgaben.json" ]; then
    echo -e "${YELLOW}Bitte gib die ID des Lehrers ein, dem die Fächer und Aufgabentypen zugewiesen werden sollen (leer lassen, um zu überspringen):${NC}"
    read TEACHER_ID
    
    if [ -n "$TEACHER_ID" ]; then
        TEACHER_PARAM="--admin-teacher-id=$TEACHER_ID"
    else
        TEACHER_PARAM=""
    fi
    
    python migrate_subjects_types.py \
        --host=$MYSQL_HOST \
        --user=$MYSQL_USER \
        --password=$MYSQL_PASSWORD \
        --database=$DB_NAME \
        --json-file=fach_aufgaben.json \
        $TEACHER_PARAM
    
    if [ $? -ne 0 ]; then
        echo -e "${RED}Fehler bei der Migration der Fächer und Aufgabentypen.${NC}"
        exit 1
    fi
    echo -e "${GREEN}Fächer und Aufgabentypen erfolgreich migriert.${NC}"
else
    echo -e "${RED}Die Datei fach_aufgaben.json wurde nicht gefunden. Migration wird übersprungen.${NC}"
fi

# Neu: Migration der Materialien
echo -e "\n${GREEN}4. Migriere Lehrmaterialien in die Datenbank${NC}"
if [ -d "schule-materialien" ]; then
    echo -e "${YELLOW}Sollen die vorhandenen Materialien in die Datenbank migriert werden? (j/n):${NC}"
    read MIGRATE_MATERIALS
    
    if [ "$MIGRATE_MATERIALS" = "j" ] || [ "$MIGRATE_MATERIALS" = "J" ]; then
        # Erstelle zuerst die benötigten Tabellen
        python migrate_materials.py \
            --host=$MYSQL_HOST \
            --user=$MYSQL_USER \
            --password=$MYSQL_PASSWORD \
            --database=$DB_NAME \
            --setup-tables
        
        if [ $? -ne 0 ]; then
            echo -e "${RED}Fehler beim Erstellen der Materialtabellen. Abbruch.${NC}"
            exit 1
        fi
        
        echo -e "${GREEN}Materialien-Tabellen erfolgreich erstellt.${NC}"
        echo -e "${YELLOW}Starte Migration der Materialien...${NC}"
        
        python migrate_materials.py \
            --host=$MYSQL_HOST \
            --user=$MYSQL_USER \
            --password=$MYSQL_PASSWORD \
            --database=$DB_NAME \
            --materials-dir="schule-materialien"
        
        if [ $? -ne 0 ]; then
            echo -e "${RED}Fehler bei der Migration der Materialien.${NC}"
            exit 1
        fi
        echo -e "${GREEN}Materialien erfolgreich migriert.${NC}"
    else
        echo -e "${YELLOW}Migration der Materialien übersprungen.${NC}"
    fi
else
    echo -e "${YELLOW}Das Verzeichnis schule-materialien wurde nicht gefunden. Migration der Materialien wird übersprungen.${NC}"
fi

echo -e "\n${GREEN}5. Streamlit-Konfiguration${NC}"
if [ ! -d ".streamlit" ]; then
    mkdir -p .streamlit
fi

if [ ! -f ".streamlit/secrets.toml" ]; then
    echo -e "${YELLOW}Erstelle .streamlit/secrets.toml Konfigurationsdatei...${NC}"
    cat > .streamlit/secrets.toml << EOF
[mysql]
host = "$MYSQL_HOST"
user = "$MYSQL_USER"
password = "$MYSQL_PASSWORD"
database = "$DB_NAME"

[email]
smtp_server = "smtp.example.com"
smtp_port = 587
username = "dein_username"
password = "dein_passwort"
sender = "no-reply@example.com"

# Basis-URL für Passwort-Reset-Links
base_url = "https://klausurenweb.de"
EOF
    echo -e "${GREEN}.streamlit/secrets.toml erstellt. Bitte passe die E-Mail-Einstellungen an.${NC}"
else
    echo -e "${YELLOW}.streamlit/secrets.toml existiert bereits. Bitte überprüfe, ob die Konfiguration korrekt ist.${NC}"
fi

echo -e "\n${GREEN}=== Setup abgeschlossen ===${NC}"
echo -e "${GREEN}Die Klausurenweb-Datenbank wurde erfolgreich eingerichtet.${NC}"
echo -e "${YELLOW}Bitte stelle sicher, dass die E-Mail-Einstellungen in .streamlit/secrets.toml korrekt sind.${NC}"