Features: Add order's IDs to TransactionProcessSerializer.
Extra: 1) Minor code improvements.
This commit is contained in:
parent
b71cc2355e
commit
3bf0eaeba2
6 changed files with 19 additions and 34 deletions
|
|
@ -68,10 +68,7 @@ class EvibesPermission(permissions.BasePermission):
|
||||||
if request.user.has_perm(f"{app_label}.{codename}"):
|
if request.user.has_perm(f"{app_label}.{codename}"):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
return bool(
|
return bool(action in ("list", "retrieve") and getattr(model, "is_publicly_visible", False))
|
||||||
action in ("list", "retrieve")
|
|
||||||
and getattr(model, "is_publicly_visible", False)
|
|
||||||
)
|
|
||||||
|
|
||||||
def has_object_permission(self, request, view, obj):
|
def has_object_permission(self, request, view, obj):
|
||||||
if request.method in permissions.SAFE_METHODS:
|
if request.method in permissions.SAFE_METHODS:
|
||||||
|
|
|
||||||
|
|
@ -158,24 +158,12 @@ class AddressCreateSerializer(ModelSerializer): # noqa: F405
|
||||||
write_only=True,
|
write_only=True,
|
||||||
max_length=512,
|
max_length=512,
|
||||||
)
|
)
|
||||||
address_line_1 = CharField(
|
address_line_1 = CharField(write_only=True, max_length=128, required=False)
|
||||||
write_only=True,
|
address_line_2 = CharField(write_only=True, max_length=128, required=False)
|
||||||
max_length=128,
|
|
||||||
required=False
|
|
||||||
)
|
|
||||||
address_line_2 = CharField(
|
|
||||||
write_only=True,
|
|
||||||
max_length=128,
|
|
||||||
required=False
|
|
||||||
)
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Address
|
model = Address
|
||||||
fields = [
|
fields = ["raw_data", "address_line_1", "address_line_2"]
|
||||||
"raw_data",
|
|
||||||
"address_line_1",
|
|
||||||
"address_line_2"
|
|
||||||
]
|
|
||||||
|
|
||||||
def create(self, validated_data):
|
def create(self, validated_data):
|
||||||
raw = validated_data.pop("raw_data")
|
raw = validated_data.pop("raw_data")
|
||||||
|
|
|
||||||
|
|
@ -553,18 +553,12 @@ class AddressViewSet(EvibesViewSet):
|
||||||
return AddressSerializer
|
return AddressSerializer
|
||||||
|
|
||||||
def create(self, request, **kwargs):
|
def create(self, request, **kwargs):
|
||||||
create_serializer = AddressCreateSerializer(
|
create_serializer = AddressCreateSerializer(data=request.data, context={"request": request})
|
||||||
data=request.data,
|
|
||||||
context={"request": request}
|
|
||||||
)
|
|
||||||
create_serializer.is_valid(raise_exception=True)
|
create_serializer.is_valid(raise_exception=True)
|
||||||
|
|
||||||
address_obj = create_serializer.create(create_serializer.validated_data)
|
address_obj = create_serializer.create(create_serializer.validated_data)
|
||||||
|
|
||||||
output_serializer = AddressSerializer(
|
output_serializer = AddressSerializer(address_obj, context={"request": request})
|
||||||
address_obj,
|
|
||||||
context={"request": request}
|
|
||||||
)
|
|
||||||
|
|
||||||
return Response(
|
return Response(
|
||||||
status=status.HTTP_201_CREATED,
|
status=status.HTTP_201_CREATED,
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
from rest_framework.fields import FloatField, JSONField
|
from rest_framework.fields import FloatField, JSONField, SerializerMethodField
|
||||||
from rest_framework.serializers import ModelSerializer, Serializer
|
from rest_framework.serializers import ModelSerializer, Serializer
|
||||||
|
|
||||||
from payments.models import Transaction
|
from payments.models import Transaction
|
||||||
|
|
@ -16,6 +16,14 @@ class TransactionSerializer(ModelSerializer):
|
||||||
|
|
||||||
class TransactionProcessSerializer(ModelSerializer):
|
class TransactionProcessSerializer(ModelSerializer):
|
||||||
process = JSONField(required=True)
|
process = JSONField(required=True)
|
||||||
|
order_hr_id = SerializerMethodField(read_only=True, required=False)
|
||||||
|
order_uuid = SerializerMethodField(read_only=True, required=False)
|
||||||
|
|
||||||
|
def get_order_hr_id(self, obj: Transaction):
|
||||||
|
return obj.order.human_readable_id if obj.order else None
|
||||||
|
|
||||||
|
def get_order_uuid(self, obj: Transaction):
|
||||||
|
return obj.order.uuid if obj.order else None
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Transaction
|
model = Transaction
|
||||||
|
|
|
||||||
|
|
@ -94,8 +94,9 @@ class UserSerializer(ModelSerializer):
|
||||||
Returns a list of serialized ProductSimpleSerializer representations
|
Returns a list of serialized ProductSimpleSerializer representations
|
||||||
for the UUIDs in obj.recently_viewed.
|
for the UUIDs in obj.recently_viewed.
|
||||||
"""
|
"""
|
||||||
return ProductSimpleSerializer(Product.objects.filter(uuid__in=obj.recently_viewed, is_active=True),
|
return ProductSimpleSerializer(
|
||||||
many=True).data
|
Product.objects.filter(uuid__in=obj.recently_viewed, is_active=True), many=True
|
||||||
|
).data
|
||||||
|
|
||||||
|
|
||||||
class TokenObtainSerializer(Serializer):
|
class TokenObtainSerializer(Serializer):
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,6 @@ class UserViewSet(
|
||||||
@method_decorator(ratelimit(key="ip", rate="2/h" if not DEBUG else "888/h"))
|
@method_decorator(ratelimit(key="ip", rate="2/h" if not DEBUG else "888/h"))
|
||||||
def confirm_password_reset(self, request, *args, **kwargs):
|
def confirm_password_reset(self, request, *args, **kwargs):
|
||||||
try:
|
try:
|
||||||
|
|
||||||
if not compare_digest(request.data.get("password"), request.data.get("confirm_password")):
|
if not compare_digest(request.data.get("password"), request.data.get("confirm_password")):
|
||||||
return Response(
|
return Response(
|
||||||
{"error": _("passwords do not match")},
|
{"error": _("passwords do not match")},
|
||||||
|
|
@ -151,6 +150,4 @@ class UserViewSet(
|
||||||
instance = self.get_object()
|
instance = self.get_object()
|
||||||
serializer = self.get_serializer(instance)
|
serializer = self.get_serializer(instance)
|
||||||
instance = serializer.update(instance=self.get_object(), validated_data=request.data)
|
instance = serializer.update(instance=self.get_object(), validated_data=request.data)
|
||||||
return Response(
|
return Response(self.get_serializer(instance.data))
|
||||||
self.get_serializer(instance.data)
|
|
||||||
)
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue