Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Remove uses of Django 3.0 deprecations #1789

Merged
merged 3 commits into from
Oct 16, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion dmoj/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
import os
import tempfile

from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from django_jinja.builtins import DEFAULT_EXTENSIONS
from jinja2 import select_autoescape

Expand Down
2 changes: 1 addition & 1 deletion dmoj/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from django.templatetags.static import static
from django.urls import path, reverse
from django.utils.functional import lazy
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from django.views.generic import RedirectView
from martor.views import markdown_search_user

Expand Down
14 changes: 7 additions & 7 deletions judge/admin/comments.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from django.forms import ModelForm
from django.urls import reverse_lazy
from django.utils.html import format_html
from django.utils.translation import gettext_lazy as _, ungettext
from django.utils.translation import gettext_lazy as _, ngettext
from reversion.admin import VersionAdmin

from judge.models import Comment
Expand Down Expand Up @@ -37,16 +37,16 @@ def get_queryset(self, request):

def hide_comment(self, request, queryset):
count = queryset.update(hidden=True)
self.message_user(request, ungettext('%d comment successfully hidden.',
'%d comments successfully hidden.',
count) % count)
self.message_user(request, ngettext('%d comment successfully hidden.',
'%d comments successfully hidden.',
count) % count)
hide_comment.short_description = _('Hide comments')

def unhide_comment(self, request, queryset):
count = queryset.update(hidden=False)
self.message_user(request, ungettext('%d comment successfully unhidden.',
'%d comments successfully unhidden.',
count) % count)
self.message_user(request, ngettext('%d comment successfully unhidden.',
'%d comments successfully unhidden.',
count) % count)
unhide_comment.short_description = _('Unhide comments')

def linked_page(self, obj):
Expand Down
38 changes: 19 additions & 19 deletions judge/admin/contest.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
from django.urls import reverse, reverse_lazy
from django.utils import timezone
from django.utils.html import format_html
from django.utils.translation import gettext_lazy as _, ungettext
from django.utils.translation import gettext_lazy as _, ngettext
from reversion.admin import VersionAdmin

from django_ace import AceWidget
Expand Down Expand Up @@ -212,36 +212,36 @@ def make_visible(self, request, queryset):
if not request.user.has_perm('judge.change_contest_visibility'):
queryset = queryset.filter(Q(is_private=True) | Q(is_organization_private=True))
count = queryset.update(is_visible=True)
self.message_user(request, ungettext('%d contest successfully marked as visible.',
'%d contests successfully marked as visible.',
count) % count)
self.message_user(request, ngettext('%d contest successfully marked as visible.',
'%d contests successfully marked as visible.',
count) % count)
make_visible.short_description = _('Mark contests as visible')

def make_hidden(self, request, queryset):
if not request.user.has_perm('judge.change_contest_visibility'):
queryset = queryset.filter(Q(is_private=True) | Q(is_organization_private=True))
count = queryset.update(is_visible=True)
self.message_user(request, ungettext('%d contest successfully marked as hidden.',
'%d contests successfully marked as hidden.',
count) % count)
self.message_user(request, ngettext('%d contest successfully marked as hidden.',
'%d contests successfully marked as hidden.',
count) % count)
make_hidden.short_description = _('Mark contests as hidden')

def set_locked(self, request, queryset):
for row in queryset:
self.set_locked_after(row, timezone.now())
count = queryset.count()
self.message_user(request, ungettext('%d contest successfully locked.',
'%d contests successfully locked.',
count) % count)
self.message_user(request, ngettext('%d contest successfully locked.',
'%d contests successfully locked.',
count) % count)
set_locked.short_description = _('Lock contest submissions')

def set_unlocked(self, request, queryset):
for row in queryset:
self.set_locked_after(row, None)
count = queryset.count()
self.message_user(request, ungettext('%d contest successfully unlocked.',
'%d contests successfully unlocked.',
count) % count)
self.message_user(request, ngettext('%d contest successfully unlocked.',
'%d contests successfully unlocked.',
count) % count)
set_unlocked.short_description = _('Unlock contest submissions')

def set_locked_after(self, contest, locked_after):
Expand All @@ -263,9 +263,9 @@ def rejudge_view(self, request, contest_id, problem_id):
for model in queryset:
model.submission.judge(rejudge=True)

self.message_user(request, ungettext('%d submission was successfully scheduled for rejudging.',
'%d submissions were successfully scheduled for rejudging.',
len(queryset)) % len(queryset))
self.message_user(request, ngettext('%d submission was successfully scheduled for rejudging.',
'%d submissions were successfully scheduled for rejudging.',
len(queryset)) % len(queryset))
return HttpResponseRedirect(reverse('admin:judge_contest_change', args=(contest_id,)))

def rate_all_view(self, request):
Expand Down Expand Up @@ -338,9 +338,9 @@ def recalculate_results(self, request, queryset):
for participation in queryset:
participation.recompute_results()
count += 1
self.message_user(request, ungettext('%d participation recalculated.',
'%d participations recalculated.',
count) % count)
self.message_user(request, ngettext('%d participation recalculated.',
'%d participations recalculated.',
count) % count)
recalculate_results.short_description = _('Recalculate results')

def username(self, obj):
Expand Down
20 changes: 10 additions & 10 deletions judge/admin/problem.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from django.urls import reverse_lazy
from django.utils import timezone
from django.utils.html import format_html
from django.utils.translation import gettext, gettext_lazy as _, ungettext
from django.utils.translation import gettext, gettext_lazy as _, ngettext
from reversion.admin import VersionAdmin

from judge.models import LanguageLimit, Problem, ProblemClarification, ProblemTranslation, Profile, Solution
Expand Down Expand Up @@ -189,29 +189,29 @@ def _rescore(self, request, problem_id):

def update_publish_date(self, request, queryset):
count = queryset.update(date=timezone.now())
self.message_user(request, ungettext("%d problem's publish date successfully updated.",
"%d problems' publish date successfully updated.",
count) % count)
self.message_user(request, ngettext("%d problem's publish date successfully updated.",
"%d problems' publish date successfully updated.",
count) % count)

update_publish_date.short_description = _('Set publish date to now')

def make_public(self, request, queryset):
count = queryset.update(is_public=True)
for problem_id in queryset.values_list('id', flat=True):
self._rescore(request, problem_id)
self.message_user(request, ungettext('%d problem successfully marked as public.',
'%d problems successfully marked as public.',
count) % count)
self.message_user(request, ngettext('%d problem successfully marked as public.',
'%d problems successfully marked as public.',
count) % count)

make_public.short_description = _('Mark problems as public')

def make_private(self, request, queryset):
count = queryset.update(is_public=False)
for problem_id in queryset.values_list('id', flat=True):
self._rescore(request, problem_id)
self.message_user(request, ungettext('%d problem successfully marked as private.',
'%d problems successfully marked as private.',
count) % count)
self.message_user(request, ngettext('%d problem successfully marked as private.',
'%d problems successfully marked as private.',
count) % count)

make_private.short_description = _('Mark problems as private')

Expand Down
8 changes: 4 additions & 4 deletions judge/admin/profile.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
from django.forms import ModelForm
from django.urls import reverse_lazy
from django.utils.html import format_html
from django.utils.translation import gettext, gettext_lazy as _, ungettext
from django.utils.translation import gettext, gettext_lazy as _, ngettext
from reversion.admin import VersionAdmin

from django_ace import AceWidget
Expand Down Expand Up @@ -117,9 +117,9 @@ def recalculate_points(self, request, queryset):
for profile in queryset:
profile.calculate_points()
count += 1
self.message_user(request, ungettext('%d user have scores recalculated.',
'%d users have scores recalculated.',
count) % count)
self.message_user(request, ngettext('%d user have scores recalculated.',
'%d users have scores recalculated.',
count) % count)
recalculate_points.short_description = _('Recalculate scores')

def get_form(self, request, obj=None, **kwargs):
Expand Down
14 changes: 7 additions & 7 deletions judge/admin/submission.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
from django.http import HttpResponseRedirect
from django.shortcuts import get_object_or_404
from django.utils.html import format_html
from django.utils.translation import gettext, gettext_lazy as _, pgettext, ungettext
from django.utils.translation import gettext, gettext_lazy as _, ngettext, pgettext

from django_ace import AceWidget
from judge.models import ContestParticipation, ContestProblem, ContestSubmission, Profile, Submission, \
Expand Down Expand Up @@ -167,9 +167,9 @@ def judge(self, request, queryset):
judged = len(queryset)
for model in queryset:
model.judge(rejudge=True, batch_rejudge=True)
self.message_user(request, ungettext('%d submission was successfully scheduled for rejudging.',
'%d submissions were successfully scheduled for rejudging.',
judged) % judged)
self.message_user(request, ngettext('%d submission was successfully scheduled for rejudging.',
'%d submissions were successfully scheduled for rejudging.',
judged) % judged)
judge.short_description = _('Rejudge the selected submissions')

def recalculate_score(self, request, queryset):
Expand All @@ -196,9 +196,9 @@ def recalculate_score(self, request, queryset):
id__in=queryset.values_list('contest__participation_id')).prefetch_related('contest'):
participation.recompute_results()

self.message_user(request, ungettext('%d submission were successfully rescored.',
'%d submissions were successfully rescored.',
len(submissions)) % len(submissions))
self.message_user(request, ngettext('%d submission were successfully rescored.',
'%d submissions were successfully rescored.',
len(submissions)) % len(submissions))
recalculate_score.short_description = _('Rescore the selected submissions')

def problem_code(self, obj):
Expand Down
4 changes: 2 additions & 2 deletions judge/contest_format/atcoder.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from django.urls import reverse
from django.utils.html import format_html
from django.utils.safestring import mark_safe
from django.utils.translation import gettext as _, gettext_lazy, ungettext
from django.utils.translation import gettext as _, gettext_lazy, ngettext

from judge.contest_format.default import DefaultContestFormat
from judge.contest_format.registry import register_contest_format
Expand Down Expand Up @@ -118,7 +118,7 @@ def get_short_form_display(self):

penalty = self.config['penalty']
if penalty:
yield ungettext(
yield ngettext(
'Each submission before the first maximum score submission will incur a **penalty of %d minute**.',
'Each submission before the first maximum score submission will incur a **penalty of %d minutes**.',
penalty,
Expand Down
4 changes: 2 additions & 2 deletions judge/contest_format/ecoo.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from django.urls import reverse
from django.utils.html import format_html
from django.utils.safestring import mark_safe
from django.utils.translation import gettext as _, gettext_lazy, ungettext
from django.utils.translation import gettext as _, gettext_lazy, ngettext

from judge.contest_format.default import DefaultContestFormat
from judge.contest_format.registry import register_contest_format
Expand Down Expand Up @@ -137,7 +137,7 @@ def get_short_form_display(self):

time_bonus = self.config['time_bonus']
if time_bonus:
yield ungettext(
yield ngettext(
'For every **%d minute** you submit before the end of your window, there will be a **1** point bonus.',
'For every **%d minutes** you submit before the end of your window, there will be a **1** point bonus.',
time_bonus,
Expand Down
4 changes: 2 additions & 2 deletions judge/jinja2/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import itertools
import json
from urllib.parse import quote

from django.utils.http import urlquote
from jinja2.ext import Extension
from mptt.utils import get_cached_trees
from statici18n.templatetags.statici18n import inlinei18n
Expand All @@ -16,7 +16,7 @@
registry.filter('str', str)
registry.filter('json', json.dumps)
registry.filter('highlight', highlight_code)
registry.filter('urlquote', urlquote)
registry.filter('urlquote', quote)
registry.filter('roundfloat', round)
registry.function('inlinei18n', inlinei18n)
registry.function('mptt_tree', get_cached_trees)
Expand Down
6 changes: 3 additions & 3 deletions judge/middleware.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@
import hmac
import re
import struct
from urllib.parse import quote

from django.conf import settings
from django.contrib.auth.models import User
from django.http import HttpResponse, HttpResponseRedirect
from django.urls import Resolver404, resolve, reverse
from django.utils.encoding import force_bytes
from django.utils.http import urlquote
from requests.exceptions import HTTPError


Expand Down Expand Up @@ -43,12 +43,12 @@ def __call__(self, request):
if (has_2fa and not request.session.get('2fa_passed', False) and
request.path not in (login_2fa_path, logout_path, webauthn_path) and
not request.path.startswith(settings.STATIC_URL)):
return HttpResponseRedirect(login_2fa_path + '?next=' + urlquote(request.get_full_path()))
return HttpResponseRedirect(login_2fa_path + '?next=' + quote(request.get_full_path()))
elif (request.session.get('password_pwned', False) and
request.path not in (change_password_path, change_password_done_path,
login_2fa_path, logout_path) and
not request.path.startswith(settings.STATIC_URL)):
return HttpResponseRedirect(change_password_path + '?next=' + urlquote(request.get_full_path()))
return HttpResponseRedirect(change_password_path + '?next=' + quote(request.get_full_path()))
else:
request.profile = None
return self.get_response(request)
Expand Down
2 changes: 1 addition & 1 deletion judge/utils/problems.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ def _get_result_data(results):
return {
'categories': [
# Using gettext_noop here since this will be tacked into the cache, so it must be language neutral.
# The caller, SubmissionList.get_result_data will run ugettext on the name.
# The caller, SubmissionList.get_result_data will run gettext on the name.
{'code': 'AC', 'name': gettext_noop('Accepted'), 'count': results['AC']},
{'code': 'WA', 'name': gettext_noop('Wrong'), 'count': results['WA']},
{'code': 'CE', 'name': gettext_noop('Compile Error'), 'count': results['CE']},
Expand Down
4 changes: 2 additions & 2 deletions judge/utils/pwned.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
from django.conf import settings
from django.contrib.auth.password_validation import CommonPasswordValidator
from django.core.exceptions import ValidationError
from django.utils.translation import gettext as _, ungettext
from django.utils.translation import gettext as _, ngettext

from judge.utils.unicode import utf8bytes

Expand Down Expand Up @@ -123,7 +123,7 @@ def validate(self, password, user=None):
CommonPasswordValidator().validate(password, user)
elif amount:
raise ValidationError(
ungettext(
ngettext(
self.error_message['singular'],
self.error_message['plural'],
amount,
Expand Down
4 changes: 2 additions & 2 deletions judge/utils/timedelta.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import datetime

from django.utils.translation import npgettext, pgettext, ungettext
from django.utils.translation import ngettext, npgettext, pgettext


def nice_repr(timedelta, display='long', sep=', '):
Expand Down Expand Up @@ -58,7 +58,7 @@ def nice_repr(timedelta, display='long', sep=', '):
if hours or minutes:
return npgettext('time format no seconds with day', '%d day %h:%m', '%d days %h:%m', days) \
.replace('%d', str(days)).replace('%h', '%02d' % hours).replace('%m', '%02d' % minutes)
return ungettext('%d day', '%d days', days) % days
return ngettext('%d day', '%d days', days) % days
else:
return pgettext('hours and minutes', '%h:%m').replace('%h', '%02d' % hours).replace('%m', '%02d' % minutes)
elif display == 'concise':
Expand Down
2 changes: 1 addition & 1 deletion judge/views/blog.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from django.http import Http404
from django.urls import reverse
from django.utils import timezone
from django.utils.translation import ugettext as _
from django.utils.translation import gettext as _
from django.views.generic import ListView

from judge.comments import CommentedDetailView
Expand Down
Loading