Enzo Yair

se agrego include

@@ -17,19 +17,41 @@ class EdictoViewSet(mixins.CreateModelMixin, @@ -17,19 +17,41 @@ class EdictoViewSet(mixins.CreateModelMixin,
17 mixins.ListModelMixin, 17 mixins.ListModelMixin,
18 viewsets.GenericViewSet): 18 viewsets.GenericViewSet):
19 19
20 - queryset = Edicto.objects.all().order_by('id')  
21 serializer_class = EdictoSerializer 20 serializer_class = EdictoSerializer
22 permission_classes = [IsAuthenticated, ] 21 permission_classes = [IsAuthenticated, ]
23 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)
  48 +
24 def perform_create(self, serializer): 49 def perform_create(self, serializer):
25 edicto = self.request.data.get('cuerpo_edicto') 50 edicto = self.request.data.get('cuerpo_edicto')
26 cantidad_palabras = contador(edicto) 51 cantidad_palabras = contador(edicto)
27 serializer.save(cantidad_palabras=cantidad_palabras, usuario=self.request.user) 52 serializer.save(cantidad_palabras=cantidad_palabras, usuario=self.request.user)
28 53
29 - def custom_get_method(self, request):  
30 -  
31 - instance = self.get_object()  
32 - @action(detail=True, methods=['put', 'patch']) 54 + @action(detail=True, methods=['patch'])
33 def custom_update(self, request): 55 def custom_update(self, request):
34 edicto = request.data.get('cuerpo_edicto') 56 edicto = request.data.get('cuerpo_edicto')
35 cantidad_palabras = contador(edicto) 57 cantidad_palabras = contador(edicto)
@@ -39,11 +61,7 @@ class EdictoViewSet(mixins.CreateModelMixin, @@ -39,11 +61,7 @@ class EdictoViewSet(mixins.CreateModelMixin,
39 serializer.is_valid(raise_exception=True) 61 serializer.is_valid(raise_exception=True)
40 serializer.save(cantidad_palabras=cantidad_palabras, fecha_actualizacion=datetime.now()) 62 serializer.save(cantidad_palabras=cantidad_palabras, fecha_actualizacion=datetime.now())
41 63
42 - return Response(serializer.data, status=status.HTTP_200_OK  
43 -  
44 -  
45 -  
46 - 64 + return Response(serializer.data, status=status.HTTP_200_OK)
47 65
48 66
49 class PrecioViewSet(mixins.CreateModelMixin, 67 class PrecioViewSet(mixins.CreateModelMixin,
  1 +from django_filters import rest_framework as filters
  2 +
  3 +from edicto.models import Edicto
  4 +
  5 +
  6 +class EdictoFilters(filters.FilterSet):
  7 + models = Edicto
  8 + fields = ('estado', 'fecha_publicacion',)
@@ -7,15 +7,13 @@ from usuario.serializers import UsuarioSerializer @@ -7,15 +7,13 @@ from usuario.serializers import UsuarioSerializer
7 7
8 8
9 class EdictoSerializer(serializers.ModelSerializer): 9 class EdictoSerializer(serializers.ModelSerializer):
10 -  
11 edicto_id = serializers.ReadOnlyField(source='id') 10 edicto_id = serializers.ReadOnlyField(source='id')
12 11
13 class Meta: 12 class Meta:
14 model = Edicto 13 model = Edicto
15 fields = ('edicto_id', 14 fields = ('edicto_id',
16 - 'fecha_publicacion',  
17 - 'cuerpo_edicto',  
18 'estado', 15 'estado',
  16 + 'cuerpo_edicto',
19 'cantidad_palabras', 17 'cantidad_palabras',
20 'dias_publicar', 18 'dias_publicar',
21 'cantidad_sellos', 19 'cantidad_sellos',
@@ -24,18 +22,18 @@ class EdictoSerializer(serializers.ModelSerializer): @@ -24,18 +22,18 @@ class EdictoSerializer(serializers.ModelSerializer):
24 'fecha_creacion', 22 'fecha_creacion',
25 'observaciones', 23 'observaciones',
26 ) 24 )
27 - read_only_fields = ('cantidad_palabras', 'fecha_creacion') 25 +
  26 + included_serializers = {
  27 + 'usuario': 'usuario.serializers.UsuarioSerializer',
  28 + }
  29 +
  30 + read_only_fields = ('fecha_publicacion', 'cantidad_palabras', 'fecha_creacion')
28 31
29 def to_representation(self, instance): 32 def to_representation(self, instance):
30 data = super().to_representation(instance) 33 data = super().to_representation(instance)
31 user = self.context['request'].user 34 user = self.context['request'].user
32 -  
33 - if self.context['view'].include_fecha_publicacion(): 35 + if not user.is_staff:
34 data['fecha_publicacion'] = instance.fecha_publicacion 36 data['fecha_publicacion'] = instance.fecha_publicacion
35 -  
36 - if user.is_staff:  
37 - data['user_id'] = user.id  
38 -  
39 return data 37 return data
40 38
41 @staticmethod 39 @staticmethod
@@ -46,6 +44,7 @@ class EdictoSerializer(serializers.ModelSerializer): @@ -46,6 +44,7 @@ class EdictoSerializer(serializers.ModelSerializer):
46 return value 44 return value
47 45
48 46
  47 +
49 class PrecioSerializer(serializers.ModelSerializer): 48 class PrecioSerializer(serializers.ModelSerializer):
50 usuario = UsuarioSerializer() 49 usuario = UsuarioSerializer()
51 50
@@ -2,11 +2,9 @@ import re @@ -2,11 +2,9 @@ import re
2 2
3 3
4 def contador(edicto): 4 def contador(edicto):
5 - numeros = re.findall(r'\b\d+(?:\.\d+)?\b', edicto)  
6 expresiones = re.findall(r'\(\.\.\.', edicto) 5 expresiones = re.findall(r'\(\.\.\.', edicto)
7 texto = edicto.split() 6 texto = edicto.split()
8 cantidad_palabras = len(texto) 7 cantidad_palabras = len(texto)
9 - cantidad_numeros = len(numeros) - 1  
10 cantidad_expresiones = len(expresiones) 8 cantidad_expresiones = len(expresiones)
11 - total_edicto = cantidad_palabras + cantidad_numeros + cantidad_expresiones 9 + total_edicto = cantidad_palabras + cantidad_expresiones
12 return total_edicto 10 return total_edicto
@@ -2,12 +2,14 @@ from rest_framework import routers @@ -2,12 +2,14 @@ from rest_framework import routers
2 2
3 from organismo import api as organismo_api 3 from organismo import api as organismo_api
4 from usuario import api as usuario_api 4 from usuario import api as usuario_api
  5 +from edicto.api import EdictoViewSet
5 from edicto import api as edicto_api 6 from edicto import api as edicto_api
6 # Define routes 7 # Define routes
7 router = routers.DefaultRouter() 8 router = routers.DefaultRouter()
8 9
9 router.register(prefix='usuario', viewset=usuario_api.UsuarioViewSet) 10 router.register(prefix='usuario', viewset=usuario_api.UsuarioViewSet)
10 router.register(prefix='organismo', viewset=organismo_api.OrganismoViewSet) 11 router.register(prefix='organismo', viewset=organismo_api.OrganismoViewSet)
11 -router.register(prefix='edicto', viewset=edicto_api.EdictoViewSet) 12 +router.register(r'edicto', EdictoViewSet, basename='edicto')
12 router.register(prefix='precio', viewset=edicto_api.PrecioViewSet) 13 router.register(prefix='precio', viewset=edicto_api.PrecioViewSet)
13 14
  15 +