
    b{d                     ^    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
y)	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        |   |i | |j                  d      | _        |j                  d      | _        |j                  d      | _        | j                  t        j                        | _	        y )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__   s`    $)&)ZZ(
jj*"JJ~6 ))+*;*;<
    c                 L    | j                   j                  j                          y N)_connectionsessionclose)r   s    r   r   zClient.close   s      &&(r   )__name__
__module____qualname__r   r   __classcell__)r   s   @r   r	   r	   
   s    =)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&y)#
TrackerApi2   Nc                 n    |rt        ||      | _        nt        ||      | _        d| _        || _        y )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__   s/     u6BDK uV<DK.$r   c              #     K   d}d}d}d}|xs | j                   }|r||kD  r|}t        | j                  |      }	|dk(  rd}|	j                  |||      }
	 t	        |
t
        j                        r!|
j                  }|
j                  |xs |      }
|
sy |
D ]  }|dz  }|r||kD  r n|  |dz  }|s|r||k\  s||kD  ry lw)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$   s     4t448k1"HT[[/:
h&HF""&("N%!>!>?#//t';|< "=;#>
	 AL(D,YdJd! s   C Creturnc                     | j                   j                  j                  d      }t               }|D ]'  }|j	                         }d|v r	|||d   <    |||d   <   ) |S )Nr,   r/   keyid)r'   fieldsr4   dictas_dict)r   rG   resfields       r   
get_fieldszTrackerApi.get_fieldsD   sj    ##++5+9f 	)EMMOE~$)E%L!#(E$K 	) 
r   c                 x    |r'| j                   j                  j                  |d      S  | j                  di |S )Nr,   rD   )users)r'   rN   r   rA   r   rE   r   s      r   	get_userszTrackerApi.get_usersP   s;    ;;$$((U(;;"t""5f55r   c                 x    |r'| j                   j                  j                  |d      S  | j                  di |S )Nr,   rD   )issues)r'   rR   r   rA   rO   s      r   
get_issueszTrackerApi.get_issuesU   ;    ;;%%))#e)<<"t""6v66r   i,  )max_timec                 ~    |xs | j                   }| 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   sK    4t44##((Y'-	 ) 
 r   c                 b    t        |t        j                        r|j                  |      }|sy |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r   c                 ^    |j                   D cg c]  }|j                          }}|S c c}w r   )attachmentsrI   )r   issue
attachmentra   s       r   get_issue_attachmentsz TrackerApi.get_issue_attachmentsq   s0    >C>O>OP
z))+PP Qs   *c                 2    |j                   j                  }|S r   )rW   	workflows)r   rb   rf   s      r   get_issue_workflowzTrackerApi.get_issue_workflowv   s    KK))	r   c                     |j                   j                  dd      D cg c]  }|j                          }}|S c c}w Nr,   d   )r/   r0   )commentsr4   rI   )r   rb   commentrk   s       r   get_issue_commentszTrackerApi.get_issue_comments{   s=    5:^^5K5KSXbe5K5fg'GOO%gg h   ;c                     |j                   j                  dd      D cg c]  }|j                          }}|S c c}w ri   )	changelogr4   rI   )r   rb   changerp   s       r   get_issue_changelogzTrackerApi.get_issue_changelog   s>    49OO4K4KSXbe4K4fg&V^^%g	g hrn   c                 T    | j                   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Nr   c                 x    |r'| j                   j                  j                  |d      S  | j                  di |S )Nr,   rD   )r.   )r'   r.   r   rA   rO   s      r   
get_queueszTrackerApi.get_queues   rT   r   c                 L    | j                   j                  j                  |      S r   )r'   ra   r   ru   s     r   get_attachmentzTrackerApi.get_attachment   s    {{&&**3//r   c                 .     | j                   dg|i |S )Nr   rA   r   r   r   s      r   	get_roleszTrackerApi.get_roles   s    "t""7<T<V<<r   c                 .     | j                   dg|i |S )Ngroupsr|   r}   s      r   
get_groupszTrackerApi.get_groups       "t""8=d=f==r   c                 .     | j                   dg|i |S )Nissue_typesr|   r}   s      r   get_issue_typeszTrackerApi.get_issue_types   s    "t""=B4B6BBr   c                 .     | j                   dg|i |S )N
prioritiesr|   r}   s      r   get_prioritieszTrackerApi.get_priorities   s    "t""<A$A&AAr   c                 .     | j                   dg|i |S )Nstatusesr|   r}   s      r   get_statuseszTrackerApi.get_statuses       "t"":????r   c                 .     | j                   dg|i |S )N	linktypesr|   r}   s      r   get_linktypeszTrackerApi.get_linktypes       "t"";@@@@r   c                 .     | j                   dg|i |S )Nscreensr|   r}   s      r   get_screenszTrackerApi.get_screens       "t""9>t>v>>r   c                 .     | j                   dg|i |S )Nrf   r|   r}   s      r   get_workflowszTrackerApi.get_workflows   r   r   c                 .     | j                   dg|i |S )Nboardsr|   r}   s      r   
get_boardszTrackerApi.get_boards   r   r   c                 .     | j                   dg|i |S )Nsprintsr|   r}   s      r   get_sprintszTrackerApi.get_sprints   r   r   c                 .     | j                   dg|i |S )Nprojectsr|   r}   s      r   get_projectszTrackerApi.get_projects   r   r   c                     t        |d      5 }| j                  j                  j                  |      D ]  }|j	                  |        	 d d d        y # 1 sw Y   y xY w)Nzwb+)path)openr'   r   streamwrite)r   rc   	directoryfchunks        r   downloadzTrackerApi.download   sU    )U# 	q0077Z7H 	 	 	s   =AA)FN)NNNr   )'r   r    r!   r2   r   rA   r   strrH   rL   rP   rS   backoffon_exceptionexpor   TrackerServerErrorr]   r_   rd   rg   rm   rr   intrv   rx   rz   r~   r   r   r   r   r   r   r   r   r   r   r    r   r   r$   r$      s   %@
DdO 
6
7
 W',,
(E(EPST
 U
 W',,
(E(EPST U W',,
(E(EPST U W',,
(E(EPST U W',,
(E(EPST U W',,
(E(EPST UOS O7
0=>CB@A?A>?@r   r$   )__doc__typingr   r   yandex_tracker_clientr   r   r   r   r	   r$   r   r   r   <module>r      s0      Q Q)] )[ [r   