GET carousel for BO

This commit is contained in:
alex 2020-02-07 13:43:20 +03:00
parent c866721c8d
commit 6feb67b0b5
5 changed files with 115 additions and 17 deletions

View File

@ -355,6 +355,17 @@ class PositionBackSerializer(serializers.ModelSerializer):
]
class AdminEmployeeBackSerializers(serializers.ModelSerializer):
class Meta:
model = models.Employee
fields = [
'id',
'name',
'last_name',
]
# TODO: test decorator
@with_base_attributes
class EmployeeBackSerializers(PhoneMixinSerializer, serializers.ModelSerializer):
@ -968,6 +979,7 @@ class CardAndWinesSerializer(serializers.ModelSerializer):
class TeamMemberSerializer(serializers.ModelSerializer):
"""Serializer for team establishment BO section"""
class Meta:
model = account_models.User
fields = (

View File

@ -292,8 +292,8 @@ class CardAndWinesListView(generics.RetrieveAPIView):
queryset = models.Establishment.objects.with_base_related()
def get_object(self):
establishment = models.Establishment.objects.prefetch_plates()\
.filter(pk=self.kwargs['establishment_id'])\
establishment = models.Establishment.objects.prefetch_plates() \
.filter(pk=self.kwargs['establishment_id']) \
.first()
if establishment is None:
raise Http404
@ -705,7 +705,7 @@ class EmployeesListSearchViews(generics.ListAPIView):
serializer_class = serializers.EmployeeBackSerializers
queryset = (
models.Employee.objects.with_back_office_related()
.select_related('photo')
.select_related('photo')
)
permission_classes = get_permission_classes(
IsEstablishmentManager,
@ -827,6 +827,42 @@ class EmployeeRUDView(generics.RetrieveUpdateDestroyAPIView):
)
class AdminEmployeeListView(generics.ListAPIView):
"""
## Employee list view, where request user is admin.
### *GET*
#### Description
Return paginated list of employees with available filters:
* search (`str`) - filter by name or last name with mistakes
* position_id (`int`) - filter by employees position identifier
* public_mark (`str`) - filter by establishment public mark
* toque_number (`str`) - filter by establishment toque number
* username (`str`) - filter by a username or name
#### Response
```
{
"id": 1324,
"name": "Alex",
"establishment_id": 1324,
"establishment_type": 1324,
"establishment_subtype": 1324,
"establishment_slug": "slug",
{
```
"""
serializer_class = serializers.EmployeeBackSerializers
queryset = models.Employee.objects.all().distinct().with_back_office_related()
permission_classes = get_permission_classes(IsEstablishmentAdministrator, )
def get_queryset(self):
qs = super().get_queryset()
if self.request.country_code:
qs = qs.filter(establishments__address__city__country__code=self.request.country_code)
return qs
class RemoveAwardView(generics.DestroyAPIView):
"""
## Remove award view.
@ -1226,10 +1262,10 @@ class EstablishmentGuideCreateDestroyView(generics.GenericAPIView):
lookup_url_kwarg = getattr(self, 'establishment_lookup_url_kwarg', None)
assert lookup_url_kwarg in self.kwargs, (
'Expected view %s to be called with a URL keyword argument '
'named "%s". Fix your URL conf, or set the `.lookup_field` '
'attribute on the view correctly.' %
(self.__class__.__name__, lookup_url_kwarg)
'Expected view %s to be called with a URL keyword argument '
'named "%s". Fix your URL conf, or set the `.lookup_field` '
'attribute on the view correctly.' %
(self.__class__.__name__, lookup_url_kwarg)
)
filters = {'klass': queryset, lookup_url_kwarg: self.kwargs.get(lookup_url_kwarg)}
@ -1247,10 +1283,10 @@ class EstablishmentGuideCreateDestroyView(generics.GenericAPIView):
lookup_url_kwarg = getattr(self, 'guide_lookup_url_kwarg', None)
assert lookup_url_kwarg in self.kwargs, (
'Expected view %s to be called with a URL keyword argument '
'named "%s". Fix your URL conf, or set the `.lookup_field` '
'attribute on the view correctly.' %
(self.__class__.__name__, lookup_url_kwarg)
'Expected view %s to be called with a URL keyword argument '
'named "%s". Fix your URL conf, or set the `.lookup_field` '
'attribute on the view correctly.' %
(self.__class__.__name__, lookup_url_kwarg)
)
obj = get_object_or_404(klass=queryset, id=self.kwargs.get(lookup_url_kwarg))
@ -1431,4 +1467,4 @@ class EstablishmentAwardCreateAndBind(generics.CreateAPIView, generics.DestroyAP
def delete(self, request, *args, **kwargs):
establishment = get_object_or_404(models.Establishment, id=kwargs['establishment_id'])
establishment.remove_award(kwargs['award_id'])
return self._award_list_for_establishment(kwargs['establishment_id'], status.HTTP_200_OK)
return self._award_list_for_establishment(kwargs['establishment_id'], status.HTTP_200_OK)

View File

@ -3,6 +3,7 @@ from rest_framework import serializers
from account.models import User
from account.serializers import BackUserSerializer
from main import models
from main.serializers import CarouselListSerializer
class PanelSerializer(serializers.ModelSerializer):
@ -27,3 +28,16 @@ class PanelSerializer(serializers.ModelSerializer):
'user',
'user_id'
]
class BackCarouselListSerializer(CarouselListSerializer):
"""Serializer for retrieving list of carousel items."""
class Meta:
"""Meta class."""
model = models.Carousel
fields = CarouselListSerializer.Meta.fields + [
'active',
'is_parse',
]

View File

@ -29,7 +29,6 @@ urlpatterns = [
path('panels/<int:pk>/', views.PanelsRUDView.as_view(), name='panels-rud'),
path('panels/<int:pk>/execute/', views.PanelsExecuteView.as_view(), name='panels-execute'),
path('panels/<int:pk>/csv/', views.PanelsExportCSVView.as_view(), name='panels-csv'),
path('panels/<int:pk>/xls/', views.PanelsExecuteXLSView.as_view(), name='panels-xls')
path('panels/<int:pk>/xls/', views.PanelsExecuteXLSView.as_view(), name='panels-xls'),
path('carousel/', views.BackCarouselListView.as_view(), name='carousel-list'),
]

View File

@ -10,8 +10,8 @@ from establishment.serializers.back import EmployeeBackSerializers
from main import serializers
from main import tasks
from main.filters import AwardFilter, AwardTypeFilterSet
from main.models import Award, Footer, PageType, Panel, SiteFeature, Feature, AwardType
from main.serializers.back import PanelSerializer
from main.models import Award, Footer, PageType, Panel, SiteFeature, Feature, AwardType, Carousel
from main.serializers.back import PanelSerializer, BackCarouselListSerializer
from main.views import SiteSettingsView, SiteListView
from utils.methods import get_permission_classes
@ -331,3 +331,40 @@ class PanelsExecuteXLSView(PanelsExecuteView):
{"success": _('The file will be sent to your email.')},
status=status.HTTP_200_OK
)
class BackCarouselListView(generics.ListAPIView):
"""
## List of carousel.
### *GET*
#### Description
Return list of carousel items.
##### Response
E.g.:
```
{
"id": 1,
"model_name": "model_name",
"name": "name",
...
"awards": [
{
"id": 1,
...
}
]
}
```
"""
queryset = Carousel.objects.all()
serializer_class = BackCarouselListSerializer
permission_classes = get_permission_classes()
pagination_class = None
def get_queryset(self):
country_code = self.request.country_code
qs = Carousel.objects.all()
if country_code:
qs = qs.by_country_code(country_code)
return qs