Customer accounts & Memberships (#2024)

This commit is contained in:
Raphael Michel
2021-05-04 16:56:06 +02:00
committed by GitHub
parent 62e412bbc0
commit 8e79eb570e
116 changed files with 7975 additions and 279 deletions

View File

@@ -0,0 +1,59 @@
# Generated by Django 3.0.13 on 2021-04-06 07:25
import django.db.models.deletion
import jsonfallback.fields
from django.db import migrations, models
import pretix.base.models.base
def set_can_manage_customers(apps, schema_editor):
Team = apps.get_model('pretixbase', 'Team')
Team.objects.filter(can_change_organizer_settings=True).update(can_manage_customers=True)
Team.objects.filter(can_change_orders=True, all_events=True).update(can_manage_customers=True)
class Migration(migrations.Migration):
dependencies = [
('pretixbase', '0183_auto_20210423_0829'),
]
operations = [
migrations.CreateModel(
name='Customer',
fields=[
('id', models.BigAutoField(primary_key=True, serialize=False)),
('identifier', models.CharField(db_index=True, max_length=190, unique=True)),
('email', models.EmailField(db_index=True, max_length=190, null=True)),
('password', models.CharField(max_length=128)),
('name_cached', models.CharField(max_length=255)),
('name_parts', jsonfallback.fields.FallbackJSONField(default=dict)),
('is_active', models.BooleanField(default=True)),
('is_verified', models.BooleanField(default=True)),
('last_login', models.DateTimeField(blank=True, null=True)),
('date_joined', models.DateTimeField(auto_now_add=True)),
('locale', models.CharField(default='en', max_length=50)),
('last_modified', models.DateTimeField(auto_now=True)),
('organizer', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='customers', to='pretixbase.Organizer')),
],
options={
'unique_together': {('organizer', 'email')},
},
bases=(models.Model, pretix.base.models.base.LoggingMixin),
),
migrations.AddField(
model_name='order',
name='customer',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='orders', to='pretixbase.Customer'),
),
migrations.AddField(
model_name='team',
name='can_manage_customers',
field=models.BooleanField(default=False),
),
migrations.RunPython(
set_can_manage_customers,
migrations.RunPython.noop,
),
]

View File

@@ -0,0 +1,95 @@
# Generated by Django 3.0.13 on 2021-04-08 09:59
import django.db.models.deletion
import i18nfield.fields
import jsonfallback.fields
from django.db import migrations, models
import pretix.base.models.base
class Migration(migrations.Migration):
dependencies = [
('pretixbase', '0184_customer'),
]
operations = [
migrations.AddField(
model_name='item',
name='grant_membership_duration_days',
field=models.IntegerField(default=0),
),
migrations.AddField(
model_name='item',
name='grant_membership_duration_like_event',
field=models.BooleanField(default=True),
),
migrations.AddField(
model_name='item',
name='grant_membership_duration_months',
field=models.IntegerField(default=0),
),
migrations.AddField(
model_name='item',
name='require_membership',
field=models.BooleanField(default=False),
),
migrations.AddField(
model_name='itemvariation',
name='require_membership',
field=models.BooleanField(default=False),
),
migrations.CreateModel(
name='MembershipType',
fields=[
('id', models.BigAutoField(primary_key=True, serialize=False)),
('name', i18nfield.fields.I18nCharField()),
('transferable', models.BooleanField(default=False)),
('allow_parallel_usage', models.BooleanField(default=False)),
('max_usages', models.PositiveIntegerField(null=True)),
('organizer', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='membership_types', to='pretixbase.Organizer')),
],
options={
'abstract': False,
},
bases=(models.Model, pretix.base.models.base.LoggingMixin),
),
migrations.CreateModel(
name='Membership',
fields=[
('id', models.BigAutoField(primary_key=True, serialize=False)),
('date_start', models.DateTimeField()),
('date_end', models.DateTimeField()),
('attendee_name_parts', jsonfallback.fields.FallbackJSONField(default=dict, null=True)),
('customer', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='memberships', to='pretixbase.Customer')),
('granted_in', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='granted_memberships', to='pretixbase.OrderPosition', null=True)),
('membership_type', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='memberships', to='pretixbase.MembershipType')),
],
),
migrations.AddField(
model_name='cartposition',
name='used_membership',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='pretixbase.Membership'),
),
migrations.AddField(
model_name='item',
name='grant_membership_type',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='granted_by', to='pretixbase.MembershipType'),
),
migrations.AddField(
model_name='item',
name='require_membership_types',
field=models.ManyToManyField(to='pretixbase.MembershipType'),
),
migrations.AddField(
model_name='itemvariation',
name='require_membership_types',
field=models.ManyToManyField(to='pretixbase.MembershipType'),
),
migrations.AddField(
model_name='orderposition',
name='used_membership',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='pretixbase.Membership'),
),
]