o
    'vgß  ã                   @   sæ   d Z ddlZddlZddlmZ ddlmZ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 z
dd
lmZmZ W n	 eyK   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
é    N)ÚVERSION)ÚreverseÚNoReverseMatch)ÚJsonResponseÚHttpResponse)Úrender_to_string)Ú
strip_tags)Ú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   úD/var/www/html/raya/env/lib/python3.10/site-packages/tinymce/views.pyÚ
<dictcomp>.   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   r1   r   r   r   r   >   s   
ÿýr   c                 C   s0   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
    éª   Né   )r6   r   ztinymce/tinymce4.css)Úmargin_leftÚresponsive_admin©Úcontextr.   ztext/css; charset=utf-8r3   )r   r   r   )r.   r7   r8   r   r   r   r   N   s   þûúr   c                 C   sF   zt dƒ}W n ty   t dƒ}Y nw 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_urlr9   r2   r3   )r   r   r   r
   r   )r.   r<   r   r   r   r   f   s   ÿþýr   )Ú__doc__r#   ÚloggingÚdjangor   Údjango.urlsr   r   Údjango.httpr   r   Údjango.template.loaderr   Údjango.utils.htmlr   Údjango.views.decorators.cacher	   r
   Úenchantr   r   ÚImportErrorÚ__all__ÚbasicConfigÚ	getLoggerÚ__name__r+   r   r   r   r   r   r   r   r   Ú<module>   s2   ÿ
%

