Skip to content

Commit b9f15d9

Browse files
smcollagjohnson
authored andcommitted
linting for comments app (readthedocs#2886)
1 parent 7cc416a commit b9f15d9

File tree

7 files changed

+38
-20
lines changed

7 files changed

+38
-20
lines changed

prospector-more.yml

-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ strictness: medium
44

55
ignore-paths:
66
- cdn/
7-
- comments/
87
- core/
98
- doc_builder/
109
- donate/

readthedocs/comments/admin.py

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
"""ModelAdmin configurations for comments app."""
2+
13
from django.contrib import admin
24
from .models import DocumentNode, DocumentComment, NodeSnapshot
35

readthedocs/comments/backend.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1+
"""Storage backends for the comments app."""
2+
13
import json
24

35
from django.core import serializers
46
from sphinx.websupport.storage import StorageBackend
57

68
from .models import DocumentNode
7-
from readthedocs.comments.models import NodeSnapshot
89

910

1011
class DjangoStorage(StorageBackend):

readthedocs/comments/models.py

+19-6
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1+
"""Models for the comments app."""
2+
13
from django.contrib.auth.models import User
24
from django.db import models
35
from django.utils.translation import ugettext_lazy as _
46
from rest_framework import serializers
57

6-
from readthedocs.privacy.backend import AdminPermission, AdminNotAuthorized
78
from readthedocs.restapi.serializers import VersionSerializer
89

910

@@ -23,6 +24,7 @@ def create(self, *args, **kwargs):
2324
return node
2425

2526
def from_hash(self, version_slug, page, node_hash, project_slug=None):
27+
"""Return a node matching a given hash."""
2628
snapshots = NodeSnapshot.objects.filter(hash=node_hash,
2729
node__version__slug=version_slug,
2830
node__page=page)
@@ -58,6 +60,8 @@ def from_hash(self, version_slug, page, node_hash, project_slug=None):
5860

5961
class DocumentNode(models.Model):
6062

63+
"""Document node."""
64+
6165
objects = DocumentNodeManager()
6266

6367
project = models.ForeignKey('projects.Project', verbose_name=_('Project'),
@@ -71,10 +75,6 @@ class DocumentNode(models.Model):
7175
def __unicode__(self):
7276
return "node %s on %s for %s" % (self.id, self.page, self.project)
7377

74-
def save(self, *args, **kwargs):
75-
pass
76-
super(DocumentNode, self).save(*args, **kwargs)
77-
7878
def latest_hash(self):
7979
return self.snapshots.latest().hash
8080

@@ -127,6 +127,9 @@ class Meta:
127127
# in a later commit.
128128
unique_together = ("hash", "node", "commit")
129129

130+
def __unicode__(self):
131+
return self.hash
132+
130133

131134
# class DocumentCommentManager(models.Manager):
132135
#
@@ -149,6 +152,9 @@ class Meta:
149152

150153

151154
class DocumentComment(models.Model):
155+
156+
"""Comment on a ``DocumentNode`` by a user."""
157+
152158
date = models.DateTimeField(_('Date'), auto_now_add=True)
153159
rating = models.IntegerField(_('Rating'), default=0)
154160
text = models.TextField(_('Text'))
@@ -197,8 +203,12 @@ def perform_create(self):
197203

198204
class ModerationActionManager(models.Model):
199205

206+
def __unicode__(self):
207+
return str(self.id)
208+
200209
def current_approvals(self):
201-
most_recent_change = self.comment.node.snapshots.latest().date
210+
# pylint: disable=unused-variable
211+
most_recent_change = self.comment.node.snapshots.latest().date # noqa
202212

203213

204214
class ModerationAction(models.Model):
@@ -211,6 +221,9 @@ class ModerationAction(models.Model):
211221
))
212222
date = models.DateTimeField(_('Date'), auto_now_add=True)
213223

224+
def __unicode__(self):
225+
return "%s - %s" % (self.user_id, self.get_decision_display())
226+
214227
class Meta:
215228
get_latest_by = 'date'
216229

readthedocs/comments/session.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
1+
"""Authentication backends for DRF."""
2+
13
from rest_framework.authentication import SessionAuthentication
24

35

46
class UnsafeSessionAuthentication(SessionAuthentication):
57

68
def authenticate(self, request):
7-
http_request = request._request
9+
http_request = request._request # pylint: disable=protected-access
810
user = getattr(http_request, 'user', None)
911

1012
if not user or not user.is_active:

readthedocs/comments/urls.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
from django.conf.urls import url, include
1+
"""URL configuration for comments app."""
2+
3+
from django.conf.urls import url
24

35
from readthedocs.comments import views
46

readthedocs/comments/views.py

+9-10
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
import json
1+
"""Views for comments app."""
22

33
from django.contrib.auth.decorators import login_required
4-
from django.http.response import HttpResponseRedirect
54
from django.shortcuts import render_to_response
65
from django.template import RequestContext
76
from django.utils.decorators import method_decorator
@@ -14,19 +13,16 @@
1413
detail_route
1514
)
1615
from rest_framework.exceptions import ParseError
17-
from rest_framework.permissions import IsAuthenticated
1816
from rest_framework.renderers import JSONRenderer
1917
from rest_framework.response import Response
20-
from rest_framework.serializers import ModelSerializer, Serializer
2118
from rest_framework.viewsets import ModelViewSet
2219
from sphinx.websupport import WebSupport
2320

2421
from readthedocs.comments.models import (
2522
DocumentComment, DocumentNode, NodeSnapshot, DocumentCommentSerializer,
2623
DocumentNodeSerializer, ModerationActionSerializer)
27-
from readthedocs.privacy.backend import AdminNotAuthorized
2824
from readthedocs.projects.models import Project
29-
from readthedocs.restapi.permissions import IsOwner, CommentModeratorOrReadOnly
25+
from readthedocs.restapi.permissions import CommentModeratorOrReadOnly
3026

3127
from .backend import DjangoStorage
3228
from .session import UnsafeSessionAuthentication
@@ -48,7 +44,7 @@
4844
@api_view(['GET'])
4945
@permission_classes([permissions.IsAuthenticatedOrReadOnly])
5046
@renderer_classes((JSONRenderer,))
51-
def get_options(request):
47+
def get_options(request): # pylint: disable=unused-argument
5248
base_opts = support.base_comment_opts
5349
base_opts['addCommentURL'] = '/api/v2/comments/'
5450
base_opts['getCommentsURL'] = '/api/v2/comments/'
@@ -88,11 +84,11 @@ def attach_comment(request):
8884
# Normal Views
8985
#######
9086

91-
def build(request):
87+
def build(request): # pylint: disable=unused-argument
9288
support.build()
9389

9490

95-
def serve_file(request, file):
91+
def serve_file(request, file): # pylint: disable=redefined-builtin
9692
document = support.get_document(file)
9793

9894
return render_to_response('doc.html',
@@ -158,6 +154,9 @@ def update_node(request):
158154

159155

160156
class CommentViewSet(ModelViewSet):
157+
158+
"""Viewset for Comment model."""
159+
161160
serializer_class = DocumentCommentSerializer
162161
permission_classes = [CommentModeratorOrReadOnly, permissions.IsAuthenticatedOrReadOnly]
163162

@@ -199,7 +198,7 @@ def create(self, request):
199198
return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)
200199

201200
@detail_route(methods=['put'])
202-
def moderate(self, request, pk):
201+
def moderate(self, request, pk): # pylint: disable=unused-argument
203202
comment = self.get_object()
204203
decision = request.data['decision']
205204
moderation_action = comment.moderate(request.user, decision)

0 commit comments

Comments
 (0)