
    Fi                         d Z ddlmZ ddlZddlZddlZ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mZ dd	lmZ dd
lmZ ddlZ ej.                  e      Z ej4                  d      ZddZd Zd Zy)z
Based on "TinyMCE Compressor PHP" from MoxieCode.

http://tinymce.moxiecode.com/

Copyright (c) 2008 Jason Davies
Licensed under the terms of the MIT License (see LICENSE.txt)
    )datetimeN)finders)cache)HttpResponse)render_to_string)patch_response_headerspatch_vary_headers)	http_date)compress_stringz^[a-zA-Z][a-zA-Z0-9_/-]*$c                    t        j                  t        j                  j	                  d|  d            }|s6t        j                  t        j                  j	                  d|  d            }	 t        |      5 }|j                         cd d d        S # 1 sw Y   y xY w# t        t        f$ r t        j                  d| d|         Y yw xY w)Ntinymcez.jsz.min.jszCouldn't load file: z for  )r   findospathjoinopenreadIOError	TypeErrorloggererror)filenamesource	file_pathfhs       I/var/www/apihucms/venv/lib/python3.12/site-packages/tinymce/compressor.pyget_file_contentsr      s    RWW\\)z5EFGILLiH:W9M!NO	)_ 	779	 	 	Y +I;eH:FGs0   0B! ;B	B! BB! B! !*CCc                 2    | dk(  rg S | j                  d      S )Nr   ,)split)strs    r   split_commasr#   ,   s    
by	99S>    c           
      j   t        | j                  j                  dd            }t        | j                  j                  dd            }d|v r|j                  d       t        | j                  j                  dd            }t        | j                  j                  dd            }| j                  j                  dd      dk(  }| j                  j                  d	d      dk(  }| j                  j                  d
d      dk(  }g }t	               }	d|	d<   t
        j                  j                         }
|
d |
j                  d       }|s|	j                  t        dd|i             |	S t        |	dg       t        j                         }|j                  d      |	d<   dj                  ||z   |z         }t!        j                  |      }|xd|v r8| j"                  j                  d      }||d   k(  rd|	_        d|	_        d|	d<   |	S d|v r8| j"                  j                  d      }||d   k(  rd|	_        d|	_        d|	d<   |	S |dd}|j)                  dt+        j,                  |       d       dg}|D ]  }|j)                  d|         |D ]5  }|j)                  d | d!       |D ]  }|j)                  d | d"|         7 |D ]5  }|j)                  d#| d$       |D ]  }|j)                  d#| d"|         7 |D ]4  }t.        j1                  |      s|j)                  t3        ||%             6 |j)                  d&j5                  d'j                  |            d(z          |rSt7        d)j                  |D cg c]  }|j9                  d*       c}            }d+|	d,<   t;        t=        |            |	d<   |	j                  |       d-}t?        |	|       |	jA                  d      stC               |	d<   t!        jD                  ||	d   |	j                  dd      d.       |	S c c}w )/Npluginsr   	languagesenthemesfilessrctruejscompressztext/javascriptzContent-Type/ztinymce/tiny_mce_gzip.jsbase_urlzAccept-Encodingz%a, %d %b %Y %H:%M:%S GMTDate|ETagHTTP_IF_NONE_MATCHi0  0zContent-LengthLast-ModifiedHTTP_IF_MODIFIED_SINCE)basesuffixzvar tinyMCEPreInit=;r   zlangs/zplugins/z/pluginz/langs/zthemes/z/theme)r   ztinymce.each("{}".split(",")r    zL, function(f){tinymce.ScriptLoader.markDone(tinyMCE.baseURL+"/"+f+".js");});r$   zutf-8gzipzContent-Encodingi / )r6   r3   )#r#   GETgetremover   r   settings
get_js_urlrfindwriter   r	   r   utcnowstrftimer   r   METAstatus_codecontentappendjsondumpssafe_filename_rematchr   formatr   encoder"   lenr   
has_headerr
   set)requestr&   r'   r)   r*   r   isJSr.   rG   responsejs_urljs_base_urlnowcacheKey	cacheDataif_none_matchif_modified_sincetinyMCEPreInitlangpluginthemefctimeouts                           r   gzip_compressorrc   2   s*   7;;??9b9:GW[[__["=>Iy'++//(B78F"56E[[__UB'61F;;??4$.D{{z62f<HG~H0H^((*F,6<<,-K'(BZQ\D]^_x"3!45
//
C||$?@HVxx)+f45H		(#IY#LL,,-ABM	& 11'*$#% -0)*i' ' 0 01I J Io$>>'*$#% -0)* N NN(N)C(DAFG KE  &vdV_%&  ;xxw/0 	;DLL8F874&9:	;;  9wugV,- 	9DLL75'78	99  <%%a((6:;	< NN&--chhuo>
X	Y !#((w+O!AHHW,=+O"PQ'-#$%(W%6!"NN7G8W-/$-K!	II"?3X\\&RT=UV O ,Ps   P0)F)__doc__r   rI   loggingr   redjango.contrib.staticfilesr   django.core.cacher   django.httpr   django.template.loaderr   django.utils.cacher   r	   django.utils.httpr
   django.utils.textr   tinymce.settingsr   	getLogger__name__r   compilerK   r   r#   rc    r$   r   <module>rs      sg       	 	 . # $ 3 I ' - 			8	$2::9: 
dr$   