Joining contest also leaves current contest
This commit is contained in:
parent
345684300f
commit
86d1ff4eaa
6 changed files with 151 additions and 137 deletions
|
@ -186,21 +186,17 @@ class PostView(TitleMixin, CommentedDetailView, PageVoteDetailView, BookMarkDeta
|
|||
context["og_image"] = self.object.og_image
|
||||
context["editable_orgs"] = []
|
||||
|
||||
can_edit = False
|
||||
orgs = list(self.object.organizations.all())
|
||||
|
||||
if self.request.profile:
|
||||
if self.request.profile.id in self.object.get_authors():
|
||||
can_edit = True
|
||||
|
||||
for org in orgs:
|
||||
if org.is_admin(self.request.profile):
|
||||
can_edit = True
|
||||
|
||||
if can_edit:
|
||||
for org in orgs:
|
||||
if org.is_member(self.request.profile):
|
||||
context["editable_orgs"].append(org)
|
||||
for org in orgs:
|
||||
if org.is_member(self.request.profile):
|
||||
context["editable_orgs"].append(org)
|
||||
else:
|
||||
for org in orgs:
|
||||
if org.is_admin(self.request.profile):
|
||||
context["editable_orgs"].append(org)
|
||||
|
||||
return context
|
||||
|
||||
|
|
|
@ -468,6 +468,10 @@ class ContestDetail(
|
|||
)
|
||||
context["editable_organizations"] = self.get_editable_organizations()
|
||||
context["is_clonable"] = is_contest_clonable(self.request, self.object)
|
||||
if self.request.in_contest:
|
||||
context["current_contest"] = self.request.participation.contest
|
||||
else:
|
||||
context["current_contest"] = None
|
||||
return context
|
||||
|
||||
|
||||
|
@ -587,12 +591,7 @@ class ContestJoin(LoginRequiredMixin, ContestMixin, BaseDetailView):
|
|||
|
||||
profile = request.profile
|
||||
if profile.current_contest is not None:
|
||||
return generic_message(
|
||||
request,
|
||||
_("Already in contest"),
|
||||
_('You are already in a contest: "%s".')
|
||||
% profile.current_contest.contest.name,
|
||||
)
|
||||
profile.remove_contest()
|
||||
|
||||
if (
|
||||
not request.user.is_superuser
|
||||
|
@ -671,6 +670,7 @@ class ContestJoin(LoginRequiredMixin, ContestMixin, BaseDetailView):
|
|||
profile.save()
|
||||
contest._updating_stats_only = True
|
||||
contest.update_user_count()
|
||||
request.session["contest_mode"] = True
|
||||
return HttpResponseRedirect(reverse("problem_list"))
|
||||
|
||||
def ask_for_access_code(self, form=None):
|
||||
|
|
|
@ -2,7 +2,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: lqdoj2\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-04-23 14:12+0700\n"
|
||||
"POT-Creation-Date: 2024-04-25 10:33+0700\n"
|
||||
"PO-Revision-Date: 2021-07-20 03:44\n"
|
||||
"Last-Translator: Icyene\n"
|
||||
"Language-Team: Vietnamese\n"
|
||||
|
@ -118,7 +118,7 @@ msgid "Included contests"
|
|||
msgstr ""
|
||||
|
||||
#: judge/admin/contest.py:80 judge/admin/volunteer.py:54
|
||||
#: templates/contest/clarification.html:42 templates/contest/contest.html:120
|
||||
#: templates/contest/clarification.html:42 templates/contest/contest.html:116
|
||||
#: templates/contest/moss.html:41 templates/internal/left-sidebar.html:2
|
||||
#: templates/internal/problem/problem.html:41 templates/problem/list.html:17
|
||||
#: templates/problem/list.html:34 templates/problem/list.html:153
|
||||
|
@ -138,9 +138,9 @@ msgstr ""
|
|||
msgid "Details"
|
||||
msgstr "Chi tiết"
|
||||
|
||||
#: judge/admin/contest.py:187 templates/contest/list.html:261
|
||||
#: templates/contest/list.html:301 templates/contest/list.html:345
|
||||
#: templates/contest/list.html:382
|
||||
#: judge/admin/contest.py:187 templates/contest/list.html:266
|
||||
#: templates/contest/list.html:306 templates/contest/list.html:350
|
||||
#: templates/contest/list.html:387
|
||||
msgid "Format"
|
||||
msgstr "Thể thức"
|
||||
|
||||
|
@ -253,7 +253,7 @@ msgid "Taxonomy"
|
|||
msgstr ""
|
||||
|
||||
#: judge/admin/problem.py:230 judge/admin/problem.py:463
|
||||
#: templates/contest/contest.html:121
|
||||
#: templates/contest/contest.html:117
|
||||
#: templates/contest/contests_summary.html:41 templates/problem/data.html:536
|
||||
#: templates/problem/list.html:22 templates/problem/list.html:48
|
||||
#: templates/user/base-users-table.html:10 templates/user/user-about.html:36
|
||||
|
@ -426,9 +426,9 @@ msgstr[0] "%d bài nộp đã được tính điểm lại."
|
|||
msgid "Rescore the selected submissions"
|
||||
msgstr "Tính điểm lại cái bài nộp"
|
||||
|
||||
#: judge/admin/submission.py:332 templates/contest/list.html:246
|
||||
#: templates/contest/list.html:290 templates/contest/list.html:334
|
||||
#: templates/contest/list.html:376 templates/notification/list.html:12
|
||||
#: judge/admin/submission.py:332 templates/contest/list.html:251
|
||||
#: templates/contest/list.html:295 templates/contest/list.html:339
|
||||
#: templates/contest/list.html:381 templates/notification/list.html:12
|
||||
#: templates/organization/requests/log.html:10
|
||||
#: templates/organization/requests/pending.html:20
|
||||
#: templates/problem/list.html:154
|
||||
|
@ -2788,141 +2788,132 @@ msgstr "Bạn phải giải ít nhất một bài trước khi được phép b
|
|||
msgid "Posted comment"
|
||||
msgstr "Bình luận đã đăng"
|
||||
|
||||
#: judge/views/contests.py:122 judge/views/contests.py:406
|
||||
#: judge/views/contests.py:411 judge/views/contests.py:708
|
||||
#: judge/views/contests.py:122 judge/views/contests.py:405
|
||||
#: judge/views/contests.py:410 judge/views/contests.py:710
|
||||
msgid "No such contest"
|
||||
msgstr "Không có contest nào như vậy"
|
||||
|
||||
#: judge/views/contests.py:123 judge/views/contests.py:407
|
||||
#: judge/views/contests.py:123 judge/views/contests.py:406
|
||||
#, python-format
|
||||
msgid "Could not find a contest with the key \"%s\"."
|
||||
msgstr "Không tìm thấy kỳ thi với mã \"%s\"."
|
||||
|
||||
#: judge/views/contests.py:142 judge/views/contests.py:1478
|
||||
#: judge/views/stats.py:178 templates/contest/list.html:242
|
||||
#: templates/contest/list.html:286 templates/contest/list.html:330
|
||||
#: templates/contest/list.html:372
|
||||
#: judge/views/contests.py:142 judge/views/contests.py:1480
|
||||
#: judge/views/stats.py:178 templates/contest/list.html:247
|
||||
#: templates/contest/list.html:291 templates/contest/list.html:335
|
||||
#: templates/contest/list.html:377
|
||||
#: templates/organization/org-left-sidebar.html:5 templates/stats/site.html:21
|
||||
#: templates/user/user-bookmarks.html:56
|
||||
msgid "Contests"
|
||||
msgstr "Kỳ thi"
|
||||
|
||||
#: judge/views/contests.py:411
|
||||
#: judge/views/contests.py:410
|
||||
msgid "Could not find such contest."
|
||||
msgstr "Không tìm thấy kỳ thi nào như vậy."
|
||||
|
||||
#: judge/views/contests.py:419
|
||||
#: judge/views/contests.py:418
|
||||
#, python-format
|
||||
msgid "Access to contest \"%s\" denied"
|
||||
msgstr "Truy cập tới kỳ thi \"%s\" bị từ chối"
|
||||
|
||||
#: judge/views/contests.py:490
|
||||
#: judge/views/contests.py:496
|
||||
msgid "Clone Contest"
|
||||
msgstr "Nhân bản kỳ thi"
|
||||
|
||||
#: judge/views/contests.py:582
|
||||
#: judge/views/contests.py:588
|
||||
msgid "Contest not ongoing"
|
||||
msgstr "Kỳ thi đang không diễn ra"
|
||||
|
||||
#: judge/views/contests.py:583
|
||||
#: judge/views/contests.py:589
|
||||
#, python-format
|
||||
msgid "\"%s\" is not currently ongoing."
|
||||
msgstr "\"%s\" kỳ thi đang không diễn ra."
|
||||
|
||||
#: judge/views/contests.py:590
|
||||
msgid "Already in contest"
|
||||
msgstr "Đã ở trong kỳ thi"
|
||||
|
||||
#: judge/views/contests.py:591
|
||||
#, python-format
|
||||
msgid "You are already in a contest: \"%s\"."
|
||||
msgstr "Bạn đã ở trong kỳ thi: \"%s\"."
|
||||
|
||||
#: judge/views/contests.py:601
|
||||
#: judge/views/contests.py:602
|
||||
msgid "Banned from joining"
|
||||
msgstr "Bị cấm tham gia"
|
||||
|
||||
#: judge/views/contests.py:603
|
||||
#: judge/views/contests.py:604
|
||||
msgid ""
|
||||
"You have been declared persona non grata for this contest. You are "
|
||||
"permanently barred from joining this contest."
|
||||
msgstr "Bạn không được phép tham gia kỳ thi này."
|
||||
|
||||
#: judge/views/contests.py:692
|
||||
#: judge/views/contests.py:694
|
||||
#, python-format
|
||||
msgid "Enter access code for \"%s\""
|
||||
msgstr "Nhập mật khẩu truy cập cho \"%s\""
|
||||
|
||||
#: judge/views/contests.py:709
|
||||
#: judge/views/contests.py:711
|
||||
#, python-format
|
||||
msgid "You are not in contest \"%s\"."
|
||||
msgstr "Bạn không ở trong kỳ thi \"%s\"."
|
||||
|
||||
#: judge/views/contests.py:732
|
||||
#: judge/views/contests.py:734
|
||||
msgid "ContestCalendar requires integer year and month"
|
||||
msgstr "Lịch thi yêu cầu giá trị cho năm và tháng là số nguyên"
|
||||
|
||||
#: judge/views/contests.py:790
|
||||
#: judge/views/contests.py:792
|
||||
#, python-format
|
||||
msgid "Contests in %(month)s"
|
||||
msgstr "Các kỳ thi trong %(month)s"
|
||||
|
||||
#: judge/views/contests.py:791
|
||||
#: judge/views/contests.py:793
|
||||
msgid "F Y"
|
||||
msgstr "F Y"
|
||||
|
||||
#: judge/views/contests.py:851
|
||||
#: judge/views/contests.py:853
|
||||
#, python-format
|
||||
msgid "%s Statistics"
|
||||
msgstr "%s Thống kê"
|
||||
|
||||
#: judge/views/contests.py:1159
|
||||
#: judge/views/contests.py:1161
|
||||
#, python-format
|
||||
msgid "%s Rankings"
|
||||
msgstr "%s Bảng điểm"
|
||||
|
||||
#: judge/views/contests.py:1170
|
||||
#: judge/views/contests.py:1172
|
||||
msgid "???"
|
||||
msgstr "???"
|
||||
|
||||
#: judge/views/contests.py:1197
|
||||
#: judge/views/contests.py:1199
|
||||
#, python-format
|
||||
msgid "Your participation in %s"
|
||||
msgstr "Lần tham gia trong %s"
|
||||
|
||||
#: judge/views/contests.py:1198
|
||||
#: judge/views/contests.py:1200
|
||||
#, python-format
|
||||
msgid "%s's participation in %s"
|
||||
msgstr "Lần tham gia của %s trong %s"
|
||||
|
||||
#: judge/views/contests.py:1212
|
||||
#: judge/views/contests.py:1214
|
||||
msgid "Live"
|
||||
msgstr "Trực tiếp"
|
||||
|
||||
#: judge/views/contests.py:1231 templates/contest/contest-tabs.html:21
|
||||
#: judge/views/contests.py:1233 templates/contest/contest-tabs.html:21
|
||||
msgid "Participation"
|
||||
msgstr "Lần tham gia"
|
||||
|
||||
#: judge/views/contests.py:1280
|
||||
#: judge/views/contests.py:1282
|
||||
#, python-format
|
||||
msgid "%s MOSS Results"
|
||||
msgstr "%s Kết quả MOSS"
|
||||
|
||||
#: judge/views/contests.py:1316
|
||||
#: judge/views/contests.py:1318
|
||||
#, python-format
|
||||
msgid "Running MOSS for %s..."
|
||||
msgstr "Đang chạy MOSS cho %s..."
|
||||
|
||||
#: judge/views/contests.py:1339
|
||||
#: judge/views/contests.py:1341
|
||||
#, python-format
|
||||
msgid "Contest tag: %s"
|
||||
msgstr "Nhãn kỳ thi: %s"
|
||||
|
||||
#: judge/views/contests.py:1354 judge/views/ticket.py:67
|
||||
#: judge/views/contests.py:1356 judge/views/ticket.py:67
|
||||
msgid "Issue description"
|
||||
msgstr "Mô tả vấn đề"
|
||||
|
||||
#: judge/views/contests.py:1397
|
||||
#: judge/views/contests.py:1399
|
||||
#, python-format
|
||||
msgid "New clarification for %s"
|
||||
msgstr "Thông báo mới cho %s"
|
||||
|
@ -3065,7 +3056,7 @@ msgid "You are not allowed to access this organization."
|
|||
msgstr "Bạn không được phép chỉnh sửa tổ chức này."
|
||||
|
||||
#: judge/views/organization.py:245 judge/views/stats.py:184
|
||||
#: templates/contest/list.html:89 templates/problem/list-base.html:91
|
||||
#: templates/contest/list.html:94 templates/problem/list-base.html:91
|
||||
#: templates/stats/site.html:33 templates/user/user-left-sidebar.html:4
|
||||
#: templates/user/user-list-tabs.html:6
|
||||
msgid "Groups"
|
||||
|
@ -3212,7 +3203,7 @@ msgstr "Bạn không được phép chỉnh sửa tổ chức này."
|
|||
#: judge/views/organization.py:960 templates/blog/blog.html:31
|
||||
#: templates/comments/content-list.html:53
|
||||
#: templates/comments/content-list.html:66
|
||||
#: templates/contest/contest-tabs.html:37 templates/contest/list.html:123
|
||||
#: templates/contest/contest-tabs.html:37 templates/contest/list.html:128
|
||||
#: templates/contest/tag-title.html:9 templates/flatpages/admin_link.html:3
|
||||
#: templates/license.html:10 templates/problem/editorial.html:15
|
||||
#: templates/problem/feed/items.html:50
|
||||
|
@ -3258,7 +3249,7 @@ msgstr "Hướng dẫn cho {0}"
|
|||
msgid "Editorial for <a href=\"{1}\">{0}</a>"
|
||||
msgstr "Hướng dẫn cho <a href=\"{1}\">{0}</a>"
|
||||
|
||||
#: judge/views/problem.py:458 templates/contest/contest.html:116
|
||||
#: judge/views/problem.py:458 templates/contest/contest.html:112
|
||||
#: templates/course/lesson.html:14
|
||||
#: templates/organization/org-left-sidebar.html:4
|
||||
#: templates/user/user-about.html:28 templates/user/user-bookmarks.html:35
|
||||
|
@ -3266,38 +3257,38 @@ msgstr "Hướng dẫn cho <a href=\"{1}\">{0}</a>"
|
|||
msgid "Problems"
|
||||
msgstr "Bài tập"
|
||||
|
||||
#: judge/views/problem.py:825
|
||||
#: judge/views/problem.py:824
|
||||
msgid "Problem feed"
|
||||
msgstr "Bài tập"
|
||||
|
||||
#: judge/views/problem.py:1023 judge/views/problem.py:1056
|
||||
#: judge/views/problem.py:1022 judge/views/problem.py:1055
|
||||
msgid "<h1>You have submitted too many submissions.</h1>"
|
||||
msgstr "<h1>Bạn nộp quá nhiều bài.</h1>"
|
||||
|
||||
#: judge/views/problem.py:1035
|
||||
#: judge/views/problem.py:1034
|
||||
msgid "Banned from submitting"
|
||||
msgstr "Bị cấm nộp bài"
|
||||
|
||||
#: judge/views/problem.py:1037
|
||||
#: judge/views/problem.py:1036
|
||||
msgid ""
|
||||
"You have been declared persona non grata for this problem. You are "
|
||||
"permanently barred from submitting this problem."
|
||||
msgstr "Bạn đã bị cấm nộp bài này."
|
||||
|
||||
#: judge/views/problem.py:1075
|
||||
#: judge/views/problem.py:1074
|
||||
msgid "Too many submissions"
|
||||
msgstr "Quá nhiều lần nộp"
|
||||
|
||||
#: judge/views/problem.py:1077
|
||||
#: judge/views/problem.py:1076
|
||||
msgid "You have exceeded the submission limit for this problem."
|
||||
msgstr "Bạn đã vượt quá số lần nộp cho bài này."
|
||||
|
||||
#: judge/views/problem.py:1162 judge/views/problem.py:1167
|
||||
#: judge/views/problem.py:1161 judge/views/problem.py:1166
|
||||
#, python-format
|
||||
msgid "Submit to %(problem)s"
|
||||
msgstr "Nộp bài cho %(problem)s"
|
||||
|
||||
#: judge/views/problem.py:1194
|
||||
#: judge/views/problem.py:1193
|
||||
msgid "Clone Problem"
|
||||
msgstr "Nhân bản bài tập"
|
||||
|
||||
|
@ -3749,13 +3740,14 @@ msgstr "Đăng ký"
|
|||
msgid "spectating"
|
||||
msgstr "đang theo dõi"
|
||||
|
||||
#: templates/base.html:250
|
||||
msgid "Compete"
|
||||
msgstr "Thi"
|
||||
#: templates/base.html:250 templates/contest/list.html:195
|
||||
#: templates/contest/list.html:396
|
||||
msgid "In contest"
|
||||
msgstr "Trong kỳ thi"
|
||||
|
||||
#: templates/base.html:252
|
||||
msgid "General"
|
||||
msgstr "Chung"
|
||||
msgid "Out contest"
|
||||
msgstr "Ngoài kỳ thi"
|
||||
|
||||
#: templates/base.html:259
|
||||
msgid "This site works best with JavaScript enabled."
|
||||
|
@ -3766,7 +3758,7 @@ msgstr ""
|
|||
msgid " posted on %(time)s"
|
||||
msgstr "đã đăng vào %(time)s"
|
||||
|
||||
#: templates/blog/blog.html:35 templates/contest/contest.html:97
|
||||
#: templates/blog/blog.html:35 templates/contest/contest.html:93
|
||||
msgid "Edit in"
|
||||
msgstr "Chỉnh sửa trong"
|
||||
|
||||
|
@ -4020,7 +4012,7 @@ msgstr "Thứ sáu"
|
|||
msgid "Saturday"
|
||||
msgstr "Thứ bảy"
|
||||
|
||||
#: templates/contest/clarification.html:52 templates/contest/list.html:227
|
||||
#: templates/contest/clarification.html:52 templates/contest/list.html:232
|
||||
#: templates/organization/new.html:10 templates/ticket/new.html:38
|
||||
msgid "Create"
|
||||
msgstr "Tạo mới"
|
||||
|
@ -4136,7 +4128,7 @@ msgstr "MOSS"
|
|||
msgid "Leave contest"
|
||||
msgstr "Rời kỳ thi"
|
||||
|
||||
#: templates/contest/contest.html:43 templates/contest/list.html:394
|
||||
#: templates/contest/contest.html:43 templates/contest/list.html:401
|
||||
msgid "Virtual join"
|
||||
msgstr "Tham gia ảo"
|
||||
|
||||
|
@ -4156,21 +4148,21 @@ msgstr "Tham gia kỳ thi"
|
|||
msgid "Login to participate"
|
||||
msgstr "Đăng nhập để tham gia"
|
||||
|
||||
#: templates/contest/contest.html:101
|
||||
#: templates/contest/contest.html:97
|
||||
msgid "Clone"
|
||||
msgstr "Nhân bản"
|
||||
|
||||
#: templates/contest/contest.html:122
|
||||
#: templates/contest/contest.html:118
|
||||
msgid "AC Rate"
|
||||
msgstr "Tỷ lệ AC"
|
||||
|
||||
#: templates/contest/contest.html:123 templates/contest/list.html:265
|
||||
#: templates/contest/list.html:305 templates/contest/list.html:386
|
||||
#: templates/contest/contest.html:119 templates/contest/list.html:270
|
||||
#: templates/contest/list.html:310 templates/contest/list.html:391
|
||||
#: templates/problem/list.html:24
|
||||
msgid "Users"
|
||||
msgstr "Người nộp"
|
||||
|
||||
#: templates/contest/contest.html:148 templates/problem/list.html:58
|
||||
#: templates/contest/contest.html:144 templates/problem/list.html:58
|
||||
#: templates/problem/list.html:133
|
||||
msgid "Editorial"
|
||||
msgstr "Hướng dẫn"
|
||||
|
@ -4186,11 +4178,11 @@ msgstr "Rank"
|
|||
msgid "Name"
|
||||
msgstr "Tên"
|
||||
|
||||
#: templates/contest/list.html:85 templates/contest/media-js.html:152
|
||||
#: templates/contest/list.html:86 templates/contest/media-js.html:152
|
||||
msgid "Are you sure you want to join?"
|
||||
msgstr "Bạn có chắc tham gia?"
|
||||
|
||||
#: templates/contest/list.html:86
|
||||
#: templates/contest/list.html:87
|
||||
msgid ""
|
||||
"Joining a contest for the first time starts your timer, after which it "
|
||||
"becomes unstoppable."
|
||||
|
@ -4198,92 +4190,96 @@ msgstr ""
|
|||
"Tham gia kỳ thi lần đầu sẽ kích hoạt thời gian đếm ngược, không thể dừng lại "
|
||||
"sau đó."
|
||||
|
||||
#: templates/contest/list.html:117
|
||||
#: templates/contest/list.html:89 templates/contest/media-js.html:155
|
||||
msgid "By joining in this contest, you will automatically leave contest"
|
||||
msgstr "Khi tham gia kỳ thi này, bạn sẽ tự động rời khỏi kỳ thi"
|
||||
|
||||
#: templates/contest/list.html:122
|
||||
msgid "hidden"
|
||||
msgstr "ẩn"
|
||||
|
||||
#: templates/contest/list.html:129
|
||||
#: templates/contest/list.html:134
|
||||
msgid "private"
|
||||
msgstr "riêng tư"
|
||||
|
||||
#: templates/contest/list.html:141
|
||||
#: templates/contest/list.html:146
|
||||
msgid "rated"
|
||||
msgstr "rated"
|
||||
|
||||
#: templates/contest/list.html:160 templates/contest/list.html:167
|
||||
#: templates/contest/list.html:165 templates/contest/list.html:172
|
||||
msgid "Start"
|
||||
msgstr "Bắt đầu"
|
||||
|
||||
#: templates/contest/list.html:163
|
||||
#: templates/contest/list.html:168
|
||||
msgid "End"
|
||||
msgstr "Kết thúc"
|
||||
|
||||
#: templates/contest/list.html:173
|
||||
#: templates/contest/list.html:178
|
||||
#, python-format
|
||||
msgid "%(time_limit)s window"
|
||||
msgstr "Cửa sổ thi dài %(time_limit)s"
|
||||
|
||||
#: templates/contest/list.html:175
|
||||
#: templates/contest/list.html:180
|
||||
#, python-format
|
||||
msgid "%(duration)s long"
|
||||
msgstr "Kéo dài %(duration)s"
|
||||
|
||||
#: templates/contest/list.html:194
|
||||
#: templates/contest/list.html:200
|
||||
msgid "Spectate"
|
||||
msgstr "Theo dõi"
|
||||
|
||||
#: templates/contest/list.html:200 templates/organization/home.html:23
|
||||
#: templates/contest/list.html:206 templates/organization/home.html:23
|
||||
msgid "Join"
|
||||
msgstr "Tham gia"
|
||||
|
||||
#: templates/contest/list.html:209
|
||||
#: templates/contest/list.html:214
|
||||
msgid "Search contests..."
|
||||
msgstr "Tìm kiếm kỳ thi..."
|
||||
|
||||
#: templates/contest/list.html:219 templates/course/grades.html:84
|
||||
#: templates/contest/list.html:224 templates/course/grades.html:84
|
||||
#: templates/internal/problem/problem.html:34
|
||||
msgid "Search"
|
||||
msgstr "Tìm kiếm"
|
||||
|
||||
#: templates/contest/list.html:223
|
||||
#: templates/contest/list.html:228
|
||||
msgid "Hide organization contests"
|
||||
msgstr "Ẩn các kỳ thi riêng tư của nhóm"
|
||||
|
||||
#: templates/contest/list.html:235
|
||||
#: templates/contest/list.html:240
|
||||
msgid "Active Contests"
|
||||
msgstr "Kỳ thi bạn đang tham gia"
|
||||
|
||||
#: templates/contest/list.html:251
|
||||
#: templates/contest/list.html:257
|
||||
#, python-format
|
||||
msgid "Window ends in %(countdown)s"
|
||||
msgstr "Cửa số thi còn %(countdown)s"
|
||||
|
||||
#: templates/contest/list.html:254 templates/contest/list.html:294
|
||||
#: templates/contest/list.html:260 templates/contest/list.html:300
|
||||
#, python-format
|
||||
msgid "Ends in %(countdown)s"
|
||||
msgstr "Kết thúc trong %(countdown)s"
|
||||
|
||||
#: templates/contest/list.html:279
|
||||
#: templates/contest/list.html:284
|
||||
msgid "Ongoing Contests"
|
||||
msgstr "Kỳ thi đang diễn ra"
|
||||
|
||||
#: templates/contest/list.html:316
|
||||
#: templates/contest/list.html:321
|
||||
msgid "There is no ongoing contest at this time."
|
||||
msgstr "Không có kỳ thi nào đang diễn ra hiện tại."
|
||||
|
||||
#: templates/contest/list.html:323
|
||||
#: templates/contest/list.html:328
|
||||
msgid "Upcoming Contests"
|
||||
msgstr "Kỳ thi sắp tới"
|
||||
|
||||
#: templates/contest/list.html:353
|
||||
#: templates/contest/list.html:358
|
||||
msgid "There is no scheduled contest at this time."
|
||||
msgstr "Không có kỳ thi nào được lên lịch hiện tại."
|
||||
|
||||
#: templates/contest/list.html:360
|
||||
#: templates/contest/list.html:365
|
||||
msgid "Past Contests"
|
||||
msgstr "Kỳ thi trong quá khứ"
|
||||
|
||||
#: templates/contest/list.html:407
|
||||
#: templates/contest/list.html:414
|
||||
msgid "There is no past contest."
|
||||
msgstr "Không có kỳ thi nào trong quá khứ."
|
||||
|
||||
|
@ -6091,6 +6087,18 @@ msgstr "Thông tin"
|
|||
msgid "Check all"
|
||||
msgstr "Chọn tất cả"
|
||||
|
||||
#~ msgid "Already in contest"
|
||||
#~ msgstr "Đã ở trong kỳ thi"
|
||||
|
||||
#~ msgid "You are already in a contest: \"%s\"."
|
||||
#~ msgstr "Bạn đã ở trong kỳ thi: \"%s\"."
|
||||
|
||||
#~ msgid "Compete"
|
||||
#~ msgstr "Thi"
|
||||
|
||||
#~ msgid "General"
|
||||
#~ msgstr "Chung"
|
||||
|
||||
#~ msgid "custom validator file"
|
||||
#~ msgstr "file trình chấm"
|
||||
|
||||
|
|
|
@ -247,9 +247,9 @@
|
|||
</div>
|
||||
<div id="contest-info-toggle" class="{{'contest-info-toggle-mode-on' if request.contest_mode else 'contest-info-toggle-mode-off'}}">
|
||||
{% if request.contest_mode %}
|
||||
<i class="fa fa-toggle-on white"></i> {{_('Compete')}}
|
||||
<i class="fa fa-toggle-on white"></i> {{_('In contest')}}
|
||||
{% else %}
|
||||
<i class="fa fa-toggle-off white"></i> {{_('General')}}
|
||||
<i class="fa fa-toggle-off white"></i> {{_('Out contest')}}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -83,8 +83,12 @@
|
|||
$('.contest-tag').find('a[data-featherlight]').featherlight();
|
||||
|
||||
$('.join-warning').click(function () {
|
||||
return confirm('{{ _('Are you sure you want to join?') }}\n' +
|
||||
'{{ _('Joining a contest for the first time starts your timer, after which it becomes unstoppable.') }}');
|
||||
let q = '{{ _('Are you sure you want to join?') }}\n' +
|
||||
'{{ _('Joining a contest for the first time starts your timer, after which it becomes unstoppable.') }}';
|
||||
{% if request.in_contest %}
|
||||
q += " {{ _('By joining in this contest, you will automatically leave contest') }} \"{{ request.participation.contest.name }}\". ";
|
||||
{% endif %}
|
||||
return confirm(q);
|
||||
});
|
||||
|
||||
$('#search-org').select2({multiple: 1, placeholder: '{{ _('Groups') }}...'})
|
||||
|
@ -187,20 +191,20 @@
|
|||
{% endmacro %}
|
||||
|
||||
{% macro contest_join(contest, request) %}
|
||||
{% if not request.in_contest %}
|
||||
{% if request.profile in contest.authors.all() or request.profile in contest.curators.all() or request.profile in contest.testers.all() %}
|
||||
<form action="{{ url('contest_join', contest.key) }}" method="post">
|
||||
{% csrf_token %}
|
||||
<input type="submit" class="unselectable button full small"
|
||||
value="{{ _('Spectate') }}">
|
||||
</form>
|
||||
{% else %}
|
||||
<form action="{{ url('contest_join', contest.key) }}" method="post">
|
||||
{% csrf_token %}
|
||||
<input type="submit" class="unselectable button full small join-warning"
|
||||
value="{{ _('Join') }}">
|
||||
</form>
|
||||
{% endif %}
|
||||
{% if request.in_contest and request.participation.contest == contest %}
|
||||
<button class="small" disabled>{{ _('In contest') }}</button>
|
||||
{% elif request.profile in contest.authors.all() or request.profile in contest.curators.all() or request.profile in contest.testers.all() %}
|
||||
<form action="{{ url('contest_join', contest.key) }}" method="post">
|
||||
{% csrf_token %}
|
||||
<input type="submit" class="unselectable button full small"
|
||||
value="{{ _('Spectate') }}">
|
||||
</form>
|
||||
{% else %}
|
||||
<form action="{{ url('contest_join', contest.key) }}" method="post">
|
||||
{% csrf_token %}
|
||||
<input type="submit" class="unselectable button full small join-warning"
|
||||
value="{{ _('Join') }}">
|
||||
</form>
|
||||
{% endif %}
|
||||
{% endmacro %}
|
||||
|
||||
|
@ -387,15 +391,17 @@
|
|||
<div class="contest-title"> {{ _('Users') }} </div>
|
||||
{{ user_count(contest, request.user) }}
|
||||
</div>
|
||||
{% if not request.in_contest %}
|
||||
<div class="participate-button">
|
||||
<div class="participate-button">
|
||||
{% if request.in_contest and request.participation.contest == contest %}
|
||||
<button class="small" disabled>{{ _('In contest') }}</button>
|
||||
{% else %}
|
||||
<form action="{{ url('contest_join', contest.key) }}" method="post">
|
||||
{% csrf_token %}
|
||||
<input type="submit" class="unselectable button full small"
|
||||
value="{{ _('Virtual join') }}">
|
||||
</form>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% if page_obj and page_obj.num_pages > 1 %}
|
||||
|
|
|
@ -149,8 +149,12 @@
|
|||
});
|
||||
|
||||
$('.first-join').click(function () {
|
||||
return confirm('{{ _('Are you sure you want to join?') }}\n' +
|
||||
'{{ _('Joining a contest starts your timer, after which it becomes unstoppable.') }}');
|
||||
let q = '{{ _('Are you sure you want to join?') }}\n' +
|
||||
'{{ _('Joining a contest starts your timer, after which it becomes unstoppable.') }}';
|
||||
{% if current_contest %}
|
||||
q += " {{ _('By joining in this contest, you will automatically leave contest') }} \"{{ current_contest.name }}\". ";
|
||||
{% endif %}
|
||||
return confirm(q);
|
||||
});
|
||||
|
||||
var url = '{{ url('contest_participation', contest.key, '__username__') }}';
|
||||
|
|
Loading…
Reference in a new issue