erp 도전

일정표 구현 4) 수정/삭제

나도초딩 2023. 4. 26.

 

 

------------------------------------------

하튼, 일정표 수정/삭제 작업 후, 원래 위치로 돌아와야 하는데, 좀 애매한 경우가 있었다.

 

수정/삭제 작업

1. 저장된 일정

* 일정이 나(상품번호 touritem의 pk) 를 가리키고 있다.

그래서, 수정/삭제 후, redirect 하면 된다.

 

공유 일정은 다른 상품들과 연동돼있으므로, 같은 곳에서 수정하면 사실 문제가 있다. 바로 수정/삭제 보다는 공유 일정표 수정화면을 만들어서 처리해야할 것이다. 하지만 귀찮고, 기타 등등 잘 가다듬으면 한 곳에서 쉽게 처리할 수 있을 것 같다.

2. 공유 일정

공유 일정은 나를 가리키고 있지 않기 때문에, 공유일정을 수정/삭제 하고, 원래 페이지로 돌아갈 수는 없다.

한참 생각하다가, 수정/삭제 시, 그냥 동일하게 url 파라미터를 실어 보내는 것으로 처리했다.

urls.py

path('delete_iti/<int:pk>/', views.delete_iti, name='delete_iti'),

템플릿에서 링크에 실어 보낸다. ?item=상품pk

<a href="/tour/delete_iti/{{ iti.pk }}/?item={{touritem.pk}}">삭제</a>
def delete_iti(request, pk):
    iti = get_object_or_404(Iti, pk=pk)
    
    url = '/tour/'+(request.GET['item']+'/')

#    if iti.touritem : #저장 일정이면, touritem의 pk가 있는데....
#        touritem = iti.touritem #
#    else:
#        # 고민...ㅠㅠiti 에 touritem 이 없는 경우(공유일정)는? 리디렉트 할 방법이....???
#        touritem = request.GET['item']
    
    if request.user.is_authenticated:
        iti.delete()
# return redirect(touritem.get_absolute_url())
        return redirect(url)
    else:
        raise PermissionDenied

그냥...갖다 붙이고 추가하다보니까, 로직이 역시 더러워졌다. ㅠ

iti 가 touritem이 있으면 저장일정->저장일정은 iti_name 필드를 안보이게.(iti_name이 None이고, tourname이 있으면 저장일정)

공유일정과 저장된 일정을 쉽게 구분하는 로직을 구성하면 좋겠는데... 일단 이대로 하자. ㅠ

이런 사례가 아주 많이 나올테니까.

class ItiUpdate(LoginRequiredMixin, UpdateView):
    model = Iti
    # form_class = ItiForm
    fields = '__all__'
    # 메서드에서 조건에 따라, fields 오버라이딩. 폼클래스에서 변경
    # iti 가 touritem이 있으면 저장일정->저장일정은 iti_name 필드를 안보이게.(iti_name이 None이고, tourname이 있으면 저장일정)
    def dispatch(self, request, *args, **kwargs):
        if request.user.is_authenticated:
            if self.get_object().touritem:
                self.fields = ['day','city','trans','content','food']
            return super(ItiUpdate, self).dispatch(request, *args, **kwargs)
        else:
            raise PermissionDenied

 

잡설

 

그냥 대략 이렇게 하면 되겠지 하고 생각은 나는데, 정작 떠올리고 나서 구현하려면 시간이 너무 오래 걸린다. ㅠ

기본 예제들이나 소스들을 루틴하게 살펴봐야겠다.

 

다행히 장고는 보여주는 인터페이스만 잘 구현하면, 단순 값 입력/수정/삭제는 대부분 admin 으로 대체가 된다. 오류도 없고 훌륭하다.

( 상당수의 많은 ERP 류 홈페이지들이 디자인,프론트만 요즘꺼고, 엄청나게 많은 입력폼들로 구성돼있어서 놀랬다. )

사실, 보여지는 기능보다, ERP 의 목적은 자동화니까, 코딩으로 최대한 입력값을 적게 만들어야 하는데 말이다.

 

모바일이나 제휴 연동시, 데이터를 세분화해서 요구하니까, 이걸 그냥 네모칸만 졸라 만들어서 입력하게 만드는 이런 무식한 짓이 횡행하고 있다. 이게 무슨 기술이냐고.

 

아직도 20년 넘은 asp, php 가 꽤나 존재하는데, 오히려 구닥다리 기술을 쓴 홈피들이 업무 자동화 쪽으로 잘 구현된 것들이 많았다.

참 아이러니야.

 

완전 쓸데없이 뇌를 거치지 않은 잡생각을 적었네. 오죽하면 내가 직접 만들어야지라는 생각이 들었으니까 -_-

그래도, 단기간에 실력이 많이 는 것 같기도 하지만, 여전히 기초도 헷갈리고, 아직도 너무나 헤멘다. 하...

금방 좋아질 것 같긴 하다.

댓글