Showing
3 changed files
with
20 additions
and
34 deletions
1 | -from rest_framework import viewsets, mixins, status, serializers | 1 | +from rest_framework import viewsets, filters, mixins, status, serializers |
2 | +from django_filters.rest_framework import DjangoFilterBackend | ||
2 | from rest_framework.response import Response | 3 | from rest_framework.response import Response |
3 | from rest_framework.permissions import IsAuthenticated | 4 | from rest_framework.permissions import IsAuthenticated |
4 | from rest_framework.decorators import action | 5 | from rest_framework.decorators import action |
@@ -6,6 +7,7 @@ from datetime import datetime | @@ -6,6 +7,7 @@ from datetime import datetime | ||
6 | 7 | ||
7 | from .models import Edicto, Precio | 8 | from .models import Edicto, Precio |
8 | from .serializer import EdictoSerializer, PrecioSerializer | 9 | from .serializer import EdictoSerializer, PrecioSerializer |
10 | +from .filters import EdictoFilter | ||
9 | from .utils import contador | 11 | from .utils import contador |
10 | # from .precio import contador | 12 | # from .precio import contador |
11 | 13 | ||
@@ -19,39 +21,17 @@ class EdictoViewSet(mixins.CreateModelMixin, | @@ -19,39 +21,17 @@ class EdictoViewSet(mixins.CreateModelMixin, | ||
19 | 21 | ||
20 | serializer_class = EdictoSerializer | 22 | serializer_class = EdictoSerializer |
21 | permission_classes = [IsAuthenticated, ] | 23 | permission_classes = [IsAuthenticated, ] |
22 | - | ||
23 | - def get_queryset(self): | ||
24 | - | ||
25 | - return Edicto.objects.all().order_by('usuario_id') | ||
26 | - | ||
27 | - def list(self, request, *args, **kwargs): | ||
28 | - fields_to_select = [ | ||
29 | - 'id', | ||
30 | - 'estado', | ||
31 | - 'cuerpo_edicto', | ||
32 | - 'cantidad_palabras', | ||
33 | - 'dias_publicar', | ||
34 | - 'cantidad_sellos', | ||
35 | - 'cantidad_copias', | ||
36 | - 'archivo', | ||
37 | - 'fecha_creacion', | ||
38 | - 'observaciones', | ||
39 | - 'fecha_publicacion', | ||
40 | - ] | ||
41 | - queryset = self.filter_queryset(self.get_queryset().values(*fields_to_select)) | ||
42 | - user_id = request.user.id | ||
43 | - response_data = { | ||
44 | - 'user_id': user_id, | ||
45 | - 'edictos': queryset, | ||
46 | - } | ||
47 | - return Response(response_data) | 24 | + filter_backends = (DjangoFilterBackend, filters.OrderingFilter) |
25 | + filterset_class = EdictoFilter | ||
26 | + queryset = Edicto.objects.all().order_by('id') | ||
27 | + ordering_fields = ('usuario', 'estado', 'fecha_publicacion', 'id',) | ||
48 | 28 | ||
49 | def perform_create(self, serializer): | 29 | def perform_create(self, serializer): |
50 | edicto = self.request.data.get('cuerpo_edicto') | 30 | edicto = self.request.data.get('cuerpo_edicto') |
51 | cantidad_palabras = contador(edicto) | 31 | cantidad_palabras = contador(edicto) |
52 | serializer.save(cantidad_palabras=cantidad_palabras, usuario=self.request.user) | 32 | serializer.save(cantidad_palabras=cantidad_palabras, usuario=self.request.user) |
53 | 33 | ||
54 | - @action(detail=True, methods=['patch']) | 34 | + @action(detail=True, methods=['put', 'patch']) |
55 | def custom_update(self, request): | 35 | def custom_update(self, request): |
56 | edicto = request.data.get('cuerpo_edicto') | 36 | edicto = request.data.get('cuerpo_edicto') |
57 | cantidad_palabras = contador(edicto) | 37 | cantidad_palabras = contador(edicto) |
@@ -3,6 +3,11 @@ from django_filters import rest_framework as filters | @@ -3,6 +3,11 @@ from django_filters import rest_framework as filters | ||
3 | from edicto.models import Edicto | 3 | from edicto.models import Edicto |
4 | 4 | ||
5 | 5 | ||
6 | -class EdictoFilters(filters.FilterSet): | ||
7 | - models = Edicto | ||
8 | - fields = ('estado', 'fecha_publicacion',) | 6 | +class EdictoFilter(filters.FilterSet): |
7 | + class Meta: | ||
8 | + models = Edicto | ||
9 | + fields = ('usuario', 'estado', 'fecha_publicacion', 'edicto_id',) | ||
10 | + | ||
11 | + | ||
12 | + | ||
13 | + |
@@ -12,6 +12,7 @@ class EdictoSerializer(serializers.ModelSerializer): | @@ -12,6 +12,7 @@ class EdictoSerializer(serializers.ModelSerializer): | ||
12 | class Meta: | 12 | class Meta: |
13 | model = Edicto | 13 | model = Edicto |
14 | fields = ('edicto_id', | 14 | fields = ('edicto_id', |
15 | + 'usuario', | ||
15 | 'estado', | 16 | 'estado', |
16 | 'cuerpo_edicto', | 17 | 'cuerpo_edicto', |
17 | 'cantidad_palabras', | 18 | 'cantidad_palabras', |
@@ -21,13 +22,14 @@ class EdictoSerializer(serializers.ModelSerializer): | @@ -21,13 +22,14 @@ class EdictoSerializer(serializers.ModelSerializer): | ||
21 | 'archivo', | 22 | 'archivo', |
22 | 'fecha_creacion', | 23 | 'fecha_creacion', |
23 | 'observaciones', | 24 | 'observaciones', |
25 | + 'fecha_publicacion', | ||
24 | ) | 26 | ) |
25 | 27 | ||
26 | included_serializers = { | 28 | included_serializers = { |
27 | - 'usuario': 'usuario.serializers.UsuarioSerializer', | 29 | + 'usuario': UsuarioSerializer, |
28 | } | 30 | } |
29 | 31 | ||
30 | - read_only_fields = ('fecha_publicacion', 'cantidad_palabras', 'fecha_creacion') | 32 | + read_only_fields = ('usuario', 'fecha_publicacion', 'cantidad_palabras', 'fecha_creacion') |
31 | 33 | ||
32 | def to_representation(self, instance): | 34 | def to_representation(self, instance): |
33 | data = super().to_representation(instance) | 35 | data = super().to_representation(instance) |
@@ -44,7 +46,6 @@ class EdictoSerializer(serializers.ModelSerializer): | @@ -44,7 +46,6 @@ class EdictoSerializer(serializers.ModelSerializer): | ||
44 | return value | 46 | return value |
45 | 47 | ||
46 | 48 | ||
47 | - | ||
48 | class PrecioSerializer(serializers.ModelSerializer): | 49 | class PrecioSerializer(serializers.ModelSerializer): |
49 | usuario = UsuarioSerializer() | 50 | usuario = UsuarioSerializer() |
50 | 51 |
-
Please register or login to post a comment