a
    Dg                      @   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f dt| ji|S | j dkrLtf tdtj d d|S | j	f i |S )Nfilelabel
collectionr   )r   ZquerysetZempty_label)
namer   r   Zverbose_namer   _r   ZobjectsallZ	formfield)Zdb_fieldkwargs r   S/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/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 |rdd| j v rX| jrX| jj| jj | jj	
   t| j | jS )Nr   )commit)Zchanged_datar   Z_set_image_file_metadatar   saver    Zstoragedeleter   Z
renditionsr   search_indexZ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   r*   r-   r.   r/   N)__name__
__module____qualname__r   r   Z	FileInputZHiddenInputwidgetsr   r   r   r   MetaC   s   r5   c                 C   s   | j d }t| |S )Nr0   )cleaned_datar
   )r!   r0   r   r   r   
clean_tagsT   s    
zBaseImageForm.clean_tags)T)
r1   r2   r3   images_permission_policyr   r   r&   r5   r7   __classcell__r   r   r#   r   r   )   s
   r   c                  C   s.   t tdd} | r&ddlm} || }nt}|S )NZWAGTAILIMAGES_IMAGE_FORM_BASE r   )import_string)getattrr   Zdjango.utils.module_loadingr;   r   )Zbase_form_overrider;   Z	base_formr   r   r   get_image_base_formZ   s    
r=   c                 C   sr   | j }d|vrt|dg }t }d }|jjdtkr`| jdj}|jj	 }t|d|d< t
| |||tdS )Nr   r0   )	tag_model)formfieldsr4   Zformfield_callback)Zadmin_form_fieldslistr=   Z_metar4   getr   	get_fieldZrelated_modelcopyr   r   )modelr@   ZBaseFormr4   r>   r   r   r   get_image_forme   s     rF   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   r*   r-   r.   r/   N)r1   r2   r3   rE   excluder   )model_classr   r   r5      s   r5   N)r1   r2   r3   r5   r   Z	ImageFormrH   r   r   ImageEditForm   s   rJ   )rF   )rH   rJ   r   rI   r   get_image_multi_form   s    rK   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
    ZFormatc                 C   s   g | ]}|j |jfqS r   )r   r   ).0formatr   r   r   
<listcomp>       zImageInsertionForm.<listcomp>)r   choiceswidgetFzImage is decorative)requiredr   zAlt textc                 C   s8   | j d }| j d }|rdS |s4td}| d| |S )Nalt_textimage_is_decorativer:   z@Please add some alt text for your image or mark it as decorative)r6   r   Z	add_error)r!   rT   rU   msgr   r   r   clean_alt_text   s    

z!ImageInsertionForm.clean_alt_textN)r1   r2   r3   __doc__r   ChoiceFieldr   r   ZRadioSelectrN   ZBooleanFieldrU   Z	CharFieldrT   rW   r   r   r   r   rL      s   rL   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   rQ   ZWidthr   Tenablefilter_method)r]   r`   r_   ra   )disabledzdata-w-rules-targetzdata-w-rulesr+   )r   	min_valuerR   ZHeight)r^   r`   r_   ra   Z	Closeness)r   re   initialrR   N)r1   r2   r3   r   rY   r   rc   ZIntegerFieldZNumberInputjsondumpsr]   r^   Z	closenessr   r   r   r   rZ      sZ   







rZ   Z	add_imageAddzAdd/edit images you ownZchange_imageZEditzEdit any imageZchoose_imageZChoosezSelect images in chooserszAwagtailimages/permissions/includes/image_permissions_formset.html)+rg   Zdjangor   Zdjango.confr   Zdjango.forms.modelsr   Zdjango.utils.textr   Zdjango.utils.translationr   r   Zwagtail.admin.forms.collectionsr   r   r	   Zwagtail.admin.forms.tagsr
   Zwagtail.admin.widgetsr   Zwagtail.images.fieldsr   Zwagtail.images.formatsr   Zwagtail.images.modelsr   Zwagtail.images.permissionsr   r8   Zwagtail.modelsr   Zwagtail.searchr   r(   r   r   r=   rF   rK   ZFormrL   rZ   ZGroupImagePermissionFormSetr   r   r   r   <module>   s:   1!4