mirror of
https://github.com/pretix/pretix.git
synced 2026-08-24 13:02:00 +00:00
Re-add secrets to OrderPositions
This commit is contained in:
@@ -131,6 +131,7 @@ class JSONExporter(BaseExporter):
|
|||||||
'variation': position.variation_id,
|
'variation': position.variation_id,
|
||||||
'price': position.price,
|
'price': position.price,
|
||||||
'attendee_name': position.attendee_name,
|
'attendee_name': position.attendee_name,
|
||||||
|
'secret': position.secret,
|
||||||
'answers': [
|
'answers': [
|
||||||
{
|
{
|
||||||
'question': answer.question_id,
|
'question': answer.question_id,
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Generated by Django 1.9.2 on 2016-03-03 17:13
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
import pretix.base.models.orders
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('pretixbase', '0009_auto_20160222_2002'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='orderposition',
|
||||||
|
name='secret',
|
||||||
|
field=models.CharField(default=pretix.base.models.orders.generate_position_secret, max_length=64),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -7,7 +7,7 @@ from .items import (
|
|||||||
from .log import LogEntry
|
from .log import LogEntry
|
||||||
from .orders import (
|
from .orders import (
|
||||||
AbstractPosition, CachedTicket, CartPosition, InvoiceAddress, Order,
|
AbstractPosition, CachedTicket, CartPosition, InvoiceAddress, Order,
|
||||||
OrderPosition, QuestionAnswer, generate_secret,
|
OrderPosition, QuestionAnswer, generate_position_secret, generate_secret,
|
||||||
)
|
)
|
||||||
from .organizer import Organizer, OrganizerPermission, OrganizerSetting
|
from .organizer import Organizer, OrganizerPermission, OrganizerSetting
|
||||||
from .vouchers import Voucher
|
from .vouchers import Voucher
|
||||||
@@ -17,5 +17,5 @@ __all__ = [
|
|||||||
'ItemCategory', 'Item', 'Property', 'PropertyValue', 'ItemVariation', 'VariationsField', 'Question',
|
'ItemCategory', 'Item', 'Property', 'PropertyValue', 'ItemVariation', 'VariationsField', 'Question',
|
||||||
'BaseRestriction', 'Quota', 'Order', 'CachedTicket', 'QuestionAnswer', 'AbstractPosition', 'OrderPosition',
|
'BaseRestriction', 'Quota', 'Order', 'CachedTicket', 'QuestionAnswer', 'AbstractPosition', 'OrderPosition',
|
||||||
'CartPosition', 'EventSetting', 'OrganizerSetting', 'EventLock', 'cachedfile_name', 'itempicture_upload_to',
|
'CartPosition', 'EventSetting', 'OrganizerSetting', 'EventLock', 'cachedfile_name', 'itempicture_upload_to',
|
||||||
'generate_secret', 'Voucher', 'LogEntry', 'InvoiceAddress'
|
'generate_secret', 'Voucher', 'LogEntry', 'InvoiceAddress', 'generate_position_secret'
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -19,6 +19,11 @@ def generate_secret():
|
|||||||
return ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(16))
|
return ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(16))
|
||||||
|
|
||||||
|
|
||||||
|
def generate_position_secret():
|
||||||
|
# Exclude o,0,1,i,l to avoid confusion with bad fonts/printers
|
||||||
|
return ''.join(random.choice('abcdefghjkmnpqrstuvwxyz23456789') for _ in range(32))
|
||||||
|
|
||||||
|
|
||||||
class Order(LoggedModel):
|
class Order(LoggedModel):
|
||||||
"""
|
"""
|
||||||
An order is created when a user clicks 'buy' on his cart. It holds
|
An order is created when a user clicks 'buy' on his cart. It holds
|
||||||
@@ -371,6 +376,7 @@ class OrderPosition(AbstractPosition):
|
|||||||
max_digits=10, decimal_places=2,
|
max_digits=10, decimal_places=2,
|
||||||
verbose_name=_('Tax value')
|
verbose_name=_('Tax value')
|
||||||
)
|
)
|
||||||
|
secret = models.CharField(max_length=64, default=generate_position_secret)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = _("Order position")
|
verbose_name = _("Order position")
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ class PdfTicketOutput(BaseTicketOutput):
|
|||||||
qr_s = self.settings.get('qr_s', default=80, as_type=float)
|
qr_s = self.settings.get('qr_s', default=80, as_type=float)
|
||||||
if qr_s:
|
if qr_s:
|
||||||
reqs = qr_s * units.mm
|
reqs = qr_s * units.mm
|
||||||
qrw = QrCodeWidget(op.id, barLevel='H')
|
qrw = QrCodeWidget(op.secret, barLevel='H')
|
||||||
b = qrw.getBounds()
|
b = qrw.getBounds()
|
||||||
w = b[2] - b[0]
|
w = b[2] - b[0]
|
||||||
h = b[3] - b[1]
|
h = b[3] - b[1]
|
||||||
@@ -84,7 +84,7 @@ class PdfTicketOutput(BaseTicketOutput):
|
|||||||
p.setFont("Helvetica", code_s)
|
p.setFont("Helvetica", code_s)
|
||||||
code_x = self.settings.get('code_x', default=15, as_type=float)
|
code_x = self.settings.get('code_x', default=15, as_type=float)
|
||||||
code_y = self.settings.get('code_y', default=130, as_type=float)
|
code_y = self.settings.get('code_y', default=130, as_type=float)
|
||||||
p.drawString(code_x * units.mm, code_y * units.mm, op.id)
|
p.drawString(code_x * units.mm, code_y * units.mm, op.secret)
|
||||||
|
|
||||||
p.showPage()
|
p.showPage()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user