Fixes: AddressViewSet
This commit is contained in:
parent
52ea4c3212
commit
fd97d8a072
3 changed files with 35 additions and 3 deletions
|
|
@ -17,7 +17,7 @@ from django_filters import (
|
||||||
UUIDFilter,
|
UUIDFilter,
|
||||||
)
|
)
|
||||||
|
|
||||||
from core.models import Brand, Category, Feedback, Order, Product, Wishlist
|
from core.models import Address, Brand, Category, Feedback, Order, Product, Wishlist
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
@ -372,3 +372,24 @@ class FeedbackFilter(FilterSet):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Feedback
|
model = Feedback
|
||||||
fields = ["uuid", "product_uuid", "user_uuid", "order_by"]
|
fields = ["uuid", "product_uuid", "user_uuid", "order_by"]
|
||||||
|
|
||||||
|
|
||||||
|
class AddressFilter(FilterSet):
|
||||||
|
uuid = UUIDFilter(field_name="uuid", lookup_expr="exact", label=_("UUID"))
|
||||||
|
user_uuid = UUIDFilter(field_name="user__uuid", lookup_expr="exact", label=_("User UUID"))
|
||||||
|
user_email = CharFilter(field_name="user__email", lookup_expr="iexact", label=_("User email"))
|
||||||
|
|
||||||
|
order_by = OrderingFilter(
|
||||||
|
fields=(
|
||||||
|
("uuid", "uuid"),
|
||||||
|
("user__email", "user_email"),
|
||||||
|
("user__uuid", "user_uuid"),
|
||||||
|
("created", "created"),
|
||||||
|
("modified", "modified"),
|
||||||
|
("?", "random"),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = Address
|
||||||
|
fields = ["uuid", "user_uuid", "user_email", "order_by"]
|
||||||
|
|
|
||||||
|
|
@ -96,7 +96,7 @@ class EvibesPermission(permissions.BasePermission):
|
||||||
return queryset.none()
|
return queryset.none()
|
||||||
|
|
||||||
base = queryset.filter(is_active=True, user=request.user)
|
base = queryset.filter(is_active=True, user=request.user)
|
||||||
if request.user.is_staff and request.user.has_perm(
|
if request.user.has_perm(
|
||||||
f"{app_label}.{self.ACTION_PERM_MAP.get(view.action)}_{model_name}"
|
f"{app_label}.{self.ACTION_PERM_MAP.get(view.action)}_{model_name}"
|
||||||
):
|
):
|
||||||
return queryset.filter(is_active=True)
|
return queryset.filter(is_active=True)
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ from core.docs.drf.viewsets import (
|
||||||
PRODUCT_SCHEMA,
|
PRODUCT_SCHEMA,
|
||||||
WISHLIST_SCHEMA,
|
WISHLIST_SCHEMA,
|
||||||
)
|
)
|
||||||
from core.filters import BrandFilter, CategoryFilter, FeedbackFilter, OrderFilter, ProductFilter
|
from core.filters import AddressFilter, BrandFilter, CategoryFilter, FeedbackFilter, OrderFilter, ProductFilter
|
||||||
from core.models import (
|
from core.models import (
|
||||||
Address,
|
Address,
|
||||||
Attribute,
|
Attribute,
|
||||||
|
|
@ -633,6 +633,8 @@ class WishlistViewSet(EvibesViewSet):
|
||||||
@extend_schema_view(**ADDRESS_SCHEMA)
|
@extend_schema_view(**ADDRESS_SCHEMA)
|
||||||
class AddressViewSet(EvibesViewSet):
|
class AddressViewSet(EvibesViewSet):
|
||||||
pagination_class = None
|
pagination_class = None
|
||||||
|
filter_backends = [DjangoFilterBackend]
|
||||||
|
filterset_class = AddressFilter
|
||||||
queryset = Address.objects.all()
|
queryset = Address.objects.all()
|
||||||
serializer_class = AddressSerializer
|
serializer_class = AddressSerializer
|
||||||
additional = {"create": "ALLOW"}
|
additional = {"create": "ALLOW"}
|
||||||
|
|
@ -644,6 +646,15 @@ class AddressViewSet(EvibesViewSet):
|
||||||
return AddressAutocompleteInputSerializer
|
return AddressAutocompleteInputSerializer
|
||||||
return AddressSerializer
|
return AddressSerializer
|
||||||
|
|
||||||
|
def get_queryset(self):
|
||||||
|
if self.request.user.has_perm("core.view_address"):
|
||||||
|
return super().get_queryset()
|
||||||
|
|
||||||
|
if self.request.user.is_authenticated:
|
||||||
|
return super().get_queryset().filter(user=self.request.user)
|
||||||
|
|
||||||
|
return Adress.objects.none()
|
||||||
|
|
||||||
def create(self, request, **kwargs):
|
def create(self, request, **kwargs):
|
||||||
create_serializer = AddressCreateSerializer(data=request.data, context={"request": request})
|
create_serializer = AddressCreateSerializer(data=request.data, context={"request": request})
|
||||||
create_serializer.is_valid(raise_exception=True)
|
create_serializer.is_valid(raise_exception=True)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue