2022-02-22
1. 예약취소 안됨 (해결)
2. 예약하고나서 내예약에 뜰수도있고 안뜰수도있음 -> 오늘날짜 이전 예약은 예약현황에 안뜸 (해결)
3. 예약사이트에서 장비바꾸면 예약현황안뜸 홈화면돌아가서 장비바꾸면 예약현황뜸 (해결)
4. 다른사람이 예약한거 누가했는지 못봄 (미해결) -> 어떻게 하는지는 알겠는데 자바스크립트를 몰라서 변수를못쓰고있음
def delete(request, reservation_id):
reservation= get_object_or_404(Reservation, pk= reservation_id) # 특정 객체 가져오기(없으면 404 에러)
if reservation.user == request.user.username:
reservation.delete()
return redirect('/reservation/my')
이렇게 되어있는거를
def delete(request, reservation_id):
reservation = get_object_or_404(Reservation, pk=reservation_id)
if reservation.author == request.user:
reservation.delete()
return redirect('/reservation/my')
이렇게바꿨다. 사용자 모델 변수명을 user에서 author로 바꿨었는데, veiws에서는 user로 놔둬서 생긴 에러였다.
그리고 reservation.author와 request.user가 매칭되어야하는데 user.username이 매칭되어서 생긴에러기도하다.
2022-02-23
1. 예약창에서 다른장비로 옮기면 gui도 움직여서 클릭한 장비이름을 가리켜야하는데 가만히있음 -> 색변경하고 버튼 width늘리니까 사라짐 (없어도됨)
2. 지난주 예약기록 볼 수 있게 기능넣어야함 (미해결)
3. 후드와 칠러의 경우 종류가 여러가지라서 예약창이 더필요함 (미해결)
4. 로그인고쳐야함.. (미해결)
5. 중복예약됨 -> ajax 통신이 제대로 안되서 그런건데, TypeError: strptime() argument 1 must be str, not None
에러가 뜬다. -> 변수명 통일안해서 그랬음. 변수명 수정하니 됨 (해결)
6. 예약이 2시간까지만됨 (해결)
7. UTM, 가교기는 chart 작동안함 -> 당일 예약만 차트 작동 (해결)
8. 예약취소하면 내 예약에서는 사라지는데 테이블에서는 안사라짐 (미해결)
// finish 시간 세팅
function finishSet(){
$('#equip_finish_time').empty();
var start_time = $('#equip_start_time').val(); // 시작시간 가져오기
var hour = Math.floor(start_time); // 시 가져오기
var min = start_time-hour // 분 가져오기
for(var cnt = 0; cnt<4; cnt++){
// 시간 늘리기
min = min+0.5;
if(min == 1){
hour+=1;
min=0;
}
// 탈출 조건
if(hour+min == 21.5){
break;
}
// 출력양식 조절
if(hour == 9 && min== 0.5){
var option = $("<option value="+(hour+min)+">0"+hour+":"+ "30</option>");
}
else if(min==0){
var option = $("<option value="+(hour+min)+">"+hour+":"+ min + "0</option>");
}
else{
var option = $("<option value="+(hour+min)+">"+hour+":" +"30</option>");
}
$('#equip_finish_time').append(option);
}
}
for에 cnt<4로 되어있어서 그런거였다. 오후6시까지 나오게 하기 위해 아래처럼 바꿨다.
// finish 시간 세팅
function finishSet(){
$('#equip_finish_time').empty();
var start_time = $('#equip_start_time').val(); // 시작시간 가져오기
var hour = Math.floor(start_time); // 시 가져오기
var min = start_time-hour // 분 가져오기
for(var cnt = 0; cnt<19; cnt++){
// 시간 늘리기
min = min+0.5;
if(min == 1){
hour+=1;
min=0;
}
// 탈출 조건
if(hour+min == 18.5){
break;
}
// 출력양식 조절
if(hour == 9 && min== 0.5){
var option = $("<option value="+(hour+min)+">0"+hour+":"+ "30</option>");
}
else if(min==0){
var option = $("<option value="+(hour+min)+">"+hour+":"+ min + "0</option>");
}
else{
var option = $("<option value="+(hour+min)+">"+hour+":" +"30</option>");
}
$('#equip_finish_time').append(option);
}
}
def check(request):
equipment_type_vr = request.POST.get('equipment_type', None)
equipment_date_vr = request.POST.get('equipment_date', None) # ajax 통신으로 template에서 POST방식으로 전달
equip_start_time_vr = request.POST.get('equip_start_time', None)
equip_finish_time_vr = request.POST.get('equip_finish_time', None)
reservations = Reservation.objects.all()
reserve_date = datetime.strptime(equipment_date_vr, "%Y-%m-%d ").date()
check_error = 0 # 정상
# 겹치는 시간 있는지 체크
message = "이미 예약된 시간입니다."
# 고쳐봐야겠음 왜 if로 하지 ?
# <1> 오른쪽 겹치기
# start 시간보다 크고 finish 시간보다 작다
if reservations.filter(equipment_type=equipment_type_vr, equipment_date=reserve_date, equip_finish_time__gt=equip_start_time_vr, equip_start_time__lt=equip_finish_time_vr).count() != 0:
check_error = 1
context = {
"message":message,
'check_error':check_error
}
return HttpResponse(json.dumps(context), content_type="application/json")
# <2> 사이 들어가기
# start 시간보다 작거나 같고 finish 시간보다 크거나 같다
# if reservations.filter(equipment_type=equipment_type_vr, equipment_date=reserve_date, equip_finish_time__lte=equip_start_time_vr, equip_start_time__gte=equip_finish_time_vr).count() != 0:
# check_error = 1
# context = {
# "message":message,
# 'check_error':check_error
# }
# return HttpResponse(json.dumps(context), content_type="application/json")
# <3> 오른쪽 포개지기
# start 시간보다 작고 finish 시간보다 크다
if reservations.filter(equipment_type=equipment_type_vr, equipment_date=reserve_date, equip_finish_time__lt=equip_finish_time_vr, equip_start_time__gt=equip_start_time_vr).count() != 0:
check_error = 1
context = {
"message":message,
'check_error':check_error
}
return HttpResponse(json.dumps(context), content_type="application/json")
# <4> 밖에 감싸기
# start 시간보다 크거나 같고 finish 시간보다 작거나 같다
# if reservations.filter(equipment_type=equipment_type_vr, equipment_date=reserve_date, equip_finish_time__gte=equip_start_time_vr, equip_start_time__lte=equip_finish_time_vr).count() != 0:
# check_error = 1
# context = {
# "message":message,
# 'check_error':check_error
# }
# return HttpResponse(json.dumps(context), content_type="application/json")
# <5> 가능
context = {
'message':message,
'check_error':check_error
}
return HttpResponse(json.dumps(context), content_type="application/json")