o
    &zha                     @   sh   d dl Z d dlmZ d dlmZ d dlmZ e eZ	G dd dZ
G dd de
ZG d	d
 d
eZdS )    N)abstractmethod)StringIO)pisac                   @   s6   e Zd ZdddZdd Zedd Zed	d
 ZdS )FilterreturnNc                 C   s
   || _ d S N)app)selfr    r
   I/var/www/html/kangema/venv/lib/python3.10/site-packages/xhtml2pdf/wsgi.py__init__   s   
zFilter.__init__c              	      s   | dd}| dd}g t d fdd	} ||}s%|S \}}}	z|D ]}
|
 q-W t|dr?|  nt|drJ|  w w  } ||||||\}}}|||	 |gS )NSCRIPT_NAME 	PATH_INFOc                    s0     | |s| ||S | ||gd d < jS r   )should_filterwrite)statusheadersexc_infor	   sentstart_responsewritten_responser
   r   replacement_start_response"   s   z3Filter.__call__.<locals>.replacement_start_responsecloser   )getr   r   r   hasattrr   getvaluefilter)r	   environr   script_name	path_infor   app_iterr   r   r   chunkbodyr
   r   r   __call__   s2   




zFilter.__call__c                 C   s   t | d S r   )print)_statusr   r
   r
   r   r   9   s   zFilter.should_filterc                 C   s   t r   )NotImplementedError)r	   r   r   r$   r
   r
   r   r   =   s   zFilter.filter)r   N)	__name__
__module____qualname__r   r%   staticmethodr   r   r   r
   r
   r
   r   r      s    

r   c                   @      e Zd Zedd ZdS )
HTMLFilterc                 C   s:   |  dsdS |D ]\}}| dkr| d  S q	dS )N200Fcontent-typez	text/html)
startswithlower)r   r   namevaluer
   r
   r   r   C   s   
zHTMLFilter.should_filterN)r)   r*   r+   r,   r   r
   r
   r
   r   r.   B       r.   c                   @   r-   )PisaMiddlewarec                 C   sH   | dd}|rt }tj||dd ddd| fg}| }|||fS )Nz
pisa.topdfr   T)show_error_as_pdf)r0   zapplication/pdfzcontent-dispositionzattachment; filename=)r   r   r   	CreatePDFr   )_script_name
_path_infor   r   r   r$   topdfdstr
   r
   r   r   N   s   

zPisaMiddleware.filterN)r)   r*   r+   r,   r   r
   r
   r
   r   r6   M   r5   r6   )loggingabcr   ior   	xhtml2pdfr   	getLoggerr)   logr   r.   r6   r
   r
   r
   r   <module>   s   
*