
    |ji                        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	 d dl
mZ g dZdd	gZd
gZe G d d             Ze G d d             Z G d d      Zy)    )annotations)	dataclass)Path)Any)service_account)build)u   Наименованиеu   Статья затратu%   Название поставщикаu
   Суммаu   Датаu   Комментарииu   Статусz	Bitrix IDu   Воронкаz,https://www.googleapis.com/auth/spreadsheetsc                  8    e Zd ZU dZded<   dZded<   dZded<   y)	SheetLayout   int
header_row   data_start_rowb   data_end_rowN)__name__
__module____qualname__r   __annotations__r   r        :/var/www/abs-group.kazgame-control.su/app/sheets/client.pyr
   r
      s     JNCL#r   r
   c                  h    e Zd ZU ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded	<   ded
<   y)	MappedRowstrtitlecost_articlesupplieramountdatecommentsstatus	bitrix_idcategory_nameN)r   r   r   r   r   r   r   r   r      s1    JMK
IMKNr   r   c                  b    e Zd Z	 d
	 	 	 	 	 	 	 	 	 ddZddZddZddZddZddZddZ	dd	Z
y)SheetsClientNc                b    || _         || _        || _        |xs
 t               | _        d | _        y N)spreadsheet_id
sheet_nameservice_account_pathr
   layout_service)selfr)   r*   r+   r,   s        r   __init__zSheetsClient.__init__-   s0     -$$8!-$(r   c                    | j                   Lt        j                  j                  t	        | j
                        t              }t        dd|d      | _         | j                   S )N)scopessheetsv4F)credentialscache_discovery)r-   r   Credentialsfrom_service_account_filer   r+   SCOPESr   )r.   r4   s     r   _apizSheetsClient._api:   sX    == )55OOD--. P K "(Dk[`aDM}}r   c                J    | j                   j                  dd      }d| d| S )N'z''z'!)r*   replace)r.   a1escapeds      r   _rangezSheetsClient._rangeC   s+    //))#t47)2bT""r   c                    d|j                   d|j                  |j                  |j                  |j                  |j
                  |j                  |j                  |j                  gS )N 	r   r   r   r   r    r!   r"   r#   r$   )r.   rows     r   to_sheet_valueszSheetsClient.to_sheet_valuesG   sU    IILLJJHHLLJJMM
 	
r   c                    t        |      }t        |      dk  r |j                  d       t        |      dk  r t        |d   |d   |d   |d   |d   |d   |d	   |d
   xs dj	                         |d   	      S )N   rA                        	   
   rB   )listlenappendr   strip)r.   values
normalizeds      r   parse_sheet_valueszSheetsClient.parse_sheet_valuesV   s    &\
*o"b! *o"Q-#A]a=A]a=!!}*113$R.

 
	
r   c           
     F   | j                   j                  }| j                         j                         j	                         j                  | j                  | j                  d| d|             j                         }|j                  d      r|j                  dg g      d   ng t              dk  r j                  d       t              dk  r dt        d   fd	t        d   fd
t        d   fdt        d	   fdt        d
   fdt        d   fdt        d   fg}t        fd|D              }|s1t        d| j                   d| ddj                  t                     d   xs dj!                         t"        d   k7  xs! d   xs dj!                         t"        d   k7  }|rt| j                         j                         j	                         j%                  | j                  | j                  d| d|       ddt"        gi      j                          y y )NA:KspreadsheetIdrangerT   r   rF   rA   rG   rH   rI      rJ   rK   rL   rM   c              3  X   K   | ]!  \  }}|   xs d j                         |k(   # yw)rA   N)rS   ).0indexvalueheaders      r   	<genexpr>z-SheetsClient.ensure_header.<locals>.<genexpr>   s,     \\UE6%=.B5575@\s   '*zSheet "z" row u)    headers do not match. Expected B/D–I: z | rN   rO   JRAW)r[   r\   valueInputOptionbody)r,   r   r9   spreadsheetsrT   getr)   r?   executerQ   rR   BUSINESS_HEADERSallRuntimeErrorr*   joinrS   TECH_HEADERSupdate)r.   r   responsechecksbusiness_ok	need_techrb   s         @r   ensure_headerzSheetsClient.ensure_headerf   s   [[++
IIK\^VXS"11kkAj\J<"@A   WY 	 5=LL4Jh-a0PR&kBMM" &kB  #$ #$ #$ #$ #$ #$ #$
 \U[\\$//*& =%%*ZZ0@%A$BD 
 AY_"++-a@qVBZEUSUD\D\D^bnopbqDq			"&"5"5++*R
|&DE%*"\N3	    r   c           	     T   | j                   j                  }| j                   j                  }| j                         j	                         j                         j                  | j                  | j                  d| d|             j                         }g }t        |j                  d      xs g       D ]i  \  }}|D cg c]  }t        |xs d       }}t        |      dk  r |j                  d       t        |      dk  r |j                  ||z   |d d d       k |S c c}w )NrX   rY   rZ   rT   rA   rF   )
row_numberrT   )r,   r   r   r9   rh   rT   ri   r)   r?   rj   	enumerater   rQ   rR   )	r.   startendrq   rowsr`   rC   cellrU   s	            r   read_data_rowszSheetsClient.read_data_rows   s   **kk&&IIK\^VXS"11kkAeWBse"45   WY 	 #HLL$:$@bA 		JE369:d#djb/:J:j/B&!!"% j/B&KK"'%-("o			  ;s   D%c           
     &   |sy |D cg c]&  }| j                  d|d    d|d          |d   gd( }}| j                         j                         j                         j	                  | j
                  d|d      j                          y c c}w )	NrX   rw   rY   rT   )r\   rT   re   )rf   data)r[   rg   )r?   r9   rh   rT   batchUpdater)   rj   )r.   updatesitemr   s       r   batch_update_rowszSheetsClient.batch_update_rows   s      

  ql);(<BtL?Q>R%ST>*
 
 IIK\^VX["11*/>   WY
s   +Br(   )
r)   r   r*   r   r+   r   r,   zSheetLayout | NonereturnNone)r   r   )r=   r   r   r   )rC   r   r   	list[str])rT   r   r   r   )r   r   )r   list[dict[str, Any]])r   r   r   r   )r   r   r   r/   r9   r?   rD   rV   ru   r}   r   r   r   r   r&   r&   ,   s`     &*)) ) #	)
 #) 
)#

 -^4
r   r&   N)
__future__r   dataclassesr   pathlibr   typingr   google.oauth2r   googleapiclient.discoveryr   rk   ro   r8   r
   r   r&   r   r   r   <module>r      sr    " !   ) +  -.
8	9    	 	 	V
 V
r   