
    fh*!                     ^   d Z ddlZddlZddlmZ ddlmZmZm	Z	m
Z
mZ ddlZ e	j        dd          Ze                     e	j        ddd                     d	 Zd
 Z ej        d          Z ee            e	j        dddd          Z ej        d          Z ee            e	j        dddd          Z ej        d          Z ee           e                     ej        d                      ee            e	j        dddd          Z G d d          ZdS )z Tablib - ODF Support.
    N)BytesIO)numberopendocumentstyletabletextbold	paragraph)namefamily)
fontweightfontweightasianfontweightcomplexc                 d    | j         t          j        d                      | j         t          j        d                      | j         t          j        d                      | j         t          j        d                      | j         t          j        d                     d S )Nlongr   -r   )
addElementr   YearTextMonthDayr   s    J/var/www/histauto/venv/lib/python3.11/site-packages/tablib/formats/_ods.pyset_date_styler      s    EV[v...///EV[c***+++EV\///000EV[c***+++EVZf---.....    c                 f    | j         t          j        d                      | j         t          j        d                      | j         t          j        d                      | j         t          j        d                      | j         t          j        dd                     d S )Nr   r   :r   0)r   decimalplaces)r   r   Hoursr   MinutesSecondsr   s    r   set_time_styler$      s    EV\///000EV[c***+++EV^&111222EV[c***+++EV^&DDDEEEEEr   zdate-style1r   ds1Defaultz
table-cell)r   datastylenameparentstylenamer   ztime-style1ts1zdatetime-style1 r   dts1c                       e Zd ZdZdZed             Zed             Zedd            Zedd	            Z	edd
            Z
edd            Zed             Zed             ZdS )	ODSFormatods)r/   c                    t          j                    }|j                            t                     |j                            t                     |j                            t                     |j                            t                     |j                            t                     |j                            t                     |j                            t                     t          j        |j        r|j        nd          }|j                            |           |                     ||           t#                      }|                    |           |                                S )z&Returns ODF representation of Dataset.zTablib Datasetr%   )r   OpenDocumentSpreadsheetautomaticstylesr   r	   styles
date_styleds
time_styletsdatetime_styledtsr   Tabletitlespreadsheet
dset_sheetr   savegetvalue)clsdatasetwbwsstreams        r   
export_setzODSFormat.export_setF   s"    133
%%d+++
	Z(((
%%b)))
	Z(((
%%b)))
	^,,,
%%c***[w}RgmmBRSSS
!!"%%%w###
   r   c                    t          j                    }|j                            t                     t          |j                  D ][\  }}t          j        |j	        r|j	        nd|           }|j
                            |           |                     ||           \t                      }|                    |           |                                S )z'Returns ODF representation of DataBook.Sheetr%   )r   r1   r2   r   r	   	enumerate	_datasetsr   r:   r;   r<   r=   r   r>   r?   )r@   databookrB   idsetrC   rD   s          r   export_bookzODSFormat.export_book[   s     133
%%d+++ !344 	% 	%GAt
"K$**LLLBN%%b)))NN4$$$$
   r   Tr   c                     |                     d          |_        d t          |j                  D ]\  }}|j        dk    r||k     r fd|j        D             }|s/||k    r
|r||_        ?||k    r6t          |          |j        k     r|dg|j        t          |          z
  z  z  }|                    |           dS )z(Populate dataset `dset` with sheet data.r   c                 V    |                                  p|                     d           S )Nnumbercolumnsrepeated)hasChildNodesgetAttribute)cells    r   is_real_cellz,ODSFormat.import_sheet.<locals>.is_real_cellq   s+    %%''Yt/@/@AX/Y/Y+YYr   ztable:table-rowc                 P    g | ]"} |                               |          #S  )	read_cell).0rS   r@   rT   s     r   
<listcomp>z*ODSFormat.import_sheet.<locals>.<listcomp>y   s5    ]]],,W[J\J\]d++]]]r    N)	rR   r;   rH   
childNodestagNameheaderslenwidthappend)	r@   rL   sheetr]   
skip_linesrK   rowrow_valsrT   s	   `       @r   import_sheetzODSFormat.import_sheetk   s    ''//
	Z 	Z 	Z   011 	& 	&FAs{///:~~]]]]]]]]H J7'z>>c(mmdj&@&@
S]](B CCHH%%%%	& 	&r   Nc                    d }||                     d          }|dk    r"|                     d          }|r ||          S |dk    r|                     d          }	 t          j                            |d                                          S # t
          $ r5 t          j                            |d                                          cY S w xY w|d	k    r|                     d
          }|dk    S |j        sTt          |dd           }||                     d          }|dS |dk    rt          |          S |dk    r ||          S |S |j        D ]}| 	                    ||          }|r|c S d S )Nc                     d| v r t           j                            | d          S t           j                            | d                                          S )NT%Y-%m-%dT%H:%M:%S%Y-%m-%d)dtdatetimestrptimedate)vals    r   convert_datez)ODSFormat.read_cell.<locals>.convert_date   sH    czz{++C1DEEE{++C<<AACCCr   	valuetypern   	datevaluetime	timevaluePT%HH%MM%SS%H:%M:%SbooleanbooleanvaluetruedatavaluerZ   float)
rR   rk   rl   rm   rs   
ValueErrorr[   getattrr|   rW   )	r@   rS   
value_typerp   
date_value
time_value
bool_valuer{   subnodes	            r   rW   zODSFormat.read_cell   s   	D 	D 	D **;77J**;77J 0#|J///**;77JK{++JFFKKMMM K K K{++J
CCHHJJJJJK ""**>::J'' 
	D&$//E}))'22}rW$$U||#V###|E***L 	 	GMM':66E 	 	s   1B <CCc                     |                                  t          j        |          }|j        j        D ]+}|j        d         dk    r|                     ||||           ,dS )z(Populate dataset `dset` from ODS stream.   r   N)wiper   loadr<   r[   qnamere   )r@   rL   	in_streamr]   rb   ods_bookra   s          r   
import_setzODSFormat.import_set   sp     			$Y//)4 	C 	CE{1~((  ugzBBB	C 	Cr   c                    |                                  t          j        |          }|j        j        D ]S}|j        d         dk    rt          j                    }|                     |||           |	                    |           TdS )z*Populate databook `dbook` from ODS stream.r   r   N)
r   r   r   r<   r[   r   tablibDatasetre   	add_sheet)r@   dbookr   r]   r   ra   rL   s          r   import_bookzODSFormat.import_book   s     	

$Y//)4 	" 	"E{1~((>##DT5'222OOD!!!!	" 	"r   c           	         |                     d          }t          |j                  D ]-\  }}|}|                    |d         |z   |d         f           .t          |d          D ]\  }}|dk    o|j        }	|	rt
          nd}
t          j        |
          }|                    |           t          |          D ]/\  }}t          |t          j                  rt          j        d|	          }nt          |t          j                  rlt          j        d
|                    d          t                     }|                    t#          j        |                    d                               n\t          |t          j                  rZ|                    d          }t          j        d
|t(                    }|                    t#          j        |                     nt          |t          j                  rkt          j        d|                    d          t,                    }|                    t#          j        |                    d                               nc|t          j        d          }nKt          j        d          }|                    t#          j        t/          |          |
                     |                    |           1dS )z-Completes given worksheet from given Dataset.F)dictsr   r   )startN)	stylenamer|   )rq   r{   rn   ri   )rq   rr   r   z%Y-%m-%d %H:%M:%Sr   rj   rs   ru   )rq   rt   r   rv   void)rq   string)r   r   )_packagerH   _separatorsinsertr]   r	   r   TableRowr   
isinstancenumbersNumber	TableCellrk   rl   strftimer9   r   Prn   r5   rs   r7   str)r@   rA   rC   r   rK   sep_offset
row_numberrc   	is_headerr   odf_rowjcolrS   r   s                   r   r=   zODSFormat.dset_sheet   s    ##%#00 344 	; 	;FAsGOOSVg-Q	::::(;;; 	) 	)OJ"a;GOI%/DD4Enu555GMM'"""#C.. ) )3c7>22 L ?WCHHHDDR[11 L ?"("%,,/B"C"C"%  D
 OODF=P0Q0Q$R$R$RSSSSRW-- L!$j!9!9J ?Vz]_```DOODF
$;$;$;<<<<RW-- L ?"("%,,}"="="$  D
 OODFZ0H0H$I$I$IJJJJ[ ?V<<<DD ?X>>>DOODFCE$J$J$JKKK""4((((5)	) 	)r   c                     t          |t                    rt          |          }	 t          j        |           dS # t
          $ r Y dS w xY w)NTF)r   bytesr   r   r   	Exception)r@   rD   s     r   detectzODSFormat.detect   s\    fe$$ 	%V__F	f%%%4 	 	 	55	s   < 
A
	A
)Tr   )N)T)__name__
__module____qualname__r;   
extensionsclassmethodrE   rM   re   rW   r   r   r=   r   rV   r   r   r.   r.   B   s       EJ! ! [!( ! ! [! & & & [&. & & & [&P C C C [C " " " [" ') ') [')R   [  r   r.   )__doc__rl   rk   r   ior   odfr   r   r   r   r   r   Styler	   r   TextPropertiesr   r$   	DateStyler4   r5   r6   r7   r8   r   r9   r.   rV   r   r   <module>r      s)               8 8 8 8 8 8 8 8 8 8 8 8 8 8 u{{333 $$     / / /F F F V=111
 z   U[		   V=111
 z   U[		   "!'8999 ~      +&+3/// 0 0 0 ~   ek	#	  w w w w w w w w w wr   