3
(hr                 @   sJ   d dl mZ d dlmZ d dlmZ d dlmZmZ	 G dd dej
ZdS )    )forms)settings)FlatPage)ugettextugettext_lazyc                   sV   e Zd ZejedddeddedidZG dd	 d	Zd
d Z fddZ	  Z
S )FlatpageFormURLd   z^[-\w/\.~]+$zKExample: '/about/contact/'. Make sure to have leading and trailing slashes.invalidz\This value must contain only letters, numbers, dots, underscores, dashes, slashes or tildes.)label
max_lengthregex	help_textZerror_messagesc               @   s   e Zd ZeZdZdS )zFlatpageForm.Meta__all__N)__name__
__module____qualname__r   modelfields r   r   B/tmp/pip-install-q3hcpn_q/Django/django/contrib/flatpages/forms.pyMeta   s   r   c             C   sh   | j d }|jds&tjtdddtjrdtjr<dtjksFdtjkrd|j	d rdtjtddd|S )	Nurl/zURL is missing a leading slash.Zmissing_leading_slash)codez)django.middleware.common.CommonMiddlewarez URL is missing a trailing slash.Zmissing_trailing_slash)
cleaned_data
startswithr   ValidationErrorr   r   ZAPPEND_SLASHZ
MIDDLEWAREZMIDDLEWARE_CLASSESendswith)selfr   r   r   r   	clean_url   s    


zFlatpageForm.clean_urlc                s   | j jd}| j jd}tjj|d}| jjr>|j| jjd}|r|j|dj rx6|D ].}|j|dj rXt	j
tdd||d	d
qXW tt| j S )Nr   sites)r   )pk)Z	sites__in)r!   z:Flatpage with url %(url)s already exists for site %(site)sZduplicate_url)r   site)r   params)r   getr   Zobjectsfilterinstancer"   excludeexistsr   r   _superr   clean)r   r   r!   Zsame_urlr#   )	__class__r   r   r,   *   s    
zFlatpageForm.clean)r   r   r   r   Z
RegexFieldr*   r   r   r    r,   __classcell__r   r   )r-   r   r      s   r   N)Zdjangor   Zdjango.confr   Zdjango.contrib.flatpages.modelsr   Zdjango.utils.translationr   r   r*   Z	ModelFormr   r   r   r   r   <module>   s   