o
    h                      @   sL  d dl Z 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 d dlmZmZmZ 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 d dlmZ d dlmZ d dlm Z! dd Z"G dd deZ#dd Z$dd Z%dd Z&G dd dej'Z(G dd dej'Z)eededed fd!ed"ed#fd$ed%ed&fgd'Z*dS )(    N)forms)settings)modelform_factory)capfirst)gettext)BaseCollectionMemberFormCollectionChoiceField,collection_member_permission_formset_factory)validate_tag_length)AdminTagWidget)WagtailImageField)get_image_formats)Image)permission_policy)
Collection)indexc                 K   s\   | j dkrtddt| ji|S | j dkr&tdtdtj d d|S | j	di |S )Nfilelabel
collectionr   )r   querysetempty_label )
namer   r   verbose_namer   _r   objectsall	formfield)db_fieldkwargsr   r   T/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/wagtail/images/forms.pyformfield_for_dbfield   s   

r!   c                       sD   e Zd ZeZ fddZd
 fdd	ZG dd dZdd	 Z  Z	S )BaseImageFormc                    s    t  j|i | | jj| _d S )N)super__init__instancer   original_file)selfargsr   	__class__r   r    r$   ,   s   zBaseImageForm.__init__Tc                    sj   d| j v r
| j  t j|d |r2d| j v r,| jr,| jj| jj | jj	
   t| j | jS )Nr   )commit)changed_datar%   _set_image_file_metadatar#   saver&   storagedeleter   
renditionsr   search_indexinsert_or_update_object)r'   r+   r)   r   r    r.   0   s   

zBaseImageForm.savec                   @   sR   e Zd Zee ejddidejddidejddidejddiddZdS )	zBaseImageForm.Metaclassfocal_point_xattrsfocal_point_yfocal_point_widthfocal_point_height)tagsr   r5   r8   r9   r:   N)__name__
__module____qualname__r   r   	FileInputHiddenInputwidgetsr   r   r   r    MetaC   s    
rB   c                 C   s   | j d }t| |S )Nr;   )cleaned_datar
   )r'   r;   r   r   r    
clean_tagsT   s   
zBaseImageForm.clean_tags)T)
r<   r=   r>   images_permission_policyr   r$   r.   rB   rD   __classcell__r   r   r)   r    r"   )   s    r"   c                  C   s0   t tdd} | rddlm} || }|S t}|S )NWAGTAILIMAGES_IMAGE_FORM_BASE r   )import_string)getattrr   django.utils.module_loadingrI   r"   )base_form_overriderI   	base_formr   r   r    get_image_base_formZ   s   rN   c                 C   sr   | j }d|vrt|dg }t }d }|jjdtkr0| jdj}|jj	 }t|d|d< t
| |||tdS )Nr   r;   )	tag_model)formfieldsrA   formfield_callback)admin_form_fieldslistrN   _metarA   getr   	get_fieldrelated_modelcopyr   r!   )modelrQ   BaseFormrA   rO   r   r   r    get_image_forme   s    r\   c                    s"   t  G  fddd }|S )Nc                       s"   e Zd ZG fddd jZdS )z+get_image_multi_form.<locals>.ImageEditFormc                       s   e Zd Z ZdZdS )z0get_image_multi_form.<locals>.ImageEditForm.Meta)r   r5   r8   r9   r:   N)r<   r=   r>   rZ   excluder   )model_classr   r    rB      s    rB   N)r<   r=   r>   rB   r   	ImageFormr^   r   r    ImageEditForm   s    ra   )r\   )r^   ra   r   r_   r    get_image_multi_form   s   rb   c                   @   s^   e Zd ZdZejeddd e D ejdZ	ej
deddZejded	dZd
d ZdS )ImageInsertionFormzo
    Form for selecting parameters of the image (e.g. format) prior to insertion
    into a rich text area
    Formatc                 C   s   g | ]}|j |jfqS r   )r   r   ).0formatr   r   r    
<listcomp>   s    zImageInsertionForm.<listcomp>)r   choiceswidgetFzImage is decorative)requiredr   zAlt textc                 C   s8   | j d }| j d }|rdS |std}| d| |S )Nalt_textimage_is_decorativerH   z@Please add some alt text for your image or mark it as decorative)rC   r   	add_error)r'   rk   rl   msgr   r   r    clean_alt_text   s   

z!ImageInsertionForm.clean_alt_textN)r<   r=   r>   __doc__r   ChoiceFieldr   r   RadioSelectrf   BooleanFieldrl   	CharFieldrk   ro   r   r   r   r    rc      s    rc   c                   @   s   e Zd Zejeddedfdedfdedfded	fd
edfdedffdZejeddejdde	
dg didddZejeddejdde	
dg didddZejedddejdde	
ddgidddZdS )URLGeneratorFormFilteroriginalzOriginal sizewidthzResize to widthheightzResize to heightminzResize to minmaxzResize to maxfillzResize to fill)r   rh   Widthr   Tenablefilter_method)rx   r{   rz   r|   )disabledzdata-w-rules-targetzdata-w-rulesr6   )r   	min_valueri   Height)ry   r{   rz   r|   	Closeness)r   r   initialri   N)r<   r=   r>   r   rq   r   r   IntegerFieldNumberInputjsondumpsrx   ry   	closenessr   r   r   r    ru      s\    








ru   	add_imageAddzAdd/edit images you ownchange_imageEditzEdit any imagechoose_imageChoosezSelect images in chooserszAwagtailimages/permissions/includes/image_permissions_formset.html)+r   djangor   django.confr   django.forms.modelsr   django.utils.textr   django.utils.translationr   r   wagtail.admin.forms.collectionsr   r   r	   wagtail.admin.forms.tagsr
   wagtail.admin.widgetsr   wagtail.images.fieldsr   wagtail.images.formatsr   wagtail.images.modelsr   wagtail.images.permissionsr   rE   wagtail.modelsr   wagtail.searchr   r2   r!   r"   rN   r\   rb   Formrc   ru   GroupImagePermissionFormSetr   r   r   r    <module>   s<    1!4