Ë
    ¤2ÚiÂ  ã                   ó¾   — d 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	Z	ddlZej                  d   dk(  reZdZedfedfedfed	fed
fedfedfdœZ G d„ de«      Zy)z:Class to show and manipulate user fields in odf documents.é    N)ÚUserFieldDecl)ÚOFFICENS)Úloadé   zutf-8Úvaluez
date-valuez
time-valuezboolean-valuezstring-value)ÚfloatÚ
percentageÚcurrencyÚdateÚtimeÚbooleanÚstringc                   óR   — e Zd ZdZdZdZdd„Zd„ Zd„ Zd„ Z	dd„Z
d„ Zd	„ Zd
„ Zd„ Zy)Ú
UserFieldsz&List, view and manipulate user fields.Nc                 óB  — |dk(  s@dt        |«      v s3dt        |«      v s&dt        |«      v st        |«      t        d«      k(  sJ ‚|dk(  s@dt        |«      v s3dt        |«      v s&dt        |«      v st        |«      t        d«      k(  sJ ‚|| _        || _        d| _        y)a  Constructor

        @param src open file in binary mode: source document,
        or filename as a unicode string, or None for stdin.
        @param dest opendile in binary mode: destination document,
        or filename as a unicode string, or None for stdout.
        NÚrbÚBufferedReaderÚBytesIOÚ ÚwbÚBufferedWriter)ÚreprÚtypeÚsrc_fileÚ	dest_fileÚdocument)ÚselfÚsrcÚdests      úD/var/www/html/acx/venv/lib/python3.12/site-packages/odf/userfield.pyÚ__init__zUserFields.__init__9   sÍ   € ð �DŠy˜D¤D¨£IÑ-Ð1AÄTÈ#ÃYÑ1NÐR[Ô_cÐdgÓ_hÑRhÔlpÐqtÓluÔw{Ð|ó  xAò  mAð  	Bð  AØ�TŠz˜T¤T¨$£ZÑ/Ð3CÄtÈDÃzÑ3QÐU^ÔbfÐgkÓblÑUlÔptÐuyÓpzô  }Að  BEó  }Fò  qFð  	Gð  FØˆŒØˆŒØˆ�ó    c                 óð  — t         j                  d   dk(  r>t        | j                  t        «      sTt        | j                  t
        j                  «      s0t         j                  d   dk(  rQt        | j                  t        «      r7t        j                  | j                  «      s9t        d| j                  z  «      ‚| j                  €t         j                  | _        t        | j                  «      | _        y )Nr   r   é   z%s is no odt file.)ÚsysÚversion_infoÚ
isinstancer   ÚstrÚioÚIOBaseÚ
basestringÚzipfileÚ
is_zipfileÚ	TypeErrorÚstdinr   r   ©r   s    r    ÚloaddoczUserFields.loaddocG   sÜ   € Ü×Ñ˜QÑ Ò"¬
°4·=±=Ä#Ô(FÌ:ÐVZ×VcÑVcÔeg×enÑenÔKoÔwz÷  xHñ  xHð  IJñ  xKð  MNò  xNô  S]ð  ^b÷  ^kñ  ^kô  mwô  Sxä×%Ñ% d§m¡mÔ4ÜÐ 5¸¿¹Ñ EÓFÐFØ�]‰]Ð"äŸI™IˆDŒMä˜TŸ]™]Ó+ˆ�r"   c                 óž   — | j                   €| j                  j                  d«       y | j                  j                  | j                   «       y )Nú-)r   r   Úsaver0   s    r    ÚsavedoczUserFields.savedocR   s4   € à�>‰>Ð!à�M‰M×Ñ˜tÕ$à�M‰M×Ñ˜tŸ~™~Õ.r"   c                 óN   — | j                  «       D �cg c]  }|d   ‘Œ	 c}S c c}w )zlList (extract) all known user-fields.

        @return list of user-field names as unicode strings.
        r   ©Úlist_fields_and_values)r   Úxs     r    Úlist_fieldszUserFields.list_fieldsZ   s%   € ð
 #×9Ñ9Ó;Ö<˜��!“Ò<Ð<ùÒ<s   “"c                 ó@  — | j                  «        g }| j                  j                  t        «      }|D ]g  }|j	                  d«      }|dk(  r|j	                  d«      }n|j	                  d«      }|j	                  d«      }|�||v sŒT|j                  |||f«       Œi |S )a(  List (extract) user-fields with type and value.

        @param field_names list of field names as unicode strings
        to show, or None for all.

        @return list of tuples (<field name>, <field type>, <value>)
        as type (unicode string, stringified type, unicode string).

        Ú	valuetyper   Ústringvaluer   Úname)r1   r   ÚgetElementsByTyper   ÚgetAttributeÚappend)r   Úfield_namesÚfound_fieldsÚ
all_fieldsÚfÚ
value_typer   Ú
field_names           r    r8   z!UserFields.list_fields_and_valuesa   s¥   € ð 	�‰ŒØˆØ—]‘]×4Ñ4´]ÓCˆ
Øò 	-ˆAØŸ™¨Ó5ˆJØ˜YÒ&ØŸ™ ~Ó6‘àŸ™ xÓ0�ØŸ™¨Ó0ˆJàÐ" j°KÒ&?Ø×#Ñ# ZØ%/Ø%*ð%,õ -ð	-ð Ðr"   c                 óP   — | j                  |«      D �cg c]  }|d   ‘Œ	 c}S c c}w )z¿Extract the contents of given field names from the file.

        @param field_names list of field names as unicode strings

        @return list of field values as unicode strings.

        r$   r7   )r   rB   r9   s      r    Úlist_valueszUserFields.list_values|   s'   € ð #×9Ñ9¸+ÓFÖG˜��!“ÒGÐGùÒGs   ”#c                 óh   — t        |«      t        d«      k(  sJ ‚| j                  |g«      }|sy|d   S )zÆExtract the contents of this field from the file.
        @param field_name unicode string: name of a field
        @return field value as a unicode string or None if field does not exist.

        r   Nr   )r   rI   )r   rG   Úvaluess      r    ÚgetzUserFields.get†   s=   € ô �JÓ¤ c£Ò*Ð+Ð*Ø×!Ñ! : ,Ó/ˆÙØØ�a‰yÐr"   c                 óx   — t        |«      t        d«      k(  sJ ‚| j                  |g«      }|sy|d   \  }}}||fS )zòExtract the type and contents of this field from the file.
        @param field_name unicode string: name of a field
        @return tuple (<type>, <field-value>) as a pair of unicode strings
        or None if field does not exist.

        r   Nr   )r   r8   )r   rG   ÚfieldsrF   r   s        r    Úget_type_and_valuezUserFields.get_type_and_value’   sN   € ô �JÓ¤ c£Ò*Ð+Ð*Ø×,Ñ,¨j¨\Ó:ˆÙØØ(.¨q©	Ñ%ˆ
�J Ø˜5Ð Ð r"   c                 óT  — | j                  «        | j                  j                  t        «      }|D ]d  }|j	                  d«      }||v sŒ|j	                  d«      }|j                  |«      }|dk(  r|j                  d|«       ŒS|j                  d|«       Œf | j                  «        y)z¤Set the value of user fields. The field types will be the same.

        data ... dict, with field name as key, field value as value

        Returns None

        r>   r<   r   r=   r   N)r1   r   r?   r   r@   rL   ÚsetAttributer5   )r   ÚdatarD   rE   rG   rF   r   s          r    ÚupdatezUserFields.update    s‘   € ð 	�‰ŒØ—]‘]×4Ñ4´]ÓCˆ
Øò 	4ˆAØŸ™¨Ó0ˆJØ˜TÒ!ØŸ^™^¨LÓ9�
ØŸ™ Ó,�Ø Ò*Ø—N‘N >°5Õ9à—N‘N 8¨UÕ3ð	4ð 	�‰�r"   )NN)N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r!   r1   r5   r:   r8   rI   rL   rO   rS   © r"   r    r   r   2   s?   „ Ù0ð €HØ€Ióò	,ò/ò=óò6Hò
ò!ór"   r   )rW   r%   r,   Úodf.textr   Úodf.namespacesr   Úodf.opendocumentr   r)   r&   r(   ÚunicodeÚOUTENCODINGÚVALUE_TYPESÚobjectr   rX   r"   r    ú<module>r`      sŠ   ðñ, Aã 
Û å "Ý #Ý !ß à×Ñ�AÑ˜ÒØ€Gà€ð
 ˜Ð"Ø˜hÐ'Ø˜HÐ%Ø˜Ð&Ø˜Ð&ØÐ+Ð,Ø˜/Ð*ñ€ôA�õ Ar"   