Model changed
기존에 계획하였던 Date 안에 Folder 안에 Photo들을 배치하는 방식 대신 date_folder(20180101_Paris)형태로 folder name을 지어 해당 folder에 Photo를 넣는 형태로 변경하였습니다. #37 참고.
이렇게 변경하여 Photo model은 Foreign Key로 Folder를 가지고 있도록 하였고 Folder의 경우 Foreign Key로 Trip을 Foreign Key로 가지고 있도록 하였습니다. 또한 Photo의 경우 특정 trip에 해당하는 Photo를 filter 하기 위해 Trip을 Foreign Key로 가지고 있도록 하였습니다. 또한 diary에 contents를 적을 수 있기 때문에 Photo model에서 content field는 제거하였습니다. 변경된 Model은 여기서 확인하실 수 있습니다. 또한 Photo는 url의 형태로 backend에 저장해두도록 하였으며 frontend에서는 이 url을 받아 사진을 보여주게 될 것입니다.
View Changed
Photo의 경우 add와 delete 만 가능하도록 하였습니다. 이에 따라 RetrieveUpdateDestroy view이었던 Photo detail view를 RetrieveDestroy view로 변경하였습니다.
Folder model이 추가됨에 따라 이에 해당하는 view를 새로 만들었습니다. Foler List view, Folder Detail view, Folder of Trip view가 새로 추가되었습니다. 다른 Detail view와 달리 Folder Detail view는 Folder가 Folder name을 primary key로 가지고 있기 때문에 /api/folders/의 url로 접속이 가능합니다. 변경된 Restful API는 여기서 확인하실 수 있습니다.
folder name을 입력하여 folder 를 새로 생성할 수 있는 folder list view는 다음과 같습니다.
folder name과 해당 folder에 들어있는 photo들의 id가 들어있는 photo detail view는 다음과 같습니다.
특정 trip안에 있는 folder들의 list들을 보여주는 folder of trip view는 다음과 같습니다.
url이 반영된 photo list view는 다음과 같습니다.
변경된 backend에 대한 testing 후의 결과는 다음과 같습니다. (8개의 test가 추가되었습니다)
Add Photo page에서 해당 trip에 해당하는 folder들만 backend로부터 받아와 이를 sort하여 보여준 화면은 다음과 같습니다. 기존 folder들의 맨 아래에는 +Add Folder버튼이 있어 이를 누르면 folder를 추가할 수 있는 pop up이 뜨도록 구현하였습니다.
Add Folder 버튼을 누를 시 나오는 pop up 화면은 다음과 같으며 create button을 누르면 backend로 POST가 되도록 구현하였습니다.
antd upload component를 이용하여 fileList를 저장할 시 javascript file object가 아닌 uploadfile object로 저장되어 preview를 지원하도록 되어 있었습니다. 이 object는 axios로 formdata를 전송할 시 file로 인식이 되지 않아 전송이 되지 않는 문제가 있었습니다.
antd uploadfile object를 사용하되, 그 내부의 file object를 추출하여 backend로 보내는 방식을 이용하여 preview도 가능하면서 post도 가능하게 수정하였습니다.
Backend modification for Photo page
Model changed 기존에 계획하였던 Date 안에 Folder 안에 Photo들을 배치하는 방식 대신 date_folder(20180101_Paris)형태로 folder name을 지어 해당 folder에 Photo를 넣는 형태로 변경하였습니다. #37 참고. 이렇게 변경하여 Photo model은 Foreign Key로 Folder를 가지고 있도록 하였고 Folder의 경우 Foreign Key로 Trip을 Foreign Key로 가지고 있도록 하였습니다. 또한 Photo의 경우 특정 trip에 해당하는 Photo를 filter 하기 위해 Trip을 Foreign Key로 가지고 있도록 하였습니다. 또한 diary에 contents를 적을 수 있기 때문에 Photo model에서 content field는 제거하였습니다. 변경된 Model은 여기서 확인하실 수 있습니다. 또한 Photo는 url의 형태로 backend에 저장해두도록 하였으며 frontend에서는 이 url을 받아 사진을 보여주게 될 것입니다.
View Changed Photo의 경우 add와 delete 만 가능하도록 하였습니다. 이에 따라 RetrieveUpdateDestroy view이었던 Photo detail view를 RetrieveDestroy view로 변경하였습니다. Folder model이 추가됨에 따라 이에 해당하는 view를 새로 만들었습니다. Foler List view, Folder Detail view, Folder of Trip view가 새로 추가되었습니다. 다른 Detail view와 달리 Folder Detail view는 Folder가 Folder name을 primary key로 가지고 있기 때문에 /api/folders/의 url로 접속이 가능합니다. 변경된 Restful API는 여기서 확인하실 수 있습니다.
folder name을 입력하여 folder 를 새로 생성할 수 있는 folder list view는 다음과 같습니다.
folder name과 해당 folder에 들어있는 photo들의 id가 들어있는 photo detail view는 다음과 같습니다.
특정 trip안에 있는 folder들의 list들을 보여주는 folder of trip view는 다음과 같습니다.
url이 반영된 photo list view는 다음과 같습니다.
변경된 backend에 대한 testing 후의 결과는 다음과 같습니다. (8개의 test가 추가되었습니다)