[pyar] Validator Django Rest
Gonzalo
gonchi.sanchez en gmail.com
Jue Jun 22 17:50:36 ART 2017
Hola, que versión de Django utilizás?
Django 1.11 trae un FileExtensionValidator que hace justamente lo que
necesitás:
https://docs.djangoproject.com/en/1.11/ref/validators/#fileextensionvalidator
slds,
2017-06-22 16:58 GMT-03:00 Alan Rizzo <alan.rizzo en gmail.com>:
> 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
>
--
Gonzalo.
#534331
#91296338
#15090H2467
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20170622/b0cda70b/attachment.html>
Más información sobre la lista de distribución pyar