diff --git a/files/models.py b/files/models.py index 7c43149c..62146430 100644 --- a/files/models.py +++ b/files/models.py @@ -3,6 +3,8 @@ from django.contrib.auth import get_user_model from django.db import models +from django_stubs_ext.db.models import TypedModelMeta + User = get_user_model() @@ -31,7 +33,7 @@ def __str__(self): filename_with_extension = f"{self.name}.{self.extension}" return f"UserFile<{reprlib.repr(filename_with_extension)}>" - class Meta: + class Meta(TypedModelMeta): verbose_name = "Файл" verbose_name_plural = "Файлы" ordering = ["datetime_uploaded"] diff --git a/files/serializers.py b/files/serializers.py index 77e842d6..071055a7 100644 --- a/files/serializers.py +++ b/files/serializers.py @@ -3,7 +3,7 @@ from files.models import UserFile -class UserFileSerializer(ModelSerializer): +class UserFileSerializer(ModelSerializer[UserFile]): class Meta: model = UserFile fields = [ diff --git a/industries/models.py b/industries/models.py index b12e4d25..4e8aa3b1 100644 --- a/industries/models.py +++ b/industries/models.py @@ -1,4 +1,5 @@ from django.db import models +from django_stubs_ext.db.models import TypedModelMeta class Industry(models.Model): @@ -20,7 +21,7 @@ class Industry(models.Model): def __str__(self): return f"Industry<{self.id}> - {self.name}" - class Meta: + class Meta(TypedModelMeta): verbose_name = "Индустрия" verbose_name_plural = "Индустрии" ordering = ["name"] diff --git a/industries/serializers.py b/industries/serializers.py index 105a1762..6548a243 100644 --- a/industries/serializers.py +++ b/industries/serializers.py @@ -1,9 +1,10 @@ +from django_stubs_ext.db.models import TypedModelMeta from rest_framework import serializers from industries.models import Industry class IndustrySerializer(serializers.ModelSerializer): - class Meta: + class Meta(TypedModelMeta): model = Industry fields = ["id", "name", "datetime_created"] diff --git a/industries/tests.py b/industries/tests.py index 13ee3b2c..a0058816 100644 --- a/industries/tests.py +++ b/industries/tests.py @@ -92,7 +92,7 @@ def test_industry_update_with_wrong_data(self): self.assertEqual(response.status_code, 400) - def _user_create(self): + def _user_create(self) -> CustomUser: request = self.factory.post("auth/users/", USER_CREATE_DATA) response = self.user_list_view(request) user_id = response.data["id"] diff --git a/mailing/models.py b/mailing/models.py index 858e3e8b..7364925f 100644 --- a/mailing/models.py +++ b/mailing/models.py @@ -4,6 +4,8 @@ from django.db import models from .constants import get_default_mailing_schema +from django_stubs_ext.db.models import TypedModelMeta + def get_template_path(instance, filename): ext = filename.split(".")[-1] @@ -16,7 +18,7 @@ class MailingSchema(models.Model): schema = models.JSONField(default=get_default_mailing_schema, null=True, blank=True) template = models.TextField() - class Meta: + class Meta(TypedModelMeta): verbose_name = "Схема шаблона письма" verbose_name_plural = "Схемы шаблонов писем" diff --git a/mailing/views.py b/mailing/views.py index 062c93cc..08323dbd 100644 --- a/mailing/views.py +++ b/mailing/views.py @@ -2,6 +2,7 @@ from django.http import JsonResponse from django.shortcuts import render from rest_framework.views import APIView +from rest_framework.request import Request from users.models import CustomUser from .utils import send_mass_mail @@ -9,7 +10,7 @@ class SendMailView(APIView): - def post(self, request): + def post(self, request: Request) -> JsonResponse: users = request.POST.getlist("users[]") schema_id = request.POST["schemas"] subject = request.POST["subject"] @@ -30,7 +31,7 @@ def get(self, request): class TemplateFieldsView(APIView): - def get(self, request, schema_id): + def get(self, request: Request, schema_id: int) -> JsonResponse: return JsonResponse( dict(MailingTemplateRender().get_template_fields_context(schema_id)) )