forms.py 1.04 KB
import re

from django import forms
from django.core.exceptions import ValidationError
from django.utils.translation import gettext_lazy as _

from .models import Evento


class EventoForms(forms.ModelForm):
    class Meta:
        model = Evento
        fields = (
            'titulo',
            'categoria',
            'fecha_inicio',
            'hora_inicio',
            'hora_fin',
            'fechas',
            'descripcion',
            'direccion',
            'url',
            'organismo',
            'dependencia',
            'imagen',
        )

    def clean_direccion(self):
        clean = super().clean()
        direccion = clean.get('direccion')

        maps_regex = re.compile(
            r'^(https?://)?(www\.)?(google\.com/maps|goo\.gl|maps\.app\.goo\.gl)/\S+$',
            re.IGNORECASE
        )
        if direccion:
            if not maps_regex.match(direccion):
                raise ValidationError(
                    _('La dirección no es un enlace válido de Google Maps.')
                )

        return direccion