Erstellte Aufgaben, die nicht im Lehrer -Dashboard angezeigt werdenPython

Python-Programme
Anonymous
 Erstellte Aufgaben, die nicht im Lehrer -Dashboard angezeigt werden

Post by Anonymous »

Ich erstelle einen -Brok-Schulzentrum , in dem Lehrer Aufträge erstellen können, aber nach erfolgreicher Erstellung einer Aufgabe erscheint es nicht im Lehrer-Dashboard .
Erwartete Verhalten < /strong> < /h3>
  • Ein Lehrer erstellt eine Zuordnung. < /li>
    Die Zuordnung wird in der Datenbank gespeichert. >
    aktuelles Problem < /strong> < /h3>

    Zuweisungen Save < /strong> in der Datenbank erfolgreich (bestätigt via db.session.Query (Zuweisung) .All () ).
  • Code: Select all

    teacher_id
    wird korrekt an current_user.id zugewiesen. 'T abgerufen werden. H3> Zuordnungsmodell (SQLAlchemy) [/b]

    Code: Select all

    class Assignment(db.Model):
    __tablename__ = 'assignments'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(255), nullable=False)
    description = db.Column(db.Text)
    due_date = db.Column(db.Date)
    teacher_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
    class_id = db.Column(db.Integer, db.ForeignKey('classes.id'), nullable=False)
    
    teacher = db.relationship('User', back_populates='teacher_assignments')
    class_info = db.relationship('Class', back_populates='assignments')
    < /code>
    
     [b] Erstellung von Zuweisungen < /strong> < /h3>
    @main.route('/create_assignment', methods=['POST'])
    @login_required
    def create_assignment():
    if current_user.role != 'teacher':
    return jsonify({'success': False, 'message': 'Unauthorized'}), 403
    
    data = request.get_json()
    title, description, due_date, class_code = data.get('title'), data.get('description'), data.get('due_date'), data.get('class_code')
    
    if not title or not description or not due_date or not class_code:
    return jsonify({'success': False, 'message': 'All fields are required.'}), 400
    
    try:
    due_date_obj = datetime.strptime(due_date, '%Y-%m-%dT%H:%M')
    except ValueError:
    return jsonify({'success': False, 'message': 'Invalid date format.'}), 400
    
    class_entry = Class.query.filter_by(id=class_code).first()
    if not class_entry:
    return jsonify({'success': False, 'message': 'Invalid class code.'}), 404
    
    new_assignment = Assignment(
    name=title,
    description=description,
    due_date=due_date_obj,
    teacher_id=current_user.id,
    class_id=class_entry.id
    )
    db.session.add(new_assignment)
    db.session.commit()
    
    return jsonify({'success': True, 'message': 'Assignment created successfully!'}), 200
    < /code>
    
      Abrufzuweisungen (für Lehrer-Dashboard) < /strong> < /h3>
    @main.route('/get_teacher_assignments', methods=['GET'])
    @login_required
    def get_teacher_assignments():
    if current_user.role != 'teacher':
    return jsonify({"success": False, "message": "Unauthorized"}), 403
    
    assignments = (
    db.session.query(
    Assignment.id, Assignment.name, Assignment.description, Assignment.due_date,
    Class.name.label("class_name"), User.username.label("teacher_username")
    )
    .join(Class, Assignment.class_id == Class.id)
    .join(User, Assignment.teacher_id == User.id)
    .filter(Assignment.teacher_id == current_user.id)
    .order_by(Assignment.due_date)
    .all()
    )
    
    return jsonify({
    "success": True,
    "assignments": [
    {
    "id": a.id, "name": a.name, "description": a.description,
    "due_date": a.due_date.strftime("%Y-%m-%d %H:%M"),
    "class_name": a.class_name, "teacher_username": a.teacher_username
    } for a in assignments
    ]
    })
    < /code>
    
      Frontend (Ajax-Fetch-Anruf) < /strong> < /h3>
    $(document).ready(function() {
    function fetchAssignments() {
    $('#loadingSpinner').show();
    $('#assignmentList').hide();
    
    $.ajax({
    url: '/get_teacher_assignments',
    method: 'GET',
    success: function(response) {
    $('#assignmentList').empty();
    if (response.success && response.assignments.length > 0) {
    response.assignments.forEach(assignment => {
    $('#assignmentList').append(`
    
    ${assignment.name}
    Class:[/b] ${assignment.class_name}
    [b]Teacher:[/b] ${assignment.teacher_username}
    [b]Description:[/b]  ${assignment.description}
    [b]Due Date:[/b] ${assignment.due_date}
    
    `);
    });
    } else {
    $('#assignmentList').append('
    No assignments found.
    ');
    }
    $('#loadingSpinner').hide();
    $('#assignmentList').show();
    },
    error: function(xhr, status, error) {
    console.error('Error fetching assignments:', error);
    $('#loadingSpinner').hide();
    }
    });
    }
    
    fetchAssignments();
    });
    < /code>
    
     [b] Debugging -Schritte, die ausgeführt wurden < /strong> < /h2>
    [list]
      Überprüfte Datenbank [/b]-Die Zuordnung [b] wird korrekt gespeichert.print(db.session.query(Assignment).all())
    
  • Überprüfte Beziehungen [/b] - Der lehrer_id ist korrekt auf current_user.id .
    API -Antwort api -/get_teacher_assisignments Gibt eine leere Liste zurück, obwohl Zuordnungen vorhanden sind.
  • Überprüftes Klassen -ID -Filtering < /strong> - Die class_id < /code> existiert und ist korrekt zugewiesen. < /li>
    < /ol>

    Mögliche Ursachen & Fragen < /strong> < /h2>

    ist der Filter (Zuweisung.Teacher_id == current_user.id) < /Code> Bedingung falsch? überschreiben ">

    Code: Select all

    db.session.expire_all()
    
  • Gibt es ein potenzielles Problem mit den Join -Anweisungen, die gültige Datensätze ausschließen könnten? [/b]
    < li> Könnte es ein Problem mit current_user.id geben, das gespeicherte lehrer_id ?
entspricht Was ich ausprobiert habe und erwartete Ergebnisse

[*] Überprüft, ob Zuordnungen korrekt gespeichert werden ✅

Abfrage: print (db.session.Query (Zuordnung) .All ())
[*] Ergebnis: Zuweisungen existieren in der Datenbank mit korrekter lehrer_id und class_id .
[*] Erwartet: Da die Daten ordnungsgemäß gespeichert sind, sollte sie im Lehrer -Dashboard angezeigt werden.
[/list]

< li> verifizierte API -Antwort < /strong> 🔍 < /p>
  • Anfrage: < /strong> gesendet eine GET -Anforderung an /get_teacher_assisignments .
  • Ergebnis: Die API gibt {"Erfolg": True, "Zuweisungen": []} (leere Liste) .
  • Erwartet: Die API sollte alle vom angemeldeten Lehrer erstellten Zuweisungen zurückgeben.
< /li>
[*] Die Zuordnungen in Flaskella < /strong> 🖥️ < /p>
  • Abfrage: < /strong>

    Code: Select all

    db.session.query(Assignment).filter_by(teacher_id=current_user.id).all()
    
  • Ergebnis: [/b] Keine Zuordnungen gefunden, obwohl sie in der Datenbank vorhanden sind.
  • Erwartet: Die Abfrage sollte alle Zuordnungen für den angemeldeten Lehrer zurückgeben. Überprüft, ob current_user.id lehrer_id 🆔

    Abfrage:
    übereinstimmt: /strong>

    Code: Select all

    print(f"Current User ID: {current_user.id}")
    print(f"Stored Teacher IDs: {[a.teacher_id for a in db.session.query(Assignment).all()]}")
    
  • Ergebnis: [/b] current_user.id stimmt mit einem vorhandenen Lehrer -ad überein, was das Filtering bedeutet Sollte .
  • Erwartet: Die Abfrage sollte Zuordnungen für den Lehrer zurückgeben, aber nicht.
    < /ul>
    < /li>
  • Versucht, sqlalchemy Session < /strong> 🔄 < /p>

    Code versucht: < /strong>

    Code: Select all

    db.session.expire_all()
    assignments = db.session.query(Assignment).filter_by(teacher_id=current_user.id).all()
    
  • Ergebnis: [/b] Gibt noch eine leere Liste zurück.
  • Erwartet: Wenn es sich um ein Sitzungsproblem handelte, hätte dies die Daten aktualisiert haben.
    Endgültige Gedanken < /strong> < /h3>
    Da die Zuordnungen aber nicht abgerufen werden < /strong>, vermute ich, vermute ich : < /p>

    Ein Filterproblem in der Abfrage (Abfrage (

    Code: Select all

    filter(Assignment.teacher_id == current_user.id)
    ) [/b]
  • Ein SQLALCHEMEY -Sitzungsproblem, bei dem Daten nicht ordnungsgemäß aktualisiert werden.
  • Ein Problem damit, wie current_user.id abgerufen wird (obwohl es korrekt druckt)

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post