Commit 20b53ba7 by christopher lee

pylinted known lint

parent d04082c2
......@@ -6,21 +6,21 @@ from django.contrib import admin
from .models import Video, Profile, EncodedVideo, Subtitle, CourseVideo
class ProfileAdmin(admin.ModelAdmin):
class ProfileAdmin(admin.ModelAdmin): # pylint: disable=C0111
list_display = ('id', 'profile_name', 'extension', 'width', 'height')
list_display_links = ('id', 'profile_name')
admin_order_field = 'profile_name'
class EncodedVideoInline(admin.TabularInline):
class EncodedVideoInline(admin.TabularInline): # pylint: disable=C0111
model = EncodedVideo
class CourseVideoInline(admin.TabularInline):
class CourseVideoInline(admin.TabularInline): # pylint: disable=C0111
model = CourseVideo
extra = 0
verbose_name = "Course"
verbose_name_plural = "Courses"
class VideoAdmin(admin.ModelAdmin):
class VideoAdmin(admin.ModelAdmin): # pylint: disable=C0111
list_display = (
'id', 'edx_video_id', 'client_video_id', 'duration'
)
......
......@@ -196,9 +196,12 @@ def get_urls_for_profiles(edx_video_id, profiles):
if encoded_video["profile"] in profiles:
profiles_to_urls[encoded_video["profile"]] = encoded_video["url"]
return profiles_to_urls
return profiles_to_urls
def get_url_for_profile(edx_video_id, profile):
"""
Uses get_urls_for_profile to obtain a single profile
"""
return get_urls_for_profiles(edx_video_id, [profile])[profile]
def get_videos_for_course(course_id):
......
......@@ -11,7 +11,7 @@ class Profile(models.Model)
unique=True,
validators=[
RegexValidator(
regex=r'^[a-zA-Z0-9\-]*$',
regex=regex,
message='profile_name has invalid characters',
code='invalid profile_name'
),
......@@ -32,7 +32,7 @@ from django.core.validators import MinValueValidator, RegexValidator
from django.core.urlresolvers import reverse
url_regex = r'^[a-zA-Z0-9\-_]*$'
URL_REGEX = r'^[a-zA-Z0-9\-_]*$'
class Profile(models.Model):
......@@ -47,7 +47,7 @@ class Profile(models.Model):
unique=True,
validators=[
RegexValidator(
regex=url_regex,
regex=URL_REGEX,
message='profile_name has invalid characters',
code='invalid profile_name'
),
......@@ -73,7 +73,7 @@ class Video(models.Model):
unique=True,
validators=[
RegexValidator(
regex=url_regex,
regex=URL_REGEX,
message='edx_video_id has invalid characters',
code='invalid edx_video_id'
),
......@@ -83,6 +83,9 @@ class Video(models.Model):
duration = models.FloatField(validators=[MinValueValidator(0)])
def get_absolute_url(self):
"""
Returns the full url link to the edx_video_id
"""
return reverse('video-detail', args=[self.edx_video_id])
def __str__(self):
......@@ -155,10 +158,16 @@ class Subtitle(models.Model):
return '%s Subtitle for %s' % (self.language, self.video)
def get_absolute_url(self):
"""
Returns the full url link to the edx_video_id
"""
return reverse('subtitle-content', args=[self.video.edx_video_id, self.language])
@property
def content_type(self):
"""
Sjson is returned as application/json, otherwise text/plain
"""
if self.fmt == 'sjson':
return 'application/json'
else:
......
......@@ -14,7 +14,7 @@ class ProfileSerializer(serializers.ModelSerializer):
"""
Serializer for Profile object.
"""
class Meta: # pylint: disable= C0111
class Meta: # pylint: disable=C1001, C0111
model = Profile
fields = (
"profile_name",
......@@ -32,7 +32,7 @@ class EncodedVideoSerializer(serializers.ModelSerializer):
"""
profile = serializers.SlugRelatedField(slug_field="profile_name")
class Meta: # pylint: disable= C0111
class Meta: # pylint: disable=C1001, C0111
model = EncodedVideo
fields = (
"created",
......@@ -107,7 +107,7 @@ class VideoSerializer(serializers.ModelSerializer):
courses = CourseSerializer(many=True, read_only=False)
url = serializers.SerializerMethodField('get_url')
class Meta: # pylint: disable=C0111
class Meta: # pylint: disable=C1001, C0111
model = Video
lookup_field = "edx_video_id"
exclude = ('id',)
......
......@@ -17,9 +17,15 @@ class APIAuthTestCase(APITestCase):
self._login()
def _logout(self):
"""
Logs out API user
"""
self.client.logout()
def _login(self, unauthorized=False):
"""
Logs in user for test if authorized
"""
if unauthorized:
username = password = 'unauthorized'
else:
......
......@@ -67,7 +67,7 @@ class CreateVideoTest(TestCase):
video_data = dict(
encoded_videos=[
dict(
profile = constants.PROFILE_DICT_MOBILE,
profile=constants.PROFILE_DICT_MOBILE,
**constants.ENCODED_VIDEO_DICT_MOBILE
)
],
......
......@@ -631,13 +631,13 @@ class SubtitleDetailTest(APIAuthTestCase):
self.assertEqual(len(video), 1)
self.assertEqual(len(video[0].get("subtitles")), 2)
st = video[0]['subtitles'][0]
response = self.client.get(st['content_url'])
video_subtitles = video[0]['subtitles'][0]
response = self.client.get(video_subtitles['content_url'])
self.assertEqual(response.content, constants.SUBTITLE_DICT_SRT['content'])
self.assertEqual(response['Content-Type'], 'text/plain')
st = video[0]['subtitles'][1]
response = self.client.get(st['content_url'])
video_subtitles = video[0]['subtitles'][1]
response = self.client.get(video_subtitles['content_url'])
self.assertEqual(response.content, constants.SUBTITLE_DICT_SJSON['content'])
self.assertEqual(response['Content-Type'], 'application/json')
......@@ -651,16 +651,16 @@ class SubtitleDetailTest(APIAuthTestCase):
)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
video = response.data
st = video['subtitles'][0]
url = reverse('subtitle-detail', kwargs={'video__edx_video_id': video['edx_video_id'], 'language': st['language']})
video_subtitles = video['subtitles'][0]
url = reverse('subtitle-detail', kwargs={'video__edx_video_id': video['edx_video_id'], 'language': video_subtitles['language']})
st['content'] = 'testing 123'
video_subtitles['content'] = 'testing 123'
response = self.client.put(
url, st, format='json'
url, video_subtitles, format='json'
)
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(self.client.get(st['content_url']).content, 'testing 123')
self.assertEqual(self.client.get(video_subtitles['content_url']).content, 'testing 123')
def test_update_json_subtitle(self):
"""
......@@ -672,20 +672,20 @@ class SubtitleDetailTest(APIAuthTestCase):
)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
video = response.data
st = video['subtitles'][1]
url = reverse('subtitle-detail', kwargs={'video__edx_video_id': video['edx_video_id'], 'language': st['language']})
video_subtitles = video['subtitles'][1]
url = reverse('subtitle-detail', kwargs={'video__edx_video_id': video['edx_video_id'], 'language': video_subtitles['language']})
st['content'] = 'testing 123'
video_subtitles['content'] = 'testing 123'
response = self.client.put(
url, st, format='json'
url, video_subtitles, format='json'
)
# not in json format
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
st['content'] = """{"start": "00:00:00"
video_subtitles['content'] = """{"start": "00:00:00"
}"""
response = self.client.put(
url, st, format='json'
url, video_subtitles, format='json'
)
self.assertEqual(self.client.get(st['content_url']).content, '{"start": "00:00:00"}')
self.assertEqual(self.client.get(video_subtitles['content_url']).content, '{"start": "00:00:00"}')
......@@ -3,7 +3,6 @@ Url file for django app edxval.
"""
from django.conf.urls import patterns, url
from django.conf import settings
from edxval import views
......
......@@ -15,6 +15,7 @@ from edxval.serializers import (
SubtitleSerializer
)
class ReadRestrictedDjangoModelPermissions(DjangoModelPermissions):
"""Extending DjangoModelPermissions to allow us to restrict read access.
......@@ -40,9 +41,12 @@ class MultipleFieldLookupMixin(object):
based on a `lookup_fields` attribute, instead of the default single field filtering.
"""
def get_object(self):
"""
Returns an object instance that should be used for detail views.
"""
queryset = self.get_queryset() # Get the base queryset
queryset = self.filter_queryset(queryset) # Apply any filter backends
filter = {}
filter = {} # pylint: disable=W0622
for field in self.lookup_fields:
filter[field] = self.kwargs[field]
return get_object_or_404(queryset, **filter) # Lookup the object
......@@ -106,11 +110,14 @@ class SubtitleDetail(MultipleFieldLookupMixin, generics.RetrieveUpdateDestroyAPI
serializer_class = SubtitleSerializer
def _last_modified_subtitle(request, edx_video_id, language):
def _last_modified_subtitle(request, edx_video_id, language): # pylint: disable=W0613
"""
Returns the last modified subtitle
"""
return Subtitle.objects.get(video__edx_video_id=edx_video_id, language=language).modified
@last_modified(last_modified_func=_last_modified_subtitle)
def get_subtitle(request, edx_video_id, language):
def get_subtitle(request, edx_video_id, language): # pylint: disable=W0613
"""
Return content of subtitle by id
"""
......
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