Showing
5 changed files
with
49 additions
and
24 deletions
@@ -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, |
project/apps/edicto/filters.py
0 → 100644
@@ -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 | + |
-
Please register or login to post a comment