a
    Dg                     @   s   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 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mZmZ d dlmZ ddlm Z  G dd deeZ!G dd de!Z"G dd de!Z#dS )    )messages)unquote)PermissionDenied)transaction)Http404)get_object_or_404redirect)reverse)gettext)gettext_lazy)TemplateView)SingleObjectMixin)CopyPageForTranslationAction)DraftStateMixinPageTranslatableMixin)!get_snippet_model_from_url_params   )SubmitTranslationFormc                       s^   e Zd ZdZedZdd Zdd Zdd Zdd
dZ	 fddZ
dd Z fddZ  ZS )SubmitTranslationViewz0simple_translation/admin/submit_translation.htmlZ	Translatec                 C   s   | j S N)titleself r   g/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/wagtail/contrib/simple_translation/views.py	get_title   s    zSubmitTranslationView.get_titlec                 C   s
   t | jS r   )strobjectr   r   r   r   get_subtitle   s    z"SubmitTranslationView.get_subtitlec                 C   s&   | j jdkrt| j| j jS t| jS )NPOST)requestmethodr   r   r    r   r   r   r   get_form   s    zSubmitTranslationView.get_formNc                 C   s   t d S r   )NotImplementedError)r   Ztranslated_objectr   r   r   get_success_url#   s    z%SubmitTranslationView.get_success_urlc                    s(   t  jf i |}|d|  i |S )Nform)superget_context_dataupdater#   )r   kwargscontext	__class__r   r   r(   &   s    z&SubmitTranslationView.get_context_datac                 K   s.  |   }| r|jd }|j}t  |jd D ]@}t| jtrft	| j|||d}|j
dd q6| j|  q6d }t|jd dkr|jd d  }	| j|jd d }ntdd	t|jd i }	t| j| |	 t| |W  d    S 1 s
0    Y  | jf i |}
| |
S )
Ninclude_subtreelocales)pagelocaler.   userT)Zskip_permission_checksr   r   z%(locales_count)s localesZlocales_count)r#   Zis_validZcleaned_datar2   r   Zatomic
isinstancer   r   r   executeZcopy_for_translationsavelenZget_display_nameZget_translation_r   successr!   get_success_messager   r%   r(   Zrender_to_response)r   r!   r*   r&   r.   r2   r1   actionZsingle_translated_objectr/   r+   r   r   r   post/   s<    



.zSubmitTranslationView.postc                    s6   |j dgst|  | _t j|g|R i |S )Nz%simple_translation.submit_translation)r2   Z	has_permsr   
get_objectr   r'   dispatch)r   r!   argsr*   r,   r   r   r=   Y   s    
zSubmitTranslationView.dispatch)N)__name__
__module____qualname__Ztemplate_namer   r   r   r   r#   r%   r(   r;   r=   __classcell__r   r   r,   r   r      s   
	*r   c                   @   s6   e Zd ZedZdd Zdd ZdddZd	d
 ZdS )SubmitPageTranslationViewzTranslate pagec                 C   s
   | j  S r   )r   get_admin_display_titler   r   r   r   r   d   s    z&SubmitPageTranslationView.get_subtitlec                 C   s$   t t| jd dj}| r t|S )NZpage_id)id)r   r   r*   ZspecificZis_rootr   )r   r0   r   r   r   r<   g   s    z$SubmitPageTranslationView.get_objectNc                 C   s,   |rt d|jgdS t d|   jgdS )Nzwagtailadmin_pages:editr>   Zwagtailadmin_explore)r	   rE   r<   Z
get_parent)r   Ztranslated_pager   r   r   r%   p   s    z)SubmitPageTranslationView.get_success_urlc                 C   s   t d| j |d S )NzAThe page '%(page_title)s' was successfully created in %(locales)s)Z
page_titler/   )r7   r   rD   r   r/   r   r   r   r9   x   s
    z-SubmitPageTranslationView.get_success_message)N)	r?   r@   rA   r   r   r   r<   r%   r9   r   r   r   r   rC   a   s
   	
rC   c                   @   s.   e Zd Zdd Zdd Zd
ddZdd	 ZdS )SubmitSnippetTranslationViewc                 C   s   t dd| jjji S )NzTranslate %(model_name)s
model_name)r7   r   _metaverbose_namer   r   r   r   r      s    
z&SubmitSnippetTranslationView.get_titlec                 C   sT   t | jd | jd }t|ts$tt|tt| jd d}t|t	rP|
 }|S )NZ	app_labelrI   pk)rL   )r   r*   
issubclassr   r   r   r   r   r3   r   Zget_latest_revision_as_object)r   modelr   r   r   r   r<      s    

z'SubmitSnippetTranslationView.get_objectNc                 C   s,   | j d }|r|j}t| jjd|gdS )NrL   ZeditrF   )r*   rL   r	   r   Zsnippet_viewsetZget_url_name)r   Ztranslated_snippetrL   r   r   r   r%      s    
z,SubmitSnippetTranslationView.get_success_urlc                 C   s    t d| jjjt| j|d S )Nz@Successfully created %(locales)s for %(model_name)s '%(object)s')rI   r   r/   )r7   r   rJ   rK   r   rG   r   r   r   r9      s
    z0SubmitSnippetTranslationView.get_success_message)N)r?   r@   rA   r   r<   r%   r9   r   r   r   r   rH   ~   s   

rH   N)$Zdjango.contribr   Zdjango.contrib.admin.utilsr   Zdjango.core.exceptionsr   Z	django.dbr   Zdjango.httpr   Zdjango.shortcutsr   r   Zdjango.urlsr	   Zdjango.utils.translationr
   r7   r   Zdjango.views.genericr   Zdjango.views.generic.detailr   Z$wagtail.actions.copy_for_translationr   Zwagtail.modelsr   r   r   Zwagtail.snippets.views.snippetsr   Zformsr   r   rC   rH   r   r   r   r   <module>   s"   M