isort 5.0 config/docs (#1736)

This commit is contained in:
Felix Rindt
2020-07-30 17:57:26 +02:00
committed by GitHub
parent 355dd4463b
commit 77f76195c8
24 changed files with 60 additions and 37 deletions
+1 -1
View File
@@ -31,7 +31,7 @@ jobs:
- name: Install Dependencies - name: Install Dependencies
run: pip3 install --no-use-pep517 -Ur src/requirements/dev.txt run: pip3 install --no-use-pep517 -Ur src/requirements/dev.txt
- name: Run isort - name: Run isort
run: isort -c -rc -df . run: isort -c .
working-directory: ./src working-directory: ./src
flake: flake:
name: flake8 name: flake8
+1 -1
View File
@@ -7,7 +7,7 @@ Coding style and quality
for more information. Use four spaces for indentation. for more information. Use four spaces for indentation.
* We sort our imports by a certain schema, but you don't have to do this by hand. Again, ``setup.cfg`` contains * We sort our imports by a certain schema, but you don't have to do this by hand. Again, ``setup.cfg`` contains
some definitions that allow the command ``isort -rc <directory>`` to automatically sort the imports in your source some definitions that allow the command ``isort <directory>`` to automatically sort the imports in your source
files. files.
* For templates and models, please take a look at the `Django Coding Style`_. We like Django's `class-based views`_ and * For templates and models, please take a look at the `Django Coding Style`_. We like Django's `class-based views`_ and
+2 -2
View File
@@ -98,7 +98,7 @@ pull request nevertheless and ask us for help, we are happy to assist you.
Execute the following commands to check for code style errors:: Execute the following commands to check for code style errors::
flake8 . flake8 .
isort -c -rc . isort -c .
python manage.py check python manage.py check
Execute the following command to run pretix' test suite (might take a couple of minutes):: Execute the following command to run pretix' test suite (might take a couple of minutes)::
@@ -121,7 +121,7 @@ for example, to check for any errors in any staged files when committing::
do do
echo $file echo $file
git show ":$file" | flake8 - --stdin-display-name="$file" || exit 1 # we only want to lint the staged changes, not any un-staged changes git show ":$file" | flake8 - --stdin-display-name="$file" || exit 1 # we only want to lint the staged changes, not any un-staged changes
git show ":$file" | isort -df --check-only - | grep ERROR && exit 1 || true git show ":$file" | isort -c - | grep ERROR && exit 1 || true
done done
+3 -2
View File
@@ -4,6 +4,9 @@ from django.conf import settings
from django.utils import translation from django.utils import translation
from django.utils.formats import date_format, number_format from django.utils.formats import date_format, number_format
from django.utils.translation import gettext from django.utils.translation import gettext
from pretix.base.templatetags.money import money_filter
from i18nfield.fields import ( # noqa from i18nfield.fields import ( # noqa
I18nCharField, I18nTextarea, I18nTextField, I18nTextInput, I18nCharField, I18nTextarea, I18nTextField, I18nTextInput,
) )
@@ -12,8 +15,6 @@ from i18nfield.forms import I18nFormField # noqa
from i18nfield.strings import LazyI18nString # noqa from i18nfield.strings import LazyI18nString # noqa
from i18nfield.utils import I18nJSONEncoder # noqa from i18nfield.utils import I18nJSONEncoder # noqa
from pretix.base.templatetags.money import money_filter
class LazyDate: class LazyDate:
def __init__(self, value): def __init__(self, value):
@@ -4,6 +4,7 @@ from django.db import migrations
from pretix.base.channels import get_all_sales_channels from pretix.base.channels import get_all_sales_channels
def set_sales_channels(apps, schema_editor): def set_sales_channels(apps, schema_editor):
# We now allow restricting some mails to certain sales channels # We now allow restricting some mails to certain sales channels
# The default is changing from all channels to "web" only # The default is changing from all channels to "web" only
+1 -1
View File
@@ -173,7 +173,7 @@ class User(AbstractBaseUser, PermissionsMixin, LoggingMixin):
return self.email return self.email
def send_security_notice(self, messages, email=None): def send_security_notice(self, messages, email=None):
from pretix.base.services.mail import mail, SendMailException from pretix.base.services.mail import SendMailException, mail
try: try:
with language(self.locale): with language(self.locale):
+6 -5
View File
@@ -48,14 +48,15 @@ class LoggingMixin:
:param data: Any JSON-serializable object :param data: Any JSON-serializable object
:param user: The user performing the action (optional) :param user: The user performing the action (optional)
""" """
from .log import LogEntry
from .event import Event
from .devices import Device
from pretix.api.models import OAuthAccessToken, OAuthApplication from pretix.api.models import OAuthAccessToken, OAuthApplication
from .organizer import TeamAPIToken from pretix.api.webhooks import get_all_webhook_events, notify_webhooks
from ..notifications import get_all_notification_types from ..notifications import get_all_notification_types
from ..services.notifications import notify from ..services.notifications import notify
from pretix.api.webhooks import get_all_webhook_events, notify_webhooks from .devices import Device
from .event import Event
from .log import LogEntry
from .organizer import TeamAPIToken
event = None event = None
if isinstance(self, Event): if isinstance(self, Event):
+1 -1
View File
@@ -48,7 +48,7 @@ class CheckinList(LoggedModel):
@property @property
def positions(self): def positions(self):
from . import OrderPosition, Order from . import Order, OrderPosition
qs = OrderPosition.objects.filter( qs = OrderPosition.objects.filter(
order__event=self.event, order__event=self.event,
+5 -3
View File
@@ -415,7 +415,7 @@ class Event(EventMixin, LoggedModel):
return super().presale_has_ended return super().presale_has_ended
def delete_all_orders(self, really=False): def delete_all_orders(self, really=False):
from .orders import OrderRefund, OrderPayment, OrderPosition, OrderFee from .orders import OrderFee, OrderPayment, OrderPosition, OrderRefund
if not really: if not really:
raise TypeError("Pass really=True as a parameter.") raise TypeError("Pass really=True as a parameter.")
@@ -502,8 +502,10 @@ class Event(EventMixin, LoggedModel):
), tz) ), tz)
def copy_data_from(self, other): def copy_data_from(self, other):
from . import ItemAddOn, ItemCategory, Item, Question, Quota, ItemMetaValue
from ..signals import event_copy_data from ..signals import event_copy_data
from . import (
Item, ItemAddOn, ItemCategory, ItemMetaValue, Question, Quota,
)
self.plugins = other.plugins self.plugins = other.plugins
self.is_public = other.is_public self.is_public = other.is_public
@@ -1183,8 +1185,8 @@ class RequiredAction(models.Model):
created = not self.pk created = not self.pk
super().save(*args, **kwargs) super().save(*args, **kwargs)
if created: if created:
from .log import LogEntry
from ..services.notifications import notify from ..services.notifications import notify
from .log import LogEntry
logentry = LogEntry.objects.create( logentry = LogEntry.objects.create(
content_object=self, content_object=self,
+4 -1
View File
@@ -75,7 +75,10 @@ class LogEntry(models.Model):
@cached_property @cached_property
def display_object(self): def display_object(self):
from . import Order, Voucher, Quota, Item, ItemCategory, Question, Event, TaxRule, SubEvent from . import (
Event, Item, ItemCategory, Order, Question, Quota, SubEvent,
TaxRule, Voucher,
)
try: try:
if self.content_type.model_class() is Event: if self.content_type.model_class() is Event:
+10 -4
View File
@@ -209,7 +209,7 @@ class Order(LockModel, LoggedModel):
return self.full_code return self.full_code
def gracefully_delete(self, user=None, auth=None): def gracefully_delete(self, user=None, auth=None):
from . import Voucher, GiftCard, GiftCardTransaction from . import GiftCard, GiftCardTransaction, Voucher
if not self.testmode: if not self.testmode:
raise TypeError("Only test mode orders can be deleted.") raise TypeError("Only test mode orders can be deleted.")
@@ -838,7 +838,9 @@ class Order(LockModel, LoggedModel):
only be attached for this position and child positions, the link will only point to the only be attached for this position and child positions, the link will only point to the
position and the attendee email will be used if available. position and the attendee email will be used if available.
""" """
from pretix.base.services.mail import SendMailException, mail, render_mail, TolerantDict from pretix.base.services.mail import (
SendMailException, TolerantDict, mail, render_mail,
)
if not self.email: if not self.email:
return return
@@ -1421,7 +1423,9 @@ class OrderPayment(models.Model):
:type mail_text: str :type mail_text: str
:raises Quota.QuotaExceededException: if the quota is exceeded and ``force`` is ``False`` :raises Quota.QuotaExceededException: if the quota is exceeded and ``force`` is ``False``
""" """
from pretix.base.services.invoices import generate_invoice, invoice_qualified from pretix.base.services.invoices import (
generate_invoice, invoice_qualified,
)
with transaction.atomic(): with transaction.atomic():
locked_instance = OrderPayment.objects.select_for_update().get(pk=self.pk) locked_instance = OrderPayment.objects.select_for_update().get(pk=self.pk)
@@ -2066,7 +2070,9 @@ class OrderPosition(AbstractPosition):
:param sender: Custom email sender. :param sender: Custom email sender.
:param attach_tickets: Attach tickets of this order, if they are existing and ready to download :param attach_tickets: Attach tickets of this order, if they are existing and ready to download
""" """
from pretix.base.services.mail import SendMailException, mail, render_mail from pretix.base.services.mail import (
SendMailException, mail, render_mail,
)
if not self.attendee_email: if not self.attendee_email:
return return
+1 -1
View File
@@ -113,7 +113,7 @@ class Organizer(LoggedModel):
), tz) ), tz)
def allow_delete(self): def allow_delete(self):
from . import Order, Invoice from . import Invoice, Order
return ( return (
not Order.objects.filter(event__organizer=self).exists() and not Order.objects.filter(event__organizer=self).exists() and
not Invoice.objects.filter(event__organizer=self).exists() and not Invoice.objects.filter(event__organizer=self).exists() and
+1 -1
View File
@@ -163,7 +163,7 @@ class Seat(models.Model):
@classmethod @classmethod
def annotated(cls, qs, event_id, subevent, ignore_voucher_id=None, minimal_distance=0, def annotated(cls, qs, event_id, subevent, ignore_voucher_id=None, minimal_distance=0,
ignore_order_id=None, ignore_cart_id=None, distance_only_within_row=False): ignore_order_id=None, ignore_cart_id=None, distance_only_within_row=False):
from . import Order, OrderPosition, Voucher, CartPosition from . import CartPosition, Order, OrderPosition, Voucher
vqs = Voucher.objects.filter( vqs = Voucher.objects.filter(
event_id=event_id, event_id=event_id,
+1 -1
View File
@@ -544,7 +544,7 @@ class Renderer:
with open(os.path.join(d, 'out.pdf'), 'rb') as f: with open(os.path.join(d, 'out.pdf'), 'rb') as f:
return BytesIO(f.read()) return BytesIO(f.read())
else: else:
from PyPDF2 import PdfFileWriter, PdfFileReader from PyPDF2 import PdfFileReader, PdfFileWriter
buffer.seek(0) buffer.seek(0)
new_pdf = PdfFileReader(buffer) new_pdf = PdfFileReader(buffer)
output = PdfFileWriter() output = PdfFileWriter()
+1
View File
@@ -10,6 +10,7 @@ from django.forms.utils import from_current_timezone
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from ...base.forms import I18nModelForm from ...base.forms import I18nModelForm
# Import for backwards compatibility with okd import paths # Import for backwards compatibility with okd import paths
from ...base.forms.widgets import ( # noqa from ...base.forms.widgets import ( # noqa
DatePickerWidget, SplitDateTimePickerWidget, TimePickerWidget, DatePickerWidget, SplitDateTimePickerWidget, TimePickerWidget,
+2 -1
View File
@@ -1,3 +1,5 @@
from urllib.parse import urlencode, urlparse
from django import forms from django import forms
from django.conf import settings from django.conf import settings
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
@@ -15,7 +17,6 @@ from i18nfield.forms import (
I18nForm, I18nFormField, I18nFormSetMixin, I18nTextarea, I18nTextInput, I18nForm, I18nFormField, I18nFormSetMixin, I18nTextarea, I18nTextInput,
) )
from pytz import common_timezones, timezone from pytz import common_timezones, timezone
from urllib.parse import urlencode, urlparse
from pretix.base.channels import get_all_sales_channels from pretix.base.channels import get_all_sales_channels
from pretix.base.email import get_available_placeholders from pretix.base.email import get_available_placeholders
+3 -1
View File
@@ -91,7 +91,9 @@ def eventreverse(obj, name, kwargs=None):
needed. needed.
:returns: An absolute URL (including scheme and host) as a string :returns: An absolute URL (including scheme and host) as a string
""" """
from pretix.multidomain import event_domain_urlconf, organizer_domain_urlconf, maindomain_urlconf from pretix.multidomain import (
event_domain_urlconf, maindomain_urlconf, organizer_domain_urlconf,
)
c = None c = None
if not kwargs: if not kwargs:
+1 -1
View File
@@ -121,7 +121,7 @@ OPTIONS = OrderedDict([
def render_pdf(event, positions, opt): def render_pdf(event, positions, opt):
from PyPDF2 import PdfFileWriter, PdfFileReader from PyPDF2 import PdfFileReader, PdfFileWriter
Renderer._register_fonts() Renderer._register_fonts()
renderermap = { renderermap = {
@@ -5,7 +5,6 @@ import mt940
from pretix.base.decimal import round_decimal from pretix.base.decimal import round_decimal
""" """
The parse_transaction_details and join_reference functions are The parse_transaction_details and join_reference functions are
Copyright (c) 2017 Nicole Klünder Copyright (c) 2017 Nicole Klünder
+4 -4
View File
@@ -43,8 +43,8 @@ class ReportlabExportMixin:
@staticmethod @staticmethod
def register_fonts(): def register_fonts():
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
pdfmetrics.registerFont(TTFont('OpenSans', finders.find('fonts/OpenSans-Regular.ttf'))) pdfmetrics.registerFont(TTFont('OpenSans', finders.find('fonts/OpenSans-Regular.ttf')))
pdfmetrics.registerFont(TTFont('OpenSansIt', finders.find('fonts/OpenSans-Italic.ttf'))) pdfmetrics.registerFont(TTFont('OpenSansIt', finders.find('fonts/OpenSans-Italic.ttf')))
@@ -56,8 +56,8 @@ class ReportlabExportMixin:
return BaseDocTemplate return BaseDocTemplate
def create(self, form_data): def create(self, form_data):
from reportlab.platypus import PageTemplate
from reportlab.lib.units import mm from reportlab.lib.units import mm
from reportlab.platypus import PageTemplate
with tempfile.NamedTemporaryFile(suffix=".pdf") as f: with tempfile.NamedTemporaryFile(suffix=".pdf") as f:
Report.register_fonts() Report.register_fonts()
@@ -162,8 +162,8 @@ class OverviewReport(Report):
return pagesizes.landscape(pagesizes.A4) return pagesizes.landscape(pagesizes.A4)
def get_story(self, doc, form_data): def get_story(self, doc, form_data):
from reportlab.platypus import Paragraph, Spacer, TableStyle, Table
from reportlab.lib.units import mm from reportlab.lib.units import mm
from reportlab.platypus import Paragraph, Spacer, Table, TableStyle
if form_data.get('date_from'): if form_data.get('date_from'):
form_data['date_from'] = parse(form_data['date_from']) form_data['date_from'] = parse(form_data['date_from'])
@@ -334,8 +334,8 @@ class OrderTaxListReportPDF(Report):
return pagesizes.landscape(pagesizes.A4) return pagesizes.landscape(pagesizes.A4)
def get_story(self, doc, form_data): def get_story(self, doc, form_data):
from reportlab.platypus import Paragraph, Spacer, TableStyle, Table
from reportlab.lib.units import mm from reportlab.lib.units import mm
from reportlab.platypus import Paragraph, Spacer, Table, TableStyle
headlinestyle = self.get_style() headlinestyle = self.get_style()
headlinestyle.fontSize = 15 headlinestyle.fontSize = 15
+3 -2
View File
@@ -21,8 +21,9 @@ from pretix.presale.signals import html_head
@receiver(register_payment_providers, dispatch_uid="payment_stripe") @receiver(register_payment_providers, dispatch_uid="payment_stripe")
def register_payment_provider(sender, **kwargs): def register_payment_provider(sender, **kwargs):
from .payment import ( from .payment import (
StripeSettingsHolder, StripeCC, StripeGiropay, StripeIdeal, StripeAlipay, StripeBancontact, StripeAlipay, StripeBancontact, StripeCC, StripeEPS, StripeGiropay,
StripeSofort, StripeEPS, StripeMultibanco, StripePrzelewy24, StripeWeChatPay StripeIdeal, StripeMultibanco, StripePrzelewy24, StripeSettingsHolder,
StripeSofort, StripeWeChatPay,
) )
return [ return [
@@ -116,8 +116,8 @@ class PdfTicketOutput(BaseTicketOutput):
return 'order%s%s.pdf' % (self.event.slug, order.code), 'application/pdf', outbuffer.read() return 'order%s%s.pdf' % (self.event.slug, order.code), 'application/pdf', outbuffer.read()
def _create_canvas(self, buffer): def _create_canvas(self, buffer):
from reportlab.pdfgen import canvas
from reportlab.lib import pagesizes from reportlab.lib import pagesizes
from reportlab.pdfgen import canvas
# Doesn't matter as we'll overpaint it over a background later # Doesn't matter as we'll overpaint it over a background later
pagesize = pagesizes.A4 pagesize = pagesizes.A4
+3 -1
View File
@@ -8,9 +8,11 @@ max-complexity = 11
combine_as_imports = true combine_as_imports = true
include_trailing_comma = true include_trailing_comma = true
known_first_party = pretix known_first_party = pretix
known_third_party = versions known_third_party = versions,tests
extra_standard_library = typing,enum,mimetypes extra_standard_library = typing,enum,mimetypes
multi_line_output = 5 multi_line_output = 5
line_length = 79
honor_noqa = true
skip = make_testdata.py,wsgi.py,bootstrap,celery_app.py,pretix/settings.py,tests/settings.py,pretix/testutils/settings.py skip = make_testdata.py,wsgi.py,bootstrap,celery_app.py,pretix/settings.py,tests/settings.py,pretix/testutils/settings.py
[tool:pytest] [tool:pytest]
+4 -1
View File
@@ -15,7 +15,10 @@ def register_ticket_outputs(sender, **kwargs):
@receiver(register_payment_providers, dispatch_uid="payment_dummy") @receiver(register_payment_providers, dispatch_uid="payment_dummy")
def register_payment_provider(sender, **kwargs): def register_payment_provider(sender, **kwargs):
from .payment import DummyPaymentProvider, DummyFullRefundablePaymentProvider, DummyPartialRefundablePaymentProvider from .payment import (
DummyFullRefundablePaymentProvider,
DummyPartialRefundablePaymentProvider, DummyPaymentProvider,
)
return [DummyPaymentProvider, DummyFullRefundablePaymentProvider, DummyPartialRefundablePaymentProvider] return [DummyPaymentProvider, DummyFullRefundablePaymentProvider, DummyPartialRefundablePaymentProvider]