TE-2689 Remove useless pylint suppressions part 2

This commit is contained in:
Jeremy Bowman
2018-08-14 16:37:25 -04:00
parent de7e2e18b7
commit 1a5bf35357
52 changed files with 90 additions and 137 deletions

View File

@@ -101,14 +101,12 @@ class TestUserBadgeAssertions(UserAssertionTestCase):
for dummy in range(3):
self.create_badge_class(False)
response = self.get_json(self.url())
# pylint: disable=no-member
self.assertEqual(len(response['results']), 4)
def test_assertion_structure(self):
badge_class = self.create_badge_class(False)
assertion = BadgeAssertionFactory.create(user=self.user, badge_class=badge_class)
response = self.get_json(self.url())
# pylint: disable=no-member
self.check_assertion_structure(assertion, response['results'][0])
@@ -132,11 +130,9 @@ class TestUserCourseBadgeAssertions(UserAssertionTestCase):
for dummy in range(6):
BadgeAssertionFactory.create(badge_class=badge_class)
response = self.get_json(self.url(), data={'course_id': course_key})
# pylint: disable=no-member
self.assertEqual(len(response['results']), 3)
unused_course = CourseFactory.create()
response = self.get_json(self.url(), data={'course_id': unused_course.location.course_key})
# pylint: disable=no-member
self.assertEqual(len(response['results']), 0)
def test_assertion_structure(self):
@@ -147,7 +143,6 @@ class TestUserCourseBadgeAssertions(UserAssertionTestCase):
badge_class = BadgeClassFactory.create(course_id=course_key)
assertion = BadgeAssertionFactory.create(badge_class=badge_class, user=self.user)
response = self.get_json(self.url())
# pylint: disable=no-member
self.check_assertion_structure(assertion, response['results'][0])
@@ -189,7 +184,6 @@ class TestUserBadgeAssertionsByClass(UserAssertionTestCase):
expected_length = 4
else:
expected_length = 3
# pylint: disable=no-member
self.assertEqual(len(response['results']), expected_length)
unused_class = self.create_badge_class(check_course, slug='unused_slug', issuing_component='unused_component')
@@ -197,7 +191,6 @@ class TestUserBadgeAssertionsByClass(UserAssertionTestCase):
self.url(),
data=self.get_qs_args(check_course, wildcard, unused_class),
)
# pylint: disable=no-member
self.assertEqual(len(response['results']), 0)
def check_badge_class_assertion(self, check_course, wildcard, badge_class):
@@ -209,7 +202,6 @@ class TestUserBadgeAssertionsByClass(UserAssertionTestCase):
self.url(),
data=self.get_qs_args(check_course, wildcard, badge_class),
)
# pylint: disable=no-member
self.check_assertion_structure(assertion, response['results'][0])
@unpack

View File

@@ -47,7 +47,6 @@ class CourseEnrollmentBadgeTest(ModuleStoreTestCase):
"""
user = UserFactory()
course = CourseFactory()
# pylint: disable=no-member
CourseEnrollment.enroll(user, course_key=course.location.course_key)
self.assertFalse(user.badgeassertion_set.all())
@@ -61,7 +60,6 @@ class CourseEnrollmentBadgeTest(ModuleStoreTestCase):
courses = [CourseFactory() for _i in range(required_badges)]
for course in courses:
CourseEnrollment.enroll(user, course_key=course.location.course_key)
# pylint: disable=no-member
assertions = user.badgeassertion_set.all().order_by('id')
self.assertEqual(user.badgeassertion_set.all().count(), checkpoint)
self.assertEqual(assertions[checkpoint - 1].badge_class, self.badge_classes[checkpoint - 1])
@@ -102,10 +100,8 @@ class CourseCompletionBadgeTest(ModuleStoreTestCase):
user = UserFactory()
course = CourseFactory()
GeneratedCertificate(
# pylint: disable=no-member
user=user, course_id=course.location.course_key, status=CertificateStatuses.downloadable
).save()
# pylint: disable=no-member
self.assertFalse(user.badgeassertion_set.all())
@unpack
@@ -118,12 +114,9 @@ class CourseCompletionBadgeTest(ModuleStoreTestCase):
courses = [CourseFactory() for _i in range(required_badges)]
for course in courses:
GeneratedCertificate(
# pylint: disable=no-member
user=user, course_id=course.location.course_key, status=CertificateStatuses.downloadable
).save()
# pylint: disable=no-member
assertions = user.badgeassertion_set.all().order_by('id')
# pylint: disable=no-member
self.assertEqual(user.badgeassertion_set.all().count(), checkpoint)
self.assertEqual(assertions[checkpoint - 1].badge_class, self.badge_classes[checkpoint - 1])
@@ -151,7 +144,6 @@ class CourseGroupBadgeTest(ModuleStoreTestCase):
]
self.courses = []
for _badge_class in self.badge_classes:
# pylint: disable=no-member
self.courses.append([CourseFactory().location.course_key for _i in range(3)])
lines = [badge_class.slug + ',' + ','.join([unicode(course_key) for course_key in keys])
for badge_class, keys in zip(self.badge_classes, self.courses)]
@@ -166,10 +158,8 @@ class CourseGroupBadgeTest(ModuleStoreTestCase):
user = UserFactory()
course = CourseFactory()
GeneratedCertificate(
# pylint: disable=no-member
user=user, course_id=course.location.course_key, status=CertificateStatuses.downloadable
).save()
# pylint: disable=no-member
self.assertFalse(user.badgeassertion_set.all())
def test_group_matches(self):
@@ -188,7 +178,6 @@ class CourseGroupBadgeTest(ModuleStoreTestCase):
self.assertTrue(badge_class.get_for_user(user))
else:
self.assertFalse(badge_class.get_for_user(user))
# pylint: disable=no-member
classes = [badge.badge_class.id for badge in user.badgeassertion_set.all()]
source_classes = [badge.id for badge in self.badge_classes]
self.assertEqual(classes, source_classes)

View File

@@ -168,7 +168,7 @@ class BadgeAssertion(TimeStampedModel):
# Abstract model doesn't index this, so we have to.
BadgeAssertion._meta.get_field('created').db_index = True # pylint: disable=protected-access
BadgeAssertion._meta.get_field('created').db_index = True
class CourseCompleteImageConfiguration(models.Model):
@@ -206,7 +206,6 @@ class CourseCompleteImageConfiguration(models.Model):
"""
Make sure there's not more than one default.
"""
# pylint: disable=no-member
if self.default and CourseCompleteImageConfiguration.objects.filter(default=True).exclude(id=self.id):
raise ValidationError(_(u"There can be only one default image."))

View File

@@ -83,7 +83,7 @@ class BadgeClassTest(ModuleStoreTestCase):
"""
Remove all files uploaded as badges.
"""
upload_to = BadgeClass._meta.get_field('image').upload_to # pylint: disable=protected-access
upload_to = BadgeClass._meta.get_field('image').upload_to
if default_storage.exists(upload_to):
(_, files) = default_storage.listdir(upload_to)
for uploaded_file in files:

View File

@@ -79,9 +79,9 @@ class Target(models.Model):
Returns a short display name
"""
if self.target_type == SEND_TO_COHORT:
return self.cohorttarget.short_display() # pylint: disable=no-member
return self.cohorttarget.short_display()
elif self.target_type == SEND_TO_TRACK:
return self.coursemodetarget.short_display() # pylint: disable=no-member
return self.coursemodetarget.short_display()
else:
return self.target_type
@@ -90,9 +90,9 @@ class Target(models.Model):
Returns a long display name
"""
if self.target_type == SEND_TO_COHORT:
return self.cohorttarget.long_display() # pylint: disable=no-member
return self.cohorttarget.long_display()
elif self.target_type == SEND_TO_TRACK:
return self.coursemodetarget.long_display() # pylint: disable=no-member
return self.coursemodetarget.long_display()
else:
return self.get_target_type_display()
@@ -123,7 +123,7 @@ class Target(models.Model):
enrollment_qset.exclude(id__in=staff_instructor_qset)
)
elif self.target_type == SEND_TO_COHORT:
return self.cohorttarget.cohort.users.filter(id__in=enrollment_qset) # pylint: disable=no-member
return self.cohorttarget.cohort.users.filter(id__in=enrollment_qset)
elif self.target_type == SEND_TO_TRACK:
return use_read_replica_if_available(
User.objects.filter(
@@ -432,7 +432,6 @@ class CourseAuthorization(models.Model):
not_en = "Not "
if self.email_enabled:
not_en = ""
# pylint: disable=no-member
return u"Course '{}': Instructor Email {}Enabled".format(text_type(self.course_id), not_en)

View File

@@ -23,9 +23,9 @@ from boto.ses.exceptions import (
SESLocalAddressCharacterError,
SESMaxSendingRateExceededError
)
from celery import current_task, task # pylint: disable=no-name-in-module
from celery.exceptions import RetryTaskError # pylint: disable=no-name-in-module, import-error
from celery.states import FAILURE, RETRY, SUCCESS # pylint: disable=no-name-in-module, import-error
from celery import current_task, task
from celery.exceptions import RetryTaskError
from celery.states import FAILURE, RETRY, SUCCESS
from django.conf import settings
from django.contrib.auth.models import User
from django.core.mail import EmailMultiAlternatives, get_connection

View File

@@ -7,7 +7,7 @@ from itertools import cycle
from smtplib import SMTPConnectError, SMTPDataError, SMTPServerDisconnected
import ddt
from celery.states import RETRY, SUCCESS # pylint: disable=no-name-in-module, import-error
from celery.states import RETRY, SUCCESS
from django.conf import settings
from django.core.management import call_command
from django.urls import reverse

View File

@@ -23,7 +23,7 @@ from boto.ses.exceptions import (
SESLocalAddressCharacterError,
SESMaxSendingRateExceededError
)
from celery.states import FAILURE, SUCCESS # pylint: disable=no-name-in-module, import-error
from celery.states import FAILURE, SUCCESS
from django.conf import settings
from django.core.management import call_command
from mock import Mock, patch

View File

@@ -33,7 +33,7 @@ def require_certificate_permission(func):
View decorator that requires permission to view and regenerate certificates.
"""
@wraps(func)
def inner(request, *args, **kwargs): # pylint:disable=missing-docstring
def inner(request, *args, **kwargs):
if has_access(request.user, "certificates", "global"):
return func(request, *args, **kwargs)
else:
@@ -285,5 +285,5 @@ def _deactivate_invalidation(certificate):
)
# Deactivate certificate invalidation if it was fetched successfully.
certificate_invalidation.deactivate()
except CertificateInvalidation.DoesNotExist: # pylint: disable=bare-except
except CertificateInvalidation.DoesNotExist:
pass

View File

@@ -135,7 +135,7 @@ class BasketsViewTests(EnrollmentEventTestMixin, UserMixin, ModuleStoreTestCase)
"""
# Set user's active flag
self.user.is_active = user_is_active
self.user.save() # pylint: disable=no-member
self.user.save()
response = self._post_to_view()
# Validate the response content
@@ -275,7 +275,7 @@ class BasketsViewTests(EnrollmentEventTestMixin, UserMixin, ModuleStoreTestCase)
Verifies that the view returns HTTP 406 when a course is closed.
"""
self.course.enrollment_end = datetime.now(pytz.UTC) - timedelta(days=1)
modulestore().update_item(self.course, self.user.id) # pylint:disable=no-member
modulestore().update_item(self.course, self.user.id)
self.assertEqual(self._post_to_view().status_code, 406)

View File

@@ -54,7 +54,7 @@ class Command(BaseCommand):
checkout_on_ecommerce = options.get('checkout_on_ecommerce')
# We are keeping id=1, because as of now, there are only one commerce configuration for the system.
CommerceConfiguration.objects.update_or_create( # pylint: disable=no-member
CommerceConfiguration.objects.update_or_create(
id=1,
defaults={
'enabled': not disable,

View File

@@ -57,7 +57,7 @@ class EdxRestApiClientTest(TestCase):
claims = {
'tracking_context': {
'lms_user_id': self.user.id, # pylint: disable=no-member
'lms_user_id': self.user.id,
'lms_client_id': self.TEST_CLIENT_ID,
'lms_ip': '127.0.0.1',
}

View File

@@ -340,7 +340,7 @@ def _send_refund_notification(user, refund_ids):
return create_zendesk_ticket(requester_name, student.email, subject, body, tags)
def _generate_refund_notification_body(student, refund_ids): # pylint: disable=invalid-name
def _generate_refund_notification_body(student, refund_ids):
""" Returns a refund notification message body. """
msg = _(
'A refund request has been initiated for {username} ({email}). '

View File

@@ -247,7 +247,7 @@ class TestBlocksView(SharedModuleStoreTestCase):
self.verify_response_with_requested_fields(response)
class TestBlocksInCourseView(TestBlocksView): # pylint: disable=test-inherits-tests
class TestBlocksInCourseView(TestBlocksView):
"""
Test class for BlocksInCourseView
"""

View File

@@ -96,7 +96,7 @@ class TestCourseSerializer(CourseApiFactoryMixin, ModuleStoreTestCase):
def test_basic(self):
course = self.create_course()
CourseDetails.update_about_video(course, 'test_youtube_id', self.staff_user.id) # pylint: disable=no-member
CourseDetails.update_about_video(course, 'test_youtube_id', self.staff_user.id)
with check_mongo_calls(self.expected_mongo_calls):
result = self._get_result(course)
self.assertDictEqual(result, self.expected_data)
@@ -139,7 +139,7 @@ class TestCourseSerializer(CourseApiFactoryMixin, ModuleStoreTestCase):
self.assertEqual(result['pacing'], expected_pacing)
class TestCourseDetailSerializer(TestCourseSerializer): # pylint: disable=test-inherits-tests
class TestCourseDetailSerializer(TestCourseSerializer):
"""
Test CourseDetailSerializer by rerunning all the tests
in TestCourseSerializer, but with the

View File

@@ -98,7 +98,7 @@ class CourseListViewTestCase(CourseApiTestViewMixin, SharedModuleStoreTestCase):
def test_missing_username(self):
self.setup_user(self.honor_user)
response_to_missing_username = self.verify_response(expected_status_code=200)
self.assertIsNotNone(response_to_missing_username.data) # pylint: disable=no-member
self.assertIsNotNone(response_to_missing_username.data)
def test_not_logged_in(self):
self.client.logout()
@@ -167,13 +167,13 @@ class CourseListViewTestCaseMultipleCourses(CourseApiTestViewMixin, ModuleStoreT
unfiltered_response = self.verify_response(params={'username': self.staff_user.username})
for org in [self.course.org, alternate_course.org]:
self.assertTrue(
any(course['org'] == org for course in unfiltered_response.data['results']) # pylint: disable=no-member
any(course['org'] == org for course in unfiltered_response.data['results'])
)
# With filtering.
filtered_response = self.verify_response(params={'org': self.course.org, 'username': self.staff_user.username})
self.assertTrue(
all(course['org'] == self.course.org for course in filtered_response.data['results']) # pylint: disable=no-member
all(course['org'] == self.course.org for course in filtered_response.data['results'])
)
def test_filter(self):
@@ -193,7 +193,7 @@ class CourseListViewTestCaseMultipleCourses(CourseApiTestViewMixin, ModuleStoreT
params.update(filter_)
response = self.verify_response(params=params)
self.assertEquals(
{course['course_id'] for course in response.data['results']}, # pylint: disable=no-member
{course['course_id'] for course in response.data['results']},
{unicode(course.id) for course in expected_courses},
"testing course_api.views.CourseListView with filter_={}".format(filter_),
)

View File

@@ -98,7 +98,7 @@ class ContentLibraryTransformer(FilteringTransformerMixin, BlockStructureTransfo
# Save back any changes
if any(block_keys[changed] for changed in ('invalid', 'overlimit', 'added')):
state_dict['selected'] = list(selected)
StudentModule.objects.update_or_create( # pylint: disable=no-member
StudentModule.objects.update_or_create(
student=usage_info.user,
course_id=usage_info.course_key,
module_state_key=block_key,

View File

@@ -101,7 +101,6 @@ class StartDateTransformerTestCase(BlockParentsMapTestCase):
(BETA_USER, {0: StartDateType.released, 4: StartDateType.default}, {0, 1, 2, 3, 5, 6}, {6}),
)
@ddt.unpack
# pylint: disable=invalid-name
def test_block_start_date(
self,
user_type,

View File

@@ -77,7 +77,7 @@ def collect_merged_boolean_field(
for block_key in block_structure.topological_traversal():
# compute merged value of the boolean field from all parents
parents = block_structure.get_parents(block_key)
all_parents_merged_value = all( # pylint: disable=invalid-name
all_parents_merged_value = all(
block_structure.get_transformer_block_field(
parent_key, transformer, merged_field_name, False,
)

View File

@@ -42,7 +42,7 @@ class CourseGoal(models.Model):
@receiver(models.signals.post_save, sender=CourseEnrollment, dispatch_uid="update_course_goal_on_enroll_change")
def update_course_goal_on_enroll_change(sender, instance, **kwargs): # pylint: disable=unused-argument, invalid-name
def update_course_goal_on_enroll_change(sender, instance, **kwargs): # pylint: disable=unused-argument
"""
Updates goals as follows on enrollment changes:
1) Set the course goal to 'certify' when the user enrolls as a verified user.

View File

@@ -66,7 +66,7 @@ class CodeMirror(BaseEditor):
"wiki/markitup/sets/admin/set.js",
)
class Media(object): # pylint: disable=missing-docstring
class Media(object):
css = {
'all': ("js/vendor/CodeMirror/codemirror.css",)
}

View File

@@ -135,7 +135,7 @@ try:
# but import the 2.0.3 version if it fails
from markdown.util import etree
except ImportError:
from markdown import etree # pylint: disable=no-name-in-module
from markdown import etree
version = "0.1.6"

View File

@@ -899,7 +899,7 @@ class InlineDiscussionContextTestCase(ForumsEnableMixin, ModuleStoreTestCase):
discussion_topic_id=self.discussion_topic_id
)
self.team.add_user(self.user) # pylint: disable=no-member
self.team.add_user(self.user)
def test_context_can_be_standalone(self, mock_request):
mock_request.side_effect = make_mock_request_impl(
@@ -1261,7 +1261,7 @@ class InlineDiscussionTestCase(ForumsEnableMixin, ModuleStoreTestCase):
discussion_topic_id=self.discussion1.discussion_id
)
team.add_user(self.student) # pylint: disable=no-member
team.add_user(self.student)
response = self.send_request(mock_request)
self.assertEqual(mock_request.call_args[1]['params']['context'], ThreadContext.STANDALONE)
@@ -1470,7 +1470,6 @@ class InlineDiscussionUnicodeTestCase(ForumsEnableMixin, SharedModuleStoreTestCa
@classmethod
def setUpClass(cls):
# pylint: disable=super-method-not-called
with super(InlineDiscussionUnicodeTestCase, cls).setUpClassAndTestData():
cls.course = CourseFactory.create()
@@ -1504,7 +1503,6 @@ class ForumFormDiscussionUnicodeTestCase(ForumsEnableMixin, SharedModuleStoreTes
@classmethod
def setUpClass(cls):
# pylint: disable=super-method-not-called
with super(ForumFormDiscussionUnicodeTestCase, cls).setUpClassAndTestData():
cls.course = CourseFactory.create()
@@ -1594,7 +1592,6 @@ class ForumDiscussionSearchUnicodeTestCase(ForumsEnableMixin, SharedModuleStoreT
@classmethod
def setUpClass(cls):
# pylint: disable=super-method-not-called
with super(ForumDiscussionSearchUnicodeTestCase, cls).setUpClassAndTestData():
cls.course = CourseFactory.create()
@@ -1631,7 +1628,6 @@ class SingleThreadUnicodeTestCase(ForumsEnableMixin, SharedModuleStoreTestCase,
@classmethod
def setUpClass(cls):
# pylint: disable=super-method-not-called
with super(SingleThreadUnicodeTestCase, cls).setUpClassAndTestData():
cls.course = CourseFactory.create(discussion_topics={'dummy_discussion_id': {'id': 'dummy_discussion_id'}})
@@ -1665,7 +1661,6 @@ class UserProfileUnicodeTestCase(ForumsEnableMixin, SharedModuleStoreTestCase, U
@classmethod
def setUpClass(cls):
# pylint: disable=super-method-not-called
with super(UserProfileUnicodeTestCase, cls).setUpClassAndTestData():
cls.course = CourseFactory.create()
@@ -1698,7 +1693,6 @@ class FollowedThreadsUnicodeTestCase(ForumsEnableMixin, SharedModuleStoreTestCas
@classmethod
def setUpClass(cls):
# pylint: disable=super-method-not-called
with super(FollowedThreadsUnicodeTestCase, cls).setUpClassAndTestData():
cls.course = CourseFactory.create()

View File

@@ -180,7 +180,7 @@ def use_bulk_ops(view_func):
the request uri to a CourseKey before passing to the view.
"""
@wraps(view_func)
def wrapped_view(request, course_id, *args, **kwargs): # pylint: disable=missing-docstring
def wrapped_view(request, course_id, *args, **kwargs):
course_key = CourseKey.from_string(course_id)
with modulestore().bulk_operations(course_key):
return view_func(request, course_key, *args, **kwargs)

View File

@@ -913,7 +913,6 @@ class EdxNotesHelpersTest(ModuleStoreTestCase):
Verify that `construct_url` works correctly.
"""
# make absolute url
# pylint: disable=no-member
if self.request.is_secure():
host = 'https://' + self.request.get_host()
else:

View File

@@ -13,4 +13,4 @@ class EmailMarketingConfig(AppConfig):
def ready(self):
# Register the signal handlers.
from . import signals # pylint: disable=unused-import
from . import signals # pylint: disable=unused-variable

View File

@@ -59,7 +59,6 @@ def get_email_cookies_via_sailthru(self, user_email, post_parms):
return None
# pylint: disable=not-callable
@task(bind=True, default_retry_delay=3600, max_retries=24, routing_key=ACE_ROUTING_KEY)
def update_user(self, sailthru_vars, email, site=None, new_user=False, activation=False):
"""
@@ -135,7 +134,6 @@ def is_default_site(site):
return not site or site.get('id') == settings.SITE_ID
# pylint: disable=not-callable
@task(bind=True, default_retry_delay=3600, max_retries=24, routing_key=ACE_ROUTING_KEY)
def update_user_email(self, new_email, old_email):
"""

View File

@@ -318,14 +318,12 @@ class GradingPolicyTestMixin(object):
self.create_user_and_access_token()
def create_user_and_access_token(self):
# pylint: disable=missing-docstring
self.user = GlobalStaffFactory.create()
self.oauth_client = ClientFactory.create()
self.access_token = AccessTokenFactory.create(user=self.user, client=self.oauth_client).token
@classmethod
def create_course_data(cls):
# pylint: disable=missing-docstring
cls.invalid_course_id = 'foo/bar/baz'
cls.course = CourseFactory.create(display_name='An Introduction to API Testing', raw_grader=cls.raw_grader)
cls.course_id = unicode(cls.course.id)

View File

@@ -71,7 +71,6 @@ class CoursePersistentGradesFlag(ConfigurationModel):
not_en = "Not "
if self.enabled:
not_en = ""
# pylint: disable=no-member
return u"Course '{}': Persistent Grades {}Enabled".format(text_type(self.course_id), not_en)

View File

@@ -314,7 +314,7 @@ class PersistentSubsectionGrade(TimeStampedModel):
"""
Returns the "correct" usage key value with the run filled in.
"""
if self.usage_key.run is None: # pylint: disable=no-member
if self.usage_key.run is None:
return self.usage_key.replace(course_key=self.course_id)
else:
return self.usage_key

View File

@@ -1,7 +1,6 @@
"""
Test grading events across apps.
"""
# pylint: disable=protected-access
from mock import call as mock_call, patch

View File

@@ -326,7 +326,6 @@ class TestInternalGetScoreFromBlock(TestCase):
"""
Verifies the result of _get_score_from_persisted_or_latest_block is as expected.
"""
# pylint: disable=unbalanced-tuple-unpacking
(
raw_earned, raw_possible, weighted_earned, weighted_possible, first_attempted
) = scores._get_score_from_persisted_or_latest_block(persisted_block, block, weight)

View File

@@ -93,7 +93,7 @@ class GradesTransformerTestCase(CourseStructureTestCase):
"""
self.assertGreater(len(expectations), 0)
# Append our custom message to the default assertEqual error message
self.longMessage = True # pylint: disable=invalid-name
self.longMessage = True
for field in expectations:
self.assertEqual(
expectations[field],

View File

@@ -1026,7 +1026,7 @@ class TestInstructorAPIBulkAccountCreationAndEnrollment(SharedModuleStoreTestCas
# Remove white label course price
self.white_label_course_mode.min_price = 0
self.white_label_course_mode.suggested_prices = ''
self.white_label_course_mode.save() # pylint: disable=no-member
self.white_label_course_mode.save()
# Login Audit Course instructor
self.client.login(username=self.white_label_course_instructor.username, password='test')
@@ -2258,7 +2258,7 @@ class TestInstructorAPILevelsAccess(SharedModuleStoreTestCase, LoginEnrollmentTe
def test_modify_access_with_inactive_user(self):
self.other_user.is_active = False
self.other_user.save() # pylint: disable=no-member
self.other_user.save()
url = reverse('modify_access', kwargs={'course_id': text_type(self.course.id)})
response = self.client.post(url, {
'unique_student_identifier': self.other_user.username,

View File

@@ -131,7 +131,7 @@ class CertificatesInstructorDashTest(SharedModuleStoreTestCase):
"""
self.course.cert_html_view_enabled = True
self.course.save()
self.store.update_item(self.course, self.global_staff.id) # pylint: disable=no-member
self.store.update_item(self.course, self.global_staff.id)
self.client.login(username=self.global_staff.username, password="test")
response = self.client.get(self.url)
self.assertContains(response, 'Enable Student-Generated Certificates')
@@ -147,7 +147,7 @@ class CertificatesInstructorDashTest(SharedModuleStoreTestCase):
"""
self.course.cert_html_view_enabled = True
self.course.save()
self.store.update_item(self.course, self.global_staff.id) # pylint: disable=no-member
self.store.update_item(self.course, self.global_staff.id)
self.client.login(username=self.global_staff.username, password="test")
response = self.client.get(self.url)
self.assertContains(response, 'Enable Student-Generated Certificates')
@@ -544,7 +544,7 @@ class CertificateExceptionViewInstructorApiTest(SharedModuleStoreTestCase):
# Assert Certificate Exception Updated data
self.assertEqual(certificate_exception['user_email'], self.user.email)
self.assertEqual(certificate_exception['user_name'], self.user.username)
self.assertEqual(certificate_exception['user_id'], self.user.id) # pylint: disable=no-member
self.assertEqual(certificate_exception['user_id'], self.user.id)
def test_certificate_exception_invalid_username_error(self):
"""
@@ -639,7 +639,7 @@ class CertificateExceptionViewInstructorApiTest(SharedModuleStoreTestCase):
# Assert Certificate Exception Updated data
self.assertEqual(certificate_exception['user_email'], self.user.email)
self.assertEqual(certificate_exception['user_name'], self.user.username)
self.assertEqual(certificate_exception['user_id'], self.user.id) # pylint: disable=no-member
self.assertEqual(certificate_exception['user_id'], self.user.id)
course2 = CourseFactory.create()
url_course2 = reverse(
@@ -660,7 +660,7 @@ class CertificateExceptionViewInstructorApiTest(SharedModuleStoreTestCase):
# Assert Certificate Exception Updated data
self.assertEqual(certificate_exception['user_email'], self.user.email)
self.assertEqual(certificate_exception['user_name'], self.user.username)
self.assertEqual(certificate_exception['user_id'], self.user.id) # pylint: disable=no-member
self.assertEqual(certificate_exception['user_id'], self.user.id)
def test_certificate_exception_user_not_enrolled_error(self):
"""

View File

@@ -313,7 +313,6 @@ class TestInstructorEnrollmentStudentModule(SharedModuleStoreTestCase):
org='course',
run='id',
)
# pylint: disable=no-member
cls.course_key = cls.course.location.course_key
with cls.store.bulk_operations(cls.course.id, emit_signals=False):
cls.parent = ItemFactory(

View File

@@ -406,7 +406,7 @@ class TestInstructorDashboard(ModuleStoreTestCase, LoginEnrollmentTestCase, XssT
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
# Max number of student per page is one. Patched setting MAX_STUDENTS_PER_PAGE_GRADE_BOOK = 1
self.assertEqual(len(response.mako_context['students']), 1) # pylint: disable=no-member
self.assertEqual(len(response.mako_context['students']), 1)
def test_open_response_assessment_page(self):
"""

View File

@@ -226,7 +226,7 @@ def require_level(level):
raise ValueError("unrecognized level '{}'".format(level))
def decorator(func): # pylint: disable=missing-docstring
def wrapped(*args, **kwargs): # pylint: disable=missing-docstring
def wrapped(*args, **kwargs):
request = args[0]
course = get_course_by_id(CourseKey.from_string(kwargs['course_id']))
@@ -1826,7 +1826,7 @@ def spent_registration_codes(request, course_id):
company_name = request.POST['spent_company_name']
if company_name:
spent_codes_list = spent_codes_list.filter(invoice_item__invoice__company_name=company_name) # pylint: disable=maybe-no-member
spent_codes_list = spent_codes_list.filter(invoice_item__invoice__company_name=company_name)
csv_type = 'spent'
return registration_codes_csv("Spent_Registration_Codes.csv", spent_codes_list, csv_type)
@@ -1989,7 +1989,7 @@ def reset_student_attempts(request, course_id):
@cache_control(no_cache=True, no_store=True, must_revalidate=True)
@require_level('staff')
@common_exceptions_400
def reset_student_attempts_for_entrance_exam(request, course_id): # pylint: disable=invalid-name
def reset_student_attempts_for_entrance_exam(request, course_id):
"""
Resets a students attempts counter or starts a task to reset all students
@@ -2340,7 +2340,7 @@ def list_instructor_tasks(request, course_id):
@ensure_csrf_cookie
@cache_control(no_cache=True, no_store=True, must_revalidate=True)
@require_level('staff')
def list_entrance_exam_instructor_tasks(request, course_id): # pylint: disable=invalid-name
def list_entrance_exam_instructor_tasks(request, course_id):
"""
List entrance exam related instructor tasks.
@@ -2878,7 +2878,7 @@ def enable_certificate_generation(request, course_id=None):
@cache_control(no_cache=True, no_store=True, must_revalidate=True)
@require_level('staff')
@require_POST
def mark_student_can_skip_entrance_exam(request, course_id): # pylint: disable=invalid-name
def mark_student_can_skip_entrance_exam(request, course_id):
"""
Mark a student to skip entrance exam.
Takes `unique_student_identifier` as required POST parameter.
@@ -3184,7 +3184,7 @@ def generate_certificate_exceptions(request, course_id, generate_for=None):
@cache_control(no_cache=True, no_store=True, must_revalidate=True)
@require_global_staff
@require_POST
def generate_bulk_certificate_exceptions(request, course_id): # pylint: disable=invalid-name
def generate_bulk_certificate_exceptions(request, course_id):
"""
Add Students to certificate white list from the uploaded csv file.
:return response in dict format.

View File

@@ -207,11 +207,11 @@ def instructor_dashboard_2(request, course_id):
disable_buttons = not _is_small_course(course_key)
certificate_white_list = CertificateWhitelist.get_certificate_white_list(course_key)
generate_certificate_exceptions_url = reverse( # pylint: disable=invalid-name
generate_certificate_exceptions_url = reverse(
'generate_certificate_exceptions',
kwargs={'course_id': unicode(course_key), 'generate_for': ''}
)
generate_bulk_certificate_exceptions_url = reverse( # pylint: disable=invalid-name
generate_bulk_certificate_exceptions_url = reverse(
'generate_bulk_certificate_exceptions',
kwargs={'course_id': unicode(course_key)}
)
@@ -220,7 +220,7 @@ def instructor_dashboard_2(request, course_id):
kwargs={'course_id': unicode(course_key)}
)
certificate_invalidation_view_url = reverse( # pylint: disable=invalid-name
certificate_invalidation_view_url = reverse(
'certificate_invalidation_view',
kwargs={'course_id': unicode(course_key)}
)

View File

@@ -1,8 +1,6 @@
"""
Exceptions for the shoppingcart app
"""
# (Exception Class Names are sort of self-explanatory, so skipping docstring requirement)
# pylint: disable=missing-docstring
class PaymentException(Exception):

View File

@@ -352,7 +352,7 @@ class Order(models.Model):
"""
send confirmation e-mail
"""
recipient_list = [(self.user.username, self.user.email, 'user')] # pylint: disable=no-member
recipient_list = [(self.user.username, self.user.email, 'user')]
if self.company_contact_email:
recipient_list.append((self.company_contact_name, self.company_contact_email, 'company_contact'))
joined_course_names = ""
@@ -443,7 +443,7 @@ class Order(models.Model):
"""
if self.status == 'purchased':
log.error(
u"`purchase` method called on order {}, but order is already purchased.".format(self.id) # pylint: disable=no-member
u"`purchase` method called on order {}, but order is already purchased.".format(self.id)
)
return
self.status = 'purchased'
@@ -1528,7 +1528,7 @@ class PaidCourseRegistration(OrderItem):
@classmethod
@transaction.atomic
def add_to_order(cls, order, course_id, mode_slug=CourseMode.DEFAULT_SHOPPINGCART_MODE_SLUG,
cost=None, currency=None): # pylint: disable=arguments-differ
cost=None, currency=None):
"""
A standardized way to create these objects, with sensible defaults filled in.
Will update the cost if called on an order that already carries the course.
@@ -1715,7 +1715,7 @@ class CourseRegCodeItem(OrderItem):
@classmethod
@transaction.atomic
def add_to_order(cls, order, course_id, qty, mode_slug=CourseMode.DEFAULT_SHOPPINGCART_MODE_SLUG,
cost=None, currency=None): # pylint: disable=arguments-differ
cost=None, currency=None):
"""
A standardized way to create these objects, with sensible defaults filled in.
Will update the cost if called on an order that already carries the course.
@@ -1838,7 +1838,6 @@ class CourseRegCodeItemAnnotation(models.Model):
annotation = models.TextField(null=True)
def __unicode__(self):
# pylint: disable=no-member
return u"{} : {}".format(text_type(self.course_id), self.annotation)
@@ -1856,7 +1855,6 @@ class PaidCourseRegistrationAnnotation(models.Model):
annotation = models.TextField(null=True)
def __unicode__(self):
# pylint: disable=no-member
return u"{} : {}".format(text_type(self.course_id), self.annotation)

View File

@@ -270,7 +270,7 @@ class OrderTest(ModuleStoreTestCase):
self.assertIn(item.additional_instruction_text(), mail.outbox[0].body)
# Verify Google Analytics event fired for purchase
self.mock_tracker.track.assert_called_once_with( # pylint: disable=maybe-no-member
self.mock_tracker.track.assert_called_once_with(
self.user.id,
'Completed Order',
{
@@ -870,7 +870,7 @@ class CertificateItemTest(ModuleStoreTestCase):
"""
Assert that we fired a refund event.
"""
self.mock_analytics_tracker.track.assert_called_with( # pylint: disable=maybe-no-member
self.mock_analytics_tracker.track.assert_called_with(
self.user.id,
'Refunded Order',
{

View File

@@ -216,7 +216,7 @@ class ShoppingCartViewsTests(SharedModuleStoreTestCase, XssTestMixin):
resp = self.client.get(billing_url)
self.assertEqual(resp.status_code, 200)
((template, context), _) = render_mock.call_args # pylint: disable=redefined-outer-name
((template, context), _) = render_mock.call_args # pylint: disable=unpacking-non-sequence
self.assertEqual(template, 'shoppingcart/billing_details.html')
# check for the default currency in the context
self.assertEqual(context['currency'], 'usd')
@@ -244,7 +244,7 @@ class ShoppingCartViewsTests(SharedModuleStoreTestCase, XssTestMixin):
resp = self.client.get(billing_url)
self.assertEqual(resp.status_code, 200)
((template, context), __) = render_mock.call_args # pylint: disable=redefined-outer-name
((template, context), __) = render_mock.call_args # pylint: disable=unpacking-non-sequence
self.assertEqual(template, 'shoppingcart/billing_details.html')
# check for the override currency settings in the context
@@ -804,7 +804,7 @@ class ShoppingCartViewsTests(SharedModuleStoreTestCase, XssTestMixin):
resp = self.client.get(reverse('shoppingcart.views.show_cart', args=[]))
self.assertEqual(resp.status_code, 200)
((purchase_form_arg_cart,), _) = form_mock.call_args # pylint: disable=redefined-outer-name
((purchase_form_arg_cart,), _) = form_mock.call_args # pylint: disable=unpacking-non-sequence
purchase_form_arg_cart_items = purchase_form_arg_cart.orderitem_set.all().select_subclasses()
self.assertIn(reg_item, purchase_form_arg_cart_items)
self.assertIn(cert_item, purchase_form_arg_cart_items)
@@ -828,7 +828,7 @@ class ShoppingCartViewsTests(SharedModuleStoreTestCase, XssTestMixin):
resp = self.client.get(reverse('shoppingcart.views.show_cart', args=[]))
self.assertEqual(resp.status_code, 200)
((purchase_form_arg_cart,), _) = form_mock.call_args # pylint: disable=redefined-outer-name
((purchase_form_arg_cart,), _) = form_mock.call_args # pylint: disable=unpacking-non-sequence
purchase_form_arg_cart_items = purchase_form_arg_cart.orderitem_set.all().select_subclasses()
self.assertIn(reg_item, purchase_form_arg_cart_items)
@@ -1140,7 +1140,7 @@ class ShoppingCartViewsTests(SharedModuleStoreTestCase, XssTestMixin):
resp = self.client.get(reverse('shoppingcart.views.show_receipt', args=[self.cart.id]))
self.assertEqual(resp.status_code, 200)
((template, context), _) = render_mock.call_args # pylint: disable=redefined-outer-name
((template, context), _) = render_mock.call_args # pylint: disable=unpacking-non-sequence
self.assertEqual(template, 'shoppingcart/receipt.html')
self.assertEqual(context['order'], self.cart)
self.assertEqual(context['order'].total_cost, self.testing_cost)
@@ -1185,7 +1185,7 @@ class ShoppingCartViewsTests(SharedModuleStoreTestCase, XssTestMixin):
self.assertIn('FirstNameTesting123', resp.content)
self.assertIn('80.00', resp.content)
((template, context), _) = render_mock.call_args # pylint: disable=redefined-outer-name
((template, context), _) = render_mock.call_args # pylint: disable=unpacking-non-sequence
self.assertEqual(template, 'shoppingcart/receipt.html')
self.assertEqual(context['order'], self.cart)
self.assertIn(reg_item, context['shoppingcart_items'][0])
@@ -1206,7 +1206,7 @@ class ShoppingCartViewsTests(SharedModuleStoreTestCase, XssTestMixin):
resp = self.client.get(reverse('shoppingcart.views.show_receipt', args=[self.cart.id]))
self.assertEqual(resp.status_code, 200)
((template, context), _) = render_mock.call_args # pylint: disable=redefined-outer-name
((template, context), _) = render_mock.call_args # pylint: disable=unpacking-non-sequence
self.assertEqual(template, 'shoppingcart/receipt.html')
self.assertIn(reg_item, context['shoppingcart_items'][0])
self.assertIn(cert_item, context['shoppingcart_items'][1])
@@ -1255,7 +1255,7 @@ class ShoppingCartViewsTests(SharedModuleStoreTestCase, XssTestMixin):
# fetch the newly generated registration codes
course_registration_codes = CourseRegistrationCode.objects.filter(order=self.cart)
((template, context), _) = render_mock.call_args # pylint: disable=redefined-outer-name
((template, context), _) = render_mock.call_args # pylint: disable=unpacking-non-sequence
self.assertEqual(template, 'shoppingcart/receipt.html')
self.assertEqual(context['order'], self.cart)
self.assertIn(reg_item, context['shoppingcart_items'][0])
@@ -1287,7 +1287,7 @@ class ShoppingCartViewsTests(SharedModuleStoreTestCase, XssTestMixin):
# has been expired or not
resp = self.client.get(reverse('shoppingcart.views.show_receipt', args=[self.cart.id]))
self.assertEqual(resp.status_code, 200)
((template, context), _) = render_mock.call_args # pylint: disable=redefined-outer-name
((template, context), _) = render_mock.call_args # pylint: disable=unpacking-non-sequence
self.assertEqual(template, 'shoppingcart/receipt.html')
# now check for all the registration codes in the receipt
# and one of code should be used at this point
@@ -1307,7 +1307,7 @@ class ShoppingCartViewsTests(SharedModuleStoreTestCase, XssTestMixin):
self.login_user()
self.mock_tracker.emit.reset_mock() # pylint: disable=maybe-no-member
self.mock_tracker.emit.reset_mock()
resp = self.client.get(reverse('shoppingcart.views.show_receipt', args=[self.cart.id]))
self.assertEqual(resp.status_code, 200)
@@ -1431,7 +1431,7 @@ class ShoppingCartViewsTests(SharedModuleStoreTestCase, XssTestMixin):
self.client.post(url, resp_params, follow=True)
self.assertFalse(self.client.session.get('attempting_upgrade'))
self.mock_tracker.emit.assert_any_call( # pylint: disable=maybe-no-member
self.mock_tracker.emit.assert_any_call(
'edx.course.enrollment.upgrade.succeeded',
{
'user_id': self.user.id,

View File

@@ -14,7 +14,7 @@ def require_support_permission(func):
View decorator that requires the user to have permission to use the support UI.
"""
@wraps(func)
def inner(request, *args, **kwargs): # pylint: disable=missing-docstring
def inner(request, *args, **kwargs):
if has_access(request.user, "support", "global"):
return func(request, *args, **kwargs)
else:

View File

@@ -122,7 +122,7 @@ class RefundTests(ModuleStoreTestCase):
pars['confirmed'] = 'true'
response = self.client.post('/support/refund/', pars)
self.assertTrue(response.status_code, 302)
response = self.client.get(response.get('location')) # pylint: disable=maybe-no-member
response = self.client.get(response.get('location'))
self.assertContains(response, "Unenrolled %s from" % self.student)
self.assertContains(response, "Refunded 1.00 for order id")

View File

@@ -216,15 +216,15 @@ class SupportViewEnrollmentsTests(SharedModuleStoreTestCase, SupportViewTestCase
CourseMode.AUDIT, CourseMode.PROFESSIONAL, CourseMode.CREDIT_MODE,
CourseMode.NO_ID_PROFESSIONAL_MODE, CourseMode.VERIFIED, CourseMode.HONOR
):
CourseModeFactory.create(mode_slug=mode, course_id=self.course.id) # pylint: disable=no-member
CourseModeFactory.create(mode_slug=mode, course_id=self.course.id)
self.verification_deadline = VerificationDeadline(
course_key=self.course.id, # pylint: disable=no-member
course_key=self.course.id,
deadline=datetime.now(UTC) + timedelta(days=365)
)
self.verification_deadline.save()
CourseEnrollmentFactory.create(mode=CourseMode.AUDIT, user=self.student, course_id=self.course.id) # pylint: disable=no-member
CourseEnrollmentFactory.create(mode=CourseMode.AUDIT, user=self.student, course_id=self.course.id)
self.url = reverse('support:enrollment_list', kwargs={'username_or_email': self.student.username})
@@ -232,7 +232,7 @@ class SupportViewEnrollmentsTests(SharedModuleStoreTestCase, SupportViewTestCase
"""
Assert that the student's enrollment has the correct mode.
"""
enrollment = CourseEnrollment.get_enrollment(self.student, self.course.id) # pylint: disable=no-member
enrollment = CourseEnrollment.get_enrollment(self.student, self.course.id)
self.assertEqual(enrollment.mode, mode)
@ddt.data('username', 'email')
@@ -249,7 +249,7 @@ class SupportViewEnrollmentsTests(SharedModuleStoreTestCase, SupportViewTestCase
'mode': CourseMode.AUDIT,
'manual_enrollment': {},
'user': self.student.username,
'course_id': unicode(self.course.id), # pylint: disable=no-member
'course_id': unicode(self.course.id),
'is_active': True,
'verified_upgrade_deadline': None,
}, data[0])
@@ -265,7 +265,7 @@ class SupportViewEnrollmentsTests(SharedModuleStoreTestCase, SupportViewTestCase
self.student.email,
ENROLLED_TO_ENROLLED,
'Financial Assistance',
CourseEnrollment.objects.get(course_id=self.course.id, user=self.student) # pylint: disable=no-member
CourseEnrollment.objects.get(course_id=self.course.id, user=self.student)
)
response = self.client.get(self.url)
self.assertEqual(response.status_code, 200)
@@ -283,7 +283,7 @@ class SupportViewEnrollmentsTests(SharedModuleStoreTestCase, SupportViewTestCase
kwargs={'username_or_email': getattr(self.student, search_string_type)}
)
response = self.client.post(url, data={
'course_id': unicode(self.course.id), # pylint: disable=no-member
'course_id': unicode(self.course.id),
'old_mode': CourseMode.AUDIT,
'new_mode': CourseMode.VERIFIED,
'reason': 'Financial Assistance'
@@ -319,7 +319,7 @@ class SupportViewEnrollmentsTests(SharedModuleStoreTestCase, SupportViewTestCase
# `self` isn't available from within the DDT declaration, so
# assign the course ID here
if 'course_id' in data and data['course_id'] is None:
data['course_id'] = unicode(self.course.id) # pylint: disable=no-member
data['course_id'] = unicode(self.course.id)
response = self.client.post(self.url, data)
self.assertEqual(response.status_code, 400)
self.assertIsNotNone(re.match(error_message, response.content))
@@ -365,7 +365,7 @@ class SupportViewEnrollmentsTests(SharedModuleStoreTestCase, SupportViewTestCase
def _assert_generated_modes(self, response):
"""Dry method to generate course modes dict and test with response data."""
modes = CourseMode.modes_for_course(self.course.id, include_expired=True) # pylint: disable=no-member
modes = CourseMode.modes_for_course(self.course.id, include_expired=True)
modes_data = []
for mode in modes:
expiry = mode.expiration_datetime.strftime('%Y-%m-%dT%H:%M:%SZ') if mode.expiration_datetime else None
@@ -404,7 +404,7 @@ class SupportViewEnrollmentsTests(SharedModuleStoreTestCase, SupportViewTestCase
kwargs={'username_or_email': getattr(self.student, search_string_type)}
)
response = self.client.post(url, data={
'course_id': unicode(self.course.id), # pylint: disable=no-member
'course_id': unicode(self.course.id),
'old_mode': CourseMode.AUDIT,
'new_mode': new_mode,
'reason': 'Financial Assistance'
@@ -424,7 +424,7 @@ class SupportViewEnrollmentsTests(SharedModuleStoreTestCase, SupportViewTestCase
# change verified mode expiry.
verified_mode = CourseMode.objects.get(
course_id=self.course.id, # pylint: disable=no-member
course_id=self.course.id,
mode_slug=CourseMode.VERIFIED
)
verified_mode.expiration_datetime = datetime(year=1970, month=1, day=9, tzinfo=UTC)

View File

@@ -172,7 +172,7 @@ SELENIUM_GRID = {
#####################################################################
# See if the developer has any local overrides.
try:
from .private import * # pylint: disable=import-error
from .private import *
except ImportError:
pass

View File

@@ -249,6 +249,6 @@ COMPLETION_BY_VIEWING_DELAY_MS = 1000
#####################################################################
# Lastly, see if the developer has any local overrides.
try:
from .private import * # pylint: disable=import-error
from .private import * # pylint: disable=wildcard-import
except ImportError:
pass

View File

@@ -20,9 +20,8 @@ Longer TODO:
multiple sites, but we do need a way to map their data assets.
"""
# We intentionally define lots of variables that aren't used, and
# want to import all variables from base settings files
# pylint: disable=wildcard-import, unused-import, unused-wildcard-import
# We intentionally define lots of variables that aren't used
# pylint: disable=unused-import
# Pylint gets confused by path.py instances, which report themselves as class
# objects. As a result, pylint applies the wrong regex in validating names,

View File

@@ -25,7 +25,7 @@ import os
if 'BOK_CHOY_HOSTNAME' in os.environ:
from .devstack_docker import * # pylint: disable=wildcard-import, unused-wildcard-import
else:
from .devstack import * # pylint: disable=wildcard-import, unused-wildcard-import
from .devstack import * # pylint: disable=wildcard-import
TEST_ROOT = REPO_ROOT / "test_root"

View File

@@ -13,11 +13,6 @@ sessions. Assumes structure:
# want to import all variables from base settings files
# pylint: disable=wildcard-import, unused-wildcard-import
# Pylint gets confused by path.py instances, which report themselves as class
# objects. As a result, pylint applies the wrong regex in validating names,
# and throws spurious errors. Therefore, we disable invalid-name checking.
# pylint: disable=invalid-name
from .common import *
import os
from path import Path as path

View File

@@ -2,6 +2,6 @@
set -e
export LOWER_PYLINT_THRESHOLD=1000
export UPPER_PYLINT_THRESHOLD=3310
export UPPER_PYLINT_THRESHOLD=3125
export ESLINT_THRESHOLD=5590
export STYLELINT_THRESHOLD=973