feat(pricing): add workspace user rates and price units

This commit is contained in:
2026-04-26 10:19:04 +03:30
parent f960ca8221
commit fadf898486
19 changed files with 731 additions and 266 deletions

View File

@@ -1,12 +1,10 @@
from rest_framework import serializers
from core.serializers.base import BaseModelSerializer
from apps.projects.models import (
Project,
ProjectMembership,
ProjectRate,
ProjectUserRate,
)
from core.serializers.mini import UserMiniSerializer
from rest_framework import serializers
from core.serializers.base import BaseModelSerializer
from apps.projects.models import (
Project,
ProjectMembership,
)
from core.serializers.mini import UserMiniSerializer
class ProjectMemberInputSerializer(serializers.Serializer):
@@ -94,52 +92,6 @@ class ProjectMembershipCreateSerializer(serializers.Serializer):
role = serializers.ChoiceField(choices=ProjectMembership.Role.choices)
class ProjectMembershipUpdateSerializer(serializers.Serializer):
role = serializers.ChoiceField(choices=ProjectMembership.Role.choices, required=False)
is_active = serializers.BooleanField(required=False)
class ProjectRateSerializer(BaseModelSerializer):
class Meta:
model = ProjectRate
fields = BaseModelSerializer.Meta.fields + (
"project",
"hourly_rate",
"currency",
)
read_only_fields = fields
class ProjectRateCreateSerializer(serializers.Serializer):
project_id = serializers.UUIDField()
hourly_rate = serializers.DecimalField(max_digits=10, decimal_places=2)
currency = serializers.CharField(max_length=3, default="USD")
class ProjectRateUpdateSerializer(serializers.Serializer):
hourly_rate = serializers.DecimalField(max_digits=10, decimal_places=2, required=False)
currency = serializers.CharField(max_length=3, required=False)
class ProjectUserRateSerializer(BaseModelSerializer):
class Meta:
model = ProjectUserRate
fields = BaseModelSerializer.Meta.fields + (
"project",
"user",
"hourly_rate",
"currency",
)
read_only_fields = fields
class ProjectUserRateCreateSerializer(serializers.Serializer):
project_id = serializers.UUIDField()
user_id = serializers.UUIDField()
hourly_rate = serializers.DecimalField(max_digits=10, decimal_places=2)
currency = serializers.CharField(max_length=3, default="USD")
class ProjectUserRateUpdateSerializer(serializers.Serializer):
hourly_rate = serializers.DecimalField(max_digits=10, decimal_places=2, required=False)
currency = serializers.CharField(max_length=3, required=False)
class ProjectMembershipUpdateSerializer(serializers.Serializer):
role = serializers.ChoiceField(choices=ProjectMembership.Role.choices, required=False)
is_active = serializers.BooleanField(required=False)