Skip to content

Commit 1928176

Browse files
committed
can't add dataclass cuz of importerrors((((
1 parent 6b5cac7 commit 1928176

4 files changed

Lines changed: 19 additions & 27 deletions

File tree

project_rates/constants.py

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,21 @@
11
from typing import Literal
22
from dataclasses import dataclass
33

4-
from django.db.models import QuerySet
54
from rest_framework.generics import ListAPIView
65

7-
from project_rates.models import Criteria, ProjectScore
8-
from projects.models import Project
96
from users.models import CustomUser
107

8+
NumericTypes: list[str] = ["int", "float"]
9+
10+
ValidatableTypesNames = Literal[*NumericTypes, "bool", "str"]
11+
1112
VERBOSE_TYPES = (
1213
("str", "Текст"),
1314
("int", "Целочисленное число"),
1415
("float", "Число с плавающей точкой"),
1516
("bool", "Да или нет"),
1617
)
1718

18-
NumericTypes: list[str] = ["int", "float"]
19-
20-
ValidatableTypesNames = Literal[*NumericTypes, "bool", "str"]
21-
22-
23-
@dataclass(frozen=True)
24-
class RatesQuerySets:
25-
criterias_queryset: QuerySet[Criteria]
26-
scores_queryset: QuerySet[ProjectScore]
27-
projects_queryset: QuerySet[Project]
28-
2919

3020
@dataclass
3121
class RatesRequestData:

project_rates/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
from django.contrib.auth import get_user_model
22
from django.db import models
3+
from .constants import VERBOSE_TYPES
34

45
from partner_programs.models import PartnerProgram
56
from projects.models import Project
6-
from .constants import VERBOSE_TYPES
77
from .validators import ProjectScoreValidator
88

99
User = get_user_model()

project_rates/services.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
from django.db.models import Count, Q
1+
from django.db.models import Count, Q, QuerySet
22

3-
from project_rates.constants import RatesQuerySets
43
from project_rates.models import Criteria, ProjectScore
54
from project_rates.serializers import (
65
CriteriaSerializer,
@@ -10,7 +9,7 @@
109
from projects.models import Project
1110

1211

13-
def get_querysets(RatesRequestData) -> RatesQuerySets:
12+
def get_querysets(RatesRequestData) -> dict[str, QuerySet]:
1413
program_id = RatesRequestData.program_id
1514
project_id = RatesRequestData.project_id
1615
user = RatesRequestData.user
@@ -38,17 +37,19 @@ def get_querysets(RatesRequestData) -> RatesQuerySets:
3837
if not project_id:
3938
projects = RatesRequestData.view.paginate_queryset(projects)
4039

41-
return RatesQuerySets(
42-
criterias_queryset=criterias, scores_queryset=scores, projects_queryset=projects
43-
)
40+
return {
41+
"criterias_queryset": criterias,
42+
"scores_queryset": scores,
43+
"projects_queryset": projects,
44+
}
4445

4546

46-
def serialize_project_criterias(querysets: RatesQuerySets) -> list[dict]:
47-
criteria_serializer = CriteriaSerializer(querysets.criterias_queryset, many=True)
48-
scores_serializer = ProjectScoreSerializer(querysets.scores_queryset, many=True)
47+
def serialize_project_criterias(querysets: dict[str, QuerySet]) -> list[dict]:
48+
criteria_serializer = CriteriaSerializer(querysets["criterias_queryset"], many=True)
49+
scores_serializer = ProjectScoreSerializer(querysets["scores_queryset"], many=True)
4950

5051
projects_serializer = ProjectScoreGetSerializer(
51-
querysets.projects_queryset,
52+
querysets["projects_queryset"],
5253
context={
5354
"data_criterias": criteria_serializer.data,
5455
"data_scores": scores_serializer.data,

project_rates/views.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
from django.contrib.auth import get_user_model
2+
from django.db.models import QuerySet
23

34
from rest_framework import generics, status
45
from rest_framework.response import Response
56

6-
from project_rates.constants import RatesQuerySets, RatesRequestData
7+
from project_rates.constants import RatesRequestData
78
from project_rates.services import (
89
get_querysets,
910
serialize_project_criterias,
@@ -76,7 +77,7 @@ def get_request_data(self) -> RatesRequestData:
7677
scored=scored,
7778
)
7879

79-
def get_querysets_dict(self) -> RatesQuerySets:
80+
def get_querysets_dict(self) -> dict[str, QuerySet]:
8081
return get_querysets(self.get_request_data())
8182

8283
def serialize_querysets(self) -> list[dict]:

0 commit comments

Comments
 (0)