[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