wh2api2 1.0.2
wormhole API for Python
Requires Python: >=2
Keywords: wormhole,sdk,wh_api

# Wormhole API for python

### 업데이트 내용
## 1.0.1 (wormhole_version : 1.4.0)
1.  하위 python 2.7에서 대응이 가능하도록 모듈의 import방식변경
    - 기존에 모듈 import끼리 충돌 현상 발생으로 변경
2.  Wh클래스 이름 login으로 변경
    - wh2api.wh.Login(url,id,pw)형태로 변경 
3. project.read에서 조회 버그 수정

## 1.0.2 (wormhole_version : 1.5.0)
1. 관리를 위한 로직을 변경했습니다. (일반사용자는 변경 되는 부분 없음)
    - api_list 추가
    - requests 모듈 한군데에서 작동되도록 변경
2. Task idx만으로 Task의 상세 데이터 조회가 가능해졌습니다. 
    ```python
    wh2api.shot_task.read(task_idx)
    wh2api.asset_task.read(task_idx)
    ```
3. version업로드 시 등록 할 수 있는 옵션이 추가되었습니다.
    - Description 추가
    - cc옵션 추가
    - metadata 옵션 추가
    - 1개의 버전에 여러개의 파일을 업로드 할 수 있습니다.
        - version_path에 list[]형태로 입력해 줍니다.
        - version_path의 첫번째 version은 화면에 가장 처음 표시됩니다.
4. thumbnail_up이름을 thumbnail_update로 변경
    - shot / Asset의 썸네일 업데이트시 함수명이 변경되었습니다.

5. publish APi 추가
    - publish_path의 유효성 검사를 진행 합니다.
    - 필수 입력은 (Task_idx,which,version_idx,Task_Status_idx,Version_status_idx,Publish_path_list)

## 사용방법 (v1.0.1)

## 1. install
웜홀 api는 python3이상에서 원활하게 작동 됩니다. 
pip의 최신버전으로 업데이트 후 설치 하시기 바랍니다. 
```python
pip install --upgrade pip
```
pip패키지 install(필수)
```python
pip install wh2api #웜홀 API
pip install requests
pip install json
```

## 3. 패키지 import

```python
from wh2api import wh
import wh2api
```
## 4. 모듈 첫사용시

```python
wh.login('http://host','id','pw') #로그인 성공시 whtoken을 "Login.whtoken"라는 클래스 변수로 가지고 있음
```

## 5. project
- project.list
```python
wh2api.project.list(finished="")
    # finished = '1' 끝난 프로젝트도 조회
    # 웜홀에 있는 모든 프로젝트를 조회
```

-  project.read
```python
wh2api.project.read(project_idx)
    #Porject의 상세 내용 조회
    #버전업 및 퍼블리시 저장 경로 조회
    #진행 상황 조회
```


## 6. episode
-  episode.list
```python
wh2api.episode.list(project_idx)
    #프로젝트 내부 에피소드 리스트 조회
```


- episode.create
```python
wh2api.episode.create(project_idx,episode_name,description="")
    #에피소드 생성
```

## 7. sequence
- list
```python
wh2api.sequence.list(project_idx,episode_idx)
    #에피소드 내부 시퀀스 리스트 조회
```
- create
wh.sequence.create(project_idx,episode_idx,sequence_name,description="")
    #시퀀스 생성

## 8. shot
- list
```python
wh2api.shot.list(project_idx,episode_idx,sequence_idx)
    #시퀀스 내부 샷 리스트 조회
```

- read
```python
wh2api.shot.read(project_idx,shot_idx)
    #특정 샷의 세부내용 조회
```

- create
```python
wh2api.shot.create(project_idx,episode_idx,sequence_idx,shot_name,description="",status_idx="1")
    #샷 생성
    #status_idx 비어있을때 기본값 1번
```

- thumbnail_update
```python
wh2api.shot.thumbnail_update(project_idx,shot_idx,thumbnail_path)
    #특정샷의 썸네일 업로드
    #Thubmnail_path 입력시 윈도우는 'r'을 붙혀서 업로드 해야 오류 없음
    #ex) r'H:\c2mosnter\test.jpg'
    #지원 포맷 *.jpg, *.png
```

- overview
```python
wh2api.shot.overview(project_idx,episode_idx="")
    #overview페이지 조회
    #episode가 비어있는경우 프로젝트 전체조회
```

- relation
```python
wh2api.shot.relation(project_idx,episode_idx)
    #샷에 연관된 에셋의 목록 조회
    #웜홀의 Relation페이지 연동
```

## 9. shot_Task
- list
```python
wh2api.shot_task.list(project_idx,shot_idx)
    #샷 내부의 Task조회
```

- create
```python
wh2api.shot_task.create(project_idx,shot_idx,tasktype_name)
    #샷내부에 Task 생성
    #중복 될경우 에러 발생
```

- status_change
```python
wh2api.shot_task.status_change(project_idx,task_idx,status_idx)
    #특정 Task의 Task Staus를 변경
```

- start
```python
wh2api.shot_task.start(project_idx,task_idx)
    #Task Start(MyTask>Todo)
```

- stop
```python
wh2api.shot_task.stop(project_idx,task_idx)
    #Task Stop(MyTask>Todo)
```

## 10. category
- list
```python
wh2api.category.list(project_idx)
    #프로젝트 내부에 Asset의 Category조회
```

- create
```python
wh2api.category.create(project_idx,category_name,description="")
    #Category생성
```

## 11. Asset
- list
```python
wh2api.asset.list(project_idx,category_idx)
    #특정 Category의 Asset 조회
```

- create
```python
wh2api.asset.create(project_idx,category_idx,asset_name,description="",status_idx="1")
    #Asset생성
```

- thumbnail_update
```python
wh2api.asset.thumbnail_update(project_idx,asset_idx,thumbnail_path)
    #특정 Asset의 썸네일 업로드
    #Thubmnail_path 입력시 윈도우는 'r'을 붙혀서 업로드 해야 오류 없음
    #ex) r'H:\c2mosnter\test.jpg'
    #지원 포맷 *.jpg, *.png
```

- overview
```python
wh2api.asset.overview(project_idx,category_idx="")
    #Asset Overview조회
```

## 12. asset_Task
- list
```python
wh2api.asset_task.list(project_idx,asset_idx)
    #에셋 내부의 Task조회
```

- create
```python
wh2api.asset_task.create(project_idx,asset_idx,tasktype_name)
    #에셋내부에 Task 생성
    #중복 될경우 에러 발생
```

- status_change
```python
wh2api.asset_task.status_change(project_idx,task_idx,status_idx)
    #특정 Task의 Task Staus를 변경
```

- start
```python
wh2api.asset_task.start(project_idx,task_idx)
    #Task Start(MyTask>Todo)
```

- stop
```python
wh2api.asset_task.stop(project_idx,task_idx)
    #Task Stop(MyTask>Todo)
```

## 13. version
- key
```python
wh2api.version.key(task_idx, which='shot or asset')
    #특정 Task의 Key를 얻어내는 함수
    #Version_key생성
```

- key_read
```python
wh2api.version.key_read(version_key)
    #Version_key 정보 조회
```

- create
```python
wh2api.version.create(task_idx='',
           which='shot or asset',
           version_name='',
           task_status_idx='',
           version_status_idx='',
           reviewer_user_idx='',
           hour_spent='',
           version_path=[],
           metadata= [],
           description="",
           cc_user_idx='',
           thumbnail_path = ""):


    # 윈도우의경우 version Path입력시 'r'을 입력
    #ex) version_path = r'c:\\c2monster\test.mov'
    # 지원 *.mp4
    # 서버에서 컨버팅 하는 과정이 없기때문에 업로드하는 버전의 용량이 클 경우 플레이가 안될 수 있음


    #참조 인원 cc_user_idx=[1,2,3]

    # #version_path와 metadata의 리스트의 개수와 순서는 같아야 합니다.
        # version_path = ['a','b','c'] 
        # metadata = ['a_meta','b_meta','c_meta']

```

## 14. user
- list
```python
wh2api.user.list()
    #웜홀에 가입되있는 유저 조회
```
## 15. team
- list
```python
wh2api.team.list()
    #Team의 목록 조회
```

- user_list
```python
wh2api.team.user_list(team_idx)
    #선택한 Team안에 있는 User조회
```
## 16. mytask
- todo
```python
wh2api.mytask.todo(observed_user_idx="")
    #observed_user_idx가 공백인경우 본인
    #observed_user_idx에 User_idx를 추가할 경우 해당 인원의 MyTask조회
```

- inprogress
```python
wh2api.mytask.inprogress(last="")
    #last입력시 마지막 버전만 조회
```

- done
```python
wh2api.mytask.done()
    #끝난Task조회
```

- cc
```python
wh2api.mytask.cc(last="")
    #last입력시 마지막 버전만 조회

```

## 17. org
- read
```python
wh2api.org.read(org_id='std')
    #std가 기본값임
    #System information 정보 조회 가능
```



## 18. publish
- key
```python
wh2api.publish.key(task_idx, which='shot or asset')
#which는 'shot' 또는 'asset'이라고 입력 합니다.
```
- key_read
```python
wh2api.publish.key_read(publish_key)
#퍼블리시키의 상세정보 조회
#퍼블리시 생성시 사용

```
- create
```python
wh2api.publish.create(task_idx='',
           which='shot or asset',
           version_idx='',
           publish_name ='',
           task_status_idx='',
           version_status_idx='',
           publish_path=[],
           description='',
           tag=''):
#필수 입력값 : Task_idx,which,version_idx,Task_Status_idx,Version_status_idx,Publish_path
#publish_Path는 유효성 겁사를 진행, 해당경로에 파일이나 폴더가 없다면 리스트에서 제외한 후 진행합니다.
# publish_path의 유효성 검사 중, 한개의 파일 또는 폴더가 없다면 프로세스는 종료 됩니다.
```




---
## c2monster 
c2monster는 영화 드라마 제작을 위한 소프트웨어를 개발하는 회사 입니다.
### wormhole

http://wormholepipeline.com


E-mail : wfjo852@c2monster.com , contact@c2monster.com