diff --git a/judge/admin/contest.py b/judge/admin/contest.py
index 9c8b6fd..a126e83 100644
--- a/judge/admin/contest.py
+++ b/judge/admin/contest.py
@@ -158,6 +158,7 @@ class ContestAdmin(CompareVersionAdmin):
"is_visible",
"use_clarifications",
"hide_problem_tags",
+ "public_scoreboard",
"scoreboard_visibility",
"run_pretests_only",
"points_precision",
diff --git a/judge/forms.py b/judge/forms.py
index d627b0e..e6bbd67 100644
--- a/judge/forms.py
+++ b/judge/forms.py
@@ -308,6 +308,7 @@ class EditOrganizationContestForm(ModelForm):
"freeze_after",
"use_clarifications",
"hide_problem_tags",
+ "public_scoreboard",
"scoreboard_visibility",
"run_pretests_only",
"points_precision",
diff --git a/judge/migrations/0169_public_scoreboard.py b/judge/migrations/0169_public_scoreboard.py
new file mode 100644
index 0000000..0dc7338
--- /dev/null
+++ b/judge/migrations/0169_public_scoreboard.py
@@ -0,0 +1,22 @@
+# Generated by Django 3.2.18 on 2023-09-17 01:55
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ("judge", "0168_css_background"),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name="contest",
+ name="public_scoreboard",
+ field=models.BooleanField(
+ default=False,
+ help_text="Ranking page is public even for private contests.",
+ verbose_name="public scoreboard",
+ ),
+ ),
+ ]
diff --git a/judge/models/contest.py b/judge/models/contest.py
index 8bb3d5b..a724f1a 100644
--- a/judge/models/contest.py
+++ b/judge/models/contest.py
@@ -167,6 +167,11 @@ class Contest(models.Model, PageVotable, Bookmarkable):
related_name="view_contest_scoreboard",
help_text=_("These users will be able to view the scoreboard."),
)
+ public_scoreboard = models.BooleanField(
+ verbose_name=_("public scoreboard"),
+ help_text=_("Ranking page is public even for private contests."),
+ default=False,
+ )
use_clarifications = models.BooleanField(
verbose_name=_("no comments"),
help_text=_("Use clarification system instead of comments."),
diff --git a/judge/views/contests.py b/judge/views/contests.py
index f209030..1e60388 100644
--- a/judge/views/contests.py
+++ b/judge/views/contests.py
@@ -107,9 +107,10 @@ __all__ = [
]
-def _find_contest(request, key, private_check=True):
+def _find_contest(request, key):
try:
contest = Contest.objects.get(key=key)
+ private_check = not contest.public_scoreboard
if private_check and not contest.is_accessible_by(request.user):
raise ObjectDoesNotExist()
except ObjectDoesNotExist:
@@ -277,6 +278,9 @@ class ContestMixin(object):
def can_edit(self):
return self.object.is_editable_by(self.request.user)
+ def should_bypass_access_check(self, contest):
+ return False
+
def get_context_data(self, **kwargs):
context = super(ContestMixin, self).get_context_data(**kwargs)
if self.request.user.is_authenticated:
@@ -338,6 +342,9 @@ class ContestMixin(object):
):
return contest
+ if self.should_bypass_access_check(contest):
+ return contest
+
try:
contest.access_check(self.request.user)
except Contest.PrivateContest:
@@ -352,30 +359,6 @@ class ContestMixin(object):
else:
return contest
- if contest.is_private or contest.is_organization_private:
- private_contest_error = PrivateContestError(
- contest.name,
- contest.is_private,
- contest.is_organization_private,
- contest.organizations.all(),
- )
- if profile is None:
- raise private_contest_error
- if user.has_perm("judge.edit_all_contest"):
- return contest
- if not (
- contest.is_organization_private
- and contest.organizations.filter(
- id__in=profile.organizations.all()
- ).exists()
- ) and not (
- contest.is_private
- and contest.private_contestants.filter(id=profile.id).exists()
- ):
- raise private_contest_error
-
- return contest
-
def dispatch(self, request, *args, **kwargs):
try:
return super(ContestMixin, self).dispatch(request, *args, **kwargs)
@@ -1095,6 +1078,9 @@ class ContestRankingBase(ContestMixin, TitleMixin, DetailView):
class ContestRanking(ContestRankingBase):
page_type = "ranking"
+ def should_bypass_access_check(self, contest):
+ return contest.public_scoreboard
+
def get_title(self):
return _("%s Rankings") % self.object.name
diff --git a/resources/darkmode.css b/resources/darkmode.css
index b7277b2..dceff1a 100644
--- a/resources/darkmode.css
+++ b/resources/darkmode.css
@@ -3149,6 +3149,9 @@ a.voted {
.organization-container {
border-color: rgb(62, 68, 70);
}
+.org-help-text {
+ color: rgb(152, 143, 129);
+}
.ticket-container #content > h2:first-child small {
color: rgb(168, 160, 149);
}
@@ -3865,14 +3868,268 @@ mjx-merror {
mjx-assistive-mml {
border-color: initial !important;
}
-mjx-stretchy-v > mjx-ext {
- border-color: transparent;
+.xdsoft_datetimepicker {
+ box-shadow: rgba(0, 0, 0, 0.51) 0px 5px 15px -5px;
+ background-image: initial;
+ background-color: rgb(24, 26, 27);
+ border-color: rgb(62, 68, 70) rgb(62, 68, 70) rgb(67, 73, 76);
+ color: rgb(200, 195, 188);
}
-.recently-attempted ul {
- list-style-image: initial;
+.xdsoft_datetimepicker iframe {
+ background-image: initial;
+ background-color: transparent;
+ border-color: initial;
}
-.organization-row:last-child {
- border-bottom-color: initial;
+.xdsoft_datetimepicker button {
+ border-color: initial !important;
+}
+.xdsoft_noselect::selection {
+ background-image: initial;
+ background-color: transparent;
+}
+.xdsoft_datetimepicker.xdsoft_inline {
+ box-shadow: none;
+}
+.xdsoft_datetimepicker .xdsoft_label i,
+.xdsoft_datetimepicker .xdsoft_prev,
+.xdsoft_datetimepicker .xdsoft_next,
+.xdsoft_datetimepicker .xdsoft_today_button {
+ background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjMwIj48ZGVmcz48ZmlsdGVyIGlkPSJkYXJrcmVhZGVyLWltYWdlLWZpbHRlciI+PGZlQ29sb3JNYXRyaXggdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAuMjQ5IC0wLjYxNCAtMC42NzIgMC4wMDAgMS4wMzUgLTAuNjQ2IDAuMjg4IC0wLjY2NCAwLjAwMCAxLjAyMCAtMC42MzYgLTAuNjA5IDAuMjUwIDAuMDAwIDAuOTk0IDAuMDAwIDAuMDAwIDAuMDAwIDEuMDAwIDAuMDAwIiAvPjwvZmlsdGVyPjwvZGVmcz48aW1hZ2Ugd2lkdGg9IjEwMCIgaGVpZ2h0PSIzMCIgZmlsdGVyPSJ1cmwoI2RhcmtyZWFkZXItaW1hZ2UtZmlsdGVyKSIgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFHUUFBQUFlQ0FZQUFBRGFXN3Z6QUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUF5SnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU15MWpNREV4SURZMkxqRTBOVFkyTVN3Z01qQXhNaTh3TWk4d05pMHhORG8xTmpveU55QWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJaUI0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlnZUcxc2JuTTZjM1JTWldZOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXpWSGx3WlM5U1pYTnZkWEpqWlZKbFppTWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTlROaUFvVjJsdVpHOTNjeWtpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2UTBOQlJqSTFOak0wTTBVd01URkZORGs0TmtGR016SkZRa1F6UWpFd1JVSWlJSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZRME5CUmpJMU5qUTBNMFV3TVRGRk5EazROa0ZHTXpKRlFrUXpRakV3UlVJaVBpQThlRzF3VFUwNlJHVnlhWFpsWkVaeWIyMGdjM1JTWldZNmFXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEcERRMEZHTWpVMk1UUXpSVEF4TVVVME9UZzJRVVl6TWtWQ1JETkNNVEJGUWlJZ2MzUlNaV1k2Wkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRwRFEwRkdNalUyTWpRelJUQXhNVVUwT1RnMlFVWXpNa1ZDUkROQ01UQkZRaUl2UGlBOEwzSmtaanBFWlhOamNtbHdkR2x2Ymo0Z1BDOXlaR1k2VWtSR1BpQThMM2c2ZUcxd2JXVjBZVDRnUEQ5NGNHRmphMlYwSUdWdVpEMGljaUkvUG9ORVA1NEFBQUlPU1VSQlZIamE3SnE5VHNNd0VNY3hyWkQ0V3BCWWVLVUNlK2tUTUNBQ0haaDRCRmZITy9BQUlIWkdGaFlrQkJzU0VxeHNMQ0FnWEtoYlhZT1R4aDlwZkpWUCtxdXRuWjVzLzVMejJZNUkwM1FoV2ppMkdJY2dBb2tXZ2ZDeE52Y09DQ0dLcWlTcWhVcDBsYUhPbmUwNXZkRXlHTWZrZHhKRFZqZ3dEbEVRZ1lRQmd4K1VMSmFXU1hYUzZyL0VSNUZCVlI4VmZHZnRUS2NJVE5zK2ExWHBjRm9FeFJFSURGMTRBVklGeGdRVVMraDUyMGNkdWQ2d05rQzBVQnc2QkNPL0hvQ1l3QmhEOFFDa1EveDFtd0R5RDRwbGg0RDZERFYwVEFHeW80SGNhd0xJQkJTTERrSGVIME1nMnlWUDNsNFRRTVpRRERzRU9sL01nSFFxaE1OdUUwRCtvQmgwQ0lyOE1BS3lhekJIOVd5QnVLeERXZ2JYZmpOZjMyVFoxS1dtL0FwMW9Tay9SNTNVdFE1eFRoM0xVbE1tVDhndDZnNTFROXArU29ieGdKUS9xbXNmWmhXeXdHRlNsMHlCakNMSkNNZ1hhaWwzYjcrcnVtZFZKMllSc3M0Y04rcjZxQUhEa1BXalBqZEpDRjRuOVJtQUQvVjlBL1dwNE5RYXNzRGp3bEI2WEJpQ3hjSlFXbVpaYjhUSEZpbGZ5L2xmclR2TGdocTJUcVRIclJNVEtOSjBzSWhkbzE1UlQrUnB5V3dGZFk5NlVaL0xkUUtCR2pjWHBjYzFBbFNGRWZMbW91RCsxa251eEJEVVZydk9CbW9PQy9yRWNON09ReEtWZUpUQ2lBZFV6VUpoQTJPZXo5UVRrcDcyT1RWY3hEY1hZOGlLTmt4R0FKWG1KQ09Rd09hNmRoeVhzT2E2WHdFR0FLZGViNUVUM3JRZEFBQUFBRWxGVGtTdVFtQ0MiIC8+PC9zdmc+");
+}
+.xdsoft_datetimepicker .xdsoft_next,
+.xdsoft_datetimepicker .xdsoft_prev,
+.xdsoft_datetimepicker .xdsoft_today_button {
+ background-color: transparent;
+ border-color: initial;
+ outline-color: initial;
+}
+.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box {
+ border-bottom-color: rgb(58, 62, 65);
+}
+.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box > div > div {
+ background-image: initial;
+ background-color: rgb(30, 32, 33);
+ border-top-color: rgb(58, 62, 65);
+ color: rgb(168, 160, 149);
+}
+.xdsoft_datetimepicker .xdsoft_label {
+ background-color: rgb(24, 26, 27);
+}
+.xdsoft_datetimepicker .xdsoft_label:hover > span {
+ text-decoration-color: initial;
+}
+.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select {
+ border-color: rgb(62, 68, 70);
+ background-image: initial;
+ background-color: rgb(24, 26, 27);
+}
+.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option:hover {
+ color: rgb(232, 230, 227);
+ background-image: initial;
+ background-color: rgb(204, 102, 0);
+}
+.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option {
+ text-decoration-color: initial !important;
+}
+.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option.xdsoft_current {
+ background-image: initial;
+ background-color: rgb(0, 101, 173);
+ box-shadow: rgb(18, 114, 183) 0px 1px 3px 0px inset;
+ color: rgb(232, 230, 227);
+}
+.xdsoft_datetimepicker .xdsoft_calendar td,
+.xdsoft_datetimepicker .xdsoft_calendar th {
+ background-image: initial;
+ background-color: rgb(30, 32, 33);
+ border-color: rgb(58, 62, 65);
+ color: rgb(168, 160, 149);
+}
+.xdsoft_datetimepicker .xdsoft_calendar th {
+ background-image: initial;
+ background-color: rgb(32, 35, 36);
+}
+.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_today {
+ color: rgb(61, 174, 255);
+}
+.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_highlighted_default {
+ background-image: initial;
+ background-color: rgb(78, 40, 0);
+ box-shadow: rgb(136, 68, 0) 0px 1px 4px 0px inset;
+ color: rgb(232, 230, 227);
+}
+.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_highlighted_mint {
+ background-image: initial;
+ background-color: rgb(0, 88, 31);
+ box-shadow: rgb(0, 177, 22) 0px 1px 4px 0px inset;
+ color: rgb(232, 230, 227);
+}
+.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_default,
+.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current,
+.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box > div > div.xdsoft_current {
+ background-image: initial;
+ background-color: rgb(0, 101, 173);
+ box-shadow: rgb(18, 114, 183) 0px 1px 3px 0px inset;
+ color: rgb(232, 230, 227);
+}
+.xdsoft_datetimepicker .xdsoft_calendar td:hover,
+.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box > div > div:hover {
+ color: rgb(232, 230, 227) !important;
+ background-image: initial !important;
+ background-color: rgb(204, 102, 0) !important;
+ box-shadow: none !important;
+}
+.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current.xdsoft_disabled:hover,
+.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box > div > div.xdsoft_current.xdsoft_disabled:hover {
+ background-image: initial !important;
+ background-color: rgb(0, 101, 173) !important;
+ box-shadow: rgb(18, 114, 183) 0px 1px 3px 0px inset !important;
+ color: rgb(232, 230, 227) !important;
+}
+.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled:hover,
+.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box > div > div.xdsoft_disabled:hover {
+ color: inherit !important;
+ background-image: inherit !important;
+ background-color: inherit !important;
+ box-shadow: inherit !important;
+}
+.xdsoft_datetimepicker .xdsoft_calendar th {
+ color: rgb(168, 160, 149);
+}
+.xdsoft_datetimepicker .xdsoft_copyright {
+ color: rgb(200, 195, 188) !important;
+}
+.xdsoft_datetimepicker .xdsoft_copyright a {
+ color: rgb(221, 218, 214) !important;
+}
+.xdsoft_datetimepicker .xdsoft_copyright a:hover {
+ color: rgb(178, 172, 162) !important;
+}
+.xdsoft_time_box {
+ border-color: rgb(62, 68, 70);
+}
+.xdsoft_scrollbar > .xdsoft_scroller {
+ background-image: initial !important;
+ background-color: rgb(53, 57, 59) !important;
+}
+.xdsoft_datetimepicker.xdsoft_dark {
+ box-shadow: rgba(24, 26, 27, 0.51) 0px 5px 15px -5px;
+ background-image: initial;
+ background-color: rgb(0, 0, 0);
+ border-color: rgb(123, 114, 101) rgb(123, 114, 101) rgb(118, 109, 97);
+ color: rgb(200, 195, 188);
+}
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box {
+ border-bottom-color: rgb(129, 120, 106);
+}
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box > div > div {
+ background-image: initial;
+ background-color: rgb(8, 8, 8);
+ border-top-color: rgb(129, 120, 106);
+ color: rgb(168, 160, 149);
+}
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label {
+ background-color: rgb(0, 0, 0);
+}
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select {
+ border-color: rgb(123, 114, 101);
+ background-image: initial;
+ background-color: rgb(0, 0, 0);
+}
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select > div > .xdsoft_option:hover {
+ color: rgb(232, 230, 227);
+ background-image: initial;
+ background-color: rgb(0, 102, 204);
+}
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select > div > .xdsoft_option.xdsoft_current {
+ background-image: initial;
+ background-color: rgb(163, 68, 0);
+ box-shadow: rgb(141, 50, 0) 0px 1px 3px 0px inset;
+ color: rgb(232, 230, 227);
+}
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label i,
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_prev,
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_next,
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_today_button {
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAeCAYAAADaW7vzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUExQUUzOTA0M0UyMTFFNDlBM0FFQTJENTExRDVBODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUExQUUzOTE0M0UyMTFFNDlBM0FFQTJENTExRDVBODYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQTFBRTM4RTQzRTIxMUU0OUEzQUVBMkQ1MTFENUE4NiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQTFBRTM4RjQzRTIxMUU0OUEzQUVBMkQ1MTFENUE4NiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pp0VxGEAAAIASURBVHja7JrNSgMxEMebtgh+3MSLr1T1Xn2CHoSKB08+QmR8Bx9A8e7RixdB9CKCoNdexIugxFlJa7rNZneTbLIpM/CnNLsdMvNjM8l0mRCiQ9Ye61IKCAgZAUnH+mU3MMZaHYChBnJUDzWOFZdVfc5+ZFLbrWDeXPwbxIqrLLfaeS0hEBVGIRQCEiZoHQwtlGSByCCdYBl8g8egTTAWoKQMRBRBcZxYlhzhKegqMOageErsCHVkk3hXIFooDgHB1KkHIHVgzKB4ADJQ/A1jAFmAYhkQqA5TOBtocrKrgXwQA8gcFIuAIO8sQSA7hidvPwaQGZSaAYHOUWJABhWWw2EMIH9QagQERU4SArJXo0ZZL18uvaxejXt/Em8xjVBXmvFr1KVm/AJ10tRe2XnraNqaJvKE3KHuUbfK1E+VHB0q40/y3sdQSxY4FHWeKJCunP8UyDdqJZenT3ntVV5jIYCAh20vT7ioP8tpf6E2lfEMwERe+whV1MHjwZB7PBiCxcGQWwKZKD62lfGNnP/1poFAA60T7rF1UgcKd2id3KDeUS+oLWV8DfWAepOfq00CgQabi9zjcgJVYVD7PVzQUAUGAQkbNJTBICDhgwYTjDYD6XeW08ZKh+A4pYkzenOxXUbvZcWz7E8ykRMnIHGX1XPl+1m2vPYpL+2qdb8CDAARlKFEz/ZVkAAAAABJRU5ErkJggg==");
+}
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td,
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th {
+ background-image: initial;
+ background-color: rgb(8, 8, 8);
+ border-color: rgb(129, 120, 106);
+ color: rgb(168, 160, 149);
+}
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th {
+ background-image: initial;
+ background-color: rgb(11, 11, 12);
+}
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_today {
+ color: rgb(255, 142, 61);
+}
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_highlighted_default {
+ background-image: initial;
+ background-color: rgb(78, 40, 0);
+ box-shadow: rgb(136, 68, 0) 0px 1px 4px 0px inset;
+ color: rgb(232, 230, 227);
+}
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_highlighted_mint {
+ background-image: initial;
+ background-color: rgb(0, 88, 31);
+ box-shadow: rgb(0, 177, 22) 0px 1px 4px 0px inset;
+ color: rgb(232, 230, 227);
+}
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_default,
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_current,
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box > div > div.xdsoft_current {
+ background-image: initial;
+ background-color: rgb(163, 68, 0);
+ box-shadow: rgb(141, 50, 0) 0px 1px 3px 0px inset;
+ color: rgb(232, 230, 227);
+}
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td:hover,
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box > div > div:hover {
+ color: rgb(232, 230, 227) !important;
+ background-image: initial !important;
+ background-color: rgb(0, 102, 204) !important;
+}
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th {
+ color: rgb(168, 160, 149);
+}
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright {
+ color: rgb(200, 195, 188) !important;
+}
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright a {
+ color: rgb(221, 218, 214) !important;
+}
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright a:hover {
+ color: rgb(178, 172, 162) !important;
+}
+.xdsoft_dark .xdsoft_time_box {
+ border-color: rgb(123, 114, 101);
+}
+.xdsoft_dark .xdsoft_scrollbar > .xdsoft_scroller {
+ background-image: initial !important;
+ background-color: rgb(38, 42, 43) !important;
+}
+.xdsoft_datetimepicker .xdsoft_save_selected {
+ color: rgb(185, 179, 169);
+ border-color: rgb(58, 62, 65) !important;
+}
+.xdsoft_datetimepicker .blue-gradient-button {
+ color: rgb(156, 148, 135);
+ border-color: rgb(59, 64, 66);
+ background-image: linear-gradient(rgb(24, 26, 27) 0px,
+ rgb(19, 34, 42) 73%);
+ background-color: initial;
+}
+.xdsoft_datetimepicker .blue-gradient-button:hover,
+.xdsoft_datetimepicker .blue-gradient-button:focus,
+.xdsoft_datetimepicker .blue-gradient-button:hover span,
+.xdsoft_datetimepicker .blue-gradient-button:focus span {
+ color: rgb(185, 179, 169);
+ background-image: linear-gradient(rgb(19, 34, 42) 0px,
+ rgb(24, 26, 27) 73%);
+ background-color: initial;
}
/* Override Style */
diff --git a/resources/organization.scss b/resources/organization.scss
index 2e49840..be96258 100644
--- a/resources/organization.scss
+++ b/resources/organization.scss
@@ -47,4 +47,9 @@
border: 1px #ccc solid;
margin-bottom: 3em;
border-radius: 5px;
+}
+
+.org-help-text {
+ display: block;
+ color: gray;
}
\ No newline at end of file
diff --git a/templates/organization/blog/edit.html b/templates/organization/blog/edit.html
index 6de760f..25555e8 100644
--- a/templates/organization/blog/edit.html
+++ b/templates/organization/blog/edit.html
@@ -28,7 +28,7 @@
{{ field }}
{% if field.help_text %}
- {{ field.help_text|safe }}
+ {{ field.help_text|safe }}
{% endif %}
{% endif %}
diff --git a/templates/organization/contest/add.html b/templates/organization/contest/add.html
index 7b625a8..56e7de4 100644
--- a/templates/organization/contest/add.html
+++ b/templates/organization/contest/add.html
@@ -27,7 +27,7 @@
{{ field }}
{% if field.help_text %}
- {{ field.help_text|safe }}
+ {{ field.help_text|safe }}
{% endif %}
{% endif %}
diff --git a/templates/organization/contest/edit.html b/templates/organization/contest/edit.html
index d5d9228..e0cffd4 100644
--- a/templates/organization/contest/edit.html
+++ b/templates/organization/contest/edit.html
@@ -49,7 +49,7 @@
{{ field }}
{% if field.help_text %}
- {{ field.help_text|safe }}
+ {{ field.help_text|safe }}
{% endif %}
{% endif %}
diff --git a/templates/organization/form.html b/templates/organization/form.html
index 85c86d9..167704e 100644
--- a/templates/organization/form.html
+++ b/templates/organization/form.html
@@ -15,7 +15,7 @@
{{ field }}
{% if field.help_text %}
- {{ field.help_text|safe }}
+ {{ field.help_text|safe }}
{% endif %}
{% endif %}