o
    š¨Êh  ã                   @   s  d Z ddlmZ ddlZddlZddlmZ zddlmZ W n e	y-   ddl
mZ Y nw 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 z
ddlmZmZ W n	 e	yg   Y nw g d¢Zejdd� e e¡Zdd„ Zedd„ ƒZ edd„ ƒZ!edd„ ƒZ"dS )z
django-tinymce4-lite views
é    )Úabsolute_importN)ÚVERSION)Úreverse)ÚJsonResponseÚHttpResponse)Úrender_to_string)Ú
strip_tags)Úsettings)Únever_cache)Újsmin)ÚcheckerÚlist_languages)Úspell_checkÚspell_check_callbackÚcssÚfilebrowserz5[%(asctime)s] %(module)s: %(levelname)s - %(message)s)Úformatc                    s  t  | j d¡¡}d|d i}d}d}z7|d d tƒ vr*d |d d ¡}t|ƒ‚t |d d ¡‰ ˆ  	t
|d d ƒ¡ ‡ fd	d
„ˆ D ƒ|d< W n, tyZ   d}t |¡ Y n tyg   t |¡ Y n tyv   d}t |¡ Y nw |dur�||d< d}t||d�S )a�  
    Implements the TinyMCE 4 spellchecker protocol

    :param request: Django http request with JSON-RPC payload from TinyMCE 4
        containing a language code and a text to check for errors.
    :type request: django.http.request.HttpRequest
    :return: Django http response containing JSON-RPC payload
        with spellcheck results for TinyMCE 4
    :rtype: django.http.JsonResponse
    zutf-8ÚidNéÈ   ÚparamsÚlangzMissing {0} dictionary!Útextc                    s   i | ]}ˆ j ˆ  ¡ “qS © )ÚwordÚsuggest)Ú.0Úerr©Úspell_checkerr   ú?/var/www/html/env/lib/python3.10/site-packages/tinymce/views.pyÚ
<dictcomp>5   s    ÿzspell_check.<locals>.<dictcomp>Úresultz'The pyenchant package is not installed!zUnknown error!Úerroriô  )Ústatus)ÚjsonÚloadsÚbodyÚdecoder   r   ÚLookupErrorr   ÚSpellCheckerÚset_textr   Ú	NameErrorÚloggerÚ	exceptionÚ	Exceptionr   )ÚrequestÚdataÚoutputr"   r#   r   r   r   r       s4   
ÿþr   c                 C   s   t ttd| d�ƒdd�S )a  
    JavaScript callback for TinyMCE4 spellchecker function

    :param request: Django http request
    :type request: django.http.request.HttpRequest
    :return: Django http response with spellchecker callback JavaScript code
    :rtype: django.http.HttpResponse
    ztinymce/spellcheck-callback.js©r/   ú%application/javascript; charset=utf-8©Úcontent_type)r   r   r   r2   r   r   r   r   E   s   
ÿýr   c                 C   sV   dt jv rd}ntdd… dkrd}nd}tdd… dk}ttd	||d
œ| d�dd�S )a#  
    Custom CSS for TinyMCE 4 widget

    By default it fixes widget's position in Django Admin

    :param request: Django http request
    :type request: django.http.request.HttpRequest
    :return: Django http response with CSS file for TinyMCE 4
    :rtype: django.http.HttpResponse
    Ú	grappellir   Né   )é   é   én   éª   )r7   r   ztinymce/tinymce4.css)Úmargin_leftÚresponsive_admin©Úcontextr/   ztext/css; charset=utf-8r4   )r	   ÚINSTALLED_APPSr   r   r   )r/   r<   r=   r   r   r   r   U   s   
þûúr   c                 C   s<   zt dƒ}W n   t dƒ}Y tttdd|i| d�ƒdd�S )ae  
    JavaScript callback function for `django-filebrowser`_

    :param request: Django http request
    :type request: django.http.request.HttpRequest
    :return: Django http response with filebrowser JavaScript code for for TinyMCE 4
    :rtype: django.http.HttpResponse

    .. _django-filebrowser: https://github.com/sehmaschine/django-filebrowser
    Ú	fb_browsezfilebrowser:fb_browseztinymce/filebrowser.jsÚfb_urlr>   r3   r4   )r   r   r   r   )r/   rB   r   r   r   r   r   s   
þýr   )#Ú__doc__Ú
__future__r   r$   ÚloggingÚdjangor   Údjango.urlsr   ÚImportErrorÚdjango.core.urlresolversÚdjango.httpr   r   Údjango.template.loaderr   Údjango.utils.htmlr   Údjango.confr	   Údjango.views.decorators.cacher
   r   Úenchantr   r   Ú__all__ÚbasicConfigÚ	getLoggerÚ__name__r,   r   r   r   r   r   r   r   r   Ú<module>   s>   ÿÿ
%

