[pyar] Validator Django Rest
Alan Rizzo
alan.rizzo en gmail.com
Jue Jun 22 18:10:59 ART 2017
Si pasa que estoy implementando con django 1.10
El 22 jun. 2017 17:51, "Gonzalo" <gonchi.sanchez en gmail.com> escribió:
> 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
>
> _______________________________________________
> 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/6e1e0fde/attachment-0001.html>
Más información sobre la lista de distribución pyar