Enzo Yair

se agrego include

... ... @@ -17,19 +17,41 @@ class EdictoViewSet(mixins.CreateModelMixin,
mixins.ListModelMixin,
viewsets.GenericViewSet):
queryset = Edicto.objects.all().order_by('id')
serializer_class = EdictoSerializer
permission_classes = [IsAuthenticated, ]
def get_queryset(self):
return Edicto.objects.all().order_by('usuario_id')
def list(self, request, *args, **kwargs):
fields_to_select = [
'id',
'estado',
'cuerpo_edicto',
'cantidad_palabras',
'dias_publicar',
'cantidad_sellos',
'cantidad_copias',
'archivo',
'fecha_creacion',
'observaciones',
'fecha_publicacion',
]
queryset = self.filter_queryset(self.get_queryset().values(*fields_to_select))
user_id = request.user.id
response_data = {
'user_id': user_id,
'edictos': queryset,
}
return Response(response_data)
def perform_create(self, serializer):
edicto = self.request.data.get('cuerpo_edicto')
cantidad_palabras = contador(edicto)
serializer.save(cantidad_palabras=cantidad_palabras, usuario=self.request.user)
def custom_get_method(self, request):
instance = self.get_object()
@action(detail=True, methods=['put', 'patch'])
@action(detail=True, methods=['patch'])
def custom_update(self, request):
edicto = request.data.get('cuerpo_edicto')
cantidad_palabras = contador(edicto)
... ... @@ -39,11 +61,7 @@ class EdictoViewSet(mixins.CreateModelMixin,
serializer.is_valid(raise_exception=True)
serializer.save(cantidad_palabras=cantidad_palabras, fecha_actualizacion=datetime.now())
return Response(serializer.data, status=status.HTTP_200_OK
return Response(serializer.data, status=status.HTTP_200_OK)
class PrecioViewSet(mixins.CreateModelMixin,
... ...
from django_filters import rest_framework as filters
from edicto.models import Edicto
class EdictoFilters(filters.FilterSet):
models = Edicto
fields = ('estado', 'fecha_publicacion',)
... ...
... ... @@ -7,15 +7,13 @@ from usuario.serializers import UsuarioSerializer
class EdictoSerializer(serializers.ModelSerializer):
edicto_id = serializers.ReadOnlyField(source='id')
class Meta:
model = Edicto
fields = ('edicto_id',
'fecha_publicacion',
'cuerpo_edicto',
'estado',
'cuerpo_edicto',
'cantidad_palabras',
'dias_publicar',
'cantidad_sellos',
... ... @@ -24,18 +22,18 @@ class EdictoSerializer(serializers.ModelSerializer):
'fecha_creacion',
'observaciones',
)
read_only_fields = ('cantidad_palabras', 'fecha_creacion')
included_serializers = {
'usuario': 'usuario.serializers.UsuarioSerializer',
}
read_only_fields = ('fecha_publicacion', 'cantidad_palabras', 'fecha_creacion')
def to_representation(self, instance):
data = super().to_representation(instance)
user = self.context['request'].user
if self.context['view'].include_fecha_publicacion():
if not user.is_staff:
data['fecha_publicacion'] = instance.fecha_publicacion
if user.is_staff:
data['user_id'] = user.id
return data
@staticmethod
... ... @@ -46,6 +44,7 @@ class EdictoSerializer(serializers.ModelSerializer):
return value
class PrecioSerializer(serializers.ModelSerializer):
usuario = UsuarioSerializer()
... ...
... ... @@ -2,11 +2,9 @@ import re
def contador(edicto):
numeros = re.findall(r'\b\d+(?:\.\d+)?\b', edicto)
expresiones = re.findall(r'\(\.\.\.', edicto)
texto = edicto.split()
cantidad_palabras = len(texto)
cantidad_numeros = len(numeros) - 1
cantidad_expresiones = len(expresiones)
total_edicto = cantidad_palabras + cantidad_numeros + cantidad_expresiones
total_edicto = cantidad_palabras + cantidad_expresiones
return total_edicto
... ...
... ... @@ -2,12 +2,14 @@ from rest_framework import routers
from organismo import api as organismo_api
from usuario import api as usuario_api
from edicto.api import EdictoViewSet
from edicto import api as edicto_api
# Define routes
router = routers.DefaultRouter()
router.register(prefix='usuario', viewset=usuario_api.UsuarioViewSet)
router.register(prefix='organismo', viewset=organismo_api.OrganismoViewSet)
router.register(prefix='edicto', viewset=edicto_api.EdictoViewSet)
router.register(r'edicto', EdictoViewSet, basename='edicto')
router.register(prefix='precio', viewset=edicto_api.PrecioViewSet)
... ...