a
    bg                     @   sP   d Z ddlmZmZmZmZ ddlmZ ddlm	Z	m
Z
mZ G dd de	ZdS )zUtil that calls Jira.    )AnyDictListOptional)get_from_dict_or_env)	BaseModel
ConfigDictmodel_validatorc                   @   s  e Zd ZU dZdZeed< dZeed< dZe	e
 ed< dZe	e
 ed< dZe	e
 ed< dZe	e ed< ed	d
ZeddeeedddZeee dddZee ee dddZe
e
dddZe
dddZe
e
dddZe
e
dddZe
e
dd d!Ze
e
e
d"d#d$ZdS )%JiraAPIWrapperzWrapper for Jira API.Njira
confluencejira_usernamejira_api_tokenjira_instance_url
jira_cloudZforbid)extrabefore)mode)valuesreturnc                 C   s   t |dddd}||d< t |dd}||d< t |dd}||d< t |d	d
}| dk}||d	< zddlm}m} W n ty   tdY n0 |dkr||||d}	n|||||d}	|||||d}
|	|d< |
|d< |S )z?Validate that api key and python package exists in environment.r   ZJIRA_USERNAME )defaultr   ZJIRA_API_TOKENr   ZJIRA_INSTANCE_URLr   Z
JIRA_CLOUDtruer   )
ConfluenceJiraz`atlassian-python-api is not installed. Please install it with `pip install atlassian-python-api`)urltokencloud)r   usernamepasswordr   r   r   )r   lowerZ	atlassianr   r   ImportError)clsr   r   r   r   Zjira_cloud_strr   r   r   r   r    r#   p/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_community/utilities/jira.pyvalidate_environment   sT    
z#JiraAPIWrapper.validate_environment)issuesr   c                 C   s2  g }|d D ]}|d }|d d }|d d dd }|d d d	 }|d d
 d	 }z|d d d }	W n t y   d}	Y n0 i }
|d d D ]z}d| v r|d d }|d d }|d d d }d| v r|d d }|d d }|d d d }|||d}
q|||||	|||
d q|S )Nr&   keyfieldssummarycreatedr   
   prioritynamestatusassigneeZdisplayNameNoneZ
issuelinksZinwardIssuetypeZinwardZoutwardIssueZoutward)r1   r'   r)   )r'   r)   r*   r/   r,   r.   Zrelated_issues)	Exceptionkeysappend)selfr&   parsedissuer'   r)   r*   r,   r.   r/   Z
rel_issuesZrelated_issueZrel_typeZrel_keyZrel_summaryr#   r#   r$   parse_issuesQ   sB    
zJiraAPIWrapper.parse_issues)projectsr   c           	   	   C   sP   g }|D ]B}|d }|d }|d }|d }|d }| |||||d q|S )Nidr'   r-   ZprojectTypeKeystyle)r:   r'   r-   r1   r;   )r4   )	r5   r9   r6   projectr:   r'   r-   r1   r;   r#   r#   r$   parse_projectsu   s    zJiraAPIWrapper.parse_projects)queryr   c                 C   s6   | j |}| |}dtt| d t| }|S )NFound z	 issues:
)r   jqlr8   strlen)r5   r>   r&   Zparsed_issuesZparsed_issues_strr#   r#   r$   search   s
    
zJiraAPIWrapper.search)r   c                 C   s4   | j  }| |}dtt| d t| }|S )Nr?   z projects:
)r   r9   r=   rA   rB   )r5   r9   Zparsed_projectsZparsed_projects_strr#   r#   r$   r<      s
    

zJiraAPIWrapper.projectc                 C   sD   zdd l }W n ty&   tdY n0 ||}| jjt|dS )Nr   @json is not installed. Please install it with `pip install json`)r(   )jsonr!   loadsr   issue_createdictr5   r>   rE   paramsr#   r#   r$   rG      s    

zJiraAPIWrapper.issue_createc                 C   sH   zdd l }W n ty&   tdY n0 ||}| jjf i t|S )Nr   rD   )rE   r!   rF   r   create_pagerH   rI   r#   r#   r$   page_create   s    

zJiraAPIWrapper.page_createc                 C   s`   zdd l }W n ty&   tdY n0 ||}t| j|d }||dg i |di S )Nr   rD   functionargskwargs)rE   r!   rF   getattrr   get)r5   r>   rE   rJ   Zjira_functionr#   r#   r$   other   s    

zJiraAPIWrapper.other)r   r>   r   c                 C   sj   |dkr|  |S |dkr"|  S |dkr4| |S |dkrF| |S |dkrX| |S td| d S )Nr@   Zget_projectsZcreate_issuerR   rK   zGot unexpected mode )rC   r<   rG   rR   rL   
ValueError)r5   r   r>   r#   r#   r$   run   s    



zJiraAPIWrapper.run)__name__
__module____qualname____doc__r   r   __annotations__r   r   r   rA   r   r   r   boolr   Zmodel_configr	   classmethodr   r%   r   rH   r8   r=   rC   r<   rG   rL   rR   rT   r#   r#   r#   r$   r
   
   s*   
7$

r
   N)rX   typingr   r   r   r   Zlangchain_core.utilsr   Zpydanticr   r   r	   r
   r#   r#   r#   r$   <module>   s   