a
    Dg                     @   s  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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 e ZejZ ej!Z"d$ddZ#e#ej$dej%id e#ej&dej'id e#ej(dej)id e#ej*dej+idd e#ej,edd d e#edd d e#ej-dej.id dd Z/G dd deeZ0G dd deeZ1G dd  d eee1d!Z2G d"d# d#Z3dS )%    N)forms)ImproperlyConfigured)models)timezone)gettext)ClusterFormClusterFormMetaclassClusterFormOptions)PermissionedFormPermissionedFormMetaclassPermissionedFormOptionsMixin)TaggableManager)widgets)TagField)Page)ModelFieldRegistryFc                 C   s<   |du rt d|r&| tjkr&t dtj| |||d dS )zo
    Define parameters for form fields to be used by WagtailAdminModelForm for a given
    database field.
    NzJregister_form_field_override must be passed an 'override' keyword argumentzUThe 'to' argument on register_form_field_override is only valid for ForeignKey fields)tovalueexact_class)r   r   
ForeignKeyregistryregister)Zdb_field_classr   overrider    r   Y/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/wagtail/admin/forms/models.pyregister_form_field_override   s    r   widget)r   T)r   r   c                 C   s   dt j| jjgdiS )Nr   )Ztarget_models)r   ZAdminPageChooserZremote_fieldmodeldb_fieldr   r   r   <lambda>J   s    r    )r   r   c                 C   s   t | jdS )N)Z
form_classZ	tag_model)r   Zrelated_modelr   r   r   r   r    S       c                 K   s4   t | }|r$tt|fi |}| jf i |S N)r   getdictcopydeepcopyZ	formfield)r   kwargsZ	overridesr   r   r   formfield_for_dbfield_   s    
r(   c                   @   s   e Zd ZdS )WagtailAdminModelFormOptionsN)__name__
__module____qualname__r   r   r   r   r)   g   s   r)   c                   @   s    e Zd ZeZdZedd ZdS )WagtailAdminModelFormMetaclassr   c                 C   s   t S r"   )WagtailAdminModelForm)clsr   r   r   
child_forms   s    z)WagtailAdminModelFormMetaclass.child_formN)r*   r+   r,   r)   Zoptions_classZextra_form_countclassmethodr0   r   r   r   r   r-   m   s   r-   c                       s*   e Zd Z fddZG dd dZ  ZS )r.   c                    s"   | d| _t j|i | d S )Nfor_user)r#   r2   super__init__)selfargsr'   	__class__r   r   r4   {   s    zWagtailAdminModelForm.__init__c                   @   s   e Zd ZeZdS )zWagtailAdminModelForm.MetaN)r*   r+   r,   r(   Zformfield_callbackr   r   r   r   Meta   s   r9   )r*   r+   r,   r4   r9   __classcell__r   r   r7   r   r.   x   s   r.   )	metaclassc                       s(   e Zd Zedd Z fddZ  ZS )WagtailAdminDraftStateFormMixinc                 C   s   d| j jv S )N
go_live_at)r8   Zbase_fields)r5   r   r   r   show_schedule_publishing_toggle   s    z?WagtailAdminDraftStateFormMixin.show_schedule_publishing_togglec                    s   t    | jd}| jd}|r^|r^||kr^td}| dt| | dt| |r|t	 k r| dttd d| jv r| jd s| jd= | jS )Nr=   	expire_atz1Go live date/time must be before expiry date/timez&Expiry date/time must be in the futureZfirst_published_at)
r3   cleanZcleaned_datar#   _Z	add_errorr   ZValidationErrorr   now)r5   r=   r?   msgr7   r   r   r@      s&    
z%WagtailAdminDraftStateFormMixin.clean)r*   r+   r,   propertyr>   r@   r:   r   r   r7   r   r<      s   
r<   )NNF)4r%   Zdjangor   Zdjango.core.exceptionsr   Z	django.dbr   Zdjango.utilsr   Zdjango.utils.translationr   rA   Zmodelcluster.formsr   r   r	   Zpermissionedformsr
   r   r   Ztaggit.managersr   Zwagtail.adminr   Zwagtail.admin.forms.tagsr   Zwagtail.modelsr   Zwagtail.utils.registryr   r   Zvalues_by_classZFORM_FIELD_OVERRIDESZvalues_by_exact_classZDIRECT_FORM_FIELD_OVERRIDESr   Z	DateFieldZAdminDateInputZ	TimeFieldZAdminTimeInputZDateTimeFieldZAdminDateTimeInputZ	TextFieldZAdminAutoHeightTextInputr   Z	SlugFieldZ	SlugInputr(   r)   r-   r.   r<   r   r   r   r   <module>   sf    
	
