U
    8ÄT_t	  ã                   @   sV   d dl mZ 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)ÚValidationError)ÚgettextÚgettext_lazyc                       sj   e Zd Zejedƒddedƒdedƒid�ZG dd	„ d	ƒZ‡ fd
d„Zdd„ Z	dd„ Z
‡ fdd„Z‡  ZS )ÚFlatpageFormÚURLéd   z^[-\w/\.~]+$uO   Example: â€œ/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-unpacked-wheel-dv63caxw/django/contrib/flatpages/forms.pyÚMeta   s   r   c                    s*   t ƒ j||Ž |  ¡ s&tdƒ| jd _d S )NuA   Example: â€œ/about/contactâ€�. Make sure to have a leading slash.Úurl)ÚsuperÚ__init__Ú_trailing_slash_requiredÚ_r   r   )ÚselfÚargsÚkwargs©Ú	__class__r   r   r      s
    ÿzFlatpageForm.__init__c                 C   s   t jodt jkS )Nz)django.middleware.common.CommonMiddleware)r   ZAPPEND_SLASHZ
MIDDLEWARE)r   r   r   r   r   !   s    þz%FlatpageForm._trailing_slash_requiredc                 C   sJ   | j d }| d¡s$ttdƒdd�‚|  ¡ rF| d¡sFttdƒdd�‚|S )Nr   ú/zURL is missing a leading slash.Zmissing_leading_slash)Úcodez URL is missing a trailing slash.Zmissing_trailing_slash)Úcleaned_dataÚ
startswithr   r   r   Úendswith)r   r   r   r   r   Ú	clean_url'   s    

þþzFlatpageForm.clean_urlc                    sŽ   | j  d¡}| j  d¡}tjj|d�}| jjr>|j| jjd�}|r„|j|d� ¡ r„|D ],}|j|d� ¡ rVt	t
dƒd||d	œd
�‚qVtƒ  ¡ 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   r   Úclean)r   r   r)   Zsame_urlr+   r!   r   r   r2   5   s    ýzFlatpageForm.clean)r   r   r   r   Z
RegexFieldr   r   r   r   r   r(   r2   Ú__classcell__r   r   r!   r   r      s     ÿÿûr   N)Zdjangor   Zdjango.confr   Zdjango.contrib.flatpages.modelsr   Zdjango.core.exceptionsr   Zdjango.utils.translationr   r   r   Z	ModelFormr   r   r   r   r   Ú<module>   s
   