From 39e894ce4dbb9c7f95761b472901826cbfa99ecf Mon Sep 17 00:00:00 2001
From: Andreas Kloeckner <inform@tiker.net>
Date: Wed, 14 Sep 2016 11:36:33 -0500
Subject: [PATCH] Type check/fix stage 2 exception gen

---
 course/views.py | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/course/views.py b/course/views.py
index f16d5936..78557235 100644
--- a/course/views.py
+++ b/course/views.py
@@ -82,7 +82,7 @@ from course.utils import (  # noqa
 
 # {{{ for mypy
 
-from typing import Text, Optional, Any  # noqa
+from typing import Tuple, List, Text, Optional, Any, Iterable  # noqa
 
 from course.content import (  # noqa
     FlowDesc,
@@ -762,6 +762,8 @@ def strify_session_for_exception(session):
 class CreateSessionForm(StyledForm):
     def __init__(self, session_tag_choices, default_tag, create_session_is_override,
             *args, **kwargs):
+        # type: (List[Tuple[Text, Text]], Optional[Text], bool, *Any, **Any) -> None
+
         super(CreateSessionForm, self).__init__(*args, **kwargs)
 
         self.fields["access_rules_tag_for_new_session"] = forms.ChoiceField(
@@ -785,6 +787,8 @@ class CreateSessionForm(StyledForm):
 
 class ExceptionStage2Form(StyledForm):
     def __init__(self, sessions, *args, **kwargs):
+        # type: (List[FlowSession], *Any, **Any) -> None
+
         super(ExceptionStage2Form, self).__init__(*args, **kwargs)
 
         self.fields["session"] = forms.ChoiceField(
@@ -807,6 +811,8 @@ class ExceptionStage2Form(StyledForm):
 
 @course_view
 def grant_exception_stage_2(pctx, participation_id, flow_id):
+    # type: (CoursePageContext, Text, Text) -> http.HttpResponse
+
     if not pctx.has_permission(pperm.grant_exception):
         raise PermissionDenied(_("may not grant exceptions"))
 
@@ -846,7 +852,7 @@ def grant_exception_stage_2(pctx, participation_id, flow_id):
 
     from course.utils import get_session_start_rule
     session_start_rule = get_session_start_rule(pctx.course, participation,
-            participation.role, flow_id, flow_desc, now_datetime)
+            flow_id, flow_desc, now_datetime)
 
     create_session_is_override = False
     if not session_start_rule.may_start_new_session:
@@ -865,7 +871,9 @@ def grant_exception_stage_2(pctx, participation_id, flow_id):
     # }}}
 
     def find_sessions():
-        return (FlowSession.objects
+        # type: () -> List[FlowSession]
+
+        return list(FlowSession.objects
                 .filter(
                     participation=participation,
                     flow_id=flow_id)
@@ -902,13 +910,13 @@ def grant_exception_stage_2(pctx, participation_id, flow_id):
 
             exception_form = None
 
-        elif exception_form.is_valid() and "next" in request.POST:
+        elif exception_form.is_valid() and "next" in request.POST:  # type: ignore
             return redirect(
                     "relate-grant_exception_stage_3",
                     pctx.course.identifier,
                     participation.id,
                     flow_id,
-                    exception_form.cleaned_data["session"])
+                    exception_form.cleaned_data["session"])  # type: ignore
     else:
         create_session_form = CreateSessionForm(
                 session_tag_choices, default_tag, create_session_is_override)
-- 
GitLab