
    ?wg*!                     R   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j                   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j                   ej2                  d              ee        e	j                  dddd      Z G d d      Zy)z Tablib - ODF Support.
    N)BytesIO)numberopendocumentstyletabletextbold	paragraph)namefamily)
fontweightfontweightasianfontweightcomplexc                     | j                   t        j                  d              | j                   t        j                  d              | j                   t        j                  d              | j                   t        j                  d              | j                   t        j
                  d             y )Nlongr   -r   )
addElementr   YearTextMonthDayr   s    J/var/www/horilla/myenv/lib/python3.12/site-packages/tablib/formats/_ods.pyset_date_styler      s    EV[[v./EV[[c*+EV\\/0EV[[c*+EVZZf-.    c                     | j                   t        j                  d              | j                   t        j                  d              | j                   t        j                  d              | j                   t        j                  d              | j                   t        j
                  dd             y )Nr   r   :r   0)r   decimalplaces)r   r   Hoursr   MinutesSecondsr   s    r   set_time_styler$      s    EV\\/0EV[[c*+EV^^&12EV[[c*+EV^^&D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y)	ODSFormatods)r/   c                    t        j                         }|j                  j                  t               |j
                  j                  t               |j                  j                  t               |j
                  j                  t               |j                  j                  t               |j
                  j                  t               |j                  j                  t               t        j                  |j                  r|j                  nd      }|j                  j                  |       | j!                  ||       t#               }|j%                  |       |j'                         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13
%%d+
		Z(
%%b)
		Z(
%%b)
		^,
%%c*[[w}}gmmBRS
!!"%w#
  r   c                    t        j                         }|j                  j                  t               t        |j                        D ]c  \  }}t        j                  |j                  r|j                  nd|       }|j                  j                  |       | j                  ||       e t               }|j                  |       |j                         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13
%%d+ !3!34 	%GAt

$**%sLBNN%%b)NN4$	%
 
  r   c                    |j                  d      |_        d }t        |j                        D ]  \  }}|j                  dk7  r||k  r|j                  D cg c]  } ||      s| j                  |       }	}|	sP||k(  r
|r|	|_        _||kD  r7t        |	      |j                  k  r|	dg|j                  t        |	      z
  z  z  }	|j                  |	        yc c}w )z(Populate dataset `dset` with sheet data.r   c                 J    | j                         xs | j                  d       S )Nnumbercolumnsrepeated)hasChildNodesgetAttribute)cells    r   is_real_cellz,ODSFormat.import_sheet.<locals>.is_real_cellq   s%    %%'Yt/@/@AX/Y+YYr   ztable:table-row N)
rR   r;   rH   
childNodestagName	read_cellheaderslenwidthappend)
r@   rL   sheetrY   
skip_linesrT   rK   rowrS   row_valss
             r   import_sheetzODSFormat.import_sheetk   s     ''/
	Z   0 01 	&FAs{{//:~8;],W[J\d+]H]J7'z>c(mdjj&@

S](B CCHH%	&
 ^s   C'CNc                    d }||j                  d      }|dk(  r|j                  d      }|r ||      S |dk(  r@|j                  d      }	 t        j                  j                  |d      j	                         S |d	k(  r|j                  d
      }|dk(  S |j                  sBt        |dd       }||j                  d      }|y|dk(  rt        |      S |dk(  r ||      S |S |j                  D ]  }| j                  ||      }|s|c S  y # t
        $ r1 t        j                  j                  |d      j	                         cY S w xY w)Nc                     d| v r t         j                  j                  | d      S t         j                  j                  | d      j                         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   sA    cz{{++C1DEE{{++C<AACCr   	valuetyperj   	datevaluetime	timevaluePT%HH%MM%SS%H:%M:%SbooleanbooleanvaluetruedatavaluerU   float)
rR   rg   rh   ri   ro   
ValueErrorrV   getattrrx   rX   )	r@   rS   
value_typerl   
date_value
time_value
bool_valuerw   subnodes	            r   rX   zODSFormat.read_cell   sc   	D **;7J**;7J#J//**;7JK{{++JFKKMM "**>:J''D&$/E}))'2}W$U|#V##E**L 	GMM':6E	%  K{{++J
CHHJJKs   -D 7E	E	c                     |j                          t        j                  |      }|j                  j                  D ])  }|j
                  d   dk(  s| j                  ||||       + y)z(Populate dataset `dset` from ODS stream.   r   N)wiper   loadr<   rV   qnamera   )r@   rL   	in_streamrY   r^   ods_bookr]   s          r   
import_setzODSFormat.import_set   s^     			$$Y/))44 	CE{{1~(  ugzB	Cr   c                    |j                          t        j                  |      }|j                  j                  D ]M  }|j
                  d   dk7  rt        j                         }| j                  |||       |j                  |       O y)z*Populate databook `dbook` from ODS stream.r   r   N)
r   r   r   r<   rV   r   tablibDatasetra   	add_sheet)r@   dbookr   rY   r   r]   rL   s          r   import_bookzODSFormat.import_book   su     	

$$Y/))44 	"E{{1~(>>#DT5'2OOD!	"r   c           	         |j                  d      }t        |j                        D ]#  \  }}|}|j                  |d   |z   |d   f       % t        |d      D ]c  \  }}|dk(  xr |j                  }	|	rt
        nd}
t        j                  |
      }|j                  |       t        |      D ]
  \  }}t        |t        j                        rt        j                  d|	      }nt        |t        j                        rat        j                  d
|j                  d      t               }|j                  t#        j$                  |j                  d                   nEt        |t        j&                        rS|j                  d      }t        j                  d
|t(              }|j                  t#        j$                  |             nt        |t        j*                        r`t        j                  d|j                  d      t,              }|j                  t#        j$                  |j                  d                   n^|t        j                  d      }nEt        j                  d      }|j                  t#        j$                  t/        |      |
             |j                  |        f y)z-Completes given worksheet from given Dataset.F)dictsr   r   )startN)	stylenamerx   )rm   rw   rj   re   )rm   rn   r   z%Y-%m-%d %H:%M:%Sr   rf   ro   rq   )rm   rp   r   rr   void)rm   string)r   r   )_packagerH   _separatorsinsertrY   r	   r   TableRowr   
isinstancenumbersNumber	TableCellrg   rh   strftimer9   r   Prj   r5   ro   r7   str)r@   rA   rC   r   rK   sep_offset
row_numberr_   	is_headerr   odf_rowjcolrS   r|   s                   r   r=   zODSFormat.dset_sheet   s	    ##%#0 3 34 	;FAsGOOSVg-Q	:	;  ); 	)OJ"a;GOOI%D4Ennu5GMM'"#C. )3c7>>2 ??WCHDR[[1 ??"("%,,/B"C"%D
 OODFF=P0Q$RSRWW-!$j!9J ??Vz]_`DOODFF
$;<RWW- ??"("%,,}"="$D
 OODFFZ0H$IJ[ ??V<D ??X>DOODFFCE$JK""4(5)	)r   c                     t        |t              rt        |      }	 t        j                  |       y# t
        $ r Y yw xY w)NTF)r   bytesr   r   r   	Exception)r@   rD   s     r   detectzODSFormat.detect   s=    fe$V_F	f% 		s   3 	??)Tr   )N)T)__name__
__module____qualname__r;   
extensionsclassmethodrE   rM   ra   rX   r   r   r=   r    r   r   r.   r.   B   s    EJ! !( ! ! & &. & &P C C " " ') ')R  r   r.   )__doc__rh   rg   r   ior   odfr   r   r   r   r   r   Styler	   r   TextPropertiesr   r$   	DateStyler4   r5   r6   r7   r8   r   r9   r.   r   r   r   <module>r      s6      8 8 u{{{3 $$$ /F V=1
 z U[[		 V=1
 z U[[		 "!!'89 ~    +&++3/ 0 ~ ekk	#	w wr   