forked from CGM_Public/pretix_original
Customer accounts & Memberships (#2024)
This commit is contained in:
59
src/pretix/base/migrations/0184_customer.py
Normal file
59
src/pretix/base/migrations/0184_customer.py
Normal 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,
|
||||
),
|
||||
]
|
||||
95
src/pretix/base/migrations/0185_memberships.py
Normal file
95
src/pretix/base/migrations/0185_memberships.py
Normal 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'),
|
||||
),
|
||||
]
|
||||
Reference in New Issue
Block a user