Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 18 additions & 15 deletions apps/accounts/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
from apps.skills.models import Skill
from apps.skills.serializers import SkillLightSerializer, TagRelatedField
from services.crisalid.serializers import ResearcherSerializerLight
from services.translator.serializers import AutoTranslatedModelSerializer
from services.translator.serializers import auto_translated

from .exceptions import (
FeaturedProjectPermissionDeniedError,
Expand Down Expand Up @@ -65,9 +65,8 @@ class Meta:
]


class UserAdminListSerializer(
AutoTranslatedModelSerializer, serializers.ModelSerializer
):
@auto_translated
class UserAdminListSerializer(serializers.ModelSerializer):
current_org_role = serializers.CharField(required=False, read_only=True)
email_verified = serializers.BooleanField(required=False, read_only=True)
people_groups = serializers.SerializerMethodField()
Expand Down Expand Up @@ -104,7 +103,8 @@ def get_people_groups(self, user: ProjectUser) -> list:
).data


class UserLighterSerializer(AutoTranslatedModelSerializer, serializers.ModelSerializer):
@auto_translated
class UserLighterSerializer(serializers.ModelSerializer):
email = PrivacySettingProtectedEmailField(
privacy_field="email", required=False, allow_blank=True
)
Expand Down Expand Up @@ -149,7 +149,8 @@ def to_representation(self, instance: ProjectUser) -> dict[str, Any]:
}


class UserLightSerializer(AutoTranslatedModelSerializer, serializers.ModelSerializer):
@auto_translated
class UserLightSerializer(serializers.ModelSerializer):
email = PrivacySettingProtectedEmailField(
privacy_field="email", required=False, allow_blank=True
)
Expand Down Expand Up @@ -236,9 +237,8 @@ def get_can_mentor_on(self, user: ProjectUser) -> list[dict]:
return []


class PeopleGroupSuperLightSerializer(
AutoTranslatedModelSerializer, serializers.ModelSerializer
):
@auto_translated
class PeopleGroupSuperLightSerializer(serializers.ModelSerializer):
organization = serializers.SlugRelatedField(read_only=True, slug_field="code")

class Meta:
Expand All @@ -253,6 +253,7 @@ class Meta:
fields = read_only_fields


@auto_translated
class PeopleGroupLocationSerializer(BaseLocationSerializer):
people_group = serializers.PrimaryKeyRelatedField(
required=False, queryset=PeopleGroup.objects.all()
Expand Down Expand Up @@ -284,9 +285,9 @@ def create(self, validated_data):
return PeopleGroupLocation.objects.bulk_create(locations_objs)


@auto_translated
class PeopleGroupLightSerializer(
ModulesSerializers,
AutoTranslatedModelSerializer,
serializers.ModelSerializer,
):
header_image = ImageSerializer(read_only=True)
Expand All @@ -312,9 +313,9 @@ class Meta:
modules_keys = ("members", "subgroups")


@auto_translated
class PeopleGroupHierarchySerializer(
ModulesSerializers,
AutoTranslatedModelSerializer,
serializers.ModelSerializer,
):
children = serializers.SerializerMethodField()
Expand Down Expand Up @@ -374,8 +375,10 @@ def get_children(self, people_group: PeopleGroup) -> list[dict[str, str | int]]:
return []

if not mapping:
base_queryset = request.user.get_people_group_queryset().filter(
organization=people_group.organization
base_queryset = (
request.user.get_people_group_queryset()
.filter(organization=people_group.organization)
.select_related("header_image")
)
mapping = {group.id: group for group in base_queryset}
context["mapping"] = mapping
Expand Down Expand Up @@ -493,10 +496,10 @@ def create(self, validated_data):
return validated_data


@auto_translated
class PeopleGroupSerializer(
ModulesSerializers,
StringsImagesSerializer,
AutoTranslatedModelSerializer,
serializers.ModelSerializer,
):
string_images_forbid_fields: list[str] = [
Expand Down Expand Up @@ -645,9 +648,9 @@ class Meta:


@extend_schema_serializer(exclude_fields=("roles",))
@auto_translated
class UserSerializer(
StringsImagesSerializer,
AutoTranslatedModelSerializer,
serializers.ModelSerializer,
):
string_images_forbid_fields: list[str] = [
Expand Down
5 changes: 3 additions & 2 deletions apps/analytics/serializers.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
from rest_framework import serializers

from apps.commons.serializers import TranslatedModelSerializer
from apps.files.serializers import ImageSerializer
from apps.organizations.models import Organization
from apps.projects.models import Project
from apps.skills.models import Tag
from apps.skills.serializers import TagSerializer
from services.translator.serializers import external_auto_translated


class StatsOrganizationSerializer(serializers.ModelSerializer):
Expand Down Expand Up @@ -41,7 +41,8 @@ class ProjectByMonth(serializers.Serializer):
updated_count = serializers.IntegerField()


class TagProjectSerializer(TranslatedModelSerializer):
@external_auto_translated
class TagProjectSerializer(serializers.ModelSerializer):
projects = serializers.PrimaryKeyRelatedField(
many=True, queryset=Project.objects.all()
)
Expand Down
10 changes: 5 additions & 5 deletions apps/announcements/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,13 @@
from apps.files.serializers import ImageSerializer
from apps.organizations.models import Organization
from apps.projects.models import Project
from services.translator.serializers import AutoTranslatedModelSerializer
from services.translator.serializers import auto_translated

from .models import Announcement


class ProjectAnnouncementSerializer(
AutoTranslatedModelSerializer, serializers.ModelSerializer
):
@auto_translated
class ProjectAnnouncementSerializer(serializers.ModelSerializer):
header_image = ImageSerializer(read_only=True)

class Meta:
Expand All @@ -32,9 +31,9 @@ class Meta:
]


@auto_translated
class AnnouncementSerializer(
StringsImagesSerializer,
AutoTranslatedModelSerializer,
OrganizationRelatedSerializer,
ProjectRelatedSerializer,
serializers.ModelSerializer,
Expand Down Expand Up @@ -82,6 +81,7 @@ def get_related_project(self) -> Project | None:
return None


@auto_translated
class ApplyToAnnouncementSerializer(AnnouncementSerializer):
applicant_name = serializers.CharField()
applicant_firstname = serializers.CharField()
Expand Down
31 changes: 0 additions & 31 deletions apps/commons/serializers.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
from collections.abc import Collection
from typing import Any

from django.conf import settings
from django.db.models import Model, Q
from django.utils.translation import gettext_lazy as _
from modeltranslation.manager import get_translatable_fields_for_model
from rest_framework import mixins, serializers, viewsets
from rest_framework.settings import import_from_string

Expand All @@ -13,7 +11,6 @@
from apps.files.models import Image
from apps.organizations.models import Organization
from apps.projects.models import Project
from services.translator.serializers import AutoTranslatedModelSerializer


class ProjectRelatedSerializer(serializers.ModelSerializer):
Expand Down Expand Up @@ -85,33 +82,6 @@ def __getattribute__(self, attr):
return object.__getattribute__(self, attr)


class TranslatedModelSerializer(serializers.ModelSerializer):
"""
Automatically translate model fields for model with registered translation
"""

def get_field_names(self, declared_fields, info):
fields = super().get_field_names(declared_fields, info)
translated_fields = get_translatable_fields_for_model(self.Meta.model) or []
all_fields = []

requested_langs = []
if "request" in self.context:
lang_param = self.context["request"].query_params.get("lang")
requested_langs = lang_param.split(",") if lang_param else []

for field in fields:
all_fields.append(field)
if field in translated_fields:
for lang in settings.REQUIRED_LANGUAGES:
if not requested_langs or lang in requested_langs:
all_fields.append(f"{field}_{lang}")
return all_fields

class Meta:
model = None


class RetrieveUpdateModelViewSet(
mixins.RetrieveModelMixin, mixins.UpdateModelMixin, viewsets.GenericViewSet
):
Expand Down Expand Up @@ -226,7 +196,6 @@ def save(self, **kwargs):

class BaseLocationSerializer(
StringsImagesSerializer,
AutoTranslatedModelSerializer,
serializers.ModelSerializer,
):
string_images_forbid_fields: list[str] = ["title", "description"]
Expand Down
7 changes: 3 additions & 4 deletions apps/feedbacks/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
from apps.files.models import Image
from apps.organizations.models import Organization
from apps.projects.models import Project
from services.translator.serializers import AutoTranslatedModelSerializer
from services.translator.serializers import auto_translated

from .exceptions import (
CommentProjectPermissionDeniedError,
Expand All @@ -24,7 +24,6 @@


class FollowSerializer(
AutoTranslatedModelSerializer,
OrganizationRelatedSerializer,
ProjectRelatedSerializer,
serializers.ModelSerializer,
Expand Down Expand Up @@ -75,9 +74,9 @@ def create(self, validated_data):
pass


@auto_translated
class ReviewSerializer(
StringsImagesSerializer,
AutoTranslatedModelSerializer,
OrganizationRelatedSerializer,
ProjectRelatedSerializer,
serializers.ModelSerializer,
Expand Down Expand Up @@ -115,9 +114,9 @@ def get_related_project(self) -> Project | None:
return None


@auto_translated
class CommentSerializer(
StringsImagesSerializer,
AutoTranslatedModelSerializer,
OrganizationRelatedSerializer,
ProjectRelatedSerializer,
serializers.ModelSerializer,
Expand Down
15 changes: 7 additions & 8 deletions apps/files/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
)
from apps.organizations.models import Organization
from apps.projects.models import Project
from services.translator.serializers import AutoTranslatedModelSerializer
from services.translator.serializers import auto_translated

from .exceptions import (
ChangeFileProjectError,
Expand Down Expand Up @@ -172,10 +172,10 @@ def find_attachment_type(soup):
return AttachmentType.LINK


@auto_translated
class AttachmentLinkSerializer(
StringsImagesSerializer,
AbstractAttachmentLink,
AutoTranslatedModelSerializer,
OrganizationRelatedSerializer,
ProjectRelatedSerializer,
serializers.ModelSerializer,
Expand Down Expand Up @@ -246,9 +246,9 @@ def get_related_organizations(self) -> list[Organization]:
return []


@auto_translated
class OrganizationAttachmentFileSerializer(
StringsImagesSerializer,
AutoTranslatedModelSerializer,
serializers.ModelSerializer,
):
string_images_forbid_fields: list[str] = ["description", "title"]
Expand Down Expand Up @@ -296,9 +296,9 @@ def validate_file(self, file):
return file


@auto_translated
class AttachmentFileSerializer(
StringsImagesSerializer,
AutoTranslatedModelSerializer,
OrganizationRelatedSerializer,
ProjectRelatedSerializer,
serializers.ModelSerializer,
Expand Down Expand Up @@ -442,10 +442,10 @@ def to_representation(self, instance):
}


@auto_translated
class ProjectUserAttachmentLinkSerializer(
AbstractAttachmentLink,
StringsImagesSerializer,
AutoTranslatedModelSerializer,
):
string_images_forbid_fields: list[str] = ["title", "description"]

Expand All @@ -461,9 +461,8 @@ class Meta:
]


class ProjectUserAttachmentFileSerializer(
StringsImagesSerializer, AutoTranslatedModelSerializer
):
@auto_translated
class ProjectUserAttachmentFileSerializer(StringsImagesSerializer):
file = serializers.FileField()
string_images_forbid_fields: list[str] = ["title", "description"]

Expand Down
6 changes: 3 additions & 3 deletions apps/invitations/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
)
from apps.invitations.models import AccessRequest
from apps.organizations.models import Organization
from services.translator.serializers import AutoTranslatedModelSerializer
from services.translator.serializers import auto_translated

from .exceptions import (
AccessRequestDisabledError,
Expand All @@ -30,9 +30,9 @@
from .models import Invitation


@auto_translated
class InvitationSerializer(
StringsImagesSerializer,
AutoTranslatedModelSerializer,
OrganizationRelatedSerializer,
serializers.ModelSerializer,
):
Expand Down Expand Up @@ -82,9 +82,9 @@ def get_related_organizations(self):
return Organization.objects.filter(code=self.context.get("organization_code"))


@auto_translated
class AccessRequestSerializer(
StringsImagesSerializer,
AutoTranslatedModelSerializer,
serializers.ModelSerializer,
):
string_images_forbid_fields: list[str] = ["message"]
Expand Down
6 changes: 3 additions & 3 deletions apps/modules/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ class ModulesSerializers(serializers.ModelSerializer):
def __init__(self, *ar, **kw):
super().__init__(*ar, **kw)

request = self.context.get("request")
query = request.query_params if request else QueryDict()

if "modules_keys" not in self.context:
request = self.context.get("request")
query = request.query_params if request else QueryDict()

modules_keys = None
# if modules is set queryparams , return list elements (for multiples modules)
if "modules" in query:
Expand Down
Loading
Loading