[pyar] Validator Django Rest

Antonio Storni anto987 en gmail.com
Jue Jun 22 17:49:33 ART 2017


Buenas,

Si lo queres validar es el campo "resume", deberías usar el
FileExtensionValidator directamente en el modelo.

    resume =
models.FileField(validators=[FileExtensionValidator(allowed_extensions=['pdf'])],
....

Mirá https://docs.djangoproject.com/en/1.11/ref/validators/

Saludos
Antonio

On Thu, Jun 22, 2017 at 4:58 PM, Alan Rizzo <alan.rizzo en gmail.com> wrote:

> Buenas estoy tratando de generar un validador para permitir solo cierto
> tipo de extensiones de archivo. El tema es que cuando corro el servidor, no
> esta ni siequiera entrando al validador.
> Alguna idea para ver que puede estar pasando?
>
> restricted_file.py
>
>
> import os
> from django.utils.deconstruct import deconstructible
> from django.core.exceptions import ValidationError
> from django.utils.translation import ugettext_lazy as _
>
>
> @deconstructible
> class FileExtensionValidator(object):
>     message = _(
>         "File extension '%(extension)s' is not allowed. "
>         "Allowed extensions are: '%(allowed_extensions)s'."
>     )
>     code = 'invalid_extension'
>
>     def __init__(self, allowed_extensions=None, message=None, code=None):
>         self.allowed_extensions = allowed_extensions
>         if message is not None:
>             self.message = message
>         if code is not None:
>             self.code = code
>
>     def __call__(self, value):
>         extension = os.path.splitext(value.name)[1][1:].lower()
>         if self.allowed_extensions is not None and extension not in self.allowed_extensions:
>             raise ValidationError(
>                 self.message,
>                 code=self.code,
>                 params={
>                     'extension': extension,
>                     'allowed_extensions': ', '.join(self.allowed_extensions)
>                 }
>             )
>
>     def __eq__(self, other):
>         return (
>             isinstance(other, self.__class__) and
>             self.allowed_extensions == other.allowed_extensions and
>             self.message == other.message and
>             self.code == other.code
>         )
>
>
> candidate.py
>
> from django.db import models
> from contacts.models import contact_model
> from .restricted_file import FileExtensionValidator
>
>
> class CandidateContact(contact_model.BaseContact):
>     """
>     Contains candidate information such as Contact,Email, Linkedin,
>     Portfolio plus resume(Attachment).
>     """
>
>     location = models.CharField(max_length=40, blank=True)
>     linkedin_link = models.URLField(blank=True)
>     portfolio_link = models.URLField(blank=True)
>     content_type = FileExtensionValidator(allowed_extensions=['pdf'])
>     resume = models.FileField(validators=[content_type],
>                               upload_to="docs/%d-%m-%Y", blank=True, null=True)
>
>
>
> _______________________________________________
> Lista de Correo de PyAr - Python Argentina - pyar en python.org.ar
> Sitio web: http://www.python.org.ar/
>
> Para administrar la lista (o desuscribirse) entrar a
> http://listas.python.org.ar/listinfo/pyar
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20170622/fef7c110/attachment-0001.html>


Más información sobre la lista de distribución pyar