Showing
5 changed files
with
44 additions
and
44 deletions
@@ -3,13 +3,11 @@ from django_filters.rest_framework import DjangoFilterBackend | @@ -3,13 +3,11 @@ from django_filters.rest_framework import DjangoFilterBackend | ||
3 | from rest_framework.response import Response | 3 | from rest_framework.response import Response |
4 | from rest_framework.permissions import IsAuthenticated | 4 | from rest_framework.permissions import IsAuthenticated |
5 | from rest_framework.decorators import action | 5 | from rest_framework.decorators import action |
6 | -from datetime import datetime | ||
7 | 6 | ||
8 | from .models import Edicto, Precio | 7 | from .models import Edicto, Precio |
9 | from .serializer import EdictoSerializer, PrecioSerializer | 8 | from .serializer import EdictoSerializer, PrecioSerializer |
10 | from .filters import EdictoFilter, PrecioFilter | 9 | from .filters import EdictoFilter, PrecioFilter |
11 | from .permissions import IsAdminOrAuthorized | 10 | from .permissions import IsAdminOrAuthorized |
12 | -from .utils import contador | ||
13 | 11 | ||
14 | 12 | ||
15 | class EdictoViewSet(mixins.CreateModelMixin, | 13 | class EdictoViewSet(mixins.CreateModelMixin, |
@@ -27,32 +25,6 @@ class EdictoViewSet(mixins.CreateModelMixin, | @@ -27,32 +25,6 @@ class EdictoViewSet(mixins.CreateModelMixin, | ||
27 | ordering = ('fecha_publicacion',) | 25 | ordering = ('fecha_publicacion',) |
28 | lookup_field = 'uuid' | 26 | lookup_field = 'uuid' |
29 | 27 | ||
30 | - def perform_create(self, serializer): | ||
31 | - edicto = self.request.data.get('cuerpo_edicto') | ||
32 | - cantidad_palabras = contador(edicto) | ||
33 | - usuario = self.request.user | ||
34 | - serializer.save(cantidad_palabras=cantidad_palabras, | ||
35 | - usuario=usuario, | ||
36 | - usuario_movimiento=usuario, | ||
37 | - ) | ||
38 | - | ||
39 | - @action(detail=True, methods=['put']) | ||
40 | - def custom_update(self, request): | ||
41 | - instance = self.get_object() | ||
42 | - serializer = self.get_serializer(instance, data=request.data) | ||
43 | - serializer.is_valid(raise_exception=True) | ||
44 | - | ||
45 | - edicto = request.data.get('cuerpo_edicto') | ||
46 | - cantidad_palabras = contador(edicto) | ||
47 | - usuario = self.request.user | ||
48 | - | ||
49 | - serializer.save(cantidad_palabras=cantidad_palabras, | ||
50 | - fecha_actualizacion=datetime.now(), | ||
51 | - usuario_movimiento=usuario, | ||
52 | - ) | ||
53 | - | ||
54 | - return Response(serializer.data, status=status.HTTP_200_OK) | ||
55 | - | ||
56 | 28 | ||
57 | class PrecioViewSet(viewsets.ReadOnlyModelViewSet): | 29 | class PrecioViewSet(viewsets.ReadOnlyModelViewSet): |
58 | serializer_class = PrecioSerializer | 30 | serializer_class = PrecioSerializer |
@@ -61,4 +33,4 @@ class PrecioViewSet(viewsets.ReadOnlyModelViewSet): | @@ -61,4 +33,4 @@ class PrecioViewSet(viewsets.ReadOnlyModelViewSet): | ||
61 | filterset_class = PrecioFilter | 33 | filterset_class = PrecioFilter |
62 | ordering_fields = ('usuario', ) | 34 | ordering_fields = ('usuario', ) |
63 | ordering = 'usuario' | 35 | ordering = 'usuario' |
64 | - queryset = Precio.objects.all() | 36 | + queryset = Precio.objects.all() |
@@ -7,7 +7,7 @@ from edicto.models import Edicto, Precio | @@ -7,7 +7,7 @@ from edicto.models import Edicto, Precio | ||
7 | class EdictoFilter(filters.FilterSet): | 7 | class EdictoFilter(filters.FilterSet): |
8 | class Meta: | 8 | class Meta: |
9 | model = Edicto | 9 | model = Edicto |
10 | - fields = {'usuario': ['exact'], | 10 | + fields = {'creado_por': ['exact'], |
11 | 'estado': ['exact'], | 11 | 'estado': ['exact'], |
12 | 'uuid': ['exact'], | 12 | 'uuid': ['exact'], |
13 | } | 13 | } |
1 | +# Generated by Django 4.1.9 on 2023-09-19 12:40 | ||
2 | + | ||
3 | +from django.db import migrations | ||
4 | + | ||
5 | + | ||
6 | +class Migration(migrations.Migration): | ||
7 | + | ||
8 | + dependencies = [ | ||
9 | + ('edicto', '0015_edicto_usuario_movi'), | ||
10 | + ] | ||
11 | + | ||
12 | + operations = [ | ||
13 | + migrations.RenameField( | ||
14 | + model_name='edicto', | ||
15 | + old_name='usuario', | ||
16 | + new_name='creado_por', | ||
17 | + ), | ||
18 | + migrations.RenameField( | ||
19 | + model_name='edicto', | ||
20 | + old_name='usuario_movimiento', | ||
21 | + new_name='modificado_por', | ||
22 | + ), | ||
23 | + ] |
@@ -26,7 +26,7 @@ class Precio (models.Model): | @@ -26,7 +26,7 @@ class Precio (models.Model): | ||
26 | 26 | ||
27 | class Edicto(models.Model): | 27 | class Edicto(models.Model): |
28 | uuid = models.UUIDField(unique=True, editable=False, default=uuid4) | 28 | uuid = models.UUIDField(unique=True, editable=False, default=uuid4) |
29 | - usuario = models.ForeignKey(Usuario, on_delete=models.CASCADE, verbose_name='Usuario') | 29 | + creado_por = models.ForeignKey(Usuario, on_delete=models.CASCADE, verbose_name='Usuario') |
30 | cuerpo_edicto = models.TextField(blank=False, null=False) | 30 | cuerpo_edicto = models.TextField(blank=False, null=False) |
31 | archivo = models.FileField(upload_to="uploads/%Y/%m/%d/", null=False, blank=False) | 31 | archivo = models.FileField(upload_to="uploads/%Y/%m/%d/", null=False, blank=False) |
32 | dias_publicar = models.PositiveIntegerField(blank=False, null=False) | 32 | dias_publicar = models.PositiveIntegerField(blank=False, null=False) |
@@ -38,7 +38,7 @@ class Edicto(models.Model): | @@ -38,7 +38,7 @@ class Edicto(models.Model): | ||
38 | observaciones = models.CharField(max_length=500, blank=True, null=True) | 38 | observaciones = models.CharField(max_length=500, blank=True, null=True) |
39 | fecha_creacion = models.DateField(auto_now_add=True) | 39 | fecha_creacion = models.DateField(auto_now_add=True) |
40 | fecha_modificacion = models.DateTimeField(auto_now_add=True) | 40 | fecha_modificacion = models.DateTimeField(auto_now_add=True) |
41 | - usuario_movimiento = models.ForeignKey(Usuario, on_delete=models.CASCADE, related_name='udate_edicto') | 41 | + modificado_por = models.ForeignKey(Usuario, on_delete=models.CASCADE, related_name='udate_edicto') |
42 | 42 | ||
43 | class Meta: | 43 | class Meta: |
44 | verbose_name = 'Edicto' | 44 | verbose_name = 'Edicto' |
@@ -5,19 +5,19 @@ from .constants import EXTENSIONES_VALIDAS | @@ -5,19 +5,19 @@ from .constants import EXTENSIONES_VALIDAS | ||
5 | 5 | ||
6 | from .models import Edicto, Precio | 6 | from .models import Edicto, Precio |
7 | from usuario.serializers import UsuarioListaSerializer | 7 | from usuario.serializers import UsuarioListaSerializer |
8 | +from .utils import contador | ||
8 | 9 | ||
9 | 10 | ||
10 | class EdictoSerializer(serializers.ModelSerializer): | 11 | class EdictoSerializer(serializers.ModelSerializer): |
11 | included_serializers = { | 12 | included_serializers = { |
12 | - 'usuario': UsuarioListaSerializer, | ||
13 | - 'usuario_movimiento': UsuarioListaSerializer, | 13 | + 'creado_por': UsuarioListaSerializer, |
14 | + 'modificado_por': UsuarioListaSerializer, | ||
14 | } | 15 | } |
15 | 16 | ||
16 | class Meta: | 17 | class Meta: |
17 | model = Edicto | 18 | model = Edicto |
18 | - fields = ('uuid', | ||
19 | - 'usuario', | ||
20 | - 'usuario_movimiento', | 19 | + fields = ('creado_por', |
20 | + 'modificado_por', | ||
21 | 'estado', | 21 | 'estado', |
22 | 'cuerpo_edicto', | 22 | 'cuerpo_edicto', |
23 | 'cantidad_palabras', | 23 | 'cantidad_palabras', |
@@ -28,19 +28,24 @@ class EdictoSerializer(serializers.ModelSerializer): | @@ -28,19 +28,24 @@ class EdictoSerializer(serializers.ModelSerializer): | ||
28 | 'fecha_creacion', | 28 | 'fecha_creacion', |
29 | 'observaciones', | 29 | 'observaciones', |
30 | 'fecha_publicacion', | 30 | 'fecha_publicacion', |
31 | + 'fecha_modificacion' | ||
31 | 32 | ||
32 | ) | 33 | ) |
33 | 34 | ||
34 | - read_only_fields = ('usuario', 'usuario_movimiento', | 35 | + read_only_fields = ('creado_por', 'modificado_por', |
35 | 'fecha_publicacion', 'cantidad_palabras', | 36 | 'fecha_publicacion', 'cantidad_palabras', |
36 | 'fecha_creacion', | 37 | 'fecha_creacion', |
38 | + 'fecha_modificacion', | ||
37 | ) | 39 | ) |
38 | 40 | ||
39 | - def to_representation(self, instance): | ||
40 | - data = super().to_representation(instance) | ||
41 | - user = self.context['request'].user | ||
42 | - if not user.is_staff: | ||
43 | - data['fecha_publicacion'] = instance.fecha_publicacion | 41 | + def validate(self, data): |
42 | + edicto = data.get('cuerpo_edicto', '') | ||
43 | + cantidad_palabras = contador(edicto) | ||
44 | + data['cantidad_palabras'] = cantidad_palabras | ||
45 | + request = self.context['request'] | ||
46 | + if request.method == 'POST': | ||
47 | + data['creado_por'] = request.user | ||
48 | + data['modificado_por'] = request.user | ||
44 | return data | 49 | return data |
45 | 50 | ||
46 | @staticmethod | 51 | @staticmethod |
@@ -65,4 +70,4 @@ class PrecioSerializer(serializers.ModelSerializer): | @@ -65,4 +70,4 @@ class PrecioSerializer(serializers.ModelSerializer): | ||
65 | 70 | ||
66 | included_serializers = { | 71 | included_serializers = { |
67 | 'usuario': UsuarioListaSerializer | 72 | 'usuario': UsuarioListaSerializer |
68 | - } | ||
73 | + } |
-
Please register or login to post a comment