Skip to content

Commit 7b91f73

Browse files
committed
CFP 수정 가능 시점 수정
* CFP 마감 이후 신규제출 불가능 * CFP 마감 후 오픈 리뷰 오픈 전까지는 수정 불가능 * CFP 제출자에 한해서, 오픈리뷰 기간 이후 수정가능 * 수정 불가능한 상황에서 CFP 디테일 페이지에서 수정 페이지로 가는 링크 제거 및 수정 페이지 리디렉트 처리
1 parent b1d4319 commit 7b91f73

File tree

3 files changed

+42
-9
lines changed

3 files changed

+42
-9
lines changed

program/views.py

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -372,6 +372,7 @@ def dispatch(self, request, *args, **kwargs):
372372
def get_context_data(self, **kwargs):
373373
context = super(ProposalDetail, self).get_context_data(**kwargs)
374374
context['title'] = _("Proposal")
375+
context['EDIT_AVAILABLE'] = edit_proposal_available_checker(self.request)
375376
return context
376377

377378

@@ -384,6 +385,12 @@ class ProposalUpdate(SuccessMessageMixin, UpdateView):
384385
def get_object(self, queryset=None):
385386
return get_object_or_404(Proposal, pk=self.request.user.proposal.pk)
386387

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+
387394
def get_context_data(self, **kwargs):
388395
context = super(ProposalUpdate, self).get_context_data(**kwargs)
389396
context['title'] = _("Proposal")
@@ -405,19 +412,17 @@ def form_valid(self, form):
405412
return super(ProposalCreate, self).form_valid(form)
406413

407414
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')
411417

412418
if Proposal.objects.filter(user=request.user).exists():
413419
return redirect('proposal')
414420

415-
if deadline < now:
416-
# 에러 플랫 페이지로 이동
421+
EDIT_AVAILABLE = edit_proposal_available_checker(request)
422+
423+
if EDIT_AVAILABLE is False:
417424
return redirect("/2020/error/closed/")
418425

419-
if request.user.profile.name == '':
420-
return redirect('profile_edit')
421426
return super(ProposalCreate, self).dispatch(request, *args, **kwargs)
422427

423428
def get_success_url(self):
@@ -432,3 +437,25 @@ class ProgramUpdate(UpdateView):
432437
def get_queryset(self):
433438
queryset = super(ProgramUpdate, self).get_queryset()
434439
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

pyconkr/settings.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,8 @@ def static_url(url):
284284

285285
CONSTANCE_BACKEND = 'constance.backends.database.DatabaseBackend'
286286

287+
KST = datetime.timezone(datetime.timedelta(hours=9))
288+
287289
CONSTANCE_CONFIG = {
288290
'SLACK_TOKEN': ('', '홈페이지에서 파준위 슬랙으로 알림을 보내기 위한 토큰'),
289291
'TOTAL_TICKET': (1800, '판매할 전체 티켓 수량'),
@@ -295,7 +297,9 @@ def static_url(url):
295297
'IMP_INTL_API_SECRET': ('', '아임포트 해외용 API SECRET'),
296298
'SHOW_SLIDE_DATA': (False, 'Show slide data on schedule table and program detail'),
297299
'SLACK_CHANNEL': ('#bot-test', '홈페이지에서 파준위 슬랙으로 알림을 보낼 채널'),
298-
'CFP_DEADLINE': (datetime.datetime(2000, 1, 1), 'CFP 마감기간'),
300+
'CFP_DEADLINE': (datetime.datetime(2000, 1, 1, tzinfo=KST), 'CFP 마감기간'),
301+
'OPEN_REVIEW_START': (datetime.datetime(2000, 1, 1, tzinfo=KST), '오픈 리뷰 시작 시점'),
302+
'OPEN_REVIEW_FINISH': (datetime.datetime(2000, 1, 1, tzinfo=KST), '오픈 리뷰 마감 시점'),
299303
}
300304

301305
# For supporting i18n of django modules

pyconkr/templates/pyconkr/proposal_detail.html

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@
88
{% if request.user.proposal %}
99
<h3>
1010
{{ proposal.title }}
11-
<a href="{% url 'proposal-update' %}"><i class="fa fa-pencil-square-o"></i></a>
11+
{% if EDIT_AVAILABLE %}
12+
<a href="{% url 'proposal-update' %}"><i class="fa fa-pencil-square-o"></i></a>
13+
{% endif %}
1214
</h3>
1315
<p>
1416
<span class="label label-info">{{ proposal.get_difficulty_display }}</span>

0 commit comments

Comments
 (0)