Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

update django to 3.2 #52

Merged
merged 4 commits into from Mar 18, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 3 additions & 1 deletion doc/development/setup.rst
Expand Up @@ -26,9 +26,11 @@ Your should install the following on your system:
* ``libssl`` (Debian package: ``libssl-dev``)
* ``libxml2`` (Debian package ``libxml2-dev``)
* ``libxslt`` (Debian package ``libxslt1-dev``)
* ``libenchant1c2a`` (Debian package ``libenchant1c2a``)
* ``libenchant1c2a`` (Debian package ``libenchant1c2a`` or ``libenchant2-2``)
* ``msgfmt`` (Debian package ``gettext``)
* ``freetype`` (Debian package ``libfreetype-dev``)
* ``git``
* for pillow: ``libjpeg`` (Debian Package ``libjpeg-dev``)

Your local python environment
-----------------------------
Expand Down
2 changes: 1 addition & 1 deletion src/pretix/api/middleware.py
Expand Up @@ -68,7 +68,7 @@ def __call__(self, request: HttpRequest):
call.response_body = json.dumps(resp.data)
else:
call.response_body = repr(resp).encode()
call.response_headers = json.dumps(resp._headers)
call.response_headers = json.dumps(resp.headers._store)
call.locked = None
call.save(update_fields=['locked', 'response_code', 'response_headers',
'response_body'])
Expand Down
9 changes: 5 additions & 4 deletions src/pretix/base/i18n.py
Expand Up @@ -73,10 +73,11 @@ def __str__(self):
def get_babel_locale():
babel_locale = 'en'
# Babel, and therefore django-phonenumberfield, do not support our custom locales such das de_Informal
if localedata.exists(translation.get_language()):
babel_locale = translation.get_language()
elif localedata.exists(translation.get_language()[:2]):
babel_locale = translation.get_language()[:2]
if translation.get_language():
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about using walrus operator to write less code:

if lang := translation.get_language():
    if localedata.exists(lang):
        babel_locale = lang
    elif localedata.exists(lang[:2]):
        babel_locale = lang[:2]

if localedata.exists(translation.get_language()):
babel_locale = translation.get_language()
elif localedata.exists(translation.get_language()[:2]):
babel_locale = translation.get_language()[:2]
return babel_locale


Expand Down
9 changes: 4 additions & 5 deletions src/pretix/base/migrations/0102_auto_20181017_0024.py
@@ -1,8 +1,7 @@
# Generated by Django 2.1 on 2018-10-17 00:24

import jsonfallback.fields
from django.core.exceptions import ImproperlyConfigured
from django.db import migrations
from django.db import migrations, models
from django_mysql.checks import mysql_connections
from django_mysql.utils import connection_is_mariadb

Expand Down Expand Up @@ -77,19 +76,19 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='cartposition',
name='attendee_name_parts',
field=jsonfallback.fields.FallbackJSONField(null=False, default=dict),
field=models.JSONField(null=False, default=dict),
preserve_default=False,
),
migrations.AddField(
model_name='orderposition',
name='attendee_name_parts',
field=jsonfallback.fields.FallbackJSONField(null=False, default=dict),
field=models.JSONField(null=False, default=dict),
preserve_default=False,
),
migrations.AddField(
model_name='invoiceaddress',
name='name_parts',
field=jsonfallback.fields.FallbackJSONField(default=dict),
field=models.JSONField(default=dict),
preserve_default=False,
),
migrations.RunPython(set_attendee_name_parts, migrations.RunPython.noop)
Expand Down
1 change: 0 additions & 1 deletion src/pretix/base/migrations/0103_auto_20181121_1224.py
@@ -1,7 +1,6 @@
# Generated by Django 2.1.1 on 2018-11-21 12:24

import django.db.models.deletion
import jsonfallback.fields
from django.db import migrations, models

import pretix.base.models.fields
Expand Down
1 change: 0 additions & 1 deletion src/pretix/base/migrations/0104_auto_20181114_1526.py
Expand Up @@ -2,7 +2,6 @@

import django.db.models.deletion
import django.db.models.manager
import jsonfallback.fields
from django.db import migrations, models


Expand Down
1 change: 0 additions & 1 deletion src/pretix/base/migrations/0105_auto_20190112_1512.py
@@ -1,7 +1,6 @@
# Generated by Django 2.1 on 2019-01-12 15:12

import django.db.models.deletion
import jsonfallback.fields
from django.db import migrations, models

import pretix.base.models.fields
Expand Down
1 change: 0 additions & 1 deletion src/pretix/base/migrations/0107_auto_20190129_1337.py
@@ -1,7 +1,6 @@
# Generated by Django 2.1.5 on 2019-01-29 13:37

import django.db.models.deletion
import jsonfallback.fields
from django.db import migrations, models

import pretix.base.models.fields
Expand Down
1 change: 0 additions & 1 deletion src/pretix/base/migrations/0108_auto_20190201_1527.py
@@ -1,7 +1,6 @@
# Generated by Django 2.1.5 on 2019-02-01 15:27

import django.db.models.deletion
import jsonfallback.fields
from django.db import migrations, models

import pretix.base.models.fields
Expand Down
Expand Up @@ -3,7 +3,6 @@
from decimal import Decimal

import django.db.models.deletion
import jsonfallback.fields
from django.conf import settings
from django.core.cache import cache
from django.db import migrations, models
Expand Down Expand Up @@ -190,7 +189,7 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='cartposition',
name='attendee_name_parts',
field=jsonfallback.fields.FallbackJSONField(default=dict),
field=models.JSONField(default=dict),
),
migrations.AlterField(
model_name='cartposition',
Expand All @@ -210,7 +209,7 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='invoiceaddress',
name='name_parts',
field=jsonfallback.fields.FallbackJSONField(default=dict),
field=models.JSONField(default=dict),
),
migrations.AlterField(
model_name='item',
Expand All @@ -225,7 +224,7 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='orderposition',
name='attendee_name_parts',
field=jsonfallback.fields.FallbackJSONField(default=dict),
field=models.JSONField(default=dict),
),
migrations.AlterField(
model_name='orderposition',
Expand Down
1 change: 0 additions & 1 deletion src/pretix/base/migrations/0109_auto_20190208_1432.py
@@ -1,7 +1,6 @@
# Generated by Django 2.1 on 2019-02-08 14:32

import django.db.models.deletion
import jsonfallback.fields
from django.db import migrations, models

import pretix.base.models.fields
Expand Down
1 change: 0 additions & 1 deletion src/pretix/base/migrations/0110_auto_20190219_1245.py
@@ -1,7 +1,6 @@
# Generated by Django 2.1.5 on 2019-02-19 12:45

import django.db.models.deletion
import jsonfallback.fields
from django.db import migrations, models

import pretix.base.models.fields
Expand Down
1 change: 0 additions & 1 deletion src/pretix/base/migrations/0111_auto_20190219_0949.py
@@ -1,7 +1,6 @@
# Generated by Django 2.1.5 on 2019-02-19 09:49

import django.db.models.deletion
import jsonfallback.fields
from django.db import migrations, models

import pretix.base.models.fields
Expand Down
1 change: 0 additions & 1 deletion src/pretix/base/migrations/0113_auto_20190312_0942.py
@@ -1,7 +1,6 @@
# Generated by Django 2.1.5 on 2019-03-12 09:42

import django.db.models.deletion
import jsonfallback.fields
from django.db import migrations, models

import pretix.base.models.fields
Expand Down
1 change: 0 additions & 1 deletion src/pretix/base/migrations/0114_auto_20190316_1014.py
@@ -1,7 +1,6 @@
# Generated by Django 2.1.7 on 2019-03-16 10:14

import django.db.models.deletion
import jsonfallback.fields
from django.db import migrations, models

import pretix.base.models.fields
Expand Down
1 change: 0 additions & 1 deletion src/pretix/base/migrations/0115_auto_20190323_2238.py
Expand Up @@ -3,7 +3,6 @@
from decimal import Decimal

import django.db.models.deletion
import jsonfallback.fields
from django.db import migrations, models

import pretix.base.models.fields
Expand Down
1 change: 0 additions & 1 deletion src/pretix/base/migrations/0116_auto_20190402_0722.py
@@ -1,7 +1,6 @@
# Generated by Django 2.1.5 on 2019-04-02 07:22

import django.db.models.deletion
import jsonfallback.fields
from django.db import migrations, models

import pretix.base.models.fields
Expand Down
1 change: 0 additions & 1 deletion src/pretix/base/migrations/0118_auto_20190423_0839.py
@@ -1,7 +1,6 @@
# Generated by Django 2.2 on 2019-04-23 08:39

import django.db.models.deletion
import jsonfallback.fields
from django.db import migrations, models

import pretix.base.models.fields
Expand Down
1 change: 0 additions & 1 deletion src/pretix/base/migrations/0119_auto_20190509_0654.py
@@ -1,7 +1,6 @@
# Generated by Django 2.2 on 2019-05-09 06:54

import django.db.models.deletion
import jsonfallback.fields
from django.db import migrations, models

import pretix.base.models.fields
Expand Down
7 changes: 3 additions & 4 deletions src/pretix/base/migrations/0120_auto_20190509_0736.py
@@ -1,7 +1,6 @@
# Generated by Django 2.2 on 2019-05-09 07:36

import django.db.models.deletion
import jsonfallback.fields
from django.db import migrations, models

import pretix.base.models.fields
Expand All @@ -17,7 +16,7 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='cartposition',
name='attendee_name_parts',
field=jsonfallback.fields.FallbackJSONField(default=dict),
field=models.JSONField(default=dict),
),
migrations.AlterField(
model_name='cartposition',
Expand All @@ -37,7 +36,7 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='invoiceaddress',
name='name_parts',
field=jsonfallback.fields.FallbackJSONField(default=dict),
field=models.JSONField(default=dict),
),
migrations.AlterField(
model_name='item',
Expand All @@ -52,7 +51,7 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='orderposition',
name='attendee_name_parts',
field=jsonfallback.fields.FallbackJSONField(default=dict),
field=models.JSONField(default=dict),
),
migrations.AlterField(
model_name='orderposition',
Expand Down
3 changes: 1 addition & 2 deletions src/pretix/base/migrations/0152_auto_20200511_1504.py
Expand Up @@ -2,7 +2,6 @@

import django.db.models.deletion
import django_countries.fields
import jsonfallback.fields
from django.db import migrations, models

import pretix.helpers.countries
Expand Down Expand Up @@ -43,7 +42,7 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='checkinlist',
name='rules',
field=jsonfallback.fields.FallbackJSONField(default=dict),
field=models.JSONField(default=dict),
),
migrations.AlterUniqueTogether(
name='checkin',
Expand Down
3 changes: 1 addition & 2 deletions src/pretix/base/migrations/0177_auto_20210301_1510.py
@@ -1,6 +1,5 @@
# Generated by Django 3.0.10 on 2021-03-01 15:10

import jsonfallback.fields
import phonenumber_field.modelfields
from django.db import migrations, models

Expand All @@ -20,7 +19,7 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='waitinglistentry',
name='name_parts',
field=jsonfallback.fields.FallbackJSONField(default=dict),
field=models.JSONField(default=dict),
),
migrations.AddField(
model_name='waitinglistentry',
Expand Down
5 changes: 2 additions & 3 deletions src/pretix/base/models/checkin.py
@@ -1,11 +1,10 @@
from django.conf import settings
from django.core.exceptions import ValidationError
from django.db import models
from django.db.models import Exists, F, Max, OuterRef, Q, Subquery
from django.db.models import Exists, F, Max, OuterRef, Q, Subquery, JSONField
from django.utils.timezone import now
from django.utils.translation import gettext_lazy as _, pgettext_lazy
from django_scopes import ScopedManager, scopes_disabled
from jsonfallback.fields import FallbackJSONField

from pretix.base.models import LoggedModel
from pretix.base.models.fields import MultiStringField
Expand Down Expand Up @@ -48,7 +47,7 @@ class CheckinList(LoggedModel):
'any of the selected sales channels. This option can be useful when tickets sold at the box office '
'are not checked again before entry and should be considered validated directly upon purchase.')
)
rules = FallbackJSONField(default=dict, blank=True)
rules = JSONField(default=dict, blank=True)

objects = ScopedManager(organizer='event__organizer')

Expand Down
27 changes: 13 additions & 14 deletions src/pretix/base/models/orders.py
Expand Up @@ -14,7 +14,7 @@
from django.conf import settings
from django.db import models, transaction
from django.db.models import (
Case, Exists, F, Max, OuterRef, Q, Subquery, Sum, Value, When,
Case, Exists, F, Max, OuterRef, Q, Subquery, Sum, Value, When, JSONField,
)
from django.db.models.functions import Coalesce, Greatest
from django.db.models.signals import post_delete
Expand All @@ -29,7 +29,6 @@
from django_countries.fields import Country
from django_scopes import ScopedManager, scopes_disabled
from i18nfield.strings import LazyI18nString
from jsonfallback.fields import FallbackJSONField
from phonenumber_field.modelfields import PhoneNumberField
from phonenumber_field.phonenumber import PhoneNumber
from phonenumbers import NumberParseException
Expand Down Expand Up @@ -333,12 +332,12 @@ def annotate_overpayments(cls, qs, results=True, refunds=True, sums=False):
refund_sum=refund_sum_sq,
)
qs = qs.annotate(
computed_payment_refund_sum=Coalesce(payment_sum_sq, 0) - Coalesce(refund_sum_sq, 0),
computed_payment_refund_sum=Coalesce(payment_sum_sq, Decimal('0.00')) - Coalesce(refund_sum_sq, Decimal('0.00')),
)

qs = qs.annotate(
pending_sum_t=F('total') - Coalesce(payment_sum_sq, 0) + Coalesce(refund_sum_sq, 0),
pending_sum_rc=-1 * Coalesce(payment_sum_sq, 0) + Coalesce(refund_sum_sq, 0),
pending_sum_t=F('total') - Coalesce(payment_sum_sq, Decimal('0.00')) + Coalesce(refund_sum_sq, Decimal('0.00')),
pending_sum_rc=-1 * Coalesce(payment_sum_sq, Decimal('0.00')) + Coalesce(refund_sum_sq, Decimal('0.00')),
)
if refunds:
qs = qs.annotate(
Expand All @@ -349,23 +348,23 @@ def annotate_overpayments(cls, qs, results=True, refunds=True, sums=False):
qs = qs.annotate(
is_overpaid=Case(
When(~Q(status=Order.STATUS_CANCELED) & Q(pending_sum_t__lt=-1e-8),
then=Value('1')),
then=Value(1)),
When(Q(status=Order.STATUS_CANCELED) & Q(pending_sum_rc__lt=-1e-8),
then=Value('1')),
default=Value('0'),
then=Value(1)),
default=Value(0),
output_field=models.IntegerField()
),
is_pending_with_full_payment=Case(
When(Q(status__in=(Order.STATUS_EXPIRED, Order.STATUS_PENDING)) & Q(pending_sum_t__lte=1e-8)
& Q(require_approval=False),
then=Value('1')),
default=Value('0'),
then=Value(1)),
default=Value(0),
output_field=models.IntegerField()
),
is_underpaid=Case(
When(Q(status=Order.STATUS_PAID) & Q(pending_sum_t__gt=1e-8),
then=Value('1')),
default=Value('0'),
then=Value(1)),
default=Value(0),
output_field=models.IntegerField()
)
)
Expand Down Expand Up @@ -1135,7 +1134,7 @@ class AbstractPosition(models.Model):
blank=True, null=True,
help_text=_("Empty, if this product is not an admission ticket")
)
attendee_name_parts = FallbackJSONField(
attendee_name_parts = JSONField(
blank=True, default=dict
)
attendee_email = models.EmailField(
Expand Down Expand Up @@ -2255,7 +2254,7 @@ class InvoiceAddress(models.Model):
is_business = models.BooleanField(default=False, verbose_name=_('Business customer'))
company = models.CharField(max_length=255, blank=True, verbose_name=_('Company name'))
name_cached = models.CharField(max_length=255, verbose_name=_('Full name'), blank=True)
name_parts = FallbackJSONField(default=dict)
name_parts = JSONField(default=dict)
street = models.TextField(verbose_name=_('Address'), blank=False)
zipcode = models.CharField(max_length=30, verbose_name=_('ZIP code'), blank=False)
city = models.CharField(max_length=255, verbose_name=_('City'), blank=False)
Expand Down