Martín Miranda

Merge branch 'Fix/fecha_modificacion' into 'develop'

Fix/fecha modificacion



See merge request !51
... ... @@ -3,13 +3,11 @@ from django_filters.rest_framework import DjangoFilterBackend
from rest_framework.response import Response
from rest_framework.permissions import IsAuthenticated
from rest_framework.decorators import action
from datetime import datetime
from .models import Edicto, Precio
from .serializer import EdictoSerializer, PrecioSerializer
from .filters import EdictoFilter, PrecioFilter
from .permissions import IsAdminOrAuthorized
from .utils import contador
class EdictoViewSet(mixins.CreateModelMixin,
... ... @@ -27,32 +25,6 @@ class EdictoViewSet(mixins.CreateModelMixin,
ordering = ('fecha_publicacion',)
lookup_field = 'uuid'
def perform_create(self, serializer):
edicto = self.request.data.get('cuerpo_edicto')
cantidad_palabras = contador(edicto)
usuario = self.request.user
serializer.save(cantidad_palabras=cantidad_palabras,
usuario=usuario,
usuario_movimiento=usuario,
)
@action(detail=True, methods=['put'])
def custom_update(self, request):
instance = self.get_object()
serializer = self.get_serializer(instance, data=request.data)
serializer.is_valid(raise_exception=True)
edicto = request.data.get('cuerpo_edicto')
cantidad_palabras = contador(edicto)
usuario = self.request.user
serializer.save(cantidad_palabras=cantidad_palabras,
fecha_actualizacion=datetime.now(),
usuario_movimiento=usuario,
)
return Response(serializer.data, status=status.HTTP_200_OK)
class PrecioViewSet(viewsets.ReadOnlyModelViewSet):
serializer_class = PrecioSerializer
... ...
... ... @@ -7,7 +7,7 @@ from edicto.models import Edicto, Precio
class EdictoFilter(filters.FilterSet):
class Meta:
model = Edicto
fields = {'usuario': ['exact'],
fields = {'creado_por': ['exact'],
'estado': ['exact'],
'uuid': ['exact'],
}
... ...
# Generated by Django 4.1.9 on 2023-09-19 13:23
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('edicto', '0015_edicto_usuario_movi'),
]
operations = [
migrations.RemoveField(
model_name='edicto',
name='usuario',
),
migrations.RemoveField(
model_name='edicto',
name='usuario_movimiento',
),
migrations.AddField(
model_name='edicto',
name='creado_por',
field=models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Usuario'),
preserve_default=False,
),
migrations.AddField(
model_name='edicto',
name='modificado_por',
field=models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, related_name='udate_edicto', to=settings.AUTH_USER_MODEL),
preserve_default=False,
),
]
... ...
# Generated by Django 4.1.9 on 2023-09-19 13:29
from django.db import migrations, models
import uuid
class Migration(migrations.Migration):
dependencies = [
('edicto', '0016_remove_edicto_usuario_and_more'),
]
operations = [
migrations.RemoveField(
model_name='edicto',
name='id',
),
migrations.AlterField(
model_name='edicto',
name='uuid',
field=models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True),
),
]
... ...
# Generated by Django 4.1.9 on 2023-09-19 13:34
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('edicto', '0017_remove_edicto_id_alter_edicto_uuid'),
]
operations = [
migrations.AlterField(
model_name='edicto',
name='fecha_modificacion',
field=models.DateTimeField(auto_now=True),
),
]
... ...
# Generated by Django 4.1.9 on 2023-09-20 13:27
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('edicto', '0018_alter_edicto_fecha_modificacion'),
]
operations = [
migrations.AddField(
model_name='comprobantepago',
name='archivo',
field=models.FileField(blank=True, upload_to='uploads/%Y/%m/%d/'),
),
migrations.AlterField(
model_name='comprobantepago',
name='edicto',
field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='edicto.edicto'),
),
migrations.AlterField(
model_name='comprobantepago',
name='fecha_pago',
field=models.DateTimeField(blank=True, null=True),
),
migrations.AlterField(
model_name='comprobantepago',
name='monto',
field=models.FloatField(editable=False),
),
migrations.AlterField(
model_name='comprobantepago',
name='numero_comprobante',
field=models.CharField(blank=True, max_length=300, null=True),
),
migrations.AlterField(
model_name='edicto',
name='cantidad_palabras',
field=models.IntegerField(editable=False),
),
migrations.AlterField(
model_name='edicto',
name='modificado_por',
field=models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, related_name='update_edicto', to=settings.AUTH_USER_MODEL),
),
migrations.AlterField(
model_name='precio',
name='vigencia_hasta',
field=models.DateField(blank=True, null=True),
),
]
... ...
... ... @@ -11,7 +11,7 @@ from usuario.models import Usuario
class Precio (models.Model):
precio = models.FloatField(max_length=50, blank=False, null=False)
vigencia_desde = models.DateField()
vigencia_hasta = models.DateField()
vigencia_hasta = models.DateField(blank=True, null=True)
usuario = models.ForeignKey(Usuario, on_delete=models.CASCADE)
moneda = models.CharField(max_length=50, blank=False, null=False, choices=MONEDA, default='peso_argentino')
precio_ejemplar = models.FloatField(max_length=50, blank=False, null=False)
... ... @@ -25,34 +25,35 @@ class Precio (models.Model):
class Edicto(models.Model):
uuid = models.UUIDField(unique=True, editable=False, default=uuid4)
usuario = models.ForeignKey(Usuario, on_delete=models.CASCADE, verbose_name='Usuario')
uuid = models.UUIDField(unique=True, editable=False, default=uuid4, primary_key=True)
creado_por = models.ForeignKey(Usuario, on_delete=models.CASCADE, verbose_name='Usuario', editable=False)
cuerpo_edicto = models.TextField(blank=False, null=False)
archivo = models.FileField(upload_to="uploads/%Y/%m/%d/", null=False, blank=False)
dias_publicar = models.PositiveIntegerField(blank=False, null=False)
cantidad_sellos = models.PositiveIntegerField(blank=False, null=False)
estado = models.CharField(max_length=150, choices=STATUS_CHOICE, default='inciado')
cantidad_palabras = models.IntegerField(blank=False, null=False)
cantidad_palabras = models.IntegerField(blank=False, null=False, editable=False)
cantidad_copias = models.PositiveIntegerField(blank=False, null=False)
fecha_publicacion = models.DateField(blank=True, null=True)
observaciones = models.CharField(max_length=500, blank=True, null=True)
fecha_creacion = models.DateField(auto_now_add=True)
fecha_modificacion = models.DateTimeField(auto_now_add=True)
usuario_movimiento = models.ForeignKey(Usuario, on_delete=models.CASCADE, related_name='udate_edicto')
fecha_creacion = models.DateField(auto_now_add=True, editable=False)
fecha_modificacion = models.DateTimeField(auto_now=True, editable=False)
modificado_por = models.ForeignKey(Usuario, on_delete=models.CASCADE, related_name='update_edicto', editable=False)
class Meta:
verbose_name = 'Edicto'
verbose_name_plural = 'Edictos'
def __str__(self):
return self.cuerpo_edicto
return self.creado_por
class ComprobantePago(models.Model):
monto = models.FloatField(blank=False, null=False)
numero_comprobante = models.CharField(max_length=300, blank=False, null=True)
fecha_pago = models.DateTimeField(blank=False, null=True)
edicto = models.ForeignKey(Edicto, on_delete=models.CASCADE)
monto = models.FloatField(blank=False, null=False, editable=False)
numero_comprobante = models.CharField(max_length=300, blank=True, null=True)
fecha_pago = models.DateTimeField(blank=True, null=True)
edicto = models.OneToOneField(Edicto, on_delete=models.CASCADE)
archivo = models.FileField(upload_to="uploads/%Y/%m/%d/", blank=True, null=False)
class Meta:
verbose_name = 'ComprobantePago'
... ...
... ... @@ -5,19 +5,19 @@ from .constants import EXTENSIONES_VALIDAS
from .models import Edicto, Precio
from usuario.serializers import UsuarioListaSerializer
from .utils import contador
class EdictoSerializer(serializers.ModelSerializer):
included_serializers = {
'usuario': UsuarioListaSerializer,
'usuario_movimiento': UsuarioListaSerializer,
'creado_por': UsuarioListaSerializer,
'modificado_por': UsuarioListaSerializer,
}
class Meta:
model = Edicto
fields = ('uuid',
'usuario',
'usuario_movimiento',
fields = ('creado_por',
'modificado_por',
'estado',
'cuerpo_edicto',
'cantidad_palabras',
... ... @@ -28,19 +28,20 @@ class EdictoSerializer(serializers.ModelSerializer):
'fecha_creacion',
'observaciones',
'fecha_publicacion',
'fecha_modificacion'
)
read_only_fields = ('usuario', 'usuario_movimiento',
'fecha_publicacion', 'cantidad_palabras',
'fecha_creacion',
read_only_fields = ('fecha_publicacion',
)
def to_representation(self, instance):
data = super().to_representation(instance)
user = self.context['request'].user
if not user.is_staff:
data['fecha_publicacion'] = instance.fecha_publicacion
def validate(self, data):
edicto = data.get('cuerpo_edicto', '')
data['cantidad_palabras'] = contador(edicto)
request = self.context['request']
if request.method == 'POST':
data['creado_por'] = request.user
data['modificado_por'] = request.user
return data
@staticmethod
... ...