Skip to content

Commit 505a8d5

Browse files
committed
Fix mypy errors
1 parent e0d4270 commit 505a8d5

9 files changed

Lines changed: 39 additions & 17 deletions

File tree

config/urls.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
# Admin site is only enabled during development
5353
urlpatterns += [path(settings.ADMIN_URL, admin.site.urls)]
5454
# Overwrite view site link because it points to the production url instead of local
55-
admin.AdminSite.site_url = reverse_lazy("webiscite:index")
55+
admin.AdminSite.site_url = reverse_lazy("webiscite:index") # type: ignore[assignment]
5656

5757
# This allows the error pages to be debugged during development, just visit
5858
# these url in browser to see how these error pages look like.

democrasite/activitypub/tests/test_models.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ def test_str(self, person: Person):
1212
follower.follow(person)
1313

1414
follow = follower.following_set.first()
15+
16+
assert follow is not None
1517
assert follow.following == person
1618
assert str(follow) == f"{follower} followed {person} on {follow.created}"
1719

democrasite/activitypub/tests/test_views.py

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from django.contrib.messages import get_messages
88
from django.contrib.messages.middleware import MessageMiddleware
99
from django.contrib.sessions.middleware import SessionMiddleware
10+
from django.http import HttpRequest
1011
from django.http import HttpResponseRedirect
1112
from django.test import Client
1213
from django.test import RequestFactory
@@ -36,11 +37,14 @@ def test_queryset(self, client: Client):
3637

3738

3839
class TestUserProfileMixin:
40+
def dummy_get_response(self, request: HttpRequest):
41+
pass
42+
3943
def test_no_auth(self, rf: RequestFactory):
4044
request = rf.get("/fake-url/")
4145

42-
SessionMiddleware(lambda r: None).process_request(request)
43-
MessageMiddleware(lambda r: None).process_request(request)
46+
SessionMiddleware(self.dummy_get_response).process_request(request)
47+
MessageMiddleware(self.dummy_get_response).process_request(request)
4448
request.user = AnonymousUser()
4549

4650
view = views.UserProfileMixin()
@@ -60,8 +64,8 @@ def test_no_auth(self, rf: RequestFactory):
6064
def test_no_person(self, rf: RequestFactory, user: User):
6165
request = rf.get("/fake-url/")
6266

63-
SessionMiddleware(lambda r: None).process_request(request)
64-
MessageMiddleware(lambda r: None).process_request(request)
67+
SessionMiddleware(self.dummy_get_response).process_request(request)
68+
MessageMiddleware(self.dummy_get_response).process_request(request)
6569
request.user = user
6670

6771
view = views.UserProfileMixin()
@@ -143,6 +147,7 @@ def test_form_valid(self, person: Person, rf: RequestFactory):
143147

144148
new_note = Note.objects.get(content=content)
145149
assert new_note.author == person
150+
assert isinstance(response, HttpResponseRedirect)
146151
assert response.status_code == HTTPStatus.FOUND
147152
assert response.url == new_note.get_absolute_url()
148153

@@ -163,6 +168,7 @@ def test_form_valid(self, person: Person, note: Note, rf: RequestFactory):
163168
reply_note = Note.objects.get(content=content)
164169
assert reply_note.author == person
165170
assert reply_note.in_reply_to == note
171+
assert isinstance(response, HttpResponseRedirect)
166172
assert response.status_code == HTTPStatus.FOUND
167173
assert response.url == reply_note.get_absolute_url()
168174

@@ -208,11 +214,14 @@ def test_get_context_data(self, person: Person, rf: RequestFactory):
208214

209215

210216
class TestPersonCreateView:
217+
def dummy_get_response(self, request: HttpRequest):
218+
pass
219+
211220
def test_unauthenticated(self, rf: RequestFactory):
212221
# Unauthenticated
213222
request = rf.post("/fake-url/")
214-
SessionMiddleware(lambda r: None).process_request(request)
215-
MessageMiddleware(lambda r: None).process_request(request)
223+
SessionMiddleware(self.dummy_get_response).process_request(request)
224+
MessageMiddleware(self.dummy_get_response).process_request(request)
216225
request.user = AnonymousUser()
217226

218227
response = views.person_create_view(request)
@@ -229,8 +238,8 @@ def test_unauthenticated(self, rf: RequestFactory):
229238

230239
def test_person_exists(self, rf: RequestFactory, person: Person):
231240
request = rf.post("/fake-url/")
232-
SessionMiddleware(lambda r: None).process_request(request)
233-
MessageMiddleware(lambda r: None).process_request(request)
241+
SessionMiddleware(self.dummy_get_response).process_request(request)
242+
MessageMiddleware(self.dummy_get_response).process_request(request)
234243
request.user = person.user
235244

236245
response = views.person_create_view(request)
@@ -283,13 +292,14 @@ def test_update_person(self, person: Person, rf: RequestFactory):
283292

284293
person.refresh_from_db()
285294
assert person.bio == new_bio
295+
assert isinstance(response, HttpResponseRedirect)
286296
assert response.status_code == HTTPStatus.FOUND
287297
assert response.url == person.get_absolute_url()
288298

289299

290300
class TestPersonFollowingNotesView:
291301
def test_get_queryset(self, person: Person, rf: RequestFactory):
292-
person_followed = PersonFactory()
302+
person_followed = PersonFactory.create()
293303
person.follow(person_followed)
294304

295305
note_from_followed = NoteFactory(author=person_followed)

democrasite/users/api/views.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ class UserViewSet(RetrieveModelMixin, ListModelMixin, UpdateModelMixin, GenericV
2525
lookup_field = "username"
2626

2727
def get_queryset(self, *args, **kwargs):
28-
return self.queryset.filter(id=self.request.user.id)
28+
user_id = self.request.user.id
29+
assert user_id is not None
30+
return self.queryset.filter(id=user_id)
2931

3032
@action(detail=False)
3133
def me(self, request):

democrasite/users/forms.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class Meta(admin_forms.UserChangeForm.Meta): # type: ignore[name-defined]
1818
model = User
1919

2020

21-
class UserAdminCreationForm(admin_forms.AdminUserCreationForm): # type: ignore[name-defined]
21+
class UserAdminCreationForm(admin_forms.AdminUserCreationForm):
2222
"""Override UserCreationForm to use custom User model."""
2323

2424
class Meta(admin_forms.UserCreationForm.Meta): # type: ignore[name-defined]

democrasite/users/tests/api/test_views.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ def test_me(self, api_rf: APIRequestFactory, user: User, view: UserViewSet):
2626

2727
view.request = request
2828

29-
response = view.me(request) # type: ignore[call-arg,arg-type]
29+
response = view.me(request) # type: ignore[call-arg,arg-type,misc]
3030

3131
assert response.data == {
3232
"username": user.username,

democrasite/users/tests/factories.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class UserFactory(DjangoModelFactory[User]):
1111
name = Faker("name")
1212

1313
@post_generation
14-
def password(obj: User, create: bool, extracted: str, **kwargs): # type: ignore[misc] # noqa: N805, FBT001
14+
def password(obj: User, create: bool, extracted: str, **kwargs): # noqa: N805, FBT001
1515
password = extracted or Faker(
1616
"password",
1717
length=42,

democrasite/users/tests/test_views.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
from django.contrib.messages import get_messages
66
from django.contrib.messages.middleware import MessageMiddleware
77
from django.contrib.sessions.middleware import SessionMiddleware
8+
from django.http import HttpRequest
9+
from django.template.response import TemplateResponse
810
from django.test import RequestFactory
911
from factory.faker import faker
1012

@@ -17,6 +19,9 @@
1719

1820

1921
class TestUserUpdateView:
22+
def dummy_get_response(self, request: HttpRequest):
23+
pass
24+
2025
def test_get_success_url(self, user: User, rf: RequestFactory):
2126
view = UserUpdateView()
2227
request = rf.get("/fake-url/")
@@ -40,8 +45,8 @@ def test_form_valid(self, user: User, rf: RequestFactory):
4045
request = rf.get("/fake-url/")
4146

4247
# Add the session/message middleware to the request
43-
SessionMiddleware(lambda r: None).process_request(request)
44-
MessageMiddleware(lambda r: None).process_request(request)
48+
SessionMiddleware(self.dummy_get_response).process_request(request)
49+
MessageMiddleware(self.dummy_get_response).process_request(request)
4550
request.user = user
4651

4752
view.request = request
@@ -88,7 +93,7 @@ def test_authenticated(self, user: User, rf: RequestFactory):
8893
def test_github_authenticated(self, user: User, rf: RequestFactory):
8994
request = rf.get("/fake-url/")
9095
request.user = user
91-
user.socialaccount_set.add(
96+
user.socialaccount_set.add( # type: ignore[attr-defined]
9297
SocialAccount.objects.create(
9398
user=user,
9499
provider="github",
@@ -98,7 +103,9 @@ def test_github_authenticated(self, user: User, rf: RequestFactory):
98103

99104
response = user_detail_view(request, username=user.username)
100105

106+
assert isinstance(response, TemplateResponse)
101107
assert response.status_code == HTTPStatus.OK
108+
assert response.context_data is not None
102109
assert (
103110
response.context_data["empty_message"]
104111
== "You haven't proposed any bills yet."

requirements/base.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ django-celery-beat==2.8.1 # https://github.com/celery/django-celery-beat
99
flower==2.0.1 # https://github.com/mher/flower
1010
PyGithub==2.8.1 # https://github.com/PyGithub/PyGithub
1111
unidiff==0.7.5 # https://github.com/matiasb/python-unidiff
12+
types-requests==2.32.4.20260107 # https://github.com/python/typeshed
1213

1314
# Django
1415
# ------------------------------------------------------------------------------

0 commit comments

Comments
 (0)