
    bEf                     l    d Z ddlmZ ddlZddlmZmZmZmZ  G d de          Z	 G d d          Z
dS )	zE
pip install git+https://github.com/yandex/yandex_tracker_client.git
    )DictN)TrackerClientcollectionsobjects
exceptionsc                   $     e Zd Z fdZd Z xZS )Clientc                     t                      j        |i | |                    d          | _        |                    d          | _        |                    d          | _        |                     t          j                  | _	        d S )Ntokenorg_idcloud_org_id)
super__init__getr   r   r   _get_collectionr   Rolesroles)selfargskwargs	__class__s       ./modules/tracker/tracker_api.pyr   zClient.__init__   sw    $)&)))ZZ((
jj**"JJ~66 ))+*;<<


    c                 B    | j         j                                         d S N)_connectionsessionclose)r   s    r   r   zClient.close   s      &&(((((r   )__name__
__module____qualname__r   r   __classcell__)r   s   @r   r	   r	   
   sG        = = = = =) ) ) ) ) ) )r   r	   c                   |   e Zd ZdZd!dZd"dZdeeef         fdZ	d#dZ
d#d	Z ej        ej        ej        d
          d#d            Z ej        ej        ej        d
          d#d            Z ej        ej        ej        d
          d             Z ej        ej        ej        d
          d             Z ej        ej        ej        d
          d             Z ej        ej        ej        d
          d             ZdefdZd#dZd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d  Z&dS )$
TrackerApi2   FNc                     |rt          ||          | _        nt          ||          | _        d| _        || _        d S )N)r   r   )r   r   zhttps://tracker.yandex.ru)r	   clienturl
cmf_import)r   r   r   cloudr)   s        r   r   zTrackerApi.__init__   sF     	= u6BBBDKK uV<<<DK.$r   c              #     K   d}d}d}d}|p| j         }|r||k    r|}t          | j        |          }	|dk    rd}|	                    |||          }
	 t	          |
t
          j                  r|
j        }|
                    |p|          }
|
sd S |
D ]}|dz  }|r||k    r n|V  |dz  }|s|r||k    s||k    rd S l)Nallr      queuesz1projects,components,versions,types,team,workflows)expandperPagepage)	DEFAULT_PER_PAGEgetattrr'   get_all
isinstancer   SeekablePaginatedListpages_countget_page)r   collection_nameper_pager1   max_resultsr/   count_resultscurrent_pager7   
collectionitemsitems               r   get_collectionzTrackerApi.get_collection$   s1     4t4 	#8k11"HT[/::
h&&HF""&("NN	%!>?? =#/t';|<<   " =;#>#>E



AL  (D(D,YdJdJd!	r   returnc                     | j         j                            d          }t                      }|D ]1}|                                }d|v r|||d         <   &|||d         <   2|S )Nr,   r/   keyid)r'   fieldsr4   dictas_dict)r   rG   resfields       r   
get_fieldszTrackerApi.get_fieldsD   sr    #++5+99ff 	) 	)EMMOOE~~$)E%L!!#(E$K  
r   c                 b    |r!| j         j                            |d          S  | j        di |S )Nr,   rD   users)rN   )r'   rN   r   rA   r   rE   r   s      r   	get_userszTrackerApi.get_usersP   sA     	<;$((U(;;;"t"55f555r   c                 b    |r!| j         j                            |d          S  | j        di |S )Nr,   rD   issues)rR   )r'   rR   r   rA   rO   s      r   
get_issueszTrackerApi.get_issuesU   A     	=;%))#e)<<<"t"66v666r   i,  )max_timec                 d    |p| j         }| j        j                            d|idgd|          }|S )Nqueue	createdAtr,   )filterorderr/   r:   )r2   r'   rR   find)r   	queue_keyr:   rR   s       r   get_issues_for_queuezTrackerApi.get_issues_for_queueZ   sH    4t4#((Y'-	 ) 
 
 r   c                 l    t          |t          j                  r|                    |          }|sd S |S r   )r5   r   r6   r8   )r   rR   r1   s      r   get_issues_for_queue_by_pagez'TrackerApi.get_issues_for_queue_by_pageg   s:    fg;<< 	+__T**F 	Fr   c                 (    d |j         D             }|S )Nc                 6    g | ]}|                                 S  rI   ).0
attachments     r   
<listcomp>z4TrackerApi.get_issue_attachments.<locals>.<listcomp>s   s$    PPP
z))++PPPr   )attachments)r   issuerg   s      r   get_issue_attachmentsz TrackerApi.get_issue_attachmentsq   s    PPe>OPPPr   c                     |j         j        }|S r   )rW   	workflows)r   rh   rk   s      r   get_issue_workflowzTrackerApi.get_issue_workflowv   s    K)	r   c                 R    d |j                             dd          D             }|S )Nc                 6    g | ]}|                                 S rb   rc   )rd   comments     r   rf   z1TrackerApi.get_issue_comments.<locals>.<listcomp>}   s"    ggg'GOO%%gggr   r,   d   r/   r0   )commentsr4   )r   rh   rr   s      r   get_issue_commentszTrackerApi.get_issue_comments{   s1    ggU^5K5KSXbe5K5f5fgggr   c                 R    d |j                             dd          D             }|S )Nc                 6    g | ]}|                                 S rb   rc   )rd   changes     r   rf   z2TrackerApi.get_issue_changelog.<locals>.<listcomp>   s"    ggg&V^^%%gggr   r,   rp   rq   )	changelogr4   )r   rh   rw   s      r   get_issue_changelogzTrackerApi.get_issue_changelog   s2    ggEO4K4KSXbe4K4f4fggg	r   c                 H    | j         j                            d|id          S )NrW   T)rY   
count_only)r'   rR   r[   r   rE   s     r   get_queue_issues_countz!TrackerApi.get_queue_issues_count   s$    {!&&wn&NNNr   c                 b    |r!| j         j                            |d          S  | j        di |S )Nr,   rD   r.   )r.   )r'   r.   r   rA   rO   s      r   
get_queueszTrackerApi.get_queues   rT   r   c                 @    | j         j                            |          S r   )r'   rg   r   r{   s     r   get_attachmentzTrackerApi.get_attachment   s    {&**3///r   c                 $     | j         dg|R i |S )Nr   rA   r   r   r   s      r   	get_roleszTrackerApi.get_roles   s%    "t"7<T<<<V<<<r   c                 $     | j         dg|R i |S )Ngroupsr   r   s      r   
get_groupszTrackerApi.get_groups   %    "t"8=d===f===r   c                 $     | j         dg|R i |S )Nissue_typesr   r   s      r   get_issue_typeszTrackerApi.get_issue_types   s%    "t"=B4BBB6BBBr   c                 $     | j         dg|R i |S )N
prioritiesr   r   s      r   get_prioritieszTrackerApi.get_priorities   s%    "t"<A$AAA&AAAr   c                 $     | j         dg|R i |S )Nstatusesr   r   s      r   get_statuseszTrackerApi.get_statuses   %    "t":???????r   c                 $     | j         dg|R i |S )N	linktypesr   r   s      r   get_linktypeszTrackerApi.get_linktypes   %    "t";@@@@@@@r   c                 $     | j         dg|R i |S )Nscreensr   r   s      r   get_screenszTrackerApi.get_screens   %    "t"9>t>>>v>>>r   c                 $     | j         dg|R i |S )Nrk   r   r   s      r   get_workflowszTrackerApi.get_workflows   r   r   c                 $     | j         dg|R i |S )Nboardsr   r   s      r   
get_boardszTrackerApi.get_boards   r   r   c                 $     | j         dg|R i |S )Nsprintsr   r   s      r   get_sprintszTrackerApi.get_sprints   r   r   c                 $     | j         dg|R i |S )Nprojectsr   r   s      r   get_projectszTrackerApi.get_projects   r   r   c                     t          |d          5 }| j        j                            |          D ]}|                    |           	 d d d            d S # 1 swxY w Y   d S )Nzwb+)path)openr'   r   streamwrite)r   re   	directoryfchunks        r   downloadzTrackerApi.download   s    )U## 	q077Z7HH  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   9AAA)FN)NNNr   )'r   r    r!   r2   r   rA   r   strrH   rL   rP   rS   backoffon_exceptionexpor   TrackerServerErrorr]   r_   ri   rl   rs   rx   intr|   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   rb   r   r   r$   r$      s       % % % %   @
DdO 
 
 
 
6 6 6 6
7 7 7 7
 W',
(EPSTTT
 
 
 UT
 W',
(EPSTTT   UT W',
(EPSTTT  UT W',
(EPSTTT  UT W',
(EPSTTT  UT W',
(EPSTTT  UTOS O O O O7 7 7 7
0 0 0= = => > >C C CB B B@ @ @A A A? ? ?A A A> > >? ? ?@ @ @    r   r$   )__doc__typingr   r   yandex_tracker_clientr   r   r   r   r	   r$   rb   r   r   <module>r      s            Q Q Q Q Q Q Q Q Q Q Q Q) ) ) ) )] ) ) )[ [ [ [ [ [ [ [ [ [r   