Skip to content

Commit

Permalink
update django to 3.2 (fossasia#52)
Browse files Browse the repository at this point in the history
* update requirements to django 3.2

* remove jsonfallback, pull in helper functions that are still used from
original jsonfallback code

* fix tests for django 3.2

* keep versions in sync with requirements

---------

Co-authored-by: Martin Bähr <martin@codingforafrica.at>
  • Loading branch information
Martin Bähr committed May 21, 2024
1 parent 06f99d9 commit f706409
Show file tree
Hide file tree
Showing 35 changed files with 134 additions and 88 deletions.
4 changes: 3 additions & 1 deletion doc/development/setup.rst
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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():
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
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
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

0 comments on commit f706409

Please sign in to comment.