Move dataclass to models.py

This commit is contained in:
Mira Weller
2026-07-07 09:33:56 +02:00
parent ef61e51a3a
commit 6ca1f04f85
2 changed files with 18 additions and 17 deletions
+17 -2
View File
@@ -19,7 +19,8 @@
# You should have received a copy of the GNU Affero General Public License along with this program. If not, see
# <https://www.gnu.org/licenses/>.
#
import datetime
from dataclasses import dataclass
# This file is based on an earlier version of pretix which was released under the Apache License 2.0. The full text of
# the Apache License 2.0 can be obtained at <http://www.apache.org/licenses/LICENSE-2.0>.
#
@@ -34,6 +35,7 @@
# License for the specific language governing permissions and limitations under the License.
from decimal import ROUND_HALF_UP, Decimal
from typing import Union
from django.conf import settings
from django.core.exceptions import ValidationError
@@ -441,7 +443,7 @@ class Voucher(LoggedModel):
return set()
@staticmethod
def clean_quota_get_ignored(voucher_data):
def clean_quota_get_ignored(voucher_data: Union["VoucherBulkData", "Voucher"]):
if voucher_data:
valid = voucher_data.valid_until is None or voucher_data.valid_until >= now()
if valid and voucher_data.block_quota and voucher_data.max_usages > voucher_data.redeemed:
@@ -636,3 +638,16 @@ class Voucher(LoggedModel):
]
).aggregate(s=Sum('voucher_budget_use'))['s'] or Decimal('0.00')
return ops
@dataclass
class VoucherBulkData:
item: object
variation: object
quota: object
block_quota: bool
valid_until: datetime.datetime
subevent: object
redeemed: int
max_usages: int
allow_ignore_quota: bool
+1 -15
View File
@@ -34,9 +34,7 @@
import copy
import csv
import datetime
from collections import Counter, namedtuple
from dataclasses import dataclass
from io import StringIO
from django import forms
@@ -57,6 +55,7 @@ from pretix.base.forms import (
from pretix.base.forms.widgets import format_placeholders_help_text
from pretix.base.i18n import language
from pretix.base.models import Item, ItemVariation, Quota, SubEvent, Voucher
from pretix.base.models.vouchers import VoucherBulkData
from pretix.base.services.locking import lock_objects
from pretix.base.services.quotas import QuotaAvailability
from pretix.control.forms import SplitDateTimeField, SplitDateTimePickerWidget
@@ -281,19 +280,6 @@ class VoucherForm(I18nModelForm):
return super().save(commit)
@dataclass
class VoucherBulkData:
item: object
variation: object
quota: object
block_quota: bool
valid_until: datetime.datetime
subevent: object
redeemed: int
max_usages: int
allow_ignore_quota: bool
class VoucherBulkEditForm(VoucherForm):
def __init__(self, *args, **kwargs):
self.mixed_values = kwargs.pop('mixed_values')