일정표 공유 기능에 이어서, 상품 복사 기능을 구현하기로 했다.
사실 이게 여행 ERP 의 핵심일 것이다.
1/1 3박5일 다낭 상품을 앞으로 1년 동안 복사한다.
근데, 이 상품은 주 2회 매주 목, 일만 운항한다. 요런 식이다.
목요일은 3박5일, 일요일은 4박6일이라면,
1. 목요일, 일요일 대표 상품을 만든다.
2. 복사할 원본상품을 클릭해서, 지정한 기간 동안 상품을 반복한다. ( --> 반복할 요일 input 받아서, list 로 만들기 )
3. 이미 해당날짜에 같은 상품이 있을 경우 처리. ( --> 기 등록된 날짜 list 로 만들기)
- 덮어쓸지? (지우고, 생성)
- 통과할지
그렇게 복잡한 로직은 아닌데, 이게 장고로 하니까 상당히 복잡하고, 뇌에 마비가 자주 왔다. ㅠㅠ

대표 일정 복사 클릭

1. 요일 체크
- - 템플릿에서는 인풋박스 name="yoil" 을 같은 값으로 주고,
- - 장고 뷰에서 Post.getlist('yoil') 로 리스트로 받는다.
yoil = ["0","1","2",.....] 식으로 문자열 리스트가 만들어진다.
** 지정한 날짜가 체크한 요일에 해당하는지 검사
yoil 리스트에 문자열로 저장돼있기 때문에, 요소 검사시, str()로 변환 후, 검사해야 한다.
1-1 자바스크립트 전체 체크
자바스크립트를 잘 못해서 -_- 그냥 복붙으로만 썼었는데, 안먹히는 것도 많았고, 파이썬과 같이 쓰려하니, 고려할 것들이 있었다.
대표적으로 js 로 클래스 선택시,
머 하튼, 오래되고, 잘못된 전체선택 코드, j쿼리 코드 ... 중복 쩌는 희한한 코드 등이 많이 있었다. 뭐 나도 복붙해서 썼었으니깐. ㅋㅋㅋ
이건 아주 살짝 바꿨다. -_-;
뭔가 코드를 더 간소하게 만들 수도 있을 것 같은데, forEach ? 흠
** 요일 자체를 리스트에서 보내면, html 을 반복문으로 간소화시킬 수 있겠다... 이게 핵심이였다. 나중에 해봐야짐
yoil_list = [0,1,2,3,4,5,6] 을 템플릿으로 보내서, {% for y in yoil_list %} 뭐 요런 식으로 하면, inpubox 7개 복붙하는걸 줄일 수 있지 않나 싶은데... 해야되나? 디자인 변경할 때, 아무래도 유리하게띠?
function checkAll(){
const all = document.getElementById('all')
const yoil =document.getElementsByName('yoil')
if(all.checked == true){
for(i=0; i<yoil.length ;i++){
yoil[i].checked = true;
}
} else if(all.checked == false) {
for(i=0; i<yoil.length;i++){
yoil[i].checked = false;
}
}
return;
}
2. 복사하려는 날짜에 이미 상품이 있는지 체크
이 부분이 좀 어렵고 복잡한 요소가 있었는데, 아호 지난 주에 개고생 했던 것들이 조합이 돼서 쉽게 해결됐다.
-_-;; 아후 끔띡해
3. 모델 변경 필요
모델에 치명적인 에러가 있다는 것을 알게됐다.
뒤집어야 하는구먼 -_-;;;
출발일만 필드에 넣고, 매개변수 값을 필드에 등록해서 출도착일을 뽑아주는 방식으로 생각했는데, 삽질이였어...
출,도착일, 시간등을 최초에 모두 집어넣고,
계산을 위한 매개변수는 모델의 메서드로 처리했어야 했다. 에혀... 끄응.... 이런게 경험이게띠. 뭐 좋은 경험했다.
계산해서 키인하는 멍청한 짓을 생각했다니. ㅠㅠ
다 뒤집어야하는구먼. ㅠㅠ
4. 중간 점검
이제 전체 로직을 구현함에 있어서 특별히 풀지 못하는 문제는 없는 것 같다.
허접한 코딩일지라도 스스로 생각해서 풀어낸거니, 다 할 수 있을거다.
여러 조건으로 조회할 수 있고,
조회한 레코드를 체크박스 등으로 전송 받은 후,
데이터를 조작하는 법을 모두 수행해봤다. ( 검사 후, 일괄 복사 , 생성 등 )
수정이나 삭제 는 같은 맥락이니 문제될건 없겠고...
5. To Do
이제 가장 싫은 폼 디자인 구현을 익혀야겠다. 이것도 날잡고 딱 해야지. 끙. 시간을 정해서 딱 끝내자.
대충 훑어만 봐서, 쓰지도 못하지만 매우 흥미 진진했던 자바스크립트도 빠짝 공부하고 싶고,
장고는 다른 실전 예제들 소스 파악, 내껄로 만들기
장고는 머리에 떠오르면 바로 코딩할 수 있도록, 연습이 더 필요하겠다.
여행 ERP 로
- 블록 공유 시스템, 좌석 - 3일
- 판매가 및 일괄 정보 수정 시스템. 3일
- 고객 관리 :: 글쎄?? 1주일?
- 정산 시스템 ::: 1주일 ??? 혹은 그 이상?
아직 B2C 화면, 판매 시스템을 고려한 것은 아니니까, 아마 이 정도 걸릴꺼고,
B2C 로 구성한다면, 일정표에 들어가는 호텔, 관광지 등 컨텐츠를 등록 수정하는 시스템을 구현해야할 거다.
더 문제는 내가 프론트는 공부를 안해서, 극히 취약하다는 거다.
뭐 뼈대만 만든다면 그리 오래 걸리진 않을꺼다.
모 어찌됐건, 스스로 ERP 를 만들 수 있다는 .. 뿌듯함.
고도화보다는 , 효율성을 찾아서 , 크롤링이나 프론트 학습에 더 투자하고자 한다.
* 뱀발
장고.... 학습 커브가 너무 높다.
하...
함수뷰로만 구현이 다 된다지만, 소스들이 클래스뷰들이 많아서 함수뷰만 결코 고집할 수 없고,
클래스뷰를 사용하려하면, 필수적으로 함수뷰는 기본빵 빠삭해야하고,
게다가 같은 동작을 구현하기 위해, 갖가기 뷰들의 로직을 다 알고 있어야 한다.
결국 다 알아야 한다는 말.
장고만을 위해 알아야할게 너무 많다는 치명적인 문제...
이건 ... 하...증말.
머라해야 되나.
웹을 위해서는 노드js 나 php 가 훨씬 간편하겠다.
php 는 쓰는 사람이 계속 줄어들고 있지만, 그누보드, 워드프레스 뿐 아니라, 어마어마한 프리소스들이 많고...
노드 js 는 자바스크립트와 함께 간편 깔끔 그 자체고.
장고는 이거 뭐라 해야 되나.... 아휴...........
'erp 도전' 카테고리의 다른 글
일괄 수정 구현1) : 한 페이지에 멀티폼 구현 (0) | 2023.05.04 |
---|---|
모델 완전 뜯어 고침 ㅠㅠ (0) | 2023.05.03 |
invalid literal for int() with base 10: b'00:00:00' (0) | 2023.05.02 |
장고 messages.add_message(request, ) (0) | 2023.05.01 |
주화입마에 빠져서, 기본기 다지기를 병행하기로 (0) | 2023.04.28 |
dispatch 메서드: self.get_object() , self.object (1) | 2023.04.27 |
일정표 구현 4) 수정/삭제 (0) | 2023.04.26 |
레코드 복사, 반복문 추가, bulk_update 등 (0) | 2023.04.26 |
댓글