@@ -372,6 +372,7 @@ def dispatch(self, request, *args, **kwargs):
372
372
def get_context_data (self , ** kwargs ):
373
373
context = super (ProposalDetail , self ).get_context_data (** kwargs )
374
374
context ['title' ] = _ ("Proposal" )
375
+ context ['EDIT_AVAILABLE' ] = edit_proposal_available_checker (self .request )
375
376
return context
376
377
377
378
@@ -384,6 +385,12 @@ class ProposalUpdate(SuccessMessageMixin, UpdateView):
384
385
def get_object (self , queryset = None ):
385
386
return get_object_or_404 (Proposal , pk = self .request .user .proposal .pk )
386
387
388
+ def dispatch (self , request , * args , ** kwargs ):
389
+ if edit_proposal_available_checker (request ) is False :
390
+ return redirect ("/2020/error/closed/" )
391
+
392
+ return super (ProposalUpdate , self ).dispatch (request , * args , ** kwargs )
393
+
387
394
def get_context_data (self , ** kwargs ):
388
395
context = super (ProposalUpdate , self ).get_context_data (** kwargs )
389
396
context ['title' ] = _ ("Proposal" )
@@ -405,19 +412,17 @@ def form_valid(self, form):
405
412
return super (ProposalCreate , self ).form_valid (form )
406
413
407
414
def dispatch (self , request , * args , ** kwargs ):
408
- deadline = constance .config .CFP_DEADLINE
409
- KST = datetime .timezone (datetime .timedelta (hours = 9 ))
410
- now = datetime .datetime .now (tz = KST )
415
+ if request .user .profile .name == '' :
416
+ return redirect ('profile_edit' )
411
417
412
418
if Proposal .objects .filter (user = request .user ).exists ():
413
419
return redirect ('proposal' )
414
420
415
- if deadline < now :
416
- # 에러 플랫 페이지로 이동
421
+ EDIT_AVAILABLE = edit_proposal_available_checker (request )
422
+
423
+ if EDIT_AVAILABLE is False :
417
424
return redirect ("/2020/error/closed/" )
418
425
419
- if request .user .profile .name == '' :
420
- return redirect ('profile_edit' )
421
426
return super (ProposalCreate , self ).dispatch (request , * args , ** kwargs )
422
427
423
428
def get_success_url (self ):
@@ -432,3 +437,25 @@ class ProgramUpdate(UpdateView):
432
437
def get_queryset (self ):
433
438
queryset = super (ProgramUpdate , self ).get_queryset ()
434
439
return queryset .filter (speakers__email = self .request .user .email )
440
+
441
+
442
+ def edit_proposal_available_checker (request ):
443
+ KST = datetime .timezone (datetime .timedelta (hours = 9 ))
444
+ now = datetime .datetime .now (tz = KST )
445
+ flag = False
446
+
447
+ cfp_deadline = constance .config .CFP_DEADLINE .replace (tzinfo = KST )
448
+ open_review_start = constance .config .OPEN_REVIEW_START .replace (tzinfo = KST )
449
+ open_review_finish = constance .config .OPEN_REVIEW_FINISH .replace (tzinfo = KST )
450
+
451
+ # CFP 마감 이후에 오픈리뷰를 시작한다는 가정
452
+ if open_review_finish < now and Proposal .objects .filter (user = request .user ).exists ():
453
+ print ('제출한 CFP가 있는 경우, 오픈리뷰 마감 후에는 수정 가능' )
454
+ flag = True
455
+
456
+ # CFP가 마감된 경우
457
+ elif cfp_deadline > now :
458
+ print ("CFP 마감 상태" )
459
+ flag = True
460
+
461
+ return flag
0 commit comments