diff --git a/src/courses/views.py b/src/courses/views.py index 671b01a..df5a03d 100644 --- a/src/courses/views.py +++ b/src/courses/views.py @@ -6,7 +6,7 @@ """ from dataclasses import dataclass -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Any from uuid import UUID from django.views import View from django.http import HttpRequest, HttpResponse, HttpResponseForbidden @@ -15,8 +15,10 @@ from django.contrib.auth.decorators import login_required from django.contrib import messages +from django.forms import BaseFormSet + if TYPE_CHECKING: - from homeworks.forms import HomeworkCreateForm, SectionFormSet + from homeworks.forms import HomeworkCreateForm from llteacher.permissions.decorators import ( student_required, @@ -368,7 +370,7 @@ class HomeworkFormData: """Data structure for homework form view.""" form: "HomeworkCreateForm" - section_forms: "SectionFormSet" + section_forms: "BaseFormSet[Any]" course_name: str course_id: UUID action: str # 'create' @@ -464,7 +466,7 @@ def _process_form_submission( # Create a mutable copy of POST data and inject course post_data = request.POST.copy() - post_data["course"] = course.id + post_data["course"] = str(course.id) # Create forms from POST data form = HomeworkCreateForm(post_data) diff --git a/src/homeworks/views.py b/src/homeworks/views.py index 9933d64..14234b5 100644 --- a/src/homeworks/views.py +++ b/src/homeworks/views.py @@ -8,7 +8,7 @@ from dataclasses import dataclass from typing import TYPE_CHECKING, Dict, Any, assert_type from uuid import UUID -from django.forms import formset_factory +from django.forms import BaseFormSet, formset_factory if TYPE_CHECKING: from django.forms.utils import ErrorDict, ErrorList @@ -262,7 +262,7 @@ class HomeworkFormData: """Data structure for the homework form view.""" form: "HomeworkEditForm" - section_forms: "SectionFormSet" + section_forms: "BaseFormSet[Any]" user_type: str action: str # 'create' or 'edit' is_submitted: bool = False @@ -370,13 +370,12 @@ def _get_view_data( initial_section_data.append(section_data) # Create section formset with initial data - SectionFormset: type[SectionFormSet] = formset_factory( + SectionFormset: type[BaseFormSet[Any]] = formset_factory( SectionForm, extra=0, formset=SectionFormSet ) section_formset = SectionFormset( prefix="sections", initial=initial_section_data ) - assert_type(section_formset, SectionFormSet) # Return form data return HomeworkFormData( @@ -395,11 +394,10 @@ def _process_form_submission( form = HomeworkEditForm(request.POST, instance=homework) # Create formset for sections - SectionFormset: type[SectionFormSet] = formset_factory( + SectionFormset: type[BaseFormSet[Any]] = formset_factory( SectionForm, extra=0, formset=SectionFormSet ) section_formset = SectionFormset(request.POST, prefix="sections") - assert_type(section_formset, SectionFormSet) # Check form validity if form.is_valid() and section_formset.is_valid():