diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3d786881a..6901171fb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -9,6 +9,7 @@ tests: - cd src - pip3 install -q -r requirements.txt - flake8 --ignore=E123,F403,F401,N802,C901,W503 . + - isort -c -rc . - python3 manage.py check - make - make compress diff --git a/.travis.yml b/.travis.yml index 493155872..91526ca22 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,6 +10,7 @@ install: before_script: - cd src - flake8 --ignore=E123,F403,F401,N802,C901,W503 . + - isort -c -rc . - python manage.py check script: - make diff --git a/doc/development/setup.rst b/doc/development/setup.rst index 55c8e3a55..d3e9c0c9c 100644 --- a/doc/development/setup.rst +++ b/doc/development/setup.rst @@ -77,6 +77,7 @@ Code checks and unit tests Before you check in your code into git, always run the static checkers and unit tests:: flake8 . + isort -c -rc . python manage.py validate py.test diff --git a/doc/development/style.rst b/doc/development/style.rst index 4d5060a1a..67d093724 100644 --- a/doc/development/style.rst +++ b/doc/development/style.rst @@ -22,6 +22,8 @@ Python code So please make sure that you *always* follow all other rules and break these rules *only when it makes sense*. +* Use ``isort -rc pretix`` in the source directory to order your imports. + * Indent your code with four spaces. * For templates and models, follow the `Django Coding Style`_. diff --git a/src/pretix/base/cache.py b/src/pretix/base/cache.py index e896d8b1c..52cdbb36a 100644 --- a/src/pretix/base/cache.py +++ b/src/pretix/base/cache.py @@ -1,5 +1,5 @@ -import time import hashlib +import time from django.core.cache import caches diff --git a/src/pretix/base/forms/__init__.py b/src/pretix/base/forms/__init__.py index b9e42cc64..7ef7e8d9a 100644 --- a/src/pretix/base/forms/__init__.py +++ b/src/pretix/base/forms/__init__.py @@ -1,11 +1,13 @@ import copy -from django.db import models -from django.forms.models import ModelFormMetaclass, BaseModelForm + from django import forms +from django.db import models +from django.forms.models import BaseModelForm, ModelFormMetaclass from django.utils import six -from pretix.base.i18n import I18nFormField -from versions.models import Versionable from django.utils.translation import ugettext_lazy as _ +from versions.models import Versionable + +from pretix.base.i18n import I18nFormField class BaseI18nModelForm(BaseModelForm): diff --git a/src/pretix/base/forms/user.py b/src/pretix/base/forms/user.py index 5eba17b7b..a97dd51e4 100644 --- a/src/pretix/base/forms/user.py +++ b/src/pretix/base/forms/user.py @@ -2,7 +2,6 @@ from django import forms from django.contrib.auth.hashers import check_password from django.db.models import Q from django.utils.translation import ugettext_lazy as _ -# from pytz import common_timezones from pretix.base.models import User diff --git a/src/pretix/base/i18n.py b/src/pretix/base/i18n.py index f5c56ce23..025aa0eb1 100644 --- a/src/pretix/base/i18n.py +++ b/src/pretix/base/i18n.py @@ -1,8 +1,9 @@ import copy import json -from django.conf import settings -from django.db.models import TextField, SubfieldBase + from django import forms +from django.conf import settings +from django.db.models import SubfieldBase, TextField from django.utils import translation from django.utils.safestring import mark_safe diff --git a/src/pretix/base/middleware.py b/src/pretix/base/middleware.py index c236fdef4..2f17135dc 100644 --- a/src/pretix/base/middleware.py +++ b/src/pretix/base/middleware.py @@ -1,19 +1,16 @@ -from django.core.urlresolvers import get_script_prefix -import pytz - -from django.conf import settings -from django.middleware.locale import LocaleMiddleware as BaseLocaleMiddleware -from django.utils.translation.trans_real import ( - get_supported_language_variant, - parse_accept_lang_header, - language_code_re, - check_for_language -) -from django.utils.translation import LANGUAGE_SESSION_KEY -from django.utils import translation, timezone from collections import OrderedDict -from django.utils.cache import patch_vary_headers +import pytz +from django.conf import settings +from django.core.urlresolvers import get_script_prefix +from django.middleware.locale import LocaleMiddleware as BaseLocaleMiddleware +from django.utils import timezone, translation +from django.utils.cache import patch_vary_headers +from django.utils.translation import LANGUAGE_SESSION_KEY +from django.utils.translation.trans_real import ( + check_for_language, get_supported_language_variant, language_code_re, + parse_accept_lang_header, +) _supported = None diff --git a/src/pretix/base/migrations/0001_initial.py b/src/pretix/base/migrations/0001_initial.py index 8eeeb7e3a..198e94e2f 100644 --- a/src/pretix/base/migrations/0001_initial.py +++ b/src/pretix/base/migrations/0001_initial.py @@ -1,14 +1,15 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.contrib.auth.hashers import make_password -from django.db import models, migrations -import pretix.base.models -import django.db.models.deletion -import pretix.base.i18n -import versions.models import django.core.validators +import django.db.models.deletion +import versions.models from django.conf import settings +from django.contrib.auth.hashers import make_password +from django.db import migrations, models + +import pretix.base.i18n +import pretix.base.models def initial_user(apps, schema_editor): diff --git a/src/pretix/base/migrations/0002_auto_20150524_1148.py b/src/pretix/base/migrations/0002_auto_20150524_1148.py index 1654d8cec..fdf6989df 100644 --- a/src/pretix/base/migrations/0002_auto_20150524_1148.py +++ b/src/pretix/base/migrations/0002_auto_20150524_1148.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.db import models, migrations +from django.db import migrations, models class Migration(migrations.Migration): diff --git a/src/pretix/base/migrations/0003_auto_20150602_2232.py b/src/pretix/base/migrations/0003_auto_20150602_2232.py index 8a055357c..ef04f2357 100644 --- a/src/pretix/base/migrations/0003_auto_20150602_2232.py +++ b/src/pretix/base/migrations/0003_auto_20150602_2232.py @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.db import models, migrations import django.core.validators +from django.db import migrations, models class Migration(migrations.Migration): diff --git a/src/pretix/base/migrations/0004_eventpermission_can_change_permissions.py b/src/pretix/base/migrations/0004_eventpermission_can_change_permissions.py index fbfec7b01..40697eb93 100644 --- a/src/pretix/base/migrations/0004_eventpermission_can_change_permissions.py +++ b/src/pretix/base/migrations/0004_eventpermission_can_change_permissions.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.db import models, migrations +from django.db import migrations, models class Migration(migrations.Migration): diff --git a/src/pretix/base/models.py b/src/pretix/base/models.py index 1e4196e96..0d435792a 100644 --- a/src/pretix/base/models.py +++ b/src/pretix/base/models.py @@ -1,24 +1,30 @@ -from datetime import datetime, timedelta -from itertools import product import copy -import uuid import random import time +import uuid +from datetime import datetime, timedelta +from itertools import product -from django.db import models +import six from django.conf import settings -from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, PermissionsMixin +from django.contrib.auth.models import ( + AbstractBaseUser, BaseUserManager, PermissionsMixin, +) +from django.core.validators import RegexValidator +from django.db import models from django.db.models import Q, Count +from django.template.defaultfilters import date as _date from django.utils.functional import cached_property from django.utils.timezone import now from django.utils.translation import ugettext_lazy as _ -from django.template.defaultfilters import date as _date -from django.core.validators import RegexValidator +from versions.models import ( + Versionable as BaseVersionable, VersionedForeignKey, + VersionedManyToManyField, get_utc_now, +) + from pretix.base.i18n import I18nCharField, I18nTextField from pretix.base.settings import SettingsProxy -import six -from versions.models import Versionable as BaseVersionable -from versions.models import VersionedForeignKey, VersionedManyToManyField, get_utc_now + from .types import VariationDict diff --git a/src/pretix/base/payment.py b/src/pretix/base/payment.py index e081e4c47..df6383d52 100644 --- a/src/pretix/base/payment.py +++ b/src/pretix/base/payment.py @@ -1,17 +1,17 @@ from collections import OrderedDict from decimal import Decimal + from django import forms from django.contrib import messages -from django.db.models import Sum, Q +from django.db.models import Q, Sum from django.dispatch import receiver - from django.forms import Form from django.http import HttpRequest from django.template.loader import get_template from django.utils.translation import ugettext_lazy as _ -from pretix.base.models import Order, CartPosition -from pretix.base.services.orders import mark_order_paid +from pretix.base.models import CartPosition, Order +from pretix.base.services.orders import mark_order_paid from pretix.base.settings import SettingsSandbox from pretix.base.signals import register_payment_providers diff --git a/src/pretix/base/services/locking.py b/src/pretix/base/services/locking.py index 16c9b810c..b860ae3a7 100644 --- a/src/pretix/base/services/locking.py +++ b/src/pretix/base/services/locking.py @@ -1,9 +1,10 @@ -from datetime import timedelta import logging import time +from datetime import timedelta + +from django.conf import settings from django.db.models import Q from django.utils.timezone import now -from pretix import settings from pretix.base.models import Quota diff --git a/src/pretix/base/services/mail.py b/src/pretix/base/services/mail.py index ddf7cd4be..7b8457cdf 100644 --- a/src/pretix/base/services/mail.py +++ b/src/pretix/base/services/mail.py @@ -1,4 +1,5 @@ import logging + from django.conf import settings from django.core.mail import EmailMessage from django.core.urlresolvers import reverse @@ -7,7 +8,7 @@ from django.utils import translation from django.utils.translation import ugettext as _ from pretix.base.i18n import LazyI18nString -from pretix.base.models import User, Event +from pretix.base.models import Event, User from pretix.helpers.urls import build_absolute_uri logger = logging.getLogger('pretix.base.mail') diff --git a/src/pretix/base/services/orders.py b/src/pretix/base/services/orders.py index d64d63499..6eac15a96 100644 --- a/src/pretix/base/services/orders.py +++ b/src/pretix/base/services/orders.py @@ -1,8 +1,10 @@ -from datetime import timedelta, datetime +from datetime import datetime, timedelta + from django.db import transaction from django.utils.timezone import now -from pretix.base.models import Order, Quota, OrderPosition from django.utils.translation import ugettext_lazy as _ + +from pretix.base.models import Order, OrderPosition, Quota from pretix.base.services.mail import mail from pretix.helpers.urls import build_absolute_uri diff --git a/src/pretix/base/settings.py b/src/pretix/base/settings.py index 7540b5a11..cb390bee9 100644 --- a/src/pretix/base/settings.py +++ b/src/pretix/base/settings.py @@ -1,13 +1,12 @@ -from datetime import datetime, date, time -import json import decimal +import json +from datetime import date, datetime, time import dateutil.parser -from django.db.models import Model from django.conf import settings +from django.db.models import Model from versions.models import Versionable - DEFAULTS = { 'user_mail_required': { 'default': 'False', diff --git a/src/pretix/base/ticketoutput.py b/src/pretix/base/ticketoutput.py index d6ea50566..680bd8cd5 100644 --- a/src/pretix/base/ticketoutput.py +++ b/src/pretix/base/ticketoutput.py @@ -1,10 +1,10 @@ from collections import OrderedDict -from django import forms +from django import forms from django.http import HttpRequest, HttpResponse from django.utils.translation import ugettext_lazy as _ -from pretix.base.models import Order +from pretix.base.models import Order from pretix.base.settings import SettingsSandbox diff --git a/src/pretix/control/context.py b/src/pretix/control/context.py index aa3cbeb1d..2edbe53bf 100644 --- a/src/pretix/control/context.py +++ b/src/pretix/control/context.py @@ -1,5 +1,6 @@ from django.conf import settings -from django.core.urlresolvers import resolve, get_script_prefix +from django.core.urlresolvers import get_script_prefix, resolve + from .signals import html_head, nav_event diff --git a/src/pretix/control/forms/__init__.py b/src/pretix/control/forms/__init__.py index bc452df98..042d57268 100644 --- a/src/pretix/control/forms/__init__.py +++ b/src/pretix/control/forms/__init__.py @@ -1,5 +1,6 @@ from functools import partial from itertools import product + from django import forms from django.core.exceptions import ValidationError from django.db import transaction @@ -9,9 +10,9 @@ from django.utils.encoding import force_text from django.utils.html import format_html from django.utils.safestring import mark_safe from django.utils.translation import ugettext_lazy as _ -from pretix.base.forms import VersionedModelForm -from pretix.base.models import ItemVariation, Item +from pretix.base.forms import VersionedModelForm +from pretix.base.models import Item, ItemVariation class I18nInlineFormSet(BaseInlineFormSet): diff --git a/src/pretix/control/forms/auth.py b/src/pretix/control/forms/auth.py index 0b397c1e0..ac224e0d3 100644 --- a/src/pretix/control/forms/auth.py +++ b/src/pretix/control/forms/auth.py @@ -1,7 +1,9 @@ -from django.contrib.auth.forms import AuthenticationForm as BaseAuthenticationForm from django import forms -from django.utils.translation import ugettext as _ from django.contrib.auth import authenticate +from django.contrib.auth.forms import \ + AuthenticationForm as BaseAuthenticationForm +from django.utils.translation import ugettext as _ + from pretix.base.models import User diff --git a/src/pretix/control/forms/event.py b/src/pretix/control/forms/event.py index e7a581d43..5284a444a 100644 --- a/src/pretix/control/forms/event.py +++ b/src/pretix/control/forms/event.py @@ -1,10 +1,9 @@ -from django.conf import settings from django import forms +from django.conf import settings from django.utils.translation import ugettext_lazy as _ - from pytz import common_timezones -from pretix.base.forms import VersionedModelForm, SettingsForm +from pretix.base.forms import SettingsForm, VersionedModelForm from pretix.base.models import Event diff --git a/src/pretix/control/forms/item.py b/src/pretix/control/forms/item.py index 09719abf8..900372bed 100644 --- a/src/pretix/control/forms/item.py +++ b/src/pretix/control/forms/item.py @@ -1,11 +1,14 @@ import copy + from django.db import models from django.forms import BooleanField from django.utils.translation import ugettext_lazy as _ -from pretix.base.forms import VersionedModelForm, I18nModelForm + +from pretix.base.forms import I18nModelForm, VersionedModelForm from pretix.base.models import ( - Item, ItemCategory, Property, ItemVariation, PropertyValue, Question, Quota, - Versionable) + Item, ItemCategory, ItemVariation, Property, PropertyValue, Question, + Quota, Versionable, +) from pretix.control.forms import TolerantFormsetModelForm, VariationsField diff --git a/src/pretix/control/forms/orders.py b/src/pretix/control/forms/orders.py index 4dfbd06d7..f8f2e23ae 100644 --- a/src/pretix/control/forms/orders.py +++ b/src/pretix/control/forms/orders.py @@ -1,5 +1,4 @@ from pretix.base.forms import VersionedModelForm - from pretix.base.models import Order diff --git a/src/pretix/control/forms/organizer.py b/src/pretix/control/forms/organizer.py index 45c5633d8..b35742c7a 100644 --- a/src/pretix/control/forms/organizer.py +++ b/src/pretix/control/forms/organizer.py @@ -1,7 +1,7 @@ from django import forms from django.utils.translation import ugettext_lazy as _ -from pretix.base.forms import VersionedModelForm +from pretix.base.forms import VersionedModelForm from pretix.base.models import Organizer diff --git a/src/pretix/control/middleware.py b/src/pretix/control/middleware.py index 089377519..47855a9f4 100644 --- a/src/pretix/control/middleware.py +++ b/src/pretix/control/middleware.py @@ -1,13 +1,14 @@ from urllib.parse import urlparse + from django.conf import settings -from django.core.urlresolvers import resolve, get_script_prefix -from django.utils.encoding import force_str -from django.shortcuts import resolve_url from django.contrib.auth import REDIRECT_FIELD_NAME +from django.core.urlresolvers import get_script_prefix, resolve from django.http import HttpResponseNotFound +from django.shortcuts import resolve_url +from django.utils.encoding import force_str from django.utils.translation import ugettext as _ -from pretix.base.models import Event, Organizer, EventPermission +from pretix.base.models import Event, EventPermission, Organizer class PermissionMiddleware: diff --git a/src/pretix/control/signals.py b/src/pretix/control/signals.py index 67e211a30..a322ac24f 100644 --- a/src/pretix/control/signals.py +++ b/src/pretix/control/signals.py @@ -1,6 +1,5 @@ from pretix.base.signals import EventPluginSignal - """ This signal is sent out to build configuration forms for all restriction formsets (see plugin API documentation for details). diff --git a/src/pretix/control/templatetags/order_overview.py b/src/pretix/control/templatetags/order_overview.py index e3fb24f16..93c7c8333 100644 --- a/src/pretix/control/templatetags/order_overview.py +++ b/src/pretix/control/templatetags/order_overview.py @@ -1,8 +1,7 @@ from django import template +from django.utils import formats from django.utils.html import conditional_escape from django.utils.safestring import mark_safe -from django.utils import formats - register = template.Library() diff --git a/src/pretix/control/urls.py b/src/pretix/control/urls.py index c80f2ada1..6ac6ea7c8 100644 --- a/src/pretix/control/urls.py +++ b/src/pretix/control/urls.py @@ -1,7 +1,8 @@ -from django.conf.urls import url, include +from django.conf.urls import include, url - -from pretix.control.views import main, event, item, auth, orders, user, organizer +from pretix.control.views import ( + auth, event, item, main, orders, organizer, user, +) urlpatterns = [ url(r'^logout$', auth.logout, name='auth.logout'), diff --git a/src/pretix/control/views/auth.py b/src/pretix/control/views/auth.py index 9e3a763fe..3fe1c476d 100644 --- a/src/pretix/control/views/auth.py +++ b/src/pretix/control/views/auth.py @@ -1,9 +1,13 @@ from django.conf import settings -from django.shortcuts import render, redirect -from django.contrib.auth import login as auth_login, authenticate -from django.contrib.auth import logout as auth_logout +from django.contrib.auth import ( + authenticate, login as auth_login, logout as auth_logout, +) +from django.shortcuts import redirect, render + from pretix.base.models import User -from pretix.control.forms.auth import AuthenticationForm, GlobalRegistrationForm +from pretix.control.forms.auth import ( + AuthenticationForm, GlobalRegistrationForm, +) def login(request): diff --git a/src/pretix/control/views/event.py b/src/pretix/control/views/event.py index be463e614..78f6bac65 100644 --- a/src/pretix/control/views/event.py +++ b/src/pretix/control/views/event.py @@ -1,21 +1,29 @@ from collections import OrderedDict -from django import forms +from django import forms from django.contrib import messages +from django.core.urlresolvers import reverse from django.db.models import Sum from django.forms import modelformset_factory -from django.shortcuts import render, redirect +from django.shortcuts import redirect, render from django.utils.functional import cached_property +from django.utils.translation import ugettext_lazy as _ from django.views.generic import FormView from django.views.generic.base import TemplateView from django.views.generic.detail import SingleObjectMixin -from django.utils.translation import ugettext_lazy as _ -from django.core.urlresolvers import reverse + from pretix.base.forms import VersionedModelForm -from pretix.control.forms.event import ProviderForm, TicketSettingsForm, EventSettingsForm, EventUpdateForm -from pretix.base.models import Event, OrderPosition, Order, Item, EventPermission, User -from pretix.base.signals import register_payment_providers, register_ticket_outputs +from pretix.base.models import ( + Event, EventPermission, Item, Order, OrderPosition, User, +) +from pretix.base.signals import ( + register_payment_providers, register_ticket_outputs, +) +from pretix.control.forms.event import ( + EventSettingsForm, EventUpdateForm, ProviderForm, TicketSettingsForm, +) from pretix.control.permissions import EventPermissionRequiredMixin + from . import UpdateView diff --git a/src/pretix/control/views/item.py b/src/pretix/control/views/item.py index 9d644c2a6..7b74d63a5 100644 --- a/src/pretix/control/views/item.py +++ b/src/pretix/control/views/item.py @@ -1,26 +1,33 @@ from itertools import product from django.contrib import messages +from django.core.urlresolvers import resolve, reverse from django.db import transaction +from django.forms.models import inlineformset_factory +from django.http import Http404, HttpResponseForbidden, HttpResponseRedirect +from django.shortcuts import redirect from django.utils.functional import cached_property +from django.utils.translation import ugettext_lazy as _ from django.views.generic import ListView -from django.views.generic.edit import DeleteView from django.views.generic.base import TemplateView from django.views.generic.detail import SingleObjectMixin -from django.core.urlresolvers import resolve, reverse -from django.http import HttpResponseRedirect, HttpResponseForbidden, Http404 -from django.shortcuts import redirect -from django.forms.models import inlineformset_factory -from django.utils.translation import ugettext_lazy as _ +from django.views.generic.edit import DeleteView + from pretix.base.models import ( - Item, ItemCategory, Property, ItemVariation, PropertyValue, Question, Quota) -from pretix.control.forms.item import ItemVariationForm, QuotaForm, QuestionForm, PropertyForm, PropertyValueForm, \ - CategoryForm -from pretix.control.forms.item import ItemFormGeneral -from pretix.control.permissions import EventPermissionRequiredMixin, event_permission_required -from pretix.control.forms import VariationsField, I18nInlineFormSet + Item, ItemCategory, ItemVariation, Property, PropertyValue, Question, + Quota, +) +from pretix.control.forms import I18nInlineFormSet, VariationsField +from pretix.control.forms.item import ( + CategoryForm, ItemFormGeneral, ItemVariationForm, PropertyForm, + PropertyValueForm, QuestionForm, QuotaForm, +) +from pretix.control.permissions import ( + EventPermissionRequiredMixin, event_permission_required, +) from pretix.control.signals import restriction_formset -from . import UpdateView, CreateView + +from . import CreateView, UpdateView class ItemList(ListView): diff --git a/src/pretix/control/views/main.py b/src/pretix/control/views/main.py index 6e0d14a8e..d4daf698c 100644 --- a/src/pretix/control/views/main.py +++ b/src/pretix/control/views/main.py @@ -1,8 +1,8 @@ from django.contrib import messages from django.core.urlresolvers import reverse from django.shortcuts import render -from django.views.generic import ListView, CreateView, TemplateView from django.utils.translation import ugettext_lazy as _ +from django.views.generic import CreateView, ListView, TemplateView from pretix.base.models import Event, EventPermission, OrganizerPermission from pretix.control.forms.event import EventCreateForm diff --git a/src/pretix/control/views/orders.py b/src/pretix/control/views/orders.py index 9710edaa7..34a5c3db4 100644 --- a/src/pretix/control/views/orders.py +++ b/src/pretix/control/views/orders.py @@ -1,14 +1,15 @@ from itertools import groupby from django.contrib import messages -from django.db.models import Count, Q, Sum -from django.utils.timezone import now -from django.utils.translation import ugettext_lazy as _ +from django.db.models import Q, Count, Sum from django.http import HttpResponse from django.shortcuts import redirect, render from django.utils.functional import cached_property -from django.views.generic import ListView, DetailView, TemplateView, View -from pretix.base.models import Order, Quota, OrderPosition, ItemCategory, Item +from django.utils.timezone import now +from django.utils.translation import ugettext_lazy as _ +from django.views.generic import DetailView, ListView, TemplateView, View + +from pretix.base.models import Item, ItemCategory, Order, OrderPosition, Quota from pretix.base.services.orders import mark_order_paid from pretix.base.signals import register_payment_providers from pretix.control.forms.orders import ExtendForm diff --git a/src/pretix/control/views/organizer.py b/src/pretix/control/views/organizer.py index 53250be2c..099119c1c 100644 --- a/src/pretix/control/views/organizer.py +++ b/src/pretix/control/views/organizer.py @@ -2,10 +2,10 @@ from django.contrib import messages from django.core.urlresolvers import reverse from django.http import HttpResponseForbidden from django.utils.translation import ugettext_lazy as _ -from django.views.generic import ListView, UpdateView, CreateView +from django.views.generic import CreateView, ListView, UpdateView from pretix.base.models import Organizer, OrganizerPermission -from pretix.control.forms.organizer import OrganizerUpdateForm, OrganizerForm +from pretix.control.forms.organizer import OrganizerForm, OrganizerUpdateForm from pretix.control.permissions import OrganizerPermissionRequiredMixin diff --git a/src/pretix/control/views/user.py b/src/pretix/control/views/user.py index dc84d653b..3ddd7ee68 100644 --- a/src/pretix/control/views/user.py +++ b/src/pretix/control/views/user.py @@ -1,10 +1,10 @@ from django.contrib import messages from django.contrib.auth import update_session_auth_hash from django.core.urlresolvers import reverse -from django.views.generic import UpdateView from django.utils.translation import ugettext_lazy as _ -from pretix.base.forms.user import UserSettingsForm +from django.views.generic import UpdateView +from pretix.base.forms.user import UserSettingsForm from pretix.base.models import User diff --git a/src/pretix/helpers/logs.py b/src/pretix/helpers/logs.py index 63485103f..c7f65ad00 100644 --- a/src/pretix/helpers/logs.py +++ b/src/pretix/helpers/logs.py @@ -1,4 +1,5 @@ import logging + from django.conf import settings diff --git a/src/pretix/helpers/urls.py b/src/pretix/helpers/urls.py index 21624ff77..dcc2b8092 100644 --- a/src/pretix/helpers/urls.py +++ b/src/pretix/helpers/urls.py @@ -1,4 +1,5 @@ from urllib.parse import urljoin + from django.conf import settings from django.core.urlresolvers import reverse diff --git a/src/pretix/plugins/__init__.py b/src/pretix/plugins/__init__.py index 3ad9513f4..b36383a61 100644 --- a/src/pretix/plugins/__init__.py +++ b/src/pretix/plugins/__init__.py @@ -1,2 +1,3 @@ from pkgutil import extend_path + __path__ = extend_path(__path__, __name__) diff --git a/src/pretix/plugins/banktransfer/__init__.py b/src/pretix/plugins/banktransfer/__init__.py index 26bf1eb61..b51364987 100644 --- a/src/pretix/plugins/banktransfer/__init__.py +++ b/src/pretix/plugins/banktransfer/__init__.py @@ -1,6 +1,7 @@ from django.apps import AppConfig from django.utils.functional import cached_property from django.utils.translation import ugettext_lazy as _ + from pretix.base.plugins import PluginType diff --git a/src/pretix/plugins/banktransfer/mt940.py b/src/pretix/plugins/banktransfer/mt940.py index 498c9b178..b26e376c6 100644 --- a/src/pretix/plugins/banktransfer/mt940.py +++ b/src/pretix/plugins/banktransfer/mt940.py @@ -33,11 +33,10 @@ __version__ = '0.2' __all__ = ['MT940', 'rabo_description', 'abn_amro_description', 'ing_description'] -from collections import namedtuple, defaultdict -from decimal import Decimal import datetime import re - +from collections import defaultdict, namedtuple +from decimal import Decimal SECTIONS = { 'begin': [':940:'], diff --git a/src/pretix/plugins/banktransfer/mt940import.py b/src/pretix/plugins/banktransfer/mt940import.py index a6c1555d8..6981bd10b 100644 --- a/src/pretix/plugins/banktransfer/mt940import.py +++ b/src/pretix/plugins/banktransfer/mt940import.py @@ -1,5 +1,6 @@ -from collections import defaultdict import io +from collections import defaultdict + from . import mt940 diff --git a/src/pretix/plugins/banktransfer/payment.py b/src/pretix/plugins/banktransfer/payment.py index f13cefe35..f29bd03bc 100644 --- a/src/pretix/plugins/banktransfer/payment.py +++ b/src/pretix/plugins/banktransfer/payment.py @@ -1,8 +1,9 @@ -from collections import OrderedDict import json +from collections import OrderedDict + +from django import forms from django.template.loader import get_template from django.utils.translation import ugettext_lazy as _ -from django import forms from pretix.base.payment import BasePaymentProvider diff --git a/src/pretix/plugins/banktransfer/signals.py b/src/pretix/plugins/banktransfer/signals.py index 634bbcd4a..c213be5bc 100644 --- a/src/pretix/plugins/banktransfer/signals.py +++ b/src/pretix/plugins/banktransfer/signals.py @@ -1,11 +1,11 @@ -from django.core.urlresolvers import reverse, resolve +from django.core.urlresolvers import resolve, reverse from django.dispatch import receiver from django.utils.translation import ugettext_lazy as _ from pretix.base.signals import register_payment_providers +from pretix.control.signals import nav_event from .payment import BankTransfer -from pretix.control.signals import nav_event @receiver(register_payment_providers) diff --git a/src/pretix/plugins/banktransfer/urls.py b/src/pretix/plugins/banktransfer/urls.py index 1ae7520aa..5b8ecf971 100644 --- a/src/pretix/plugins/banktransfer/urls.py +++ b/src/pretix/plugins/banktransfer/urls.py @@ -2,7 +2,6 @@ from django.conf.urls import url from . import views - urlpatterns = [ url(r'^control/event/(?P[^/]+)/(?P[^/]+)/banktransfer/import/', views.ImportView.as_view(), name='import'), diff --git a/src/pretix/plugins/banktransfer/views.py b/src/pretix/plugins/banktransfer/views.py index 7990a8e3e..1a0d60441 100644 --- a/src/pretix/plugins/banktransfer/views.py +++ b/src/pretix/plugins/banktransfer/views.py @@ -1,19 +1,19 @@ import csv -from decimal import Decimal import json import logging import re +from decimal import Decimal from django.contrib import messages from django.shortcuts import redirect, render from django.utils.timezone import now +from django.utils.translation import ugettext_lazy as _ from django.views.generic import TemplateView + from pretix.base.models import Order, Quota from pretix.base.services.orders import mark_order_paid from pretix.control.permissions import EventPermissionRequiredMixin from pretix.plugins.banktransfer import csvimport, mt940import -from django.utils.translation import ugettext_lazy as _ - logger = logging.getLogger('pretix.plugins.banktransfer') diff --git a/src/pretix/plugins/paypal/__init__.py b/src/pretix/plugins/paypal/__init__.py index a43460b41..f096a33d6 100644 --- a/src/pretix/plugins/paypal/__init__.py +++ b/src/pretix/plugins/paypal/__init__.py @@ -1,6 +1,7 @@ from django.apps import AppConfig from django.utils.functional import cached_property from django.utils.translation import ugettext_lazy as _ + from pretix.base.plugins import PluginType diff --git a/src/pretix/plugins/paypal/payment.py b/src/pretix/plugins/paypal/payment.py index 52611806f..5f77f5ca9 100644 --- a/src/pretix/plugins/paypal/payment.py +++ b/src/pretix/plugins/paypal/payment.py @@ -1,18 +1,17 @@ -from collections import OrderedDict import json import logging +from collections import OrderedDict +import paypalrestsdk +from django import forms from django.contrib import messages from django.template.loader import get_template -from django.utils.translation import ugettext_lazy as _ -from django.utils.translation import ugettext as __ -from django import forms -import paypalrestsdk -from pretix.base.models import Quota -from pretix.base.services.orders import mark_order_paid -from pretix.base.payment import BasePaymentProvider -from pretix.helpers.urls import build_absolute_uri +from django.utils.translation import ugettext as __, ugettext_lazy as _ +from pretix.base.models import Quota +from pretix.base.payment import BasePaymentProvider +from pretix.base.services.orders import mark_order_paid +from pretix.helpers.urls import build_absolute_uri logger = logging.getLogger('pretix.plugins.paypal') diff --git a/src/pretix/plugins/paypal/urls.py b/src/pretix/plugins/paypal/urls.py index fb6148b23..5ede8ffac 100644 --- a/src/pretix/plugins/paypal/urls.py +++ b/src/pretix/plugins/paypal/urls.py @@ -1,7 +1,6 @@ -from django.conf.urls import url, include - -from .views import success, abort, retry +from django.conf.urls import include, url +from .views import abort, retry, success urlpatterns = [ url(r'^paypal/', include([ diff --git a/src/pretix/plugins/paypal/views.py b/src/pretix/plugins/paypal/views.py index 80cf422a2..4165daeeb 100644 --- a/src/pretix/plugins/paypal/views.py +++ b/src/pretix/plugins/paypal/views.py @@ -1,15 +1,15 @@ import logging + +import paypalrestsdk from django.contrib import messages from django.contrib.auth.decorators import login_required from django.shortcuts import redirect -import paypalrestsdk +from django.utils.translation import ugettext as __, ugettext_lazy as _ + from pretix.base.models import Event, Order -from django.utils.translation import ugettext_lazy as _ -from django.utils.translation import ugettext as __ from pretix.helpers.urls import build_absolute_uri from pretix.plugins.paypal.payment import Paypal - logger = logging.getLogger('pretix.plugins.paypal') diff --git a/src/pretix/plugins/sendmail/__init__.py b/src/pretix/plugins/sendmail/__init__.py index 82128933e..c55b17481 100644 --- a/src/pretix/plugins/sendmail/__init__.py +++ b/src/pretix/plugins/sendmail/__init__.py @@ -1,5 +1,6 @@ from django.apps import AppConfig from django.utils.translation import ugettext_lazy as _ + from pretix.base.plugins import PluginType diff --git a/src/pretix/plugins/sendmail/forms.py b/src/pretix/plugins/sendmail/forms.py index e98278cbb..89e575344 100644 --- a/src/pretix/plugins/sendmail/forms.py +++ b/src/pretix/plugins/sendmail/forms.py @@ -1,5 +1,6 @@ from django import forms from django.utils.translation import ugettext_lazy as _ + from pretix.base.i18n import I18nFormField, I18nTextarea, I18nTextInput from pretix.base.models import Order diff --git a/src/pretix/plugins/sendmail/signals.py b/src/pretix/plugins/sendmail/signals.py index 9ba636ae5..28873457a 100644 --- a/src/pretix/plugins/sendmail/signals.py +++ b/src/pretix/plugins/sendmail/signals.py @@ -1,4 +1,4 @@ -from django.core.urlresolvers import reverse, resolve +from django.core.urlresolvers import resolve, reverse from django.dispatch import receiver from django.utils.translation import ugettext_lazy as _ diff --git a/src/pretix/plugins/sendmail/urls.py b/src/pretix/plugins/sendmail/urls.py index f04e05e82..710bb56ae 100644 --- a/src/pretix/plugins/sendmail/urls.py +++ b/src/pretix/plugins/sendmail/urls.py @@ -2,7 +2,6 @@ from django.conf.urls import url from . import views - urlpatterns = [ url(r'^control/event/(?P[^/]+)/(?P[^/]+)/sendmail/', views.SenderView.as_view(), name='send'), diff --git a/src/pretix/plugins/sendmail/views.py b/src/pretix/plugins/sendmail/views.py index 88e24f42c..03cc47317 100644 --- a/src/pretix/plugins/sendmail/views.py +++ b/src/pretix/plugins/sendmail/views.py @@ -1,4 +1,5 @@ import logging + from django.contrib import messages from django.shortcuts import redirect from django.utils.translation import ugettext_lazy as _ @@ -10,7 +11,6 @@ from pretix.control.permissions import EventPermissionRequiredMixin from . import forms - logger = logging.getLogger('pretix.plugins.sendmail') diff --git a/src/pretix/plugins/stripe/__init__.py b/src/pretix/plugins/stripe/__init__.py index b1da15ffa..5f8ba1cc0 100644 --- a/src/pretix/plugins/stripe/__init__.py +++ b/src/pretix/plugins/stripe/__init__.py @@ -1,6 +1,7 @@ from django.apps import AppConfig from django.utils.functional import cached_property from django.utils.translation import ugettext_lazy as _ + from pretix.base.plugins import PluginType diff --git a/src/pretix/plugins/stripe/payment.py b/src/pretix/plugins/stripe/payment.py index 695546ce5..50cdd66d0 100644 --- a/src/pretix/plugins/stripe/payment.py +++ b/src/pretix/plugins/stripe/payment.py @@ -1,17 +1,17 @@ -from collections import OrderedDict import json import logging +from collections import OrderedDict +import stripe +from django import forms from django.contrib import messages from django.template.loader import get_template from django.utils.translation import ugettext_lazy as _ -from django import forms + from pretix.base.models import Quota +from pretix.base.payment import BasePaymentProvider from pretix.base.services.orders import mark_order_paid from pretix.helpers.urls import build_absolute_uri -import stripe -from pretix.base.payment import BasePaymentProvider - logger = logging.getLogger('pretix.plugins.stripe') diff --git a/src/pretix/plugins/stripe/signals.py b/src/pretix/plugins/stripe/signals.py index eeb0d403f..e1fc470cf 100644 --- a/src/pretix/plugins/stripe/signals.py +++ b/src/pretix/plugins/stripe/signals.py @@ -4,7 +4,6 @@ from django.template import Context from django.template.loader import get_template from pretix.base.signals import register_payment_providers - from pretix.presale.signals import html_head diff --git a/src/pretix/plugins/stripe/urls.py b/src/pretix/plugins/stripe/urls.py index 34110a67a..046d9e639 100644 --- a/src/pretix/plugins/stripe/urls.py +++ b/src/pretix/plugins/stripe/urls.py @@ -1,8 +1,7 @@ -from django.conf.urls import url, include +from django.conf.urls import include, url from .views import webhook - urlpatterns = [ url(r'^stripe/', include([ url(r'^webhook/$', webhook, name='webhook'), diff --git a/src/pretix/plugins/stripe/views.py b/src/pretix/plugins/stripe/views.py index e7e470ea3..1209c55c2 100644 --- a/src/pretix/plugins/stripe/views.py +++ b/src/pretix/plugins/stripe/views.py @@ -1,12 +1,13 @@ import json import logging + +import stripe from django.http import HttpResponse from django.views.decorators.csrf import csrf_exempt from django.views.decorators.http import require_POST -from pretix.base.models import Order, Event -from pretix.plugins.stripe.payment import Stripe -import stripe +from pretix.base.models import Event, Order +from pretix.plugins.stripe.payment import Stripe logger = logging.getLogger('pretix.plugins.stripe') diff --git a/src/pretix/plugins/ticketoutputpdf/__init__.py b/src/pretix/plugins/ticketoutputpdf/__init__.py index c3184a474..c0cf5c3c2 100644 --- a/src/pretix/plugins/ticketoutputpdf/__init__.py +++ b/src/pretix/plugins/ticketoutputpdf/__init__.py @@ -1,6 +1,7 @@ from django.apps import AppConfig from django.utils.functional import cached_property from django.utils.translation import ugettext_lazy as _ + from pretix.base.plugins import PluginType diff --git a/src/pretix/plugins/ticketoutputpdf/ticketoutput.py b/src/pretix/plugins/ticketoutputpdf/ticketoutput.py index 1ec4c6952..02fdcd7b2 100644 --- a/src/pretix/plugins/ticketoutputpdf/ticketoutput.py +++ b/src/pretix/plugins/ticketoutputpdf/ticketoutput.py @@ -1,11 +1,11 @@ -from io import BytesIO import logging +from io import BytesIO from django.contrib.staticfiles import finders from django.http import HttpResponse from django.utils.translation import ugettext_lazy as _ -from pretix.base.ticketoutput import BaseTicketOutput +from pretix.base.ticketoutput import BaseTicketOutput logger = logging.getLogger('pretix.plugins.ticketoutputpdf') diff --git a/src/pretix/plugins/timerestriction/__init__.py b/src/pretix/plugins/timerestriction/__init__.py index 6d7bdba91..e78bb750f 100644 --- a/src/pretix/plugins/timerestriction/__init__.py +++ b/src/pretix/plugins/timerestriction/__init__.py @@ -1,5 +1,6 @@ from django.apps import AppConfig from django.utils.translation import ugettext_lazy as _ + from pretix.base.plugins import PluginType diff --git a/src/pretix/plugins/timerestriction/migrations/0001_initial.py b/src/pretix/plugins/timerestriction/migrations/0001_initial.py index 073ce668c..3e1ff4be6 100644 --- a/src/pretix/plugins/timerestriction/migrations/0001_initial.py +++ b/src/pretix/plugins/timerestriction/migrations/0001_initial.py @@ -1,9 +1,10 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.db import models, migrations -import pretix.base.models import versions.models +from django.db import migrations, models + +import pretix.base.models class Migration(migrations.Migration): diff --git a/src/pretix/plugins/timerestriction/signals.py b/src/pretix/plugins/timerestriction/signals.py index 43ff6bddb..646f68c21 100644 --- a/src/pretix/plugins/timerestriction/signals.py +++ b/src/pretix/plugins/timerestriction/signals.py @@ -1,11 +1,11 @@ from django.dispatch import receiver +from django.forms.models import inlineformset_factory from django.utils.timezone import now from django.utils.translation import ugettext_lazy as _ -from django.forms.models import inlineformset_factory -from pretix.base.signals import determine_availability from pretix.base.models import Item -from pretix.control.forms import RestrictionInlineFormset, RestrictionForm +from pretix.base.signals import determine_availability +from pretix.control.forms import RestrictionForm, RestrictionInlineFormset from pretix.control.signals import restriction_formset from .models import TimeRestriction diff --git a/src/pretix/presale/context.py b/src/pretix/presale/context.py index a54e9b742..e898a0000 100644 --- a/src/pretix/presale/context.py +++ b/src/pretix/presale/context.py @@ -1,4 +1,5 @@ from django.core.urlresolvers import resolve + from .signals import html_head diff --git a/src/pretix/presale/forms/auth.py b/src/pretix/presale/forms/auth.py index 4770d176e..e9bbb5e27 100644 --- a/src/pretix/presale/forms/auth.py +++ b/src/pretix/presale/forms/auth.py @@ -1,10 +1,12 @@ -from django.contrib.auth import authenticate -from django.core.validators import RegexValidator from django import forms -from django.forms import Form -from django.contrib.auth.forms import AuthenticationForm as BaseAuthenticationForm -from django.utils.translation import ugettext_lazy as _ from django.conf import settings +from django.contrib.auth import authenticate +from django.contrib.auth.forms import \ + AuthenticationForm as BaseAuthenticationForm +from django.core.validators import RegexValidator +from django.forms import Form +from django.utils.translation import ugettext_lazy as _ + from pretix.base.models import User diff --git a/src/pretix/presale/forms/checkout.py b/src/pretix/presale/forms/checkout.py index d278825b8..4b8660fa6 100644 --- a/src/pretix/presale/forms/checkout.py +++ b/src/pretix/presale/forms/checkout.py @@ -1,5 +1,6 @@ from django import forms from django.utils.translation import ugettext_lazy as _ + from pretix.base.models import Question diff --git a/src/pretix/presale/signals.py b/src/pretix/presale/signals.py index aa760970c..b7c9e524b 100644 --- a/src/pretix/presale/signals.py +++ b/src/pretix/presale/signals.py @@ -1,6 +1,5 @@ from pretix.base.signals import EventPluginSignal - """ This signal is sent out to include code into the HTML tag """ diff --git a/src/pretix/presale/urls.py b/src/pretix/presale/urls.py index bdb6e1eea..dbc648116 100644 --- a/src/pretix/presale/urls.py +++ b/src/pretix/presale/urls.py @@ -1,11 +1,10 @@ -from django.conf.urls import url, include +from django.conf.urls import include, url -import pretix.presale.views.event import pretix.presale.views.cart import pretix.presale.views.checkout -import pretix.presale.views.order +import pretix.presale.views.event import pretix.presale.views.locale - +import pretix.presale.views.order urlpatterns = [ url(r'^(?P[^/]+)/(?P[^/]+)/', include([ diff --git a/src/pretix/presale/views/__init__.py b/src/pretix/presale/views/__init__.py index 7223c86e8..517d50301 100644 --- a/src/pretix/presale/views/__init__.py +++ b/src/pretix/presale/views/__init__.py @@ -1,8 +1,8 @@ -from itertools import groupby from datetime import timedelta +from itertools import groupby + from django.contrib.auth.views import redirect_to_login from django.core.urlresolvers import reverse - from django.db.models import Q from django.utils.functional import cached_property from django.utils.timezone import now diff --git a/src/pretix/presale/views/cart.py b/src/pretix/presale/views/cart.py index 1fed08080..ff22af4a6 100644 --- a/src/pretix/presale/views/cart.py +++ b/src/pretix/presale/views/cart.py @@ -1,5 +1,5 @@ -from datetime import timedelta import json +from datetime import timedelta from django.contrib import messages from django.contrib.auth.views import redirect_to_login @@ -7,10 +7,10 @@ from django.core.urlresolvers import reverse from django.db.models import Q from django.shortcuts import redirect from django.utils.timezone import now -from django.views.generic import View from django.utils.translation import ugettext_lazy as _ +from django.views.generic import View -from pretix.base.models import Item, ItemVariation, Quota, CartPosition +from pretix.base.models import CartPosition, Item, ItemVariation, Quota from pretix.presale.views import EventLoginRequiredMixin, EventViewMixin diff --git a/src/pretix/presale/views/checkout.py b/src/pretix/presale/views/checkout.py index ed200746f..f79520e7f 100644 --- a/src/pretix/presale/views/checkout.py +++ b/src/pretix/presale/views/checkout.py @@ -4,13 +4,16 @@ from django.db.models import Q, Sum from django.http import HttpRequest from django.shortcuts import redirect from django.utils.functional import cached_property -from django.views.generic import TemplateView from django.utils.translation import ugettext_lazy as _ -from pretix.base.models import CartPosition, QuestionAnswer, OrderPosition -from pretix.base.services.orders import perform_order, OrderError +from django.views.generic import TemplateView + +from pretix.base.models import CartPosition, OrderPosition, QuestionAnswer +from pretix.base.services.orders import OrderError, perform_order from pretix.base.signals import register_payment_providers from pretix.presale.forms.checkout import QuestionsForm -from pretix.presale.views import EventViewMixin, CartDisplayMixin, EventLoginRequiredMixin +from pretix.presale.views import ( + CartDisplayMixin, EventLoginRequiredMixin, EventViewMixin, +) class CheckoutView(TemplateView): diff --git a/src/pretix/presale/views/event.py b/src/pretix/presale/views/event.py index 567f0e1c6..9847184ea 100644 --- a/src/pretix/presale/views/event.py +++ b/src/pretix/presale/views/event.py @@ -1,25 +1,30 @@ import json +from django.conf import settings from django.contrib import messages -from django.contrib.auth import authenticate, logout, update_session_auth_hash +from django.contrib.auth import ( + authenticate, login, logout, update_session_auth_hash, +) from django.core import signing -from django.core.signing import SignatureExpired, BadSignature +from django.core.signing import BadSignature, SignatureExpired from django.core.urlresolvers import reverse from django.db.models import Count from django.shortcuts import redirect from django.utils.functional import cached_property -from django.contrib.auth import login -from django.views.generic import TemplateView, View, UpdateView from django.utils.translation import ugettext_lazy as _ -from django.conf import settings +from django.views.generic import TemplateView, UpdateView, View + from pretix.base.forms.user import UserSettingsForm -from pretix.base.services.mail import mail from pretix.base.models import User +from pretix.base.services.mail import mail from pretix.helpers.urls import build_absolute_uri -from pretix.presale.forms.auth import GlobalRegistrationForm, LocalRegistrationForm, PasswordForgotForm, \ - PasswordRecoverForm -from pretix.presale.forms.auth import LoginForm -from pretix.presale.views import EventViewMixin, CartDisplayMixin, EventLoginRequiredMixin +from pretix.presale.forms.auth import ( + GlobalRegistrationForm, LocalRegistrationForm, LoginForm, + PasswordForgotForm, PasswordRecoverForm, +) +from pretix.presale.views import ( + CartDisplayMixin, EventLoginRequiredMixin, EventViewMixin, +) from pretix.presale.views.cart import CartAdd diff --git a/src/pretix/presale/views/locale.py b/src/pretix/presale/views/locale.py index c5c285319..9f58073df 100644 --- a/src/pretix/presale/views/locale.py +++ b/src/pretix/presale/views/locale.py @@ -1,4 +1,5 @@ from datetime import datetime, timedelta + from django.conf import settings from django.shortcuts import redirect from django.views.generic import View diff --git a/src/pretix/presale/views/order.py b/src/pretix/presale/views/order.py index 94f64ab9e..67b09ee02 100644 --- a/src/pretix/presale/views/order.py +++ b/src/pretix/presale/views/order.py @@ -1,14 +1,19 @@ from django.contrib import messages from django.core.urlresolvers import reverse +from django.http import HttpResponseForbidden, HttpResponseNotFound from django.shortcuts import redirect +from django.utils.functional import cached_property from django.utils.timezone import now from django.utils.translation import ugettext_lazy as _ -from django.utils.functional import cached_property from django.views.generic import TemplateView, View -from django.http import HttpResponseNotFound, HttpResponseForbidden + from pretix.base.models import Order, OrderPosition -from pretix.base.signals import register_payment_providers, register_ticket_outputs -from pretix.presale.views import EventViewMixin, EventLoginRequiredMixin, CartDisplayMixin +from pretix.base.signals import ( + register_payment_providers, register_ticket_outputs, +) +from pretix.presale.views import ( + CartDisplayMixin, EventLoginRequiredMixin, EventViewMixin, +) from pretix.presale.views.checkout import QuestionsViewMixin diff --git a/src/pretix/settings.py b/src/pretix/settings.py index 00fafa99a..32ed5bdef 100644 --- a/src/pretix/settings.py +++ b/src/pretix/settings.py @@ -1,6 +1,9 @@ import configparser import os + +from django.contrib.messages import constants as messages # NOQA from django.utils.crypto import get_random_string +from django.utils.translation import ugettext_lazy as _ # NOQA config = configparser.ConfigParser() config.read(['/etc/pretix/pretix.cfg', os.path.expanduser('~/.pretix.cfg'), 'pretix.cfg'], @@ -160,7 +163,6 @@ LOCALE_PATHS = ( 'locale', ) -from django.utils.translation import ugettext_lazy as _ # NOQA LANGUAGES = ( ('en', _('English')), ('de', _('German')), @@ -237,7 +239,6 @@ DEBUG_TOOLBAR_CONFIG = { INTERNAL_IPS = ('127.0.0.1', '::1') -from django.contrib.messages import constants as messages # NOQA MESSAGE_TAGS = { messages.INFO: 'alert-info', messages.ERROR: 'alert-danger', diff --git a/src/pretix/urls.py b/src/pretix/urls.py index 9ac413d41..896e78d1c 100644 --- a/src/pretix/urls.py +++ b/src/pretix/urls.py @@ -1,12 +1,12 @@ import importlib + from django.apps import apps -from django.conf.urls import include, url from django.conf import settings +from django.conf.urls import include, url import pretix.control.urls import pretix.presale.urls - urlpatterns = [ url(r'^control/', include(pretix.control.urls, namespace='control')), # The pretixpresale namespace is configured at the bottom of this file, because it diff --git a/src/requirements/testing.txt b/src/requirements/testing.txt index 82da81717..11690e820 100644 --- a/src/requirements/testing.txt +++ b/src/requirements/testing.txt @@ -8,6 +8,7 @@ coverage selenium pytest pytest-django +isort # PyVirtualDisplay # -e git+https://github.com/pretix/sauceclient.git@master#egg=sauceclient # travis diff --git a/src/setup.cfg b/src/setup.cfg index 7a50a192b..9e65f4ea3 100644 --- a/src/setup.cfg +++ b/src/setup.cfg @@ -3,3 +3,12 @@ ignore = N802,W503 max-line-length = 160 exclude = migrations,.ropeproject,static,mt940.py,_static max-complexity = 11 + +[isort] +combine_as_imports = true +default_section = THIRDPARTY +include_trailing_comma = true +known_first_party = pretix +multi_line_output = 5 +not_skip = __init__.py +skip = make_testdata.py,wsgi.py,bootstrap diff --git a/src/setup.py b/src/setup.py index 8e3bf8d83..de852cc1c 100644 --- a/src/setup.py +++ b/src/setup.py @@ -1,9 +1,11 @@ + # Always prefer setuptools over distutils -from setuptools import setup, find_packages # To use a consistent encoding from codecs import open from os import path +from setuptools import find_packages, setup + here = path.abspath(path.dirname(__file__)) # Get the long description from the relevant file diff --git a/src/tests/base/__init__.py b/src/tests/base/__init__.py index 7f3b6f7b4..f72f5d583 100644 --- a/src/tests/base/__init__.py +++ b/src/tests/base/__init__.py @@ -1,12 +1,11 @@ import os import sys import time -from django.contrib.staticfiles.testing import StaticLiveServerTestCase from django.conf import settings +from django.contrib.staticfiles.testing import StaticLiveServerTestCase from selenium import webdriver - # could use Chrome, Firefox, etc... here BROWSER = os.environ.get('TEST_BROWSER', 'PhantomJS') diff --git a/src/tests/base/test_cache.py b/src/tests/base/test_cache.py index 31f6c645f..77b2217ac 100644 --- a/src/tests/base/test_cache.py +++ b/src/tests/base/test_cache.py @@ -1,7 +1,7 @@ import random -from django.test import TestCase from django.core.cache import cache as django_cache +from django.test import TestCase from django.utils.timezone import now from pretix.base.models import Event, Organizer diff --git a/src/tests/base/test_i18n.py b/src/tests/base/test_i18n.py index ebaaebb51..ccf1a9236 100644 --- a/src/tests/base/test_i18n.py +++ b/src/tests/base/test_i18n.py @@ -1,9 +1,9 @@ from django.test import TestCase from django.utils import translation from django.utils.timezone import now -from pretix.base.i18n import LazyI18nString -from pretix.base.models import Event, Organizer, ItemCategory +from pretix.base.i18n import LazyI18nString +from pretix.base.models import Event, ItemCategory, Organizer class I18nStringTest(TestCase): diff --git a/src/tests/base/test_mail.py b/src/tests/base/test_mail.py index 688dcf326..61e4cd6db 100644 --- a/src/tests/base/test_mail.py +++ b/src/tests/base/test_mail.py @@ -1,8 +1,8 @@ -from django.conf import settings -from django.utils.timezone import now -from django.core import mail as djmail -from django.utils.translation import ugettext_lazy as _ import pytest +from django.conf import settings +from django.core import mail as djmail +from django.utils.timezone import now +from django.utils.translation import ugettext_lazy as _ from pretix.base.models import Event, Organizer, User from pretix.base.services.mail import mail diff --git a/src/tests/base/test_middleware.py b/src/tests/base/test_middleware.py index 3f6b4c0b8..375a83289 100644 --- a/src/tests/base/test_middleware.py +++ b/src/tests/base/test_middleware.py @@ -1,6 +1,6 @@ -from django.test import TestCase, Client -from django.utils.timezone import now from django.conf import settings +from django.test import Client, TestCase +from django.utils.timezone import now from pretix.base.models import Event, Organizer, User diff --git a/src/tests/base/test_models.py b/src/tests/base/test_models.py index beca551ce..11e8bb1b6 100644 --- a/src/tests/base/test_models.py +++ b/src/tests/base/test_models.py @@ -2,10 +2,11 @@ from datetime import timedelta from django.test import TestCase from django.utils.timezone import now + from pretix.base.models import ( - Event, Organizer, Item, ItemVariation, - Property, PropertyValue, User, Quota, - Order, OrderPosition, CartPosition, Question) + CartPosition, Event, Item, ItemVariation, Order, OrderPosition, Organizer, + Property, PropertyValue, Question, Quota, User, +) from pretix.base.services.orders import mark_order_paid from pretix.base.types import VariationDict diff --git a/src/tests/base/test_plugins.py b/src/tests/base/test_plugins.py index 2ffe6e35c..728a8cb63 100644 --- a/src/tests/base/test_plugins.py +++ b/src/tests/base/test_plugins.py @@ -1,6 +1,6 @@ +from django.conf import settings from django.test import TestCase from django.utils.timezone import now -from django.conf import settings from pretix.base.models import Event, Organizer from pretix.base.plugins import get_all_plugins diff --git a/src/tests/base/test_settings.py b/src/tests/base/test_settings.py index 1aaaf024c..eca0e3ad7 100644 --- a/src/tests/base/test_settings.py +++ b/src/tests/base/test_settings.py @@ -1,10 +1,11 @@ -from datetime import datetime, time, date +from datetime import date, datetime, time from decimal import Decimal + from django.test import TestCase from django.utils.timezone import now -from pretix.base.models import Event, Organizer, User, OrganizerSetting from pretix.base import settings +from pretix.base.models import Event, Organizer, OrganizerSetting, User from pretix.base.settings import SettingsSandbox diff --git a/src/tests/control/test_auth.py b/src/tests/control/test_auth.py index c5237ac54..7ee23d446 100644 --- a/src/tests/control/test_auth.py +++ b/src/tests/control/test_auth.py @@ -1,7 +1,7 @@ -from django.test import TestCase, Client +from django.test import Client, TestCase +from tests.base import BrowserTest from pretix.base.models import User -from tests.base import BrowserTest class LoginFormBrowserTest(BrowserTest): diff --git a/src/tests/control/test_events.py b/src/tests/control/test_events.py index 64d26fa2f..1d92084a4 100644 --- a/src/tests/control/test_events.py +++ b/src/tests/control/test_events.py @@ -1,7 +1,11 @@ import datetime -from pretix.base.models import User, Organizer, Event, OrganizerPermission, EventPermission + from tests.base import BrowserTest +from pretix.base.models import ( + Event, EventPermission, Organizer, OrganizerPermission, User, +) + class EventsTest(BrowserTest): diff --git a/src/tests/control/test_items.py b/src/tests/control/test_items.py index b767d1ca8..50d9b7775 100644 --- a/src/tests/control/test_items.py +++ b/src/tests/control/test_items.py @@ -1,13 +1,17 @@ +import datetime import os import time -import datetime import unittest + from django.utils.timezone import now from selenium.webdriver.support.select import Select -from pretix.base.models import User, Organizer, Event, OrganizerPermission, EventPermission, ItemCategory, Property, \ - PropertyValue, Question, Quota, Item from tests.base import BrowserTest +from pretix.base.models import ( + Event, EventPermission, Item, ItemCategory, Organizer, OrganizerPermission, + Property, PropertyValue, Question, Quota, User, +) + class ItemFormTest(BrowserTest): def setUp(self): diff --git a/src/tests/control/test_orders.py b/src/tests/control/test_orders.py index d8ac75983..74c7007fa 100644 --- a/src/tests/control/test_orders.py +++ b/src/tests/control/test_orders.py @@ -1,9 +1,13 @@ from datetime import timedelta from decimal import Decimal -from django.utils.timezone import now import pytest -from pretix.base.models import Event, Organizer, User, EventPermission, Order, OrganizerPermission, Item, OrderPosition +from django.utils.timezone import now + +from pretix.base.models import ( + Event, EventPermission, Item, Order, OrderPosition, Organizer, + OrganizerPermission, User, +) @pytest.fixture diff --git a/src/tests/control/test_permissions.py b/src/tests/control/test_permissions.py index be6069ac7..ee49a07cd 100644 --- a/src/tests/control/test_permissions.py +++ b/src/tests/control/test_permissions.py @@ -1,8 +1,11 @@ from datetime import timedelta -from django.utils.timezone import now import pytest -from pretix.base.models import Event, Organizer, User, EventPermission, Order, OrganizerPermission +from django.utils.timezone import now + +from pretix.base.models import ( + Event, EventPermission, Order, Organizer, OrganizerPermission, User, +) @pytest.fixture diff --git a/src/tests/control/test_user.py b/src/tests/control/test_user.py index 9c46429bd..212fe4326 100644 --- a/src/tests/control/test_user.py +++ b/src/tests/control/test_user.py @@ -1,6 +1,7 @@ -from pretix.base.models import User from tests.base import BrowserTest +from pretix.base.models import User + class UserSettingsTest(BrowserTest): def setUp(self): diff --git a/src/tests/helpers/test_urls.py b/src/tests/helpers/test_urls.py index f6725f624..6894a7e33 100644 --- a/src/tests/helpers/test_urls.py +++ b/src/tests/helpers/test_urls.py @@ -1,7 +1,8 @@ from django.conf import settings -from pretix.helpers.urls import build_absolute_uri from django.core import urlresolvers +from pretix.helpers.urls import build_absolute_uri + def test_site_url_domain(): settings.SITE_URL = 'https://example.com' diff --git a/src/tests/plugins/banktransfer/test_csvimport.py b/src/tests/plugins/banktransfer/test_csvimport.py index 4141784b9..655417eb6 100644 --- a/src/tests/plugins/banktransfer/test_csvimport.py +++ b/src/tests/plugins/banktransfer/test_csvimport.py @@ -1,4 +1,5 @@ import os.path + from django.test import TestCase # Do NOT use relative imports here diff --git a/src/tests/plugins/test_timerestriction.py b/src/tests/plugins/test_timerestriction.py index 1194a3014..d1706e124 100644 --- a/src/tests/plugins/test_timerestriction.py +++ b/src/tests/plugins/test_timerestriction.py @@ -4,9 +4,8 @@ from django.test import TestCase from django.utils.timezone import now from pretix.base.models import ( - Event, Organizer, Item, Property, PropertyValue, ItemVariation + Event, Item, ItemVariation, Organizer, Property, PropertyValue, ) - # Do NOT use relative imports here from pretix.plugins.timerestriction import signals from pretix.plugins.timerestriction.models import TimeRestriction diff --git a/src/tests/presale/test_account.py b/src/tests/presale/test_account.py index eb84d6890..d4a50b0a6 100644 --- a/src/tests/presale/test_account.py +++ b/src/tests/presale/test_account.py @@ -1,8 +1,10 @@ import time -from pretix.base.models import User + from tests.base import BrowserTest from tests.presale.test_event import EventTestMixin +from pretix.base.models import User + class UserSettingsTest(EventTestMixin, BrowserTest): def setUp(self): diff --git a/src/tests/presale/test_cart.py b/src/tests/presale/test_cart.py index 88242782a..3df5af791 100644 --- a/src/tests/presale/test_cart.py +++ b/src/tests/presale/test_cart.py @@ -1,14 +1,17 @@ import datetime import time +from datetime import timedelta + from bs4 import BeautifulSoup from django.test import TestCase from django.utils.timezone import now -from datetime import timedelta - -from pretix.base.models import Item, Organizer, Event, ItemCategory, Quota, Property, PropertyValue, ItemVariation, User, \ - CartPosition, Question, QuestionAnswer from tests.base import BrowserTest +from pretix.base.models import ( + CartPosition, Event, Item, ItemCategory, ItemVariation, Organizer, + Property, PropertyValue, Question, QuestionAnswer, Quota, User, +) + class CartTestMixin: diff --git a/src/tests/presale/test_checkout.py b/src/tests/presale/test_checkout.py index 0cf879ec6..aa230bcca 100644 --- a/src/tests/presale/test_checkout.py +++ b/src/tests/presale/test_checkout.py @@ -1,11 +1,14 @@ import datetime +from datetime import timedelta + from bs4 import BeautifulSoup from django.test import TestCase from django.utils.timezone import now -from datetime import timedelta -from pretix.base.models import Item, Organizer, Event, ItemCategory, Quota, User, \ - CartPosition, Question, Order, OrderPosition +from pretix.base.models import ( + CartPosition, Event, Item, ItemCategory, Order, OrderPosition, Organizer, + Question, Quota, User, +) class CheckoutTestCase(TestCase): diff --git a/src/tests/presale/test_event.py b/src/tests/presale/test_event.py index 97c85f195..8dfb31851 100644 --- a/src/tests/presale/test_event.py +++ b/src/tests/presale/test_event.py @@ -1,11 +1,15 @@ import datetime import time + from django.test import TestCase from django.utils.timezone import now - -from pretix.base.models import Item, Organizer, Event, ItemCategory, Quota, Property, PropertyValue, ItemVariation, User from tests.base import BrowserTest +from pretix.base.models import ( + Event, Item, ItemCategory, ItemVariation, Organizer, Property, + PropertyValue, Quota, User, +) + class EventTestMixin: diff --git a/src/tests/presale/test_orders.py b/src/tests/presale/test_orders.py index b4392af6c..95a74f7a4 100644 --- a/src/tests/presale/test_orders.py +++ b/src/tests/presale/test_orders.py @@ -1,11 +1,14 @@ import datetime from decimal import Decimal + from bs4 import BeautifulSoup from django.test import TestCase from django.utils.timezone import now -from pretix.base.models import Organizer, Event, Order, User, ItemCategory, Quota, Item, Property, PropertyValue, \ - ItemVariation, OrderPosition, Question +from pretix.base.models import ( + Event, Item, ItemCategory, ItemVariation, Order, OrderPosition, Organizer, + Property, PropertyValue, Question, Quota, User, +) class OrdersTest(TestCase): diff --git a/src/tests/testdummy/__init__.py b/src/tests/testdummy/__init__.py index f7826d906..36e1199dd 100644 --- a/src/tests/testdummy/__init__.py +++ b/src/tests/testdummy/__init__.py @@ -1,4 +1,5 @@ from django.apps import AppConfig + from pretix.base.plugins import PluginType diff --git a/src/tests/testdummy/ticketoutput.py b/src/tests/testdummy/ticketoutput.py index eff6df15f..680cfe2ae 100644 --- a/src/tests/testdummy/ticketoutput.py +++ b/src/tests/testdummy/ticketoutput.py @@ -1,8 +1,8 @@ import logging from django.http import HttpResponse -from pretix.base.ticketoutput import BaseTicketOutput +from pretix.base.ticketoutput import BaseTicketOutput logger = logging.getLogger('tests.testdummy.ticketoutput')