Commit f5a04bb0 by Michael Terry Committed by Michael Terry

Update edx-lint to 0.5.5

This fixes builds in travis. I specifically didn't change pylintrc
yet in this branch, to avoid having to fix all the new errors. But
I did make some of those  lint fixes anyway.
parent 71975b7e
...@@ -31,7 +31,7 @@ def django_cache_add_xdist_key_prefix(request): ...@@ -31,7 +31,7 @@ def django_cache_add_xdist_key_prefix(request):
@pytest.fixture @pytest.fixture
def django_cache(django_cache_add_xdist_key_prefix): # pylint: disable=unused-argument def django_cache(django_cache_add_xdist_key_prefix): # pylint: disable=redefined-outer-name,unused-argument
skip_if_no_django() skip_if_no_django()
cache.clear() cache.clear()
...@@ -56,7 +56,7 @@ def haystack_add_xdist_suffix_to_index_name(request): ...@@ -56,7 +56,7 @@ def haystack_add_xdist_suffix_to_index_name(request):
@pytest.fixture @pytest.fixture
def haystack_default_connection(haystack_add_xdist_suffix_to_index_name): # pylint: disable=unused-argument def haystack_default_connection(haystack_add_xdist_suffix_to_index_name): # pylint: disable=redefined-outer-name,unused-argument
skip_if_no_django() skip_if_no_django()
backend = haystack_connections['default'].get_backend() backend = haystack_connections['default'].get_backend()
...@@ -86,7 +86,7 @@ def site(db): # pylint: disable=unused-argument ...@@ -86,7 +86,7 @@ def site(db): # pylint: disable=unused-argument
@pytest.fixture @pytest.fixture
def partner(db, site): # pylint: disable=unused-argument def partner(db, site): # pylint: disable=redefined-outer-name,unused-argument
skip_if_no_django() skip_if_no_django()
return PartnerFactory(site=site) return PartnerFactory(site=site)
......
...@@ -12,7 +12,7 @@ API_TIMESTAMP_KEY = 'api_timestamp' ...@@ -12,7 +12,7 @@ API_TIMESTAMP_KEY = 'api_timestamp'
class ApiTimestampKeyBit(KeyBitBase): class ApiTimestampKeyBit(KeyBitBase):
def get_data(self, **kwargs): def get_data(self, **kwargs): # pylint: disable=arguments-differ
return cache.get_or_set(API_TIMESTAMP_KEY, time.time, None) return cache.get_or_set(API_TIMESTAMP_KEY, time.time, None)
......
...@@ -42,7 +42,7 @@ class ProxiedCall: ...@@ -42,7 +42,7 @@ class ProxiedCall:
# If a request is available, look for the presence of a query parameter # If a request is available, look for the presence of a query parameter
# indicating that we should use this paginator. # indicating that we should use this paginator.
is_query_param_present = request and request.query_params.get(query_param) # pylint: disable=no-member is_query_param_present = request and request.query_params.get(query_param)
if is_request_stored or is_query_param_present: if is_request_stored or is_query_param_present:
return paginator return paginator
......
...@@ -60,7 +60,7 @@ class CatalogTests(ElasticsearchTestMixin, TestCase): ...@@ -60,7 +60,7 @@ class CatalogTests(ElasticsearchTestMixin, TestCase):
def test_get_viewers(self): def test_get_viewers(self):
""" Verify the method returns a QuerySet of individuals with explicit permission to view a Catalog. """ """ Verify the method returns a QuerySet of individuals with explicit permission to view a Catalog. """
catalog = self.catalog catalog = self.catalog
self.assertFalse(catalog.viewers.exists()) # pylint:disable=no-member self.assertFalse(catalog.viewers.exists())
user = UserFactory() user = UserFactory()
user.add_obj_perm(Catalog.VIEW_PERMISSION, catalog) user.add_obj_perm(Catalog.VIEW_PERMISSION, catalog)
......
...@@ -57,7 +57,7 @@ class AbstractDataLoaderTest(TestCase): ...@@ -57,7 +57,7 @@ class AbstractDataLoaderTest(TestCase):
AbstractDataLoader.delete_orphans() AbstractDataLoader.delete_orphans()
for instance in instances: for instance in instances:
self.assertFalse(instance.__class__.objects.filter(pk=instance.pk).exists()) # pylint: disable=no-member self.assertFalse(instance.__class__.objects.filter(pk=instance.pk).exists())
def test_clean_html(self): def test_clean_html(self):
""" Verify the method removes unnecessary HTML attributes. """ """ Verify the method removes unnecessary HTML attributes. """
...@@ -107,7 +107,7 @@ class OrganizationsApiDataLoaderTests(ApiClientTestMixin, DataLoaderTestMixin, T ...@@ -107,7 +107,7 @@ class OrganizationsApiDataLoaderTests(ApiClientTestMixin, DataLoaderTestMixin, T
api_data = self.mock_api() api_data = self.mock_api()
if not partner_has_marketing_site: if not partner_has_marketing_site:
self.partner.marketing_site_url_root = None self.partner.marketing_site_url_root = None
self.partner.save() # pylint: disable=no-member self.partner.save()
self.assertEqual(Organization.objects.count(), 0) self.assertEqual(Organization.objects.count(), 0)
...@@ -216,7 +216,7 @@ class CoursesApiDataLoaderTests(ApiClientTestMixin, DataLoaderTestMixin, TestCas ...@@ -216,7 +216,7 @@ class CoursesApiDataLoaderTests(ApiClientTestMixin, DataLoaderTestMixin, TestCas
api_data = self.mock_api() api_data = self.mock_api()
if not partner_has_marketing_site: if not partner_has_marketing_site:
self.partner.marketing_site_url_root = None self.partner.marketing_site_url_root = None
self.partner.save() # pylint: disable=no-member self.partner.save()
self.assertEqual(Course.objects.count(), 0) self.assertEqual(Course.objects.count(), 0)
self.assertEqual(CourseRun.objects.count(), 0) self.assertEqual(CourseRun.objects.count(), 0)
...@@ -266,7 +266,7 @@ class CoursesApiDataLoaderTests(ApiClientTestMixin, DataLoaderTestMixin, TestCas ...@@ -266,7 +266,7 @@ class CoursesApiDataLoaderTests(ApiClientTestMixin, DataLoaderTestMixin, TestCas
if not partner_has_marketing_site: if not partner_has_marketing_site:
self.partner.marketing_site_url_root = None self.partner.marketing_site_url_root = None
self.partner.save() # pylint: disable=no-member self.partner.save()
self.loader.ingest() self.loader.ingest()
......
...@@ -134,7 +134,7 @@ class Subject(TranslatableModel, TimeStampedModel): ...@@ -134,7 +134,7 @@ class Subject(TranslatableModel, TimeStampedModel):
('partner', 'uuid'), ('partner', 'uuid'),
) )
def validate_unique(self, *args, **kwargs): def validate_unique(self, *args, **kwargs): # pylint: disable=arguments-differ
super(Subject, self).validate_unique(*args, **kwargs) super(Subject, self).validate_unique(*args, **kwargs)
qs = Subject.objects.filter(partner=self.partner_id) qs = Subject.objects.filter(partner=self.partner_id)
if qs.filter(translations__name=self.name).exclude(pk=self.pk).exists(): if qs.filter(translations__name=self.name).exclude(pk=self.pk).exists():
...@@ -171,7 +171,7 @@ class Topic(TranslatableModel, TimeStampedModel): ...@@ -171,7 +171,7 @@ class Topic(TranslatableModel, TimeStampedModel):
('partner', 'uuid'), ('partner', 'uuid'),
) )
def validate_unique(self, *args, **kwargs): def validate_unique(self, *args, **kwargs): # pylint: disable=arguments-differ
super(Topic, self).validate_unique(*args, **kwargs) super(Topic, self).validate_unique(*args, **kwargs)
qs = Topic.objects.filter(partner=self.partner_id) qs = Topic.objects.filter(partner=self.partner_id)
if qs.filter(translations__name=self.name).exclude(pk=self.pk).exists(): if qs.filter(translations__name=self.name).exclude(pk=self.pk).exists():
...@@ -285,7 +285,7 @@ class Person(TimeStampedModel): ...@@ -285,7 +285,7 @@ class Person(TimeStampedModel):
def __str__(self): def __str__(self):
return self.full_name return self.full_name
def save(self, *args, **kwargs): def save(self, *args, **kwargs): # pylint: disable=arguments-differ
logger.info('Person saved UUID: %s', self.uuid, exc_info=True) logger.info('Person saved UUID: %s', self.uuid, exc_info=True)
super(Person, self).save(*args, **kwargs) super(Person, self).save(*args, **kwargs)
...@@ -553,7 +553,7 @@ class CourseRun(TimeStampedModel): ...@@ -553,7 +553,7 @@ class CourseRun(TimeStampedModel):
None if the date is unknown or enrollable paid Seats are not available. None if the date is unknown or enrollable paid Seats are not available.
""" """
seats = list(self._enrollable_paid_seats().order_by('-upgrade_deadline')) seats = list(self._enrollable_paid_seats().order_by('-upgrade_deadline'))
if len(seats) == 0: if not seats:
# Enrollable paid seats are not available for this CourseRun. # Enrollable paid seats are not available for this CourseRun.
return None return None
...@@ -693,7 +693,7 @@ class CourseRun(TimeStampedModel): ...@@ -693,7 +693,7 @@ class CourseRun(TimeStampedModel):
@property @property
def programs(self): def programs(self):
return self.course.programs # pylint: disable=no-member return self.course.programs
@property @property
def seat_types(self): def seat_types(self):
...@@ -755,7 +755,7 @@ class CourseRun(TimeStampedModel): ...@@ -755,7 +755,7 @@ class CourseRun(TimeStampedModel):
def __str__(self): def __str__(self):
return '{key}: {title}'.format(key=self.key, title=self.title) return '{key}: {title}'.format(key=self.key, title=self.title)
def save(self, *args, **kwargs): def save(self, *args, **kwargs): # pylint: disable=arguments-differ
suppress_publication = kwargs.pop('suppress_publication', False) suppress_publication = kwargs.pop('suppress_publication', False)
is_publishable = ( is_publishable = (
self.course.partner.has_marketing_site and self.course.partner.has_marketing_site and
...@@ -1170,9 +1170,9 @@ class Program(TimeStampedModel): ...@@ -1170,9 +1170,9 @@ class Program(TimeStampedModel):
if add_seat: if add_seat:
course_map[course_uuid].append(seat) course_map[course_uuid].append(seat)
for seat in seats_to_remove: for removable_seat in seats_to_remove:
# Now remove the seats that should not be counted for calculation for program total # Now remove the seats that should not be counted for calculation for program total
course_map[course_uuid].remove(seat) course_map[course_uuid].remove(removable_seat)
for entitlement in self.entitlements: for entitlement in self.entitlements:
course_uuid = entitlement.course.uuid course_uuid = entitlement.course.uuid
...@@ -1239,7 +1239,7 @@ class Program(TimeStampedModel): ...@@ -1239,7 +1239,7 @@ class Program(TimeStampedModel):
def is_active(self): def is_active(self):
return self.status == ProgramStatus.Active return self.status == ProgramStatus.Active
def save(self, *args, **kwargs): def save(self, *args, **kwargs): # pylint: disable=arguments-differ
is_publishable = ( is_publishable = (
self.partner.has_marketing_site and self.partner.has_marketing_site and
waffle.switch_is_active('publish_program_to_marketing_site') waffle.switch_is_active('publish_program_to_marketing_site')
......
...@@ -107,7 +107,7 @@ class BaseMarketingSitePublisher: ...@@ -107,7 +107,7 @@ class BaseMarketingSitePublisher:
if response.status_code == 200: if response.status_code == 200:
response_json = response.json() response_json = response.json()
if len(response_json['list']) > 0: if response_json['list']:
return response.json()['list'][0]['nid'] return response.json()['list'][0]['nid']
else: else:
return None return None
......
...@@ -10,7 +10,7 @@ from course_discovery.apps.course_metadata.models import * # pylint: disable=wi ...@@ -10,7 +10,7 @@ from course_discovery.apps.course_metadata.models import * # pylint: disable=wi
from course_discovery.apps.ietf_language_tags.models import LanguageTag from course_discovery.apps.ietf_language_tags.models import LanguageTag
# pylint: disable=no-member, unused-argument # pylint: disable=unused-argument
class AbstractMediaModelFactory(factory.DjangoModelFactory): class AbstractMediaModelFactory(factory.DjangoModelFactory):
......
...@@ -13,9 +13,6 @@ from course_discovery.apps.course_metadata.tests.factories import ( ...@@ -13,9 +13,6 @@ from course_discovery.apps.course_metadata.tests.factories import (
from course_discovery.apps.publisher.tests import factories from course_discovery.apps.publisher.tests import factories
# pylint: disable=no-member
@pytest.mark.django_db @pytest.mark.django_db
class TestAutocomplete: class TestAutocomplete:
def assert_valid_query_result(self, client, path, query, expected_result): def assert_valid_query_result(self, client, path, query, expected_result):
......
...@@ -46,7 +46,7 @@ class DistinctCountsAggregateFacetSearchSerializer(AggregateFacetSearchSerialize ...@@ -46,7 +46,7 @@ class DistinctCountsAggregateFacetSearchSerializer(AggregateFacetSearchSerialize
# data and extract the distinct counts. # data and extract the distinct counts.
# https://github.com/edx/course-discovery/blob/master/course_discovery/apps/api/serializers.py#L966 # https://github.com/edx/course-discovery/blob/master/course_discovery/apps/api/serializers.py#L966
query_data = {} query_data = {}
for field, options in getattr(self.Meta, 'field_queries', {}).items(): # pylint: disable=no-member for field, options in getattr(self.Meta, 'field_queries', {}).items():
# The query facet data is expected to be formatted as a dictionary with fields mapping to a two-tuple # The query facet data is expected to be formatted as a dictionary with fields mapping to a two-tuple
# containing count and distinct count. # containing count and distinct count.
count, distinct_count = query_facet_counts.get(field, (0, 0)) count, distinct_count = query_facet_counts.get(field, (0, 0))
......
...@@ -9,7 +9,7 @@ class DistinctCountsAggregateSearchViewSet(AggregateSearchViewSet): ...@@ -9,7 +9,7 @@ class DistinctCountsAggregateSearchViewSet(AggregateSearchViewSet):
# Custom serializer that includes distinct hit and facet counts. # Custom serializer that includes distinct hit and facet counts.
facet_serializer_class = DistinctCountsAggregateFacetSearchSerializer facet_serializer_class = DistinctCountsAggregateFacetSearchSerializer
def get_queryset(self, *args, **kwargs): def get_queryset(self, *args, **kwargs): # pylint: disable=arguments-differ
""" Return the base Queryset to use to build up the search query.""" """ Return the base Queryset to use to build up the search query."""
queryset = super(DistinctCountsAggregateSearchViewSet, self).get_queryset(*args, **kwargs) queryset = super(DistinctCountsAggregateSearchViewSet, self).get_queryset(*args, **kwargs)
return DistinctCountsSearchQuerySet.from_queryset(queryset).with_distinct_counts('aggregation_key') return DistinctCountsSearchQuerySet.from_queryset(queryset).with_distinct_counts('aggregation_key')
...@@ -116,7 +116,7 @@ class CourseRunSerializerTests(TestCase): ...@@ -116,7 +116,7 @@ class CourseRunSerializerTests(TestCase):
def test_validate_lms_course_id(self): def test_validate_lms_course_id(self):
""" Verify that serializer raises error if 'lms_course_id' has invalid format. """ """ Verify that serializer raises error if 'lms_course_id' has invalid format. """
self.course_run.lms_course_id = 'invalid-course-id' self.course_run.lms_course_id = 'invalid-course-id'
self.course_run.save() # pylint: disable=no-member self.course_run.save()
serializer = self.serializer_class(self.course_run) serializer = self.serializer_class(self.course_run)
with self.assertRaises(ValidationError): with self.assertRaises(ValidationError):
serializer.validate_lms_course_id(self.course_run.lms_course_id) serializer.validate_lms_course_id(self.course_run.lms_course_id)
...@@ -124,7 +124,7 @@ class CourseRunSerializerTests(TestCase): ...@@ -124,7 +124,7 @@ class CourseRunSerializerTests(TestCase):
def test_validate_preview_url(self): def test_validate_preview_url(self):
""" Verify that serializer raises error if 'preview_url' has invalid format. """ """ Verify that serializer raises error if 'preview_url' has invalid format. """
self.course_run.preview_url = 'invalid-preview-url' self.course_run.preview_url = 'invalid-preview-url'
self.course_run.save() # pylint: disable=no-member self.course_run.save()
serializer = self.serializer_class(self.course_run) serializer = self.serializer_class(self.course_run)
with self.assertRaises(ValidationError): with self.assertRaises(ValidationError):
serializer.validate_preview_url(self.course_run.preview_url) serializer.validate_preview_url(self.course_run.preview_url)
......
...@@ -196,7 +196,7 @@ class CourseRunViewSetTests(APITestCase): ...@@ -196,7 +196,7 @@ class CourseRunViewSetTests(APITestCase):
**common_seat_kwargs **common_seat_kwargs
) )
# pylint: disable=unused-argument,too-many-statements # pylint: disable=unused-argument
@responses.activate @responses.activate
@override_settings(PUBLISHER_UPGRADE_DEADLINE_DAYS=PUBLISHER_UPGRADE_DEADLINE_DAYS) @override_settings(PUBLISHER_UPGRADE_DEADLINE_DAYS=PUBLISHER_UPGRADE_DEADLINE_DAYS)
@mock.patch.object(Partner, 'access_token', return_value='JWT fake') @mock.patch.object(Partner, 'access_token', return_value='JWT fake')
......
...@@ -50,7 +50,6 @@ class ImportCoursesCommandTests(TestCase): ...@@ -50,7 +50,6 @@ class ImportCoursesCommandTests(TestCase):
call_command(self.command_name, *command_args) call_command(self.command_name, *command_args)
# pylint: disable=no-member
@ddt.ddt @ddt.ddt
class ImportCoursesTests(TestCase): class ImportCoursesTests(TestCase):
def setUp(self): def setUp(self):
...@@ -386,7 +385,6 @@ class CreateCoursesTests(TestCase): ...@@ -386,7 +385,6 @@ class CreateCoursesTests(TestCase):
) )
# pylint: disable=no-member
@ddt.ddt @ddt.ddt
class UpdateCourseRunsTests(TestCase): class UpdateCourseRunsTests(TestCase):
def setUp(self): def setUp(self):
......
...@@ -142,7 +142,7 @@ def send_email_decline_preview(comment, course_run, preview_url): ...@@ -142,7 +142,7 @@ def send_email_decline_preview(comment, course_run, preview_url):
) )
email_msg.attach_alternative(html_content, 'text/html') email_msg.attach_alternative(html_content, 'text/html')
email_msg.send() email_msg.send()
except Exception: # pylint: disable=broad-except except Exception:
message = 'Failed to send email notifications for preview decline for course run [{id}].'.format( message = 'Failed to send email notifications for preview decline for course run [{id}].'.format(
id=course_run.id id=course_run.id
) )
......
...@@ -5,7 +5,6 @@ from django_comments.forms import CommentForm ...@@ -5,7 +5,6 @@ from django_comments.forms import CommentForm
from course_discovery.apps.publisher_comments.models import Comments, CommentTypeChoices from course_discovery.apps.publisher_comments.models import Comments, CommentTypeChoices
# pylint: disable=no-member
class CommentsForm(CommentForm): class CommentsForm(CommentForm):
modified = forms.DateTimeField(required=False, widget=forms.HiddenInput) modified = forms.DateTimeField(required=False, widget=forms.HiddenInput)
comment_type = forms.ChoiceField( comment_type = forms.ChoiceField(
......
...@@ -19,7 +19,6 @@ class AdminTests(SiteMixin, TestCase): ...@@ -19,7 +19,6 @@ class AdminTests(SiteMixin, TestCase):
def test_comment_detail_form(self): def test_comment_detail_form(self):
""" Verify in admin panel comment detail form contain the custom modified field. """ """ Verify in admin panel comment detail form contain the custom modified field. """
# pylint: disable=no-member
resp = self.client.get(reverse('admin:publisher_comments_comments_change', args=(self.comment.id,))) resp = self.client.get(reverse('admin:publisher_comments_comments_change', args=(self.comment.id,)))
self.assertContains(resp, 'modified') self.assertContains(resp, 'modified')
......
...@@ -181,7 +181,7 @@ class CommentsEmailTests(SiteMixin, TestCase): ...@@ -181,7 +181,7 @@ class CommentsEmailTests(SiteMixin, TestCase):
self.assertIn(comment.comment, str(mail.outbox[0].body.strip())) self.assertIn(comment.comment, str(mail.outbox[0].body.strip()))
comment.comment = 'update the comment' comment.comment = 'update the comment'
comment.save() # pylint: disable=no-member comment.save()
subject = 'Comment updated: {title}'.format(title=self.course.title) subject = 'Comment updated: {title}'.format(title=self.course.title)
self.assertEqual(str(mail.outbox[1].subject), subject) self.assertEqual(str(mail.outbox[1].subject), subject)
self.assertIn(comment.comment, str(mail.outbox[1].body.strip()), 'update the comment') self.assertIn(comment.comment, str(mail.outbox[1].body.strip()), 'update the comment')
...@@ -195,7 +195,7 @@ class CommentsEmailTests(SiteMixin, TestCase): ...@@ -195,7 +195,7 @@ class CommentsEmailTests(SiteMixin, TestCase):
) )
comment = self.create_comment(content_object=self.course_run) comment = self.create_comment(content_object=self.course_run)
comment.comment = 'Update the comment' comment.comment = 'Update the comment'
comment.save() # pylint: disable=no-member comment.save()
subject = 'Comment updated: {title} {start} - {pacing_type}'.format( subject = 'Comment updated: {title} {start} - {pacing_type}'.format(
title=self.course_run.course.title, title=self.course_run.course.title,
......
...@@ -66,6 +66,6 @@ if settings.DEBUG: # pragma: no cover ...@@ -66,6 +66,6 @@ if settings.DEBUG: # pragma: no cover
# https://docs.djangoproject.com/en/1.10/howto/static-files/#serving-files-uploaded-by-a-user-during-development # https://docs.djangoproject.com/en/1.10/howto/static-files/#serving-files-uploaded-by-a-user-during-development
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
if os.environ.get('ENABLE_DJANGO_TOOLBAR', False): if os.environ.get('ENABLE_DJANGO_TOOLBAR', False):
import debug_toolbar # pylint: disable=wrong-import-order,wrong-import-position,import-error import debug_toolbar
urlpatterns.append(url(r'^__debug__/', include(debug_toolbar.urls))) urlpatterns.append(url(r'^__debug__/', include(debug_toolbar.urls)))
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
coverage==4.2 coverage==4.2
ddt==1.1.0 ddt==1.1.0
edx-lint==0.5.4 edx-lint==0.5.5
factory-boy==2.8.1 factory-boy==2.8.1
freezegun==0.3.7 freezegun==0.3.7
isort==4.2.5 isort==4.2.5
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment