[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