From 7a1b4570b0698243cbe734d14f0663cd1660c4a7 Mon Sep 17 00:00:00 2001 From: Chuan-Zheng Lee Date: Wed, 26 Feb 2020 01:15:35 -0800 Subject: [PATCH] Unignore flake8 check I100 This enforces alphabetical order within groups, and requires 'import' statements come before 'from' statements within groups. --- .flake8 | 3 +-- data/migrate_fixtures.py | 2 +- tabbycat/actionlog/management/commands/keytimes.py | 4 ++-- tabbycat/adjallocation/allocators/hungarian.py | 2 +- tabbycat/adjallocation/conflicts.py | 5 ++--- tabbycat/adjallocation/consumers.py | 6 +++--- tabbycat/adjallocation/views.py | 2 +- tabbycat/adjfeedback/dbutils.py | 4 ++-- tabbycat/adjfeedback/forms.py | 3 +-- tabbycat/adjfeedback/models.py | 3 +-- tabbycat/adjfeedback/views.py | 10 +++++----- tabbycat/api/views.py | 6 +++--- tabbycat/asgi.py | 2 +- .../management/commands/availabilitydump.py | 2 +- tabbycat/availability/models.py | 2 +- tabbycat/availability/views.py | 12 ++++++------ tabbycat/breakqual/generator.py | 6 +++--- tabbycat/breakqual/liveness.py | 2 +- tabbycat/breakqual/models.py | 2 +- tabbycat/breakqual/views.py | 6 +++--- tabbycat/checkins/utils.py | 2 +- tabbycat/checkins/views.py | 4 ++-- tabbycat/draw/generator/bphungarian.py | 4 ++-- tabbycat/draw/generator/powerpair.py | 2 +- .../management/commands/generatesideallocations.py | 2 +- tabbycat/draw/manager.py | 4 ++-- tabbycat/draw/models.py | 5 ++--- tabbycat/draw/tests/generate_standings.py | 8 ++++---- tabbycat/draw/tests/test_bphungarian_parts.py | 2 +- tabbycat/draw/tests/test_generator.py | 4 ++-- tabbycat/draw/tests/test_random.py | 4 ++-- tabbycat/draw/views.py | 6 +++--- tabbycat/importer/importers/base.py | 2 +- tabbycat/importer/importers/boots.py | 4 ++-- .../importer/management/commands/importtournament.py | 6 +++--- tabbycat/importer/tests/test_anorak.py | 5 ++--- tabbycat/importer/views.py | 6 +++--- tabbycat/motions/admin.py | 4 ++-- tabbycat/notifications/consumers.py | 2 +- tabbycat/notifications/utils.py | 4 ++-- tabbycat/notifications/views.py | 2 +- tabbycat/options/preferences.py | 4 ++-- tabbycat/options/views.py | 4 ++-- tabbycat/participants/admin.py | 5 ++--- tabbycat/participants/signals.py | 3 ++- .../templatetags/team_name_for_data_entry.py | 2 +- tabbycat/participants/tests/test_lookup.py | 2 +- tabbycat/participants/tests/test_models.py | 2 +- tabbycat/participants/tests/test_views.py | 2 +- tabbycat/participants/views.py | 5 ++--- tabbycat/printing/views.py | 2 +- tabbycat/privateurls/views.py | 2 +- tabbycat/results/admin.py | 4 ++-- tabbycat/results/dbutils.py | 2 +- .../results/management/commands/compareballots.py | 2 +- .../results/management/commands/generateresults.py | 2 +- tabbycat/results/models.py | 2 +- tabbycat/results/tests/generate_testdata.py | 2 +- tabbycat/results/utils.py | 2 +- tabbycat/results/views.py | 4 ++-- tabbycat/routing.py | 4 ++-- tabbycat/run-asgi.py | 4 ++-- tabbycat/standings/base.py | 2 +- tabbycat/standings/speakers.py | 2 +- tabbycat/standings/teams.py | 2 +- tabbycat/standings/tests/generate_testdata.py | 2 +- tabbycat/standings/tests/test_standings.py | 6 +++--- tabbycat/standings/views.py | 9 ++++----- tabbycat/tournaments/forms.py | 4 ++-- tabbycat/tournaments/mixins.py | 6 +++--- tabbycat/tournaments/models.py | 7 ++++--- tabbycat/tournaments/signals.py | 3 ++- tabbycat/tournaments/utils.py | 3 +-- tabbycat/tournaments/views.py | 4 ++-- tabbycat/urls.py | 2 +- tabbycat/utils/management/commands/simulaterounds.py | 2 +- tabbycat/utils/misc.py | 2 +- tabbycat/utils/mixins.py | 2 +- tabbycat/utils/tests.py | 10 +++++----- tabbycat/utils/views.py | 2 +- tabbycat/venues/admin.py | 2 +- 81 files changed, 146 insertions(+), 153 deletions(-) diff --git a/.flake8 b/.flake8 index 1c4a1c6e723..6f065c72a0d 100644 --- a/.flake8 +++ b/.flake8 @@ -8,11 +8,10 @@ # E226 = missing whitespace around arithmetic operator # E241 = multiple spaces after ',' # E261 = at least two spaces before inline comment -# I100 = Imported names are in the wrong order. # Q000 = double quotes # W504 = line break after binary operator -ignore = C814,E126,E127,E128,E203,E221,E226,E241,E261,I100,Q000,W504 +ignore = C814,E126,E127,E128,E203,E221,E226,E241,E261,Q000,W504 max-line-length = 200 diff --git a/data/migrate_fixtures.py b/data/migrate_fixtures.py index c7f52905439..f4257f759c0 100644 --- a/data/migrate_fixtures.py +++ b/data/migrate_fixtures.py @@ -3,8 +3,8 @@ import argparse import os -import re import platform +import re import subprocess import sys from os.path import abspath, dirname, join, relpath diff --git a/tabbycat/actionlog/management/commands/keytimes.py b/tabbycat/actionlog/management/commands/keytimes.py index 9ab188e2b43..7e8769758e2 100644 --- a/tabbycat/actionlog/management/commands/keytimes.py +++ b/tabbycat/actionlog/management/commands/keytimes.py @@ -1,10 +1,10 @@ -import datetime import csv +import datetime from django.utils import timezone -from utils.management.base import TournamentCommand from actionlog.models import ActionLogEntry +from utils.management.base import TournamentCommand class Command(TournamentCommand): diff --git a/tabbycat/adjallocation/allocators/hungarian.py b/tabbycat/adjallocation/allocators/hungarian.py index f95e6203e7e..d760313db0e 100644 --- a/tabbycat/adjallocation/allocators/hungarian.py +++ b/tabbycat/adjallocation/allocators/hungarian.py @@ -5,8 +5,8 @@ from django.utils.translation import gettext as _, ngettext from munkres import Munkres -from ..allocation import AdjudicatorAllocation from .base import AdjudicatorAllocationError, BaseAdjudicatorAllocator, register +from ..allocation import AdjudicatorAllocation logger = logging.getLogger(__name__) diff --git a/tabbycat/adjallocation/conflicts.py b/tabbycat/adjallocation/conflicts.py index c76b6cba73f..d6f10f41a7e 100644 --- a/tabbycat/adjallocation/conflicts.py +++ b/tabbycat/adjallocation/conflicts.py @@ -1,13 +1,12 @@ """Utilities for querying and listing conflicts and history between participants.""" import logging - from itertools import combinations, product -from draw.models import Debate -from participants.models import Adjudicator, Team from adjallocation.models import (AdjudicatorAdjudicatorConflict, AdjudicatorInstitutionConflict, AdjudicatorTeamConflict, TeamInstitutionConflict) +from draw.models import Debate +from participants.models import Adjudicator, Team logger = logging.getLogger(__name__) diff --git a/tabbycat/adjallocation/consumers.py b/tabbycat/adjallocation/consumers.py index a45af679a58..2bcb906d147 100644 --- a/tabbycat/adjallocation/consumers.py +++ b/tabbycat/adjallocation/consumers.py @@ -1,10 +1,10 @@ +import logging from itertools import groupby from operator import attrgetter -import logging from django.db.models import F -from django.utils.translation import gettext as _, ngettext from django.utils.safestring import mark_safe +from django.utils.translation import gettext as _, ngettext from actionlog.models import ActionLogEntry from breakqual.utils import calculate_live_thresholds @@ -12,9 +12,9 @@ from participants.prefetch import populate_win_counts from tournaments.models import Round -from .models import PreformedPanel from .allocators.base import AdjudicatorAllocationError from .allocators.hungarian import ConsensusHungarianAllocator, VotingHungarianAllocator +from .models import PreformedPanel from .preformed import copy_panels_to_debates from .preformed.anticipated import calculate_anticipated_draw from .preformed.hungarian import HungarianPreformedPanelAllocator diff --git a/tabbycat/adjallocation/views.py b/tabbycat/adjallocation/views.py index 302e2c410fd..83f37acae0d 100644 --- a/tabbycat/adjallocation/views.py +++ b/tabbycat/adjallocation/views.py @@ -4,8 +4,8 @@ from django.contrib import messages from django.db.models import Prefetch from django.forms import ModelChoiceField -from django.views.generic.base import TemplateView from django.utils.translation import gettext as _, gettext_lazy, ngettext +from django.views.generic.base import TemplateView from actionlog.mixins import LogActionMixin from actionlog.models import ActionLogEntry diff --git a/tabbycat/adjfeedback/dbutils.py b/tabbycat/adjfeedback/dbutils.py index 45fd14e4efb..b3fb88ef558 100644 --- a/tabbycat/adjfeedback/dbutils.py +++ b/tabbycat/adjfeedback/dbutils.py @@ -4,15 +4,15 @@ These are mainly used in management commands, but in principle could be used by a front-end interface as well.""" -import random import itertools import logging +import random from django.contrib.auth import get_user_model +from adjallocation.models import DebateAdjudicator from draw.models import DebateTeam from participants.models import Adjudicator, Team -from adjallocation.models import DebateAdjudicator from . import models as fm diff --git a/tabbycat/adjfeedback/forms.py b/tabbycat/adjfeedback/forms.py index 6af2a5fe175..e1c42c0ca17 100644 --- a/tabbycat/adjfeedback/forms.py +++ b/tabbycat/adjfeedback/forms.py @@ -5,8 +5,7 @@ from django.core.exceptions import ValidationError from django.db.models import Exists, OuterRef, Prefetch from django.utils.safestring import mark_safe -from django.utils.translation import gettext_lazy -from django.utils.translation import gettext as _ +from django.utils.translation import gettext as _, gettext_lazy from adjallocation.allocation import AdjudicatorAllocation from adjallocation.models import DebateAdjudicator diff --git a/tabbycat/adjfeedback/models.py b/tabbycat/adjfeedback/models.py index 05042b6a718..66c437a22de 100644 --- a/tabbycat/adjfeedback/models.py +++ b/tabbycat/adjfeedback/models.py @@ -1,8 +1,7 @@ from django.core.exceptions import ValidationError from django.db import models from django.utils.functional import cached_property -from django.utils.translation import gettext_lazy as _ -from django.utils.translation import gettext +from django.utils.translation import gettext, gettext_lazy as _ from adjallocation.models import DebateAdjudicator from results.models import Submission diff --git a/tabbycat/adjfeedback/views.py b/tabbycat/adjfeedback/views.py index 7f7994f44f7..d119649576a 100644 --- a/tabbycat/adjfeedback/views.py +++ b/tabbycat/adjfeedback/views.py @@ -1,7 +1,7 @@ +import csv import json import logging import math -import csv from django.contrib import messages from django.db.models import Count, F, Q @@ -23,15 +23,15 @@ from tournaments.models import Round from utils.misc import reverse_tournament from utils.mixins import AdministratorMixin, AssistantMixin -from utils.views import PostOnlyRedirectView, VueTableTemplateView from utils.tables import TabbycatTableBuilder +from utils.views import PostOnlyRedirectView, VueTableTemplateView -from .models import AdjudicatorBaseScoreHistory, AdjudicatorFeedback, AdjudicatorFeedbackQuestion from .forms import make_feedback_form_class, UpdateAdjudicatorScoresForm -from .tables import FeedbackTableBuilder -from .utils import get_feedback_overview +from .models import AdjudicatorBaseScoreHistory, AdjudicatorFeedback, AdjudicatorFeedbackQuestion from .prefetch import populate_debate_adjudicators from .progress import get_feedback_progress +from .tables import FeedbackTableBuilder +from .utils import get_feedback_overview logger = logging.getLogger(__name__) diff --git a/tabbycat/api/views.py b/tabbycat/api/views.py index 6a6d2f4da04..10e49126605 100644 --- a/tabbycat/api/views.py +++ b/tabbycat/api/views.py @@ -1,14 +1,14 @@ -from dynamic_preferences.api.viewsets import PerInstancePreferenceViewSet from dynamic_preferences.api.serializers import PreferenceSerializer +from dynamic_preferences.api.viewsets import PerInstancePreferenceViewSet from rest_framework.generics import GenericAPIView, RetrieveUpdateAPIView -from rest_framework.viewsets import ModelViewSet from rest_framework.permissions import IsAdminUser from rest_framework.response import Response from rest_framework.reverse import reverse +from rest_framework.viewsets import ModelViewSet from options.models import TournamentPreferenceModel -from tournaments.models import Tournament from tournaments.mixins import TournamentFromUrlMixin +from tournaments.models import Tournament from . import serializers diff --git a/tabbycat/asgi.py b/tabbycat/asgi.py index 2804300883d..b1796cfcd7f 100644 --- a/tabbycat/asgi.py +++ b/tabbycat/asgi.py @@ -11,8 +11,8 @@ from channels.routing import get_default_application from sentry_sdk.integrations.asgi import SentryAsgiMiddleware -from sentry_sdk.integrations.logging import LoggingIntegration from sentry_sdk.integrations.django import DjangoIntegration +from sentry_sdk.integrations.logging import LoggingIntegration from sentry_sdk.integrations.redis import RedisIntegration from settings.core import TABBYCAT_VERSION diff --git a/tabbycat/availability/management/commands/availabilitydump.py b/tabbycat/availability/management/commands/availabilitydump.py index 4b4c4806101..364359901bb 100644 --- a/tabbycat/availability/management/commands/availabilitydump.py +++ b/tabbycat/availability/management/commands/availabilitydump.py @@ -1,7 +1,7 @@ from django.db.models import Prefetch -from utils.management.base import TournamentCommand from availability.models import RoundAvailability +from utils.management.base import TournamentCommand class Command(TournamentCommand): diff --git a/tabbycat/availability/models.py b/tabbycat/availability/models.py index f7dc57b9f67..d974d8bf43a 100644 --- a/tabbycat/availability/models.py +++ b/tabbycat/availability/models.py @@ -1,6 +1,6 @@ -from django.db import models from django.contrib.contenttypes.fields import GenericForeignKey from django.contrib.contenttypes.models import ContentType +from django.db import models from django.utils.translation import gettext_lazy as _ diff --git a/tabbycat/availability/views.py b/tabbycat/availability/views.py index c776f3ee426..438bd6b5431 100644 --- a/tabbycat/availability/views.py +++ b/tabbycat/availability/views.py @@ -8,26 +8,26 @@ from django.db.models import Min from django.db.models.functions import Coalesce from django.http import JsonResponse -from django.views.generic.base import TemplateView, View from django.utils.translation import gettext as _ from django.utils.translation import gettext_lazy, ngettext +from django.views.generic.base import TemplateView, View -from . import utils - -from availability.models import RoundAvailability from actionlog.mixins import LogActionMixin from actionlog.models import ActionLogEntry +from availability.models import RoundAvailability from checkins.utils import get_checkins from draw.generator.utils import partial_break_round_split from draw.models import Debate from participants.models import Adjudicator, Team from tournaments.mixins import RoundMixin -from utils.tables import TabbycatTableBuilder +from utils.misc import reverse_round from utils.mixins import AdministratorMixin +from utils.tables import TabbycatTableBuilder from utils.views import PostOnlyRedirectView, VueTableTemplateView -from utils.misc import reverse_round from venues.models import Venue +from . import utils + logger = logging.getLogger(__name__) diff --git a/tabbycat/breakqual/generator.py b/tabbycat/breakqual/generator.py index f341c4d87a2..6bbfbc7bb97 100644 --- a/tabbycat/breakqual/generator.py +++ b/tabbycat/breakqual/generator.py @@ -1,10 +1,10 @@ import logging -from . import base +from breakqual.models import BreakCategory + # These imports add the break generators in those files to the registry. from . import aida # noqa: F401 - -from breakqual.models import BreakCategory +from . import base logger = logging.getLogger(__name__) diff --git a/tabbycat/breakqual/liveness.py b/tabbycat/breakqual/liveness.py index 2cff2ec7c7f..32baf63fccb 100644 --- a/tabbycat/breakqual/liveness.py +++ b/tabbycat/breakqual/liveness.py @@ -2,8 +2,8 @@ # Contributed by Thevesh Theva and his work on the debatebreaker.blogspot.com.au # blog and app. -from math import ceil, factorial, floor from itertools import accumulate +from math import ceil, factorial, floor def ncr(n, r): diff --git a/tabbycat/breakqual/models.py b/tabbycat/breakqual/models.py index 80314fafe5b..4abe435b3cd 100644 --- a/tabbycat/breakqual/models.py +++ b/tabbycat/breakqual/models.py @@ -1,7 +1,7 @@ import math -from django.db import models from django.core.validators import MinValueValidator +from django.db import models from django.utils.translation import gettext_lazy as _ diff --git a/tabbycat/breakqual/views.py b/tabbycat/breakqual/views.py index ba790a003d6..5ec1395f859 100644 --- a/tabbycat/breakqual/views.py +++ b/tabbycat/breakqual/views.py @@ -13,18 +13,18 @@ from actionlog.models import ActionLogEntry from participants.models import Team from participants.views import EditSpeakerCategoriesView, UpdateEligibilityEditView as BaseUpdateEligibilityEditView +from tournaments.mixins import PublicTournamentPageMixin, SingleObjectFromTournamentMixin, TournamentMixin from utils.misc import reverse_tournament from utils.mixins import AdministratorMixin -from utils.views import PostOnlyRedirectView, VueTableTemplateView from utils.tables import TabbycatTableBuilder -from tournaments.mixins import PublicTournamentPageMixin, SingleObjectFromTournamentMixin, TournamentMixin +from utils.views import PostOnlyRedirectView, VueTableTemplateView +from . import forms from .base import BreakGeneratorError from .generator import BreakGenerator from .models import BreakCategory, BreakingTeam from .serializers import BreakCategorySerializer from .utils import auto_make_break_rounds, breakcategories_with_counts, get_breaking_teams -from . import forms logger = logging.getLogger(__name__) diff --git a/tabbycat/checkins/utils.py b/tabbycat/checkins/utils.py index 821607418ed..42717ab62ed 100644 --- a/tabbycat/checkins/utils.py +++ b/tabbycat/checkins/utils.py @@ -3,8 +3,8 @@ import random import string -from django.db.models import Q from django.core.exceptions import ObjectDoesNotExist +from django.db.models import Q from django.utils import timezone from django.utils.translation import gettext as _ diff --git a/tabbycat/checkins/views.py b/tabbycat/checkins/views.py index d7d457e120c..2d5ab0283d0 100644 --- a/tabbycat/checkins/views.py +++ b/tabbycat/checkins/views.py @@ -4,19 +4,19 @@ from channels.layers import get_channel_layer from django.contrib import messages from django.core.exceptions import ObjectDoesNotExist -from django.views.generic.base import TemplateView from django.template.response import TemplateResponse from django.utils.translation import gettext as _ +from django.views.generic.base import TemplateView from actionlog.mixins import LogActionMixin from actionlog.models import ActionLogEntry from options.utils import use_team_code_names from participants.models import Person, Speaker from participants.serializers import InstitutionSerializer +from tournaments.mixins import PublicTournamentPageMixin, TournamentMixin from utils.misc import reverse_tournament from utils.mixins import AdministratorMixin, AssistantMixin from utils.views import PostOnlyRedirectView -from tournaments.mixins import PublicTournamentPageMixin, TournamentMixin from venues.serializers import VenueSerializer from .consumers import CheckInEventConsumer diff --git a/tabbycat/draw/generator/bphungarian.py b/tabbycat/draw/generator/bphungarian.py index 8ec855b8552..26e06dd2307 100644 --- a/tabbycat/draw/generator/bphungarian.py +++ b/tabbycat/draw/generator/bphungarian.py @@ -1,12 +1,12 @@ import logging -import time import random +import time from collections import Counter from math import log2 from statistics import pvariance -from django.utils.translation import gettext as _ import munkres +from django.utils.translation import gettext as _ from .common import BaseBPDrawGenerator, DrawUserError from .pairing import BPPairing diff --git a/tabbycat/draw/generator/powerpair.py b/tabbycat/draw/generator/powerpair.py index 65426cdb86f..dfa5b67d1e5 100644 --- a/tabbycat/draw/generator/powerpair.py +++ b/tabbycat/draw/generator/powerpair.py @@ -4,8 +4,8 @@ from django.utils.translation import gettext as _ from .common import BasePairDrawGenerator, DrawFatalError, DrawUserError -from .pairing import Pairing from .one_up_one_down import OneUpOneDownSwapper +from .pairing import Pairing class PowerPairedDrawGenerator(BasePairDrawGenerator): diff --git a/tabbycat/draw/management/commands/generatesideallocations.py b/tabbycat/draw/management/commands/generatesideallocations.py index e7e3c3bc155..eb2b718ec2f 100644 --- a/tabbycat/draw/management/commands/generatesideallocations.py +++ b/tabbycat/draw/management/commands/generatesideallocations.py @@ -1,5 +1,5 @@ -from random import shuffle from operator import attrgetter +from random import shuffle from utils.management.base import CommandError, RoundCommand diff --git a/tabbycat/draw/manager.py b/tabbycat/draw/manager.py index fa1bf5ed689..322c5e36f55 100644 --- a/tabbycat/draw/manager.py +++ b/tabbycat/draw/manager.py @@ -5,12 +5,12 @@ from draw.generator.powerpair import PowerPairedDrawGenerator from participants.utils import get_side_history -from tournaments.models import Round from standings.teams import TeamStandingsGenerator +from tournaments.models import Round -from .models import Debate, DebateTeam from .generator import BPEliminationResultPairing, DrawGenerator, DrawUserError, ResultPairing from .generator.utils import ispow2 +from .models import Debate, DebateTeam logger = logging.getLogger(__name__) diff --git a/tabbycat/draw/models.py b/tabbycat/draw/models.py index 2de35503478..d17da4e3877 100644 --- a/tabbycat/draw/models.py +++ b/tabbycat/draw/models.py @@ -1,9 +1,8 @@ import logging -from django.db import models from django.core.exceptions import MultipleObjectsReturned, ObjectDoesNotExist -from django.utils.translation import gettext_lazy as _ -from django.utils.translation import gettext +from django.db import models +from django.utils.translation import gettext, gettext_lazy as _ from tournaments.utils import get_side_name diff --git a/tabbycat/draw/tests/generate_standings.py b/tabbycat/draw/tests/generate_standings.py index e5dc4c72355..3b35efbc68a 100644 --- a/tabbycat/draw/tests/generate_standings.py +++ b/tabbycat/draw/tests/generate_standings.py @@ -9,11 +9,11 @@ This script must be run from the directory it is in.""" +import argparse import os.path -import sys -import string import random -import argparse +import string +import sys draw_dir = os.path.abspath(os.path.join("..", "..")) if draw_dir not in sys.path: @@ -21,8 +21,8 @@ print(draw_dir) del draw_dir -from draw.tests.utils import TestTeam # noqa: E402 (has to come after path modification above) from draw.generator import DrawGenerator # noqa: E402 (has to come after path modification above) +from draw.tests.utils import TestTeam # noqa: E402 (has to come after path modification above) parser = argparse.ArgumentParser(description=__doc__) parser.add_argument("rounds", type=int, help="Number of rounds") diff --git a/tabbycat/draw/tests/test_bphungarian_parts.py b/tabbycat/draw/tests/test_bphungarian_parts.py index 1618cda3f53..e23885c4b9f 100644 --- a/tabbycat/draw/tests/test_bphungarian_parts.py +++ b/tabbycat/draw/tests/test_bphungarian_parts.py @@ -1,7 +1,7 @@ import unittest -from ..generator.bphungarian import BPHungarianDrawGenerator from .utils import TestTeam +from ..generator.bphungarian import BPHungarianDrawGenerator DUMMY_TEAMS = [TestTeam(1, 'A', side_history=[0, 0, 0, 0]), TestTeam(2, 'B', side_history=[0, 0, 0, 0]), diff --git a/tabbycat/draw/tests/test_generator.py b/tabbycat/draw/tests/test_generator.py index 7254aab39a0..8862c6bfe58 100644 --- a/tabbycat/draw/tests/test_generator.py +++ b/tabbycat/draw/tests/test_generator.py @@ -1,12 +1,12 @@ -import unittest import copy +import unittest from collections import OrderedDict +from .utils import TestTeam from .. import DrawFatalError, DrawGenerator, DrawUserError from ..generator.pairing import Pairing, ResultPairing from ..generator.utils import partial_break_round_split -from .utils import TestTeam DUMMY_TEAMS = [TestTeam(1, 'A', allocated_side="aff"), TestTeam(2, 'B', allocated_side="neg")] diff --git a/tabbycat/draw/tests/test_random.py b/tabbycat/draw/tests/test_random.py index 5f8099fb1f4..84cd20d6038 100644 --- a/tabbycat/draw/tests/test_random.py +++ b/tabbycat/draw/tests/test_random.py @@ -1,7 +1,7 @@ -from draw.manager import DrawManager from availability.utils import activate_all -from participants.models import Team +from draw.manager import DrawManager from draw.models import DebateTeam +from participants.models import Team from tournaments.models import Round from utils.tests import BaseMinimalTournamentTestCase diff --git a/tabbycat/draw/views.py b/tabbycat/draw/views.py index 50d9ceedbf5..fa1bfdf1dc7 100644 --- a/tabbycat/draw/views.py +++ b/tabbycat/draw/views.py @@ -32,10 +32,10 @@ TournamentMixin) from tournaments.models import Round from tournaments.utils import get_side_name -from utils.mixins import AdministratorMixin -from utils.views import PostOnlyRedirectView, VueTableTemplateView from utils.misc import reverse_round, reverse_tournament +from utils.mixins import AdministratorMixin from utils.tables import TabbycatTableBuilder +from utils.views import PostOnlyRedirectView, VueTableTemplateView from venues.allocator import allocate_venues from venues.models import VenueConstraint from venues.utils import venue_conflicts_display @@ -45,9 +45,9 @@ from .manager import DrawManager from .models import Debate, TeamSideAllocation from .prefetch import populate_history +from .serializers import EditDebateTeamsDebateSerializer, EditDebateTeamsTeamSerializer from .tables import (AdminDrawTableBuilder, PositionBalanceReportDrawTableBuilder, PositionBalanceReportSummaryTableBuilder, PublicDrawTableBuilder) -from .serializers import EditDebateTeamsDebateSerializer, EditDebateTeamsTeamSerializer logger = logging.getLogger(__name__) diff --git a/tabbycat/importer/importers/base.py b/tabbycat/importer/importers/base.py index 2c2bd9bf70e..d57b08fbbbe 100644 --- a/tabbycat/importer/importers/base.py +++ b/tabbycat/importer/importers/base.py @@ -1,8 +1,8 @@ """Base classes for tournament data importers.""" import csv -import re import logging +import re from collections import Counter from types import GeneratorType diff --git a/tabbycat/importer/importers/boots.py b/tabbycat/importer/importers/boots.py index 5679b82bbde..f8222943b3d 100644 --- a/tabbycat/importer/importers/boots.py +++ b/tabbycat/importer/importers/boots.py @@ -2,12 +2,12 @@ from django.db.models import Q import adjallocation.models as am -import availability.models as avm import adjfeedback.models as fm +import availability.models as avm import breakqual.models as bm import motions.models as mm -import tournaments.models as tm import participants.models as pm +import tournaments.models as tm import venues.models as vm from participants.emoji import set_emoji diff --git a/tabbycat/importer/management/commands/importtournament.py b/tabbycat/importer/management/commands/importtournament.py index bf3e8e0ed34..3c8e47f7fcc 100644 --- a/tabbycat/importer/management/commands/importtournament.py +++ b/tabbycat/importer/management/commands/importtournament.py @@ -1,16 +1,16 @@ -import os import logging +import os -from django.core.management.base import BaseCommand, CommandError from django.conf import settings +from django.core.management.base import BaseCommand, CommandError from django.template.defaultfilters import slugify import participants.models as pm import venues.models as vm from draw.models import DebateTeam +from importer.importers import DUPLICATE_INFO, importer_registry, TournamentDataImporterFatal from tournaments.models import Tournament from tournaments.utils import auto_make_rounds -from importer.importers import DUPLICATE_INFO, importer_registry, TournamentDataImporterFatal class Command(BaseCommand): diff --git a/tabbycat/importer/tests/test_anorak.py b/tabbycat/importer/tests/test_anorak.py index 0e18efe3398..ee9530ecbb1 100644 --- a/tabbycat/importer/tests/test_anorak.py +++ b/tabbycat/importer/tests/test_anorak.py @@ -3,8 +3,6 @@ import logging import os.path -from settings import BASE_DIR - from django.test import TestCase import adjallocation.models as am @@ -14,9 +12,10 @@ import participants.models as pm import tournaments.models as tm import venues.models as vm +from settings import BASE_DIR -from ..importers.anorak import AnorakTournamentDataImporter from ..importers import TournamentDataImporterError +from ..importers.anorak import AnorakTournamentDataImporter class TestImporterAnorak(TestCase): diff --git a/tabbycat/importer/views.py b/tabbycat/importer/views.py index d00dd6b2b76..6e9a43c7563 100644 --- a/tabbycat/importer/views.py +++ b/tabbycat/importer/views.py @@ -14,19 +14,19 @@ from actionlog.models import ActionLogEntry from participants.emoji import set_emoji from participants.models import Adjudicator, Institution, Team -from tournaments.models import Tournament from tournaments.mixins import TournamentMixin +from tournaments.models import Tournament from utils.misc import redirect_tournament from utils.mixins import AdministratorMixin from utils.views import PostOnlyRedirectView from venues.models import Venue -from .management.commands import importtournament -from .importers import TournamentDataImporterError from .forms import (AdjudicatorDetailsForm, ImportAdjudicatorsNumbersForm, ImportInstitutionsRawForm, ImportTeamsNumbersForm, ImportVenuesRawForm, TeamDetailsForm, TeamDetailsFormSet, VenueDetailsForm) +from .importers import TournamentDataImporterError +from .management.commands import importtournament logger = logging.getLogger(__name__) diff --git a/tabbycat/motions/admin.py b/tabbycat/motions/admin.py index cfb2b894bca..fdb0e27b670 100644 --- a/tabbycat/motions/admin.py +++ b/tabbycat/motions/admin.py @@ -1,9 +1,9 @@ from django.contrib import admin -from .models import DebateTeamMotionPreference, Motion - from utils.admin import TabbycatModelAdminFieldsMixin +from .models import DebateTeamMotionPreference, Motion + # ============================================================================== # Motions diff --git a/tabbycat/notifications/consumers.py b/tabbycat/notifications/consumers.py index 8267f593a58..d89e8c73975 100644 --- a/tabbycat/notifications/consumers.py +++ b/tabbycat/notifications/consumers.py @@ -1,6 +1,6 @@ import json -from smtplib import SMTPException import random +from smtplib import SMTPException from channels.consumer import SyncConsumer from django.conf import settings diff --git a/tabbycat/notifications/utils.py b/tabbycat/notifications/utils.py index e6d6dba9aa4..524894ac0f6 100644 --- a/tabbycat/notifications/utils.py +++ b/tabbycat/notifications/utils.py @@ -17,11 +17,11 @@ from adjallocation.allocation import AdjudicatorAllocation from draw.models import Debate -from results.result import BaseConsensusDebateResultWithSpeakers, DebateResult, VotingDebateResult -from results.utils import side_and_position_names from options.utils import use_team_code_names from participants.models import Person from participants.prefetch import populate_win_counts +from results.result import BaseConsensusDebateResultWithSpeakers, DebateResult, VotingDebateResult +from results.utils import side_and_position_names from tournaments.models import Round, Tournament diff --git a/tabbycat/notifications/views.py b/tabbycat/notifications/views.py index e00a76a1d4c..05b85d437f0 100644 --- a/tabbycat/notifications/views.py +++ b/tabbycat/notifications/views.py @@ -1,5 +1,5 @@ -from datetime import datetime import json +from datetime import datetime from smtplib import SMTPException from asgiref.sync import async_to_sync diff --git a/tabbycat/options/preferences.py b/tabbycat/options/preferences.py index be548eeafce..15854fac150 100644 --- a/tabbycat/options/preferences.py +++ b/tabbycat/options/preferences.py @@ -6,12 +6,12 @@ from dynamic_preferences.preferences import Section from dynamic_preferences.types import BooleanPreference, ChoicePreference, FloatPreference, IntegerPreference, LongStringPreference, StringPreference -from standings.teams import TeamStandingsGenerator from standings.speakers import SpeakerStandingsGenerator +from standings.teams import TeamStandingsGenerator from tournaments.utils import get_side_name_choices -from .types import MultiValueChoicePreference from .models import tournament_preferences_registry +from .types import MultiValueChoicePreference # ============================================================================== diff --git a/tabbycat/options/views.py b/tabbycat/options/views.py index d49e07f82bf..6b8407b99fd 100644 --- a/tabbycat/options/views.py +++ b/tabbycat/options/views.py @@ -10,12 +10,12 @@ from actionlog.mixins import LogActionMixin from actionlog.models import ActionLogEntry from tournaments.mixins import TournamentMixin -from utils.mixins import AdministratorMixin from utils.misc import reverse_tournament +from utils.mixins import AdministratorMixin -from .presets import all_presets, get_preferences_data from .forms import tournament_preference_form_builder from .preferences import tournament_preferences_registry +from .presets import all_presets, get_preferences_data logger = logging.getLogger(__name__) diff --git a/tabbycat/participants/admin.py b/tabbycat/participants/admin.py index b321149d699..5cdb4443c54 100644 --- a/tabbycat/participants/admin.py +++ b/tabbycat/participants/admin.py @@ -1,15 +1,14 @@ from django import forms from django.contrib import admin from django.core.exceptions import ValidationError -from django.utils.translation import ngettext -from django.utils.translation import gettext_lazy as _, ngettext_lazy +from django.utils.translation import gettext_lazy as _, ngettext, ngettext_lazy -from draw.models import TeamSideAllocation from adjallocation.models import (AdjudicatorAdjudicatorConflict, AdjudicatorInstitutionConflict, AdjudicatorTeamConflict, TeamInstitutionConflict) from adjfeedback.models import AdjudicatorBaseScoreHistory from availability.admin import RoundAvailabilityInline from breakqual.models import BreakCategory +from draw.models import TeamSideAllocation from tournaments.models import Tournament from venues.admin import VenueConstraintInline diff --git a/tabbycat/participants/signals.py b/tabbycat/participants/signals.py index e8b8b4979d0..12d44aff95d 100644 --- a/tabbycat/participants/signals.py +++ b/tabbycat/participants/signals.py @@ -1,10 +1,11 @@ +import logging + from django.core.cache import cache from django.db.models.signals import post_save from django.dispatch import receiver from participants.models import Institution, Team -import logging logger = logging.getLogger(__name__) diff --git a/tabbycat/participants/templatetags/team_name_for_data_entry.py b/tabbycat/participants/templatetags/team_name_for_data_entry.py index d4532aaf031..a6b7996998a 100644 --- a/tabbycat/participants/templatetags/team_name_for_data_entry.py +++ b/tabbycat/participants/templatetags/team_name_for_data_entry.py @@ -1,6 +1,6 @@ from django import template -from django.utils.translation import gettext from django.utils.safestring import mark_safe +from django.utils.translation import gettext register = template.Library() diff --git a/tabbycat/participants/tests/test_lookup.py b/tabbycat/participants/tests/test_lookup.py index e028655cbc9..021a84e44af 100644 --- a/tabbycat/participants/tests/test_lookup.py +++ b/tabbycat/participants/tests/test_lookup.py @@ -1,8 +1,8 @@ from django.core.exceptions import ObjectDoesNotExist from django.test import TestCase -from tournaments.models import Tournament from participants.models import Institution, Region, Team +from tournaments.models import Tournament class TestParticipantLookup(TestCase): diff --git a/tabbycat/participants/tests/test_models.py b/tabbycat/participants/tests/test_models.py index 9de2ad828d0..c939f718c05 100644 --- a/tabbycat/participants/tests/test_models.py +++ b/tabbycat/participants/tests/test_models.py @@ -1,5 +1,5 @@ -from utils.tests import BaseMinimalTournamentTestCase from participants.models import Adjudicator, Institution +from utils.tests import BaseMinimalTournamentTestCase class TestInstitution(BaseMinimalTournamentTestCase): diff --git a/tabbycat/participants/tests/test_views.py b/tabbycat/participants/tests/test_views.py index 4a20d1f7ce7..1599e26bbc1 100644 --- a/tabbycat/participants/tests/test_views.py +++ b/tabbycat/participants/tests/test_views.py @@ -1,7 +1,7 @@ from django.test import TestCase -from utils.tests import ConditionalTableViewTestsMixin from participants.models import Speaker +from utils.tests import ConditionalTableViewTestsMixin class PublicParticipantsViewTestCase(ConditionalTableViewTestsMixin, TestCase): diff --git a/tabbycat/participants/views.py b/tabbycat/participants/views.py index 29a4269c051..b90ec0f5f4e 100644 --- a/tabbycat/participants/views.py +++ b/tabbycat/participants/views.py @@ -7,8 +7,7 @@ from django.db.models import Count, Q from django.forms import HiddenInput from django.http import JsonResponse -from django.utils.translation import gettext_lazy, ngettext -from django.utils.translation import gettext as _ +from django.utils.translation import gettext as _, gettext_lazy, ngettext from django.views.generic.base import View from actionlog.mixins import LogActionMixin @@ -22,8 +21,8 @@ from tournaments.models import Round from utils.misc import redirect_tournament, reverse_tournament from utils.mixins import AdministratorMixin, AssistantMixin -from utils.views import ModelFormSetView, VueTableTemplateView from utils.tables import TabbycatTableBuilder +from utils.views import ModelFormSetView, VueTableTemplateView from .models import Adjudicator, Institution, Speaker, SpeakerCategory, Team from .serializers import SpeakerSerializer diff --git a/tabbycat/printing/views.py b/tabbycat/printing/views.py index fcef604066a..b283f82ee22 100644 --- a/tabbycat/printing/views.py +++ b/tabbycat/printing/views.py @@ -1,10 +1,10 @@ import json +import qrcode from django.contrib.humanize.templatetags.humanize import ordinal from django.db.models import Q from django.utils.translation import gettext as _ from django.views.generic.base import TemplateView -import qrcode from qrcode.image import svg from adjfeedback.models import AdjudicatorFeedbackQuestion diff --git a/tabbycat/privateurls/views.py b/tabbycat/privateurls/views.py index bac63e6282f..6ba22c072bb 100644 --- a/tabbycat/privateurls/views.py +++ b/tabbycat/privateurls/views.py @@ -1,7 +1,7 @@ import logging -from django.core.exceptions import ObjectDoesNotExist from django.contrib import messages +from django.core.exceptions import ObjectDoesNotExist from django.db.models import Exists, OuterRef, Q from django.shortcuts import get_object_or_404 from django.utils.text import format_lazy diff --git a/tabbycat/results/admin.py b/tabbycat/results/admin.py index f5d5182320d..a7d6cfe1af8 100644 --- a/tabbycat/results/admin.py +++ b/tabbycat/results/admin.py @@ -1,11 +1,11 @@ from django.contrib import admin from django.db.models import OuterRef, Prefetch, Subquery -from .models import BallotSubmission, SpeakerScore, SpeakerScoreByAdj, TeamScore - from draw.models import DebateTeam from utils.admin import TabbycatModelAdminFieldsMixin +from .models import BallotSubmission, SpeakerScore, SpeakerScoreByAdj, TeamScore + # ============================================================================== # BallotSubmission diff --git a/tabbycat/results/dbutils.py b/tabbycat/results/dbutils.py index 2b723eaa284..5f59b94201d 100644 --- a/tabbycat/results/dbutils.py +++ b/tabbycat/results/dbutils.py @@ -4,8 +4,8 @@ These are mainly used in management commands, but in principle could be used by a front-end interface as well.""" -import random import logging +import random from itertools import product from django.contrib.auth import get_user_model diff --git a/tabbycat/results/management/commands/compareballots.py b/tabbycat/results/management/commands/compareballots.py index 35c8ffb0d89..5be91256488 100644 --- a/tabbycat/results/management/commands/compareballots.py +++ b/tabbycat/results/management/commands/compareballots.py @@ -1,7 +1,7 @@ -from utils.management.base import TournamentCommand from draw.models import Debate from results.models import BallotSubmission from tournaments.models import Round, Tournament +from utils.management.base import TournamentCommand class Command(TournamentCommand): diff --git a/tabbycat/results/management/commands/generateresults.py b/tabbycat/results/management/commands/generateresults.py index cfba77ea532..ac22dec3cc5 100644 --- a/tabbycat/results/management/commands/generateresults.py +++ b/tabbycat/results/management/commands/generateresults.py @@ -3,9 +3,9 @@ from adjallocation.models import DebateAdjudicator from draw.models import Debate +from results.dbutils import add_result, add_results_to_round, add_results_to_round_partial, delete_all_ballotsubs_for_round, delete_ballotsub from results.models import BallotSubmission from utils.management.base import RoundCommand -from results.dbutils import add_result, add_results_to_round, add_results_to_round_partial, delete_all_ballotsubs_for_round, delete_ballotsub OBJECT_TYPE_CHOICES = ["round", "debate"] SUBMITTER_TYPE_MAP = { diff --git a/tabbycat/results/models.py b/tabbycat/results/models.py index 7cd3facf6e8..5f2b5455640 100644 --- a/tabbycat/results/models.py +++ b/tabbycat/results/models.py @@ -1,9 +1,9 @@ import logging from threading import Lock -from django.db import models from django.conf import settings from django.core.exceptions import ValidationError +from django.db import models from django.utils import timezone from django.utils.translation import gettext_lazy as _ diff --git a/tabbycat/results/tests/generate_testdata.py b/tabbycat/results/tests/generate_testdata.py index 202c78aa6e4..96df437f04e 100644 --- a/tabbycat/results/tests/generate_testdata.py +++ b/tabbycat/results/tests/generate_testdata.py @@ -1,8 +1,8 @@ """Generates random testdata for test_result.py, and prints the dict for copy and paste into test_result.py.""" -import random import pprint +import random from statistics import mean SPEAKERS_PER_TEAM = 3 diff --git a/tabbycat/results/utils.py b/tabbycat/results/utils.py index 7c73af3105c..c5e27e41fd8 100644 --- a/tabbycat/results/utils.py +++ b/tabbycat/results/utils.py @@ -1,8 +1,8 @@ import logging from itertools import combinations -from django.db.models import Count from django.contrib.humanize.templatetags.humanize import ordinal +from django.db.models import Count from django.utils.translation import gettext as _ from django.utils.translation import gettext_lazy diff --git a/tabbycat/results/views.py b/tabbycat/results/views.py index 38497bfee8e..12106a0f759 100644 --- a/tabbycat/results/views.py +++ b/tabbycat/results/views.py @@ -28,13 +28,13 @@ from tournaments.models import Round from utils.misc import get_ip_address, reverse_round, reverse_tournament from utils.mixins import AdministratorMixin, AssistantMixin -from utils.views import VueTableTemplateView from utils.tables import TabbycatTableBuilder +from utils.views import VueTableTemplateView from .forms import BPEliminationResultForm, PerAdjudicatorBallotSetForm, SingleBallotSetForm from .models import BallotSubmission, TeamScore -from .tables import ResultsTableBuilder from .prefetch import populate_confirmed_ballots +from .tables import ResultsTableBuilder from .utils import populate_identical_ballotsub_lists logger = logging.getLogger(__name__) diff --git a/tabbycat/routing.py b/tabbycat/routing.py index 67256cffb77..fb9c013af07 100644 --- a/tabbycat/routing.py +++ b/tabbycat/routing.py @@ -1,6 +1,6 @@ -from django.conf.urls import url -from channels.routing import ChannelNameRouter, ProtocolTypeRouter, URLRouter from channels.auth import AuthMiddlewareStack +from channels.routing import ChannelNameRouter, ProtocolTypeRouter, URLRouter +from django.conf.urls import url from actionlog.consumers import ActionLogEntryConsumer from adjallocation.consumers import AdjudicatorAllocationWorkerConsumer, PanelEditConsumer diff --git a/tabbycat/run-asgi.py b/tabbycat/run-asgi.py index 8945a80bd9e..fe43fbb806f 100644 --- a/tabbycat/run-asgi.py +++ b/tabbycat/run-asgi.py @@ -3,9 +3,9 @@ import logging import sys -from daphne.server import Server -from daphne.endpoints import build_endpoint_description_strings import asgi +from daphne.endpoints import build_endpoint_description_strings +from daphne.server import Server # Setup logging diff --git a/tabbycat/standings/base.py b/tabbycat/standings/base.py index 4ce6208b606..642dcc59f89 100644 --- a/tabbycat/standings/base.py +++ b/tabbycat/standings/base.py @@ -1,7 +1,7 @@ """Base class for standings generators.""" -import random import logging +import random from django.utils.translation import gettext as _ diff --git a/tabbycat/standings/speakers.py b/tabbycat/standings/speakers.py index d1c9c391534..9b0f322fd1b 100644 --- a/tabbycat/standings/speakers.py +++ b/tabbycat/standings/speakers.py @@ -2,8 +2,8 @@ import logging -from django.utils.translation import gettext_lazy as _ from django.db.models import Avg, Case, Count, F, FloatField, Max, Min, Q, StdDev, Sum, When +from django.utils.translation import gettext_lazy as _ from tournaments.models import Round diff --git a/tabbycat/standings/teams.py b/tabbycat/standings/teams.py index 75cb2424563..c44cff16228 100644 --- a/tabbycat/standings/teams.py +++ b/tabbycat/standings/teams.py @@ -7,8 +7,8 @@ from django.db.models.functions import Cast from django.utils.translation import gettext_lazy as _ -from tournaments.models import Round from results.models import TeamScore +from tournaments.models import Round from .base import BaseStandingsGenerator from .metrics import BaseMetricAnnotator, metricgetter, QuerySetMetricAnnotator, RepeatedMetricAnnotator diff --git a/tabbycat/standings/tests/generate_testdata.py b/tabbycat/standings/tests/generate_testdata.py index 9606356a90d..8c0ea75bd89 100644 --- a/tabbycat/standings/tests/generate_testdata.py +++ b/tabbycat/standings/tests/generate_testdata.py @@ -1,8 +1,8 @@ """Generates random testdata for test_result.py, and prints the dict for copy and paste into test_result.py.""" -import random import pprint +import random from operator import itemgetter TEAMS = ['A', 'B', 'C', 'D'] diff --git a/tabbycat/standings/tests/test_standings.py b/tabbycat/standings/tests/test_standings.py index a4c25a1b049..535b6839158 100644 --- a/tabbycat/standings/tests/test_standings.py +++ b/tabbycat/standings/tests/test_standings.py @@ -1,8 +1,5 @@ from django.test import TestCase -from ..base import StandingsError -from ..teams import TeamStandingsGenerator - from adjallocation.models import DebateAdjudicator from draw.models import Debate, DebateTeam from participants.models import Adjudicator, Institution, Speaker, Team @@ -10,6 +7,9 @@ from tournaments.models import Round, Tournament from venues.models import Venue +from ..base import StandingsError +from ..teams import TeamStandingsGenerator + # TODO does it ignore unconfirmed ballot submissions? # TODO can it handle uneven numbers of adjudicators? diff --git a/tabbycat/standings/views.py b/tabbycat/standings/views.py index 8e05fd92f6b..785f78f6688 100644 --- a/tabbycat/standings/views.py +++ b/tabbycat/standings/views.py @@ -5,8 +5,7 @@ from django.contrib import messages from django.db.models import Avg, Count, Prefetch from django.utils.html import mark_safe -from django.utils.translation import gettext as _ -from django.utils.translation import gettext_lazy +from django.utils.translation import gettext as _, gettext_lazy from django.views.generic.base import TemplateView from adjfeedback.views import BaseFeedbackOverview @@ -21,14 +20,14 @@ from tournaments.models import Round from utils.misc import reverse_round, reverse_tournament from utils.mixins import AdministratorMixin -from utils.views import VueTableTemplateView from utils.tables import TabbycatTableBuilder +from utils.views import VueTableTemplateView from .base import StandingsError from .diversity import get_diversity_data_sets -from .teams import TeamStandingsGenerator -from .speakers import SpeakerStandingsGenerator from .round_results import add_speaker_round_results, add_team_round_results, add_team_round_results_public +from .speakers import SpeakerStandingsGenerator +from .teams import TeamStandingsGenerator from .templatetags.standingsformat import metricformat logger = logging.getLogger(__name__) diff --git a/tabbycat/tournaments/forms.py b/tabbycat/tournaments/forms.py index a03f7f585d0..39e1e17be42 100644 --- a/tabbycat/tournaments/forms.py +++ b/tabbycat/tournaments/forms.py @@ -1,9 +1,9 @@ +from django.forms import CharField, ChoiceField, Form, ModelChoiceField, ModelForm from django.forms.fields import IntegerField from django.forms.models import ModelChoiceIterator -from django.forms import CharField, ChoiceField, Form, ModelChoiceField, ModelForm -from django.utils.translation import gettext_lazy as _ from django.utils.html import escape from django.utils.safestring import mark_safe +from django.utils.translation import gettext_lazy as _ from django_summernote.widgets import SummernoteWidget from adjfeedback.models import AdjudicatorFeedbackQuestion diff --git a/tabbycat/tournaments/mixins.py b/tabbycat/tournaments/mixins.py index ae84cfc0e40..76df58912c3 100644 --- a/tabbycat/tournaments/mixins.py +++ b/tabbycat/tournaments/mixins.py @@ -3,14 +3,14 @@ from asgiref.sync import async_to_sync from django.conf import settings +from django.contrib import messages from django.core.cache import cache from django.core.exceptions import ImproperlyConfigured -from django.urls import NoReverseMatch, reverse -from django.utils.encoding import force_text -from django.contrib import messages from django.db.models import Prefetch, Q from django.shortcuts import get_object_or_404, redirect from django.template.response import TemplateResponse +from django.urls import NoReverseMatch, reverse +from django.utils.encoding import force_text from django.utils.translation import gettext as _ from django.views.generic.base import ContextMixin from django.views.generic.detail import SingleObjectMixin diff --git a/tabbycat/tournaments/models.py b/tabbycat/tournaments/models.py index 73c82abaf22..d614c9b4dbd 100644 --- a/tabbycat/tournaments/models.py +++ b/tabbycat/tournaments/models.py @@ -1,7 +1,9 @@ -from django.db import models -from django.db.models import Count, Prefetch, Q +import logging + from django.core.cache import cache from django.core.exceptions import ValidationError +from django.db import models +from django.db.models import Count, Prefetch, Q from django.urls import reverse from django.utils.functional import cached_property from django.utils.translation import gettext_lazy as _ @@ -9,7 +11,6 @@ from participants.models import Person from utils.managers import LookupByNameFieldsMixin -import logging logger = logging.getLogger(__name__) diff --git a/tabbycat/tournaments/signals.py b/tabbycat/tournaments/signals.py index 85b8eb6fff3..b87913ab699 100644 --- a/tabbycat/tournaments/signals.py +++ b/tabbycat/tournaments/signals.py @@ -1,10 +1,11 @@ +import logging + from django.core.cache import cache from django.db.models.signals import post_delete, post_save from django.dispatch import receiver from tournaments.models import Round, Tournament -import logging logger = logging.getLogger(__name__) diff --git a/tabbycat/tournaments/utils.py b/tabbycat/tournaments/utils.py index 154989e772a..172876cb063 100644 --- a/tabbycat/tournaments/utils.py +++ b/tabbycat/tournaments/utils.py @@ -1,8 +1,7 @@ import logging from django.utils.encoding import force_text -from django.utils.translation import gettext_lazy as _ -from django.utils.translation import gettext, pgettext_lazy +from django.utils.translation import gettext, gettext_lazy as _, pgettext_lazy from .models import Round diff --git a/tabbycat/tournaments/views.py b/tabbycat/tournaments/views.py index 9f8268b63e1..68ba2ef084c 100644 --- a/tabbycat/tournaments/views.py +++ b/tabbycat/tournaments/views.py @@ -6,11 +6,11 @@ from django.conf import settings from django.contrib import messages from django.contrib.auth import get_user_model, login -from django.urls import reverse_lazy from django.db.models import Count, Q from django.shortcuts import redirect, resolve_url -from django.utils.http import is_safe_url +from django.urls import reverse_lazy from django.utils.html import format_html_join +from django.utils.http import is_safe_url from django.utils.translation import gettext_lazy as _ from django.views.generic.base import TemplateView from django.views.generic.edit import CreateView, FormView, UpdateView diff --git a/tabbycat/urls.py b/tabbycat/urls.py index 857d1373602..8ab06b9f3e8 100644 --- a/tabbycat/urls.py +++ b/tabbycat/urls.py @@ -1,9 +1,9 @@ from django.conf import settings -from django.urls import include, path from django.contrib import admin, messages from django.contrib.auth import views as auth_views from django.contrib.auth.signals import user_logged_in from django.dispatch import receiver +from django.urls import include, path from django.utils.translation import gettext as _ from django.views.i18n import JavaScriptCatalog diff --git a/tabbycat/utils/management/commands/simulaterounds.py b/tabbycat/utils/management/commands/simulaterounds.py index 054cdbb25e9..03050ede22e 100644 --- a/tabbycat/utils/management/commands/simulaterounds.py +++ b/tabbycat/utils/management/commands/simulaterounds.py @@ -2,8 +2,8 @@ from adjallocation.allocators.hungarian import ConsensusHungarianAllocator, VotingHungarianAllocator from availability.utils import activate_all, set_availability -from draw.models import Debate from draw.manager import DrawManager +from draw.models import Debate from results.dbutils import add_results_to_round from results.management.commands.generateresults import GenerateResultsCommandMixin from tournaments.models import Round diff --git a/tabbycat/utils/misc.py b/tabbycat/utils/misc.py index 5f1670f53bb..76ccf3ba14c 100644 --- a/tabbycat/utils/misc.py +++ b/tabbycat/utils/misc.py @@ -2,9 +2,9 @@ from secrets import SystemRandom from urllib.parse import parse_qs, urlencode, urlparse, urlunparse +from django.shortcuts import redirect from django.urls import reverse from django.utils import formats, timezone, translation -from django.shortcuts import redirect from ipware.ip import get_real_ip logger = logging.getLogger(__name__) diff --git a/tabbycat/utils/mixins.py b/tabbycat/utils/mixins.py index 642827f6bd6..c2a82081b41 100644 --- a/tabbycat/utils/mixins.py +++ b/tabbycat/utils/mixins.py @@ -1,5 +1,5 @@ -import os import logging +import os from django.conf import settings from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin diff --git a/tabbycat/utils/tests.py b/tabbycat/utils/tests.py index 3a27be4ada2..48547d79fe8 100644 --- a/tabbycat/utils/tests.py +++ b/tabbycat/utils/tests.py @@ -1,21 +1,21 @@ -from contextlib import contextmanager import json import logging +from contextlib import contextmanager from unittest import expectedFailure from django.contrib.auth import get_user, get_user_model +from django.contrib.staticfiles.testing import StaticLiveServerTestCase from django.core.cache import cache -from django.urls import reverse from django.test import Client, tag, TestCase -from django.contrib.staticfiles.testing import StaticLiveServerTestCase +from django.urls import reverse from selenium.webdriver.chrome.webdriver import WebDriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities from draw.models import DebateTeam -from tournaments.models import Tournament from participants.models import Adjudicator, Institution, Speaker, Team -from venues.models import Venue +from tournaments.models import Tournament from utils.misc import add_query_string_parameter, reverse_tournament +from venues.models import Venue logger = logging.getLogger(__name__) diff --git a/tabbycat/utils/views.py b/tabbycat/utils/views.py index 2352d60f75f..1ffdb643711 100644 --- a/tabbycat/utils/views.py +++ b/tabbycat/utils/views.py @@ -3,9 +3,9 @@ from django.contrib import messages from django.core.exceptions import ImproperlyConfigured -from django.urls import reverse_lazy from django.forms.models import modelformset_factory from django.http import HttpResponseRedirect +from django.urls import reverse_lazy from django.utils.encoding import force_text from django.utils.translation import gettext_lazy as _ from django.views.generic import TemplateView, View diff --git a/tabbycat/venues/admin.py b/tabbycat/venues/admin.py index 5fcbbad1b81..093ec609ef3 100644 --- a/tabbycat/venues/admin.py +++ b/tabbycat/venues/admin.py @@ -1,6 +1,6 @@ +from django import forms from django.contrib import admin from django.contrib.contenttypes.admin import GenericTabularInline -from django import forms from gfklookupwidget.widgets import GfkLookupWidget from availability.admin import RoundAvailabilityInline