diff --git a/lms/djangoapps/survey/admin.py b/lms/djangoapps/survey/admin.py index 8c1e7368de..f16a6de4aa 100644 --- a/lms/djangoapps/survey/admin.py +++ b/lms/djangoapps/survey/admin.py @@ -2,6 +2,8 @@ Provide accessors to these models via the Django Admin pages """ +from __future__ import absolute_import + from django import forms from django.contrib import admin diff --git a/lms/djangoapps/survey/apps.py b/lms/djangoapps/survey/apps.py index 1a9e20a2fc..43ebba50a9 100644 --- a/lms/djangoapps/survey/apps.py +++ b/lms/djangoapps/survey/apps.py @@ -2,6 +2,8 @@ Survey Application Configuration """ +from __future__ import absolute_import + from django.apps import AppConfig diff --git a/lms/djangoapps/survey/migrations/0001_initial.py b/lms/djangoapps/survey/migrations/0001_initial.py index 7f33ce5445..b02e217644 100644 --- a/lms/djangoapps/survey/migrations/0001_initial.py +++ b/lms/djangoapps/survey/migrations/0001_initial.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals +from __future__ import absolute_import from django.db import migrations, models import django.utils.timezone from django.conf import settings diff --git a/lms/djangoapps/survey/models.py b/lms/djangoapps/survey/models.py index 9ef3590737..53468c2f44 100644 --- a/lms/djangoapps/survey/models.py +++ b/lms/djangoapps/survey/models.py @@ -2,6 +2,8 @@ Models to support Course Surveys feature """ +from __future__ import absolute_import + import logging from collections import OrderedDict @@ -157,7 +159,7 @@ class SurveyForm(TimeStampedModel): ) for input_field in input_fields: - if 'name' in input_field.keys() and input_field.attrib['name'] not in names: + if 'name' in list(input_field.keys()) and input_field.attrib['name'] not in names: names.append(input_field.attrib['name']) return names diff --git a/lms/djangoapps/survey/signals.py b/lms/djangoapps/survey/signals.py index 1370fa1622..665c7d6660 100644 --- a/lms/djangoapps/survey/signals.py +++ b/lms/djangoapps/survey/signals.py @@ -1,10 +1,11 @@ """ Signal handlers for the survey app """ +from __future__ import absolute_import + from django.dispatch.dispatcher import receiver from openedx.core.djangoapps.user_api.accounts.signals import USER_RETIRE_LMS_MISC - from survey.models import SurveyAnswer diff --git a/lms/djangoapps/survey/tests/factories.py b/lms/djangoapps/survey/tests/factories.py index 40844c716c..8c35737733 100644 --- a/lms/djangoapps/survey/tests/factories.py +++ b/lms/djangoapps/survey/tests/factories.py @@ -1,4 +1,6 @@ # pylint:disable=missing-docstring +from __future__ import absolute_import + import factory from student.tests.factories import UserFactory diff --git a/lms/djangoapps/survey/tests/test_models.py b/lms/djangoapps/survey/tests/test_models.py index bcd63ff1f6..ed2de628fd 100644 --- a/lms/djangoapps/survey/tests/test_models.py +++ b/lms/djangoapps/survey/tests/test_models.py @@ -2,9 +2,12 @@ Python tests for the Survey models """ +from __future__ import absolute_import + from collections import OrderedDict import ddt +import six from django.contrib.auth.models import User from django.core.exceptions import ValidationError from django.test import TestCase @@ -94,7 +97,7 @@ class SurveyModelsTests(TestCase): """ survey = self._create_test_survey() self.assertIsNotNone(survey) - self.assertEquals(unicode(survey), self.test_survey_name) + self.assertEquals(six.text_type(survey), self.test_survey_name) def test_create_form_with_malformed_html(self): """ @@ -169,12 +172,12 @@ class SurveyModelsTests(TestCase): self.assertTrue(survey.has_user_answered_survey(self.student)) all_answers = survey.get_answers() - self.assertEquals(len(all_answers.keys()), 1) + self.assertEquals(len(list(all_answers.keys())), 1) self.assertIn(self.student.id, all_answers) self.assertEquals(all_answers[self.student.id], self.student_answers) answers = survey.get_answers(self.student) - self.assertEquals(len(answers.keys()), 1) + self.assertEquals(len(list(answers.keys())), 1) self.assertIn(self.student.id, answers) self.assertEquals(all_answers[self.student.id], self.student_answers) @@ -187,7 +190,7 @@ class SurveyModelsTests(TestCase): for answer_obj in answer_objs: if course_id: - self.assertEquals(unicode(answer_obj.course_key), course_id) + self.assertEquals(six.text_type(answer_obj.course_key), course_id) else: self.assertIsNone(answer_obj.course_key) @@ -205,19 +208,19 @@ class SurveyModelsTests(TestCase): self.assertTrue(survey.has_user_answered_survey(self.student)) all_answers = survey.get_answers() - self.assertEquals(len(all_answers.keys()), 2) + self.assertEquals(len(list(all_answers.keys())), 2) self.assertIn(self.student.id, all_answers) self.assertIn(self.student2.id, all_answers) self.assertEquals(all_answers[self.student.id], self.student_answers) self.assertEquals(all_answers[self.student2.id], self.student2_answers) answers = survey.get_answers(self.student) - self.assertEquals(len(answers.keys()), 1) + self.assertEquals(len(list(answers.keys())), 1) self.assertIn(self.student.id, answers) self.assertEquals(answers[self.student.id], self.student_answers) answers = survey.get_answers(self.student2) - self.assertEquals(len(answers.keys()), 1) + self.assertEquals(len(list(answers.keys())), 1) self.assertIn(self.student2.id, answers) self.assertEquals(answers[self.student2.id], self.student2_answers) @@ -232,7 +235,7 @@ class SurveyModelsTests(TestCase): survey.save_user_answers(self.student, self.student_answers, self.course_id) answers = survey.get_answers(self.student) - self.assertEquals(len(answers.keys()), 1) + self.assertEquals(len(list(answers.keys())), 1) self.assertIn(self.student.id, answers) self.assertEquals(answers[self.student.id], self.student_answers) @@ -240,7 +243,7 @@ class SurveyModelsTests(TestCase): survey.save_user_answers(self.student, self.student_answers_update, self.course_id) answers = survey.get_answers(self.student) - self.assertEquals(len(answers.keys()), 1) + self.assertEquals(len(list(answers.keys())), 1) self.assertIn(self.student.id, answers) self.assertEquals(answers[self.student.id], self.student_answers_update) @@ -248,7 +251,7 @@ class SurveyModelsTests(TestCase): survey.save_user_answers(self.student, self.student_answers_update2, self.course_id) answers = survey.get_answers(self.student) - self.assertEquals(len(answers.keys()), 1) + self.assertEquals(len(list(answers.keys())), 1) self.assertIn(self.student.id, answers) self.assertEquals(answers[self.student.id], self.student_answers_update2) @@ -265,7 +268,7 @@ class SurveyModelsTests(TestCase): # even though we have 2 users submitted answers # limit the result set to just 1 all_answers = survey.get_answers(limit_num_users=1) - self.assertEquals(len(all_answers.keys()), 1) + self.assertEquals(len(list(all_answers.keys())), 1) def test_get_field_names(self): """ diff --git a/lms/djangoapps/survey/tests/test_signals.py b/lms/djangoapps/survey/tests/test_signals.py index 64c24ab9c0..dfaf002382 100644 --- a/lms/djangoapps/survey/tests/test_signals.py +++ b/lms/djangoapps/survey/tests/test_signals.py @@ -2,14 +2,15 @@ Test signal handlers for the survey app """ +from __future__ import absolute_import + +from lms.djangoapps.survey.signals import _listen_for_lms_retire from openedx.core.djangoapps.user_api.accounts.tests.retirement_helpers import fake_completed_retirement from student.tests.factories import UserFactory from survey.models import SurveyAnswer from survey.tests.factories import SurveyAnswerFactory from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase -from lms.djangoapps.survey.signals import _listen_for_lms_retire - class SurveyRetireSignalTests(ModuleStoreTestCase): """ diff --git a/lms/djangoapps/survey/tests/test_utils.py b/lms/djangoapps/survey/tests/test_utils.py index 91d6cb108b..912b17858c 100644 --- a/lms/djangoapps/survey/tests/test_utils.py +++ b/lms/djangoapps/survey/tests/test_utils.py @@ -2,13 +2,15 @@ Python tests for the Survey models """ +from __future__ import absolute_import + from collections import OrderedDict from django.contrib.auth.models import User from django.test.client import Client from survey.models import SurveyForm -from survey.utils import is_survey_required_for_course, is_survey_required_and_unanswered +from survey.utils import is_survey_required_and_unanswered, is_survey_required_for_course from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase from xmodule.modulestore.tests.factories import CourseFactory diff --git a/lms/djangoapps/survey/tests/test_views.py b/lms/djangoapps/survey/tests/test_views.py index 983ca44470..4c73208c97 100644 --- a/lms/djangoapps/survey/tests/test_views.py +++ b/lms/djangoapps/survey/tests/test_views.py @@ -2,11 +2,14 @@ Python tests for the Survey views """ +from __future__ import absolute_import + import json from collections import OrderedDict -from django.urls import reverse +import six from django.test.client import Client +from django.urls import reverse from student.tests.factories import UserFactory from survey.models import SurveyAnswer, SurveyForm @@ -129,7 +132,7 @@ class SurveyViewsTests(ModuleStoreTestCase): data['csrfmiddlewaretoken'] = 'foo' data['_redirect_url'] = 'bar' - data['course_id'] = unicode(self.course.id) + data['course_id'] = six.text_type(self.course.id) resp = self.client.post( self.postback_url, @@ -148,7 +151,7 @@ class SurveyViewsTests(ModuleStoreTestCase): ) for answer_obj in answer_objs: - self.assertEquals(unicode(answer_obj.course_key), data['course_id']) + self.assertEquals(six.text_type(answer_obj.course_key), data['course_id']) def test_encoding_answers(self): """ diff --git a/lms/djangoapps/survey/urls.py b/lms/djangoapps/survey/urls.py index 37b191b521..1426acfa72 100644 --- a/lms/djangoapps/survey/urls.py +++ b/lms/djangoapps/survey/urls.py @@ -2,6 +2,8 @@ URL mappings for the Survey feature """ +from __future__ import absolute_import + from django.conf.urls import url from survey import views diff --git a/lms/djangoapps/survey/utils.py b/lms/djangoapps/survey/utils.py index f8c8fb595c..a8ebf60b14 100644 --- a/lms/djangoapps/survey/utils.py +++ b/lms/djangoapps/survey/utils.py @@ -1,8 +1,10 @@ """ Utilities for determining whether or not a survey needs to be completed. """ +from __future__ import absolute_import + from courseware.access import has_access -from survey.models import SurveyForm, SurveyAnswer +from survey.models import SurveyAnswer, SurveyForm def is_survey_required_for_course(course_descriptor): diff --git a/lms/djangoapps/survey/views.py b/lms/djangoapps/survey/views.py index 93fe837014..a7566d4ec9 100644 --- a/lms/djangoapps/survey/views.py +++ b/lms/djangoapps/survey/views.py @@ -2,13 +2,15 @@ View endpoints for Survey """ +from __future__ import absolute_import + import json import logging from django.conf import settings from django.contrib.auth.decorators import login_required -from django.urls import reverse from django.http import HttpResponse, HttpResponseNotFound, HttpResponseRedirect +from django.urls import reverse from django.utils.html import escape from django.views.decorators.http import require_POST from opaque_keys.edx.keys import CourseKey