Appli QrCode
This commit is contained in:
parent
b242129b49
commit
3ad6135f60
|
|
@ -4,7 +4,7 @@ from django.contrib.auth.models import Group
|
||||||
from solo.admin import SingletonModelAdmin
|
from solo.admin import SingletonModelAdmin
|
||||||
|
|
||||||
from AuthBillet.models import HumanUser, SuperHumanUser, TermUser
|
from AuthBillet.models import HumanUser, SuperHumanUser, TermUser
|
||||||
from BaseBillet.models import Configuration, Event, OptionGenerale, Article, Billet, Reservation, LigneArticle, TarifsAdhesion
|
from BaseBillet.models import Configuration, Event, OptionGenerale, Article, Billet, Reservation, LigneArticle
|
||||||
from django.contrib.auth.admin import UserAdmin
|
from django.contrib.auth.admin import UserAdmin
|
||||||
|
|
||||||
from Customers.models import Client
|
from Customers.models import Client
|
||||||
|
|
@ -150,15 +150,6 @@ class ConfigurationAdmin(SingletonModelAdmin):
|
||||||
|
|
||||||
staff_admin_site.register(Configuration, ConfigurationAdmin)
|
staff_admin_site.register(Configuration, ConfigurationAdmin)
|
||||||
|
|
||||||
class TarifsAdhesionAdmin(admin.ModelAdmin):
|
|
||||||
list_display = (
|
|
||||||
'name',
|
|
||||||
'tarif'
|
|
||||||
)
|
|
||||||
list_editable = ('tarif',)
|
|
||||||
ordering = ('tarif',)
|
|
||||||
|
|
||||||
staff_admin_site.register(TarifsAdhesion, TarifsAdhesionAdmin)
|
|
||||||
|
|
||||||
|
|
||||||
class EventAdmin(admin.ModelAdmin):
|
class EventAdmin(admin.ModelAdmin):
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,20 @@ class Command(BaseCommand):
|
||||||
|
|
||||||
def handle(self, *args, **options):
|
def handle(self, *args, **options):
|
||||||
|
|
||||||
|
# create your public tenant
|
||||||
|
tenant = Client(schema_name='public',
|
||||||
|
name='Schemas Inc.',
|
||||||
|
paid_until='2016-12-05',
|
||||||
|
on_trial=False)
|
||||||
|
tenant.save()
|
||||||
|
|
||||||
|
# Add one or more domains for the tenant
|
||||||
|
domain = Domain()
|
||||||
|
domain.domain = f'{os.getenv("DOMAIN")}' # don't add your port or www here! on a local server you'll want to use localhost here
|
||||||
|
domain.tenant = tenant
|
||||||
|
domain.is_primary = True
|
||||||
|
domain.save()
|
||||||
|
|
||||||
tenant_demo = Client.objects.get_or_create(schema_name="demo",
|
tenant_demo = Client.objects.get_or_create(schema_name="demo",
|
||||||
name="demo",
|
name="demo",
|
||||||
paid_until='2200-12-05',
|
paid_until='2200-12-05',
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
# Generated by Django 2.2 on 2021-09-27 12:56
|
# Generated by Django 2.2 on 2021-09-27 13:39
|
||||||
|
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
import django.db.models.deletion
|
import django.db.models.deletion
|
||||||
|
|
@ -12,7 +12,7 @@ class Migration(migrations.Migration):
|
||||||
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
('auth', '0011_update_proxy_permissions'),
|
('auth', '0011_update_proxy_permissions'),
|
||||||
('Customers', '0003_auto_20210623_1351'),
|
('Customers', '0001_initial'),
|
||||||
]
|
]
|
||||||
|
|
||||||
operations = [
|
operations = [
|
||||||
|
|
@ -28,7 +28,7 @@ class Migration(migrations.Migration):
|
||||||
('is_staff', models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status')),
|
('is_staff', models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status')),
|
||||||
('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')),
|
('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')),
|
||||||
('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')),
|
('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')),
|
||||||
('uuid_user', models.UUIDField(default=uuid.uuid4, editable=False)),
|
('uuid', models.UUIDField(default=uuid.uuid4, editable=False)),
|
||||||
('email', models.EmailField(max_length=254, unique=True, verbose_name='email')),
|
('email', models.EmailField(max_length=254, unique=True, verbose_name='email')),
|
||||||
('username', models.CharField(blank=True, max_length=200, null=True)),
|
('username', models.CharField(blank=True, max_length=200, null=True)),
|
||||||
('phone', models.CharField(blank=True, max_length=20, null=True)),
|
('phone', models.CharField(blank=True, max_length=20, null=True)),
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@ class TibilletUser(AbstractUser):
|
||||||
#TODO regarder du coté du dashboard de jet, ça plante avec uuid !
|
#TODO regarder du coté du dashboard de jet, ça plante avec uuid !
|
||||||
# uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False, unique=True, db_index=True)
|
# uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False, unique=True, db_index=True)
|
||||||
|
|
||||||
uuid_user = models.UUIDField(default=uuid.uuid4, editable=False)
|
uuid = models.UUIDField(default=uuid.uuid4, editable=False)
|
||||||
|
|
||||||
USERNAME_FIELD = 'email'
|
USERNAME_FIELD = 'email'
|
||||||
REQUIRED_FIELDS = [] # removes email from REQUIRED_FIELDS
|
REQUIRED_FIELDS = [] # removes email from REQUIRED_FIELDS
|
||||||
|
|
@ -157,6 +157,7 @@ class TermUser(TibilletUser):
|
||||||
# Si création :
|
# Si création :
|
||||||
if not self.pk:
|
if not self.pk:
|
||||||
self.espece = TibilletUser.TYPE_TERM
|
self.espece = TibilletUser.TYPE_TERM
|
||||||
|
self.email = self.email.lower()
|
||||||
|
|
||||||
super().save(*args, **kwargs)
|
super().save(*args, **kwargs)
|
||||||
|
|
||||||
|
|
@ -187,6 +188,7 @@ class HumanUser(TibilletUser):
|
||||||
|
|
||||||
self.is_staff = False
|
self.is_staff = False
|
||||||
self.is_superuser = False
|
self.is_superuser = False
|
||||||
|
self.email = self.email.lower()
|
||||||
|
|
||||||
super().save(*args, **kwargs)
|
super().save(*args, **kwargs)
|
||||||
|
|
||||||
|
|
@ -218,6 +220,7 @@ class SuperHumanUser(TibilletUser):
|
||||||
|
|
||||||
self.is_staff = True
|
self.is_staff = True
|
||||||
self.is_superuser = False
|
self.is_superuser = False
|
||||||
|
self.email = self.email.lower()
|
||||||
|
|
||||||
super().save(*args, **kwargs)
|
super().save(*args, **kwargs)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,11 @@
|
||||||
# Generated by Django 2.2 on 2021-06-23 09:09
|
# Generated by Django 2.2 on 2021-09-27 13:39
|
||||||
|
|
||||||
|
from django.conf import settings
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
import django.db.models.deletion
|
import django.db.models.deletion
|
||||||
import stdimage.models
|
import stdimage.models
|
||||||
import stdimage.validators
|
import stdimage.validators
|
||||||
|
import uuid
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
class Migration(migrations.Migration):
|
||||||
|
|
@ -11,9 +13,35 @@ class Migration(migrations.Migration):
|
||||||
initial = True
|
initial = True
|
||||||
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
('PaiementStripe', '0001_initial'),
|
||||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||||
]
|
]
|
||||||
|
|
||||||
operations = [
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Article',
|
||||||
|
fields=[
|
||||||
|
('uuid', models.UUIDField(db_index=True, default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True)),
|
||||||
|
('name', models.CharField(blank=True, max_length=50, null=True)),
|
||||||
|
('prix', models.FloatField()),
|
||||||
|
('stock', models.SmallIntegerField(blank=True, null=True)),
|
||||||
|
('reservation_par_user_max', models.PositiveSmallIntegerField(default=10)),
|
||||||
|
('publish', models.BooleanField(default=False)),
|
||||||
|
('img', stdimage.models.StdImageField(blank=True, null=True, upload_to='images/', validators=[stdimage.validators.MaxSizeValidator(1920, 1920)], verbose_name='Image')),
|
||||||
|
('categorie_article', models.CharField(choices=[('B', 'Billet'), ('P', "Pack d'objets"), ('R', 'Recharge cashless'), ('T', 'Vetement'), ('M', 'Merchandasing'), ('A', 'Adhésion')], default='B', max_length=3, verbose_name="Type d'article")),
|
||||||
|
('id_product_stripe', models.CharField(blank=True, max_length=30, null=True)),
|
||||||
|
('id_price_stripe', models.CharField(blank=True, max_length=30, null=True)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Billet',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('name', models.CharField(blank=True, max_length=50, null=True)),
|
||||||
|
('prix', models.FloatField()),
|
||||||
|
('reservation_par_user_max', models.PositiveSmallIntegerField(default=6)),
|
||||||
|
],
|
||||||
|
),
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name='Event',
|
name='Event',
|
||||||
fields=[
|
fields=[
|
||||||
|
|
@ -24,6 +52,8 @@ class Migration(migrations.Migration):
|
||||||
('datetime', models.DateTimeField()),
|
('datetime', models.DateTimeField()),
|
||||||
('img', stdimage.models.StdImageField(blank=True, null=True, upload_to='images/', validators=[stdimage.validators.MaxSizeValidator(1920, 1920)])),
|
('img', stdimage.models.StdImageField(blank=True, null=True, upload_to='images/', validators=[stdimage.validators.MaxSizeValidator(1920, 1920)])),
|
||||||
('reservations', models.PositiveSmallIntegerField(default=0)),
|
('reservations', models.PositiveSmallIntegerField(default=0)),
|
||||||
|
('articles', models.ManyToManyField(to='BaseBillet.Article')),
|
||||||
|
('billets', models.ManyToManyField(to='BaseBillet.Billet')),
|
||||||
],
|
],
|
||||||
options={
|
options={
|
||||||
'verbose_name': 'Evenement',
|
'verbose_name': 'Evenement',
|
||||||
|
|
@ -45,12 +75,48 @@ class Migration(migrations.Migration):
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name='reservation',
|
name='TarifsAdhesion',
|
||||||
fields=[
|
fields=[
|
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
('status', models.CharField(choices=[('NAN', 'Annulée'), ('NOV', 'Email non validé'), ('VAL', 'Validée'), ('PAY', 'Payée')], default='NOV', max_length=3, verbose_name='Status de la réservation')),
|
('name', models.CharField(max_length=30)),
|
||||||
('qty', models.IntegerField()),
|
('tarif', models.FloatField()),
|
||||||
('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='reservation', to='BaseBillet.Event')),
|
],
|
||||||
|
options={
|
||||||
|
'ordering': ('-tarif',),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='VAT',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('percent', models.FloatField(verbose_name='Taux de TVA (%)')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': 'TVA',
|
||||||
|
'verbose_name_plural': 'TVA',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Reservation',
|
||||||
|
fields=[
|
||||||
|
('uuid', models.UUIDField(db_index=True, default=uuid.uuid4, primary_key=True, serialize=False)),
|
||||||
|
('status', models.CharField(choices=[('NAN', 'Annulée'), ('MNV', 'Email non validé'), ('NPA', 'Non payée'), ('VAL', 'Validée'), ('PAY', 'Payée')], default='NPA', max_length=3, verbose_name='Status de la réservation')),
|
||||||
|
('event', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='reservation', to='BaseBillet.Event')),
|
||||||
|
('options', models.ManyToManyField(to='BaseBillet.OptionGenerale')),
|
||||||
|
('user_commande', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='LigneArticle',
|
||||||
|
fields=[
|
||||||
|
('uuid', models.UUIDField(db_index=True, default=uuid.uuid4, primary_key=True, serialize=False)),
|
||||||
|
('qty', models.SmallIntegerField()),
|
||||||
|
('reste', models.SmallIntegerField()),
|
||||||
|
('datetime', models.DateTimeField(auto_now=True)),
|
||||||
|
('article', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Article')),
|
||||||
|
('billet', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Billet')),
|
||||||
|
('paiement_stripe', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='PaiementStripe.Paiement_stripe')),
|
||||||
|
('reservation', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation')),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
|
|
@ -62,13 +128,22 @@ class Migration(migrations.Migration):
|
||||||
('adresse', models.CharField(max_length=250)),
|
('adresse', models.CharField(max_length=250)),
|
||||||
('phone', models.CharField(max_length=20)),
|
('phone', models.CharField(max_length=20)),
|
||||||
('email', models.EmailField(max_length=254)),
|
('email', models.EmailField(max_length=254)),
|
||||||
|
('site_web', models.URLField(blank=True, null=True)),
|
||||||
('twitter', models.URLField(blank=True, null=True)),
|
('twitter', models.URLField(blank=True, null=True)),
|
||||||
('facebook', models.URLField(blank=True, null=True)),
|
('facebook', models.URLField(blank=True, null=True)),
|
||||||
('instagram', models.URLField(blank=True, null=True)),
|
('instagram', models.URLField(blank=True, null=True)),
|
||||||
('img', stdimage.models.StdImageField(blank=True, null=True, upload_to='images/')),
|
('adhesion_obligatoire', models.BooleanField(default=False)),
|
||||||
|
('cadeau_adhesion', models.FloatField(default=0, help_text="Recharge cadeau a l'adhésion")),
|
||||||
|
('carte_restaurant', stdimage.models.StdImageField(blank=True, null=True, upload_to='images/', validators=[stdimage.validators.MaxSizeValidator(1920, 1920)], verbose_name='Carte du restaurant')),
|
||||||
|
('img', stdimage.models.StdImageField(blank=True, null=True, upload_to='images/', verbose_name='Background')),
|
||||||
('mollie_api_key', models.CharField(blank=True, max_length=50, null=True)),
|
('mollie_api_key', models.CharField(blank=True, max_length=50, null=True)),
|
||||||
('reservation_par_user_max', models.PositiveSmallIntegerField(default=6)),
|
('stripe_api_key', models.CharField(blank=True, max_length=110, null=True)),
|
||||||
|
('stripe_test_api_key', models.CharField(blank=True, max_length=110, null=True)),
|
||||||
|
('stripe_mode_test', models.BooleanField(default=True)),
|
||||||
|
('activer_billetterie', models.BooleanField(default=True)),
|
||||||
('jauge_max', models.PositiveSmallIntegerField(default=50)),
|
('jauge_max', models.PositiveSmallIntegerField(default=50)),
|
||||||
|
('server_cashless', models.URLField(blank=True, max_length=300, null=True, verbose_name='Adresse du serveur Cashless')),
|
||||||
|
('key_cashless', models.CharField(blank=True, max_length=41, null=True, verbose_name="Clé d'API du serveur cashless")),
|
||||||
('option_generale_checkbox', models.ManyToManyField(blank=True, related_name='checkbox', to='BaseBillet.OptionGenerale')),
|
('option_generale_checkbox', models.ManyToManyField(blank=True, related_name='checkbox', to='BaseBillet.OptionGenerale')),
|
||||||
('option_generale_radio', models.ManyToManyField(blank=True, related_name='radiobutton', to='BaseBillet.OptionGenerale')),
|
('option_generale_radio', models.ManyToManyField(blank=True, related_name='radiobutton', to='BaseBillet.OptionGenerale')),
|
||||||
],
|
],
|
||||||
|
|
@ -76,4 +151,9 @@ class Migration(migrations.Migration):
|
||||||
'abstract': False,
|
'abstract': False,
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='article',
|
||||||
|
name='vat',
|
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='BaseBillet.VAT', verbose_name='TVA'),
|
||||||
|
),
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -1,73 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-06-29 12:25
|
|
||||||
|
|
||||||
from django.conf import settings
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
import stdimage.models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
|
||||||
('BaseBillet', '0001_initial'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.CreateModel(
|
|
||||||
name='Article',
|
|
||||||
fields=[
|
|
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
||||||
('name', models.CharField(blank=True, max_length=50, null=True)),
|
|
||||||
('prix', models.FloatField()),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
|
||||||
name='Billet',
|
|
||||||
fields=[
|
|
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
||||||
('name', models.CharField(blank=True, max_length=50, null=True)),
|
|
||||||
('prix', models.FloatField()),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name='reservation',
|
|
||||||
name='id',
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name='reservation',
|
|
||||||
name='qty',
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='reservation',
|
|
||||||
name='user_commande',
|
|
||||||
field=models.ForeignKey(default=False, on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL),
|
|
||||||
preserve_default=False,
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='reservation',
|
|
||||||
name='uuid',
|
|
||||||
field=models.UUIDField(db_index=True, default=False, primary_key=True, serialize=False, unique=True),
|
|
||||||
preserve_default=False,
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='configuration',
|
|
||||||
name='img',
|
|
||||||
field=stdimage.models.StdImageField(blank=True, null=True, upload_to='images/', verbose_name='Background'),
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
|
||||||
name='LigneArticle',
|
|
||||||
fields=[
|
|
||||||
('uuid', models.UUIDField(db_index=True, primary_key=True, serialize=False, unique=True)),
|
|
||||||
('qty', models.SmallIntegerField()),
|
|
||||||
('reste', models.SmallIntegerField()),
|
|
||||||
('articles', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='BaseBillet.Article')),
|
|
||||||
('reservation', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='BaseBillet.Reservation')),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='event',
|
|
||||||
name='articles',
|
|
||||||
field=models.ManyToManyField(to='BaseBillet.Article', verbose_name='Articles et billets'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
# Generated by Django 2.2 on 2021-09-25 10:15
|
# Generated by Django 2.2 on 2021-09-27 13:59
|
||||||
|
|
||||||
from django.db import migrations
|
from django.db import migrations
|
||||||
|
|
||||||
|
|
@ -6,12 +6,12 @@ from django.db import migrations
|
||||||
class Migration(migrations.Migration):
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
('QrcodeCashless', '0005_detail_base_url'),
|
('BaseBillet', '0001_initial'),
|
||||||
]
|
]
|
||||||
|
|
||||||
operations = [
|
operations = [
|
||||||
migrations.RemoveField(
|
migrations.RemoveField(
|
||||||
model_name='cartecashless',
|
model_name='lignearticle',
|
||||||
name='origine',
|
name='reste',
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-06-29 12:27
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0002_auto_20210629_1625'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
# Generated by Django 2.2 on 2021-09-24 12:11
|
# Generated by Django 2.2 on 2021-09-27 14:24
|
||||||
|
|
||||||
from django.db import migrations
|
from django.db import migrations
|
||||||
|
|
||||||
|
|
@ -6,11 +6,11 @@ from django.db import migrations
|
||||||
class Migration(migrations.Migration):
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
('PaiementStripe', '0005_auto_20210924_1611'),
|
('BaseBillet', '0002_remove_lignearticle_reste'),
|
||||||
]
|
]
|
||||||
|
|
||||||
operations = [
|
operations = [
|
||||||
migrations.DeleteModel(
|
migrations.DeleteModel(
|
||||||
name='Configuration_stripe',
|
name='TarifsAdhesion',
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-06-29 12:27
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0003_auto_20210629_1627'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-06-29 12:29
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0004_auto_20210629_1627'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='uuid',
|
|
||||||
field=models.UUIDField(db_index=True, primary_key=True, serialize=False),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='reservation',
|
|
||||||
name='uuid',
|
|
||||||
field=models.UUIDField(db_index=True, primary_key=True, serialize=False),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-06-29 12:29
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0005_auto_20210629_1629'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-06-29 12:33
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0006_auto_20210629_1629'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='reservation',
|
|
||||||
name='options',
|
|
||||||
field=models.ManyToManyField(to='BaseBillet.OptionGenerale'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-06-29 12:54
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0007_auto_20210629_1633'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='event',
|
|
||||||
name='billets',
|
|
||||||
field=models.ManyToManyField(to='BaseBillet.Billet'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='event',
|
|
||||||
name='articles',
|
|
||||||
field=models.ManyToManyField(to='BaseBillet.Article'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-06-29 12:55
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0008_auto_20210629_1654'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='article',
|
|
||||||
name='stock',
|
|
||||||
field=models.SmallIntegerField(blank=True, null=True),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-06-29 12:58
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0009_auto_20210629_1655'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='billet',
|
|
||||||
name='reservation_par_user_max',
|
|
||||||
field=models.PositiveSmallIntegerField(default=6),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-06-29 13:13
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0010_auto_20210629_1658'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name='configuration',
|
|
||||||
name='reservation_par_user_max',
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='article',
|
|
||||||
name='reservation_par_user_max',
|
|
||||||
field=models.PositiveSmallIntegerField(default=10),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-06-29 13:29
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0011_auto_20210629_1713'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,30 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-06-29 13:33
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
import uuid
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0012_auto_20210629_1729'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='uuid',
|
|
||||||
field=models.UUIDField(db_index=True, default=uuid.uuid4, primary_key=True, serialize=False),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='reservation',
|
|
||||||
name='uuid',
|
|
||||||
field=models.UUIDField(db_index=True, default=uuid.uuid4, primary_key=True, serialize=False),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-06-29 13:35
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0013_auto_20210629_1733'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='articles',
|
|
||||||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='BaseBillet.Article', verbose_name='lignes_article'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-06-29 13:38
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0014_auto_20210629_1735'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='articles',
|
|
||||||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='BaseBillet.Article'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-06-29 13:39
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0015_auto_20210629_1738'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='BaseBillet.Reservation', verbose_name='lignes_article'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-06-29 14:09
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0016_auto_20210629_1739'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.RenameField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
old_name='articles',
|
|
||||||
new_name='article',
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='BaseBillet.Reservation', verbose_name='lignes_article'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='reservation',
|
|
||||||
name='status',
|
|
||||||
field=models.CharField(choices=[('NAN', 'Annulée'), ('MNV', 'Email non validé'), ('NPA', 'Non payée'), ('VAL', 'Validée'), ('PAY', 'Payée')], default='NPA', max_length=3, verbose_name='Status de la réservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-06-29 14:11
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0017_auto_20210629_1809'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='billet',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='BaseBillet.Billet'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='article',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='BaseBillet.Article'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='BaseBillet.Reservation', verbose_name='lignes_article'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-06-29 14:11
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0018_auto_20210629_1811'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='BaseBillet.Reservation', verbose_name='lignes_article'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-06-29 14:20
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0019_auto_20210629_1811'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='article',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Article'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='billet',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Billet'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation', verbose_name='lignes_article'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-06-29 15:48
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0020_auto_20210629_1820'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation', verbose_name='lignes_article'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-06-29 15:52
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0021_auto_20210629_1948'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation', verbose_name='lignes_article'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='reservation',
|
|
||||||
name='event',
|
|
||||||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='reservation', to='BaseBillet.Event'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,25 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-23 09:38
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('PaiementStripe', '0002_auto_20210923_1338'),
|
|
||||||
('BaseBillet', '0022_auto_20210629_1952'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='paiement_stripe',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='PaiementStripe.Paiement_stripe'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-23 09:39
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0023_auto_20210923_1338'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-23 10:03
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0024_auto_20210923_1339'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='configuration',
|
|
||||||
name='key_cashless',
|
|
||||||
field=models.CharField(blank=True, max_length=41, null=True, verbose_name="Clé d'API du serveur cashless"),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='configuration',
|
|
||||||
name='server_cashless',
|
|
||||||
field=models.URLField(blank=True, max_length=300, null=True, verbose_name='Adresse du serveur Cashless'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-23 13:06
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0025_auto_20210923_1403'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.CreateModel(
|
|
||||||
name='VAT',
|
|
||||||
fields=[
|
|
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
||||||
('percent', models.FloatField(verbose_name='Taux de TVA (%)')),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
'verbose_name': 'TVA',
|
|
||||||
'verbose_name_plural': 'TVA',
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='article',
|
|
||||||
name='vat',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='BaseBillet.VAT', verbose_name='TVA'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-23 13:28
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0026_auto_20210923_1706'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='article',
|
|
||||||
name='publish',
|
|
||||||
field=models.BooleanField(default=False),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-24 11:16
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0027_auto_20210923_1728'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='datetime',
|
|
||||||
field=models.DateTimeField(auto_now=True),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-24 11:47
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0028_auto_20210924_1516'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-24 11:53
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0029_auto_20210924_1547'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-24 12:11
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0030_auto_20210924_1553'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-24 12:11
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0031_auto_20210924_1611'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-24 12:14
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0032_auto_20210924_1611'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='configuration',
|
|
||||||
name='stripe_api_key',
|
|
||||||
field=models.CharField(blank=True, max_length=110, null=True),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='configuration',
|
|
||||||
name='stripe_test_api_key',
|
|
||||||
field=models.CharField(blank=True, max_length=110, null=True),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-24 12:21
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0033_auto_20210924_1614'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-24 12:28
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0034_auto_20210924_1621'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='configuration',
|
|
||||||
name='stripe_mode_test',
|
|
||||||
field=models.BooleanField(default=True),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-25 06:27
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0035_auto_20210924_1628'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-25 07:59
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0036_auto_20210925_1027'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-25 08:08
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0037_auto_20210925_1159'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-25 08:24
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0038_auto_20210925_1208'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-25 09:10
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0039_auto_20210925_1224'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-25 10:15
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0040_auto_20210925_1310'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-25 10:17
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0041_auto_20210925_1415'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-25 10:44
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0042_auto_20210925_1417'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-25 11:07
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0043_auto_20210925_1444'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-25 13:55
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0044_auto_20210925_1507'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-26 07:19
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0045_auto_20210925_1755'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,31 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-26 09:59
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
import stdimage.models
|
|
||||||
import stdimage.validators
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0046_auto_20210926_1119'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='configuration',
|
|
||||||
name='carte_restaurant',
|
|
||||||
field=stdimage.models.StdImageField(blank=True, null=True, upload_to='images/', validators=[stdimage.validators.MaxSizeValidator(1920, 1920)], verbose_name='Background'),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='configuration',
|
|
||||||
name='site_web',
|
|
||||||
field=models.URLField(blank=True, null=True),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,31 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-26 11:31
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
import stdimage.models
|
|
||||||
import stdimage.validators
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0047_auto_20210926_1359'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='configuration',
|
|
||||||
name='activer_billetterie',
|
|
||||||
field=models.BooleanField(default=True),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='configuration',
|
|
||||||
name='carte_restaurant',
|
|
||||||
field=stdimage.models.StdImageField(blank=True, null=True, upload_to='images/', validators=[stdimage.validators.MaxSizeValidator(1920, 1920)], verbose_name='Carte du restaurant'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,32 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-27 06:47
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0048_auto_20210926_1531'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.CreateModel(
|
|
||||||
name='TarifsAdhesion',
|
|
||||||
fields=[
|
|
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
||||||
('name', models.CharField(max_length=30)),
|
|
||||||
('tarif', models.FloatField()),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='configuration',
|
|
||||||
name='adhesion_obligatoire',
|
|
||||||
field=models.BooleanField(default=False),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-27 07:32
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0049_auto_20210927_1047'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterModelOptions(
|
|
||||||
name='tarifsadhesion',
|
|
||||||
options={'ordering': ('-tarif',)},
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='configuration',
|
|
||||||
name='cadeau_adhesion',
|
|
||||||
field=models.FloatField(default=0),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-27 09:34
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0050_auto_20210927_1132'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='article',
|
|
||||||
name='categorie_article',
|
|
||||||
field=models.CharField(choices=[('B', 'Billet'), ('P', "Pack d'objets"), ('R', 'Recharge cashless'), ('T', 'Vetement'), ('M', 'Merchandasing')], default='B', max_length=3, verbose_name='Status de la réservation'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='configuration',
|
|
||||||
name='cadeau_adhesion',
|
|
||||||
field=models.FloatField(default=0, help_text="Recharge cadeau a l'adhésion"),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-27 09:35
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0051_auto_20210927_1334'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='article',
|
|
||||||
name='id_stripe',
|
|
||||||
field=models.CharField(blank=True, max_length=30, null=True),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,26 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-27 09:48
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
import stdimage.models
|
|
||||||
import stdimage.validators
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0052_auto_20210927_1335'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='article',
|
|
||||||
name='img',
|
|
||||||
field=stdimage.models.StdImageField(blank=True, null=True, upload_to='images/', validators=[stdimage.validators.MaxSizeValidator(1920, 1920)], verbose_name='Image'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-27 09:50
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
import uuid
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0053_auto_20210927_1348'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name='article',
|
|
||||||
name='id',
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='article',
|
|
||||||
name='uuid',
|
|
||||||
field=models.UUIDField(db_index=True, default=uuid.uuid4, primary_key=True, serialize=False),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-27 10:07
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0054_auto_20210927_1350'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.RenameField(
|
|
||||||
model_name='article',
|
|
||||||
old_name='id_stripe',
|
|
||||||
new_name='id_price_stripe',
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='article',
|
|
||||||
name='categorie_article',
|
|
||||||
field=models.CharField(choices=[('B', 'Billet'), ('P', "Pack d'objets"), ('R', 'Recharge cashless'), ('T', 'Vetement'), ('M', 'Merchandasing'), ('A', 'Adhésion')], default='B', max_length=3, verbose_name="Type d'article"),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-27 10:07
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0055_auto_20210927_1407'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='article',
|
|
||||||
name='id_product_stripe',
|
|
||||||
field=models.CharField(blank=True, max_length=30, null=True),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-27 11:43
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0056_auto_20210927_1407'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-27 12:34
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0057_auto_20210927_1543'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-27 12:34
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0058_auto_20210927_1634'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,25 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-27 13:18
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
import uuid
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0059_auto_20210927_1634'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='article',
|
|
||||||
name='uuid',
|
|
||||||
field=models.UUIDField(db_index=True, default=uuid.uuid4, editable=False, primary_key=True, serialize=False),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-27 13:18
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('BaseBillet', '0060_auto_20210927_1718'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lignearticle',
|
|
||||||
name='reservation',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='BaseBillet.Reservation'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -40,16 +40,6 @@ def poids_option_generale(sender, instance: OptionGenerale, created, **kwargs):
|
||||||
instance.save()
|
instance.save()
|
||||||
|
|
||||||
|
|
||||||
class TarifsAdhesion(models.Model):
|
|
||||||
name = models.CharField(max_length=30)
|
|
||||||
tarif = models.FloatField()
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
ordering = ('-tarif',)
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"{self.name} {self.tarif}"
|
|
||||||
|
|
||||||
|
|
||||||
class Configuration(SingletonModel):
|
class Configuration(SingletonModel):
|
||||||
organisation = models.CharField(max_length=50)
|
organisation = models.CharField(max_length=50)
|
||||||
|
|
@ -157,7 +147,7 @@ class VAT(models.Model):
|
||||||
|
|
||||||
|
|
||||||
class Article(models.Model):
|
class Article(models.Model):
|
||||||
uuid = models.UUIDField(primary_key=True, db_index=True, default=uuid.uuid4, editable=False)
|
uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False, unique=True, db_index=True)
|
||||||
|
|
||||||
name = models.CharField(max_length=50,
|
name = models.CharField(max_length=50,
|
||||||
blank=True, null=True)
|
blank=True, null=True)
|
||||||
|
|
@ -362,12 +352,5 @@ class LigneArticle(models.Model):
|
||||||
article = models.ForeignKey(Article, on_delete=models.CASCADE, blank=True, null=True)
|
article = models.ForeignKey(Article, on_delete=models.CASCADE, blank=True, null=True)
|
||||||
billet = models.ForeignKey(Billet, on_delete=models.CASCADE, blank=True, null=True)
|
billet = models.ForeignKey(Billet, on_delete=models.CASCADE, blank=True, null=True)
|
||||||
qty = models.SmallIntegerField()
|
qty = models.SmallIntegerField()
|
||||||
reste = models.SmallIntegerField()
|
|
||||||
paiement_stripe = models.ForeignKey(Paiement_stripe, on_delete=models.PROTECT, blank=True, null=True)
|
paiement_stripe = models.ForeignKey(Paiement_stripe, on_delete=models.PROTECT, blank=True, null=True)
|
||||||
datetime = models.DateTimeField(auto_now=True)
|
datetime = models.DateTimeField(auto_now=True)
|
||||||
# def __str__(self):
|
|
||||||
# if self.reservation :
|
|
||||||
# if self.article :
|
|
||||||
# return f"{self.reservation.user_commande.email} {self.qty} {self.article}"
|
|
||||||
# if self.billet :
|
|
||||||
# return f"{self.reservation.user_commande.email} {self.qty} {self.billet}"
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
# Generated by Django 2.2 on 2021-06-23 09:09
|
# Generated by Django 2.2 on 2021-09-27 13:39
|
||||||
|
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
import django.db.models.deletion
|
import django.db.models.deletion
|
||||||
|
import django.utils.timezone
|
||||||
import django_tenants.postgresql_backend.base
|
import django_tenants.postgresql_backend.base
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -18,9 +19,9 @@ class Migration(migrations.Migration):
|
||||||
fields=[
|
fields=[
|
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
('schema_name', models.CharField(db_index=True, max_length=63, unique=True, validators=[django_tenants.postgresql_backend.base._check_schema_name])),
|
('schema_name', models.CharField(db_index=True, max_length=63, unique=True, validators=[django_tenants.postgresql_backend.base._check_schema_name])),
|
||||||
('name', models.CharField(max_length=100)),
|
('name', models.CharField(db_index=True, max_length=100, unique=True)),
|
||||||
('paid_until', models.DateField()),
|
('paid_until', models.DateField(default=django.utils.timezone.now)),
|
||||||
('on_trial', models.BooleanField()),
|
('on_trial', models.BooleanField(default=True)),
|
||||||
('created_on', models.DateField(auto_now_add=True)),
|
('created_on', models.DateField(auto_now_add=True)),
|
||||||
],
|
],
|
||||||
options={
|
options={
|
||||||
|
|
|
||||||
|
|
@ -1,46 +0,0 @@
|
||||||
# Generated by Django 2.2.13 on 2021-06-08 10:08
|
|
||||||
import os
|
|
||||||
from django.db import migrations
|
|
||||||
|
|
||||||
|
|
||||||
def create_premier_tenant(apps, schema_editor):
|
|
||||||
# We can't import the Person model directly as it may be a newer
|
|
||||||
# version than this migration expects. We use the historical version.
|
|
||||||
Client = apps.get_model('Customers', 'Client')
|
|
||||||
Domain = apps.get_model('Customers', 'Domain')
|
|
||||||
DNS = os.getenv('DOMAIN')
|
|
||||||
|
|
||||||
tenant_public = Client.objects.get_or_create(schema_name='public',
|
|
||||||
name='Tibillet Public',
|
|
||||||
paid_until='2200-12-05',
|
|
||||||
on_trial=False)[0]
|
|
||||||
|
|
||||||
# Add one or more domains for the tenant
|
|
||||||
domaine_seul = Domain.objects.get_or_create(domain=DNS,
|
|
||||||
tenant=tenant_public,
|
|
||||||
is_primary=True,
|
|
||||||
)
|
|
||||||
|
|
||||||
domaine_www = Domain.objects.get_or_create(domain=f'www.{DNS}',
|
|
||||||
tenant=tenant_public,
|
|
||||||
is_primary=False,
|
|
||||||
)
|
|
||||||
|
|
||||||
return tenant_public, domaine_seul[0], domaine_www[0]
|
|
||||||
|
|
||||||
|
|
||||||
def reverse(apps, schema_editor):
|
|
||||||
tenant_public, domaine_seul, domaine_www = create_premier_tenant(apps, schema_editor)
|
|
||||||
tenant_public.delete()
|
|
||||||
domaine_seul.delete()
|
|
||||||
domaine_www.delete()
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
dependencies = [
|
|
||||||
('Customers', '0001_initial'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.RunPython(create_premier_tenant, reverse),
|
|
||||||
]
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-06-23 09:51
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.utils.timezone
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('Customers', '0002_create_tenant_public'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='client',
|
|
||||||
name='name',
|
|
||||||
field=models.CharField(db_index=True, max_length=100, unique=True),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='client',
|
|
||||||
name='on_trial',
|
|
||||||
field=models.BooleanField(default=True),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='client',
|
|
||||||
name='paid_until',
|
|
||||||
field=models.DateField(default=django.utils.timezone.now),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,6 +1,9 @@
|
||||||
# Generated by Django 2.2 on 2021-09-23 08:55
|
# Generated by Django 2.2 on 2021-09-27 13:39
|
||||||
|
|
||||||
|
from django.conf import settings
|
||||||
|
import django.contrib.postgres.fields.jsonb
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -9,6 +12,7 @@ class Migration(migrations.Migration):
|
||||||
initial = True
|
initial = True
|
||||||
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||||
]
|
]
|
||||||
|
|
||||||
operations = [
|
operations = [
|
||||||
|
|
@ -16,10 +20,13 @@ class Migration(migrations.Migration):
|
||||||
name='Paiement_stripe',
|
name='Paiement_stripe',
|
||||||
fields=[
|
fields=[
|
||||||
('uuid', models.UUIDField(db_index=True, default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True)),
|
('uuid', models.UUIDField(db_index=True, default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True)),
|
||||||
('id_stripe', models.CharField(blank=True, max_length=20, null=True)),
|
('detail', models.CharField(blank=True, max_length=50, null=True)),
|
||||||
|
('id_stripe', models.CharField(blank=True, max_length=80, null=True)),
|
||||||
|
('metadata_stripe', django.contrib.postgres.fields.jsonb.JSONField(blank=True, null=True)),
|
||||||
('order_date', models.DateTimeField(auto_now=True, verbose_name='Date')),
|
('order_date', models.DateTimeField(auto_now=True, verbose_name='Date')),
|
||||||
('status', models.CharField(choices=[('O', 'Envoyée a Stripe'), ('W', 'En attente de paiement'), ('P', 'Payée'), ('V', 'Payée et validée'), ('C', 'Annulée')], default='O', max_length=1, verbose_name='Statut de la commande')),
|
('status', models.CharField(choices=[('N', 'Lien de paiement non crée'), ('O', 'Envoyée a Stripe'), ('W', 'En attente de paiement'), ('E', 'Expiré'), ('P', 'Payée'), ('V', 'Payée et validée'), ('C', 'Annulée')], default='N', max_length=1, verbose_name='Statut de la commande')),
|
||||||
('email_billet', models.CharField(blank=True, max_length=30, verbose_name='Email de récéption des billets')),
|
('total', models.FloatField(default=0)),
|
||||||
|
('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL)),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -1,18 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-23 09:38
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('PaiementStripe', '0001_initial'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='paiement_stripe',
|
|
||||||
name='status',
|
|
||||||
field=models.CharField(choices=[('N', 'Lien de paiement non crée'), ('O', 'Envoyée a Stripe'), ('W', 'En attente de paiement'), ('P', 'Payée'), ('V', 'Payée et validée'), ('C', 'Annulée')], default='N', max_length=1, verbose_name='Statut de la commande'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,26 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-24 11:47
|
|
||||||
|
|
||||||
from django.conf import settings
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
|
||||||
('PaiementStripe', '0002_auto_20210923_1338'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='paiement_stripe',
|
|
||||||
name='detail',
|
|
||||||
field=models.CharField(blank=True, max_length=50, null=True),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='paiement_stripe',
|
|
||||||
name='user',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,18 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-24 11:53
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('PaiementStripe', '0003_auto_20210924_1547'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='paiement_stripe',
|
|
||||||
name='total',
|
|
||||||
field=models.FloatField(default=0),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,25 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-24 12:11
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('PaiementStripe', '0004_paiement_stripe_total'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.CreateModel(
|
|
||||||
name='Configuration_stripe',
|
|
||||||
fields=[
|
|
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
||||||
('test_api_key', models.CharField(blank=True, max_length=110, null=True)),
|
|
||||||
('api_key', models.CharField(blank=True, max_length=110, null=True)),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name='paiement_stripe',
|
|
||||||
name='email_billet',
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-25 06:27
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('PaiementStripe', '0006_delete_configuration_stripe'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='paiement_stripe',
|
|
||||||
name='id_stripe',
|
|
||||||
field=models.CharField(blank=True, max_length=80, null=True),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='paiement_stripe',
|
|
||||||
name='status',
|
|
||||||
field=models.CharField(choices=[('N', 'Lien de paiement non crée'), ('O', 'Envoyée a Stripe'), ('W', 'En attente de paiement'), ('E', 'Expiré'), ('P', 'Payée'), ('V', 'Payée et validée'), ('C', 'Annulée')], default='N', max_length=1, verbose_name='Statut de la commande'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-26 07:19
|
|
||||||
|
|
||||||
import django.contrib.postgres.fields.jsonb
|
|
||||||
from django.db import migrations
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('PaiementStripe', '0007_auto_20210925_1027'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='paiement_stripe',
|
|
||||||
name='metadata_stripe',
|
|
||||||
field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, null=True),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -3,8 +3,9 @@ from django.contrib.postgres.fields import JSONField
|
||||||
import uuid
|
import uuid
|
||||||
# Create your models here.
|
# Create your models here.
|
||||||
from TiBillet import settings
|
from TiBillet import settings
|
||||||
|
from django.db.models.signals import post_save, pre_save
|
||||||
# class Configuration_stripe(models.Model):
|
from django.dispatch import receiver
|
||||||
|
# from QrcodeCashless.views import postPaimentRecharge
|
||||||
|
|
||||||
|
|
||||||
class Paiement_stripe(models.Model):
|
class Paiement_stripe(models.Model):
|
||||||
|
|
@ -38,5 +39,13 @@ class Paiement_stripe(models.Model):
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"{self.detail} - {self.status}"
|
return f"{self.detail} - {self.status}"
|
||||||
|
|
||||||
|
''' RECEIVER PRESAVE DANS LE VIEW QRCODECASHELESS
|
||||||
|
@receiver(pre_save, sender=Paiement_stripe)
|
||||||
|
def changement_paid_to_valid(sender, instance: Paiement_stripe, update_fields=None, **kwargs):
|
||||||
|
try:
|
||||||
|
old_instance = Paiement_stripe.objects.get(pk=instance.pk)
|
||||||
|
if old_instance.status != Paiement_stripe.PAID :
|
||||||
|
print(f"on passe de {old_instance.status} à {instance.status}")
|
||||||
|
if instance.status == Paiement_stripe.PAID:
|
||||||
|
on lance la recharge vers le serveur cashless
|
||||||
|
'''
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import json
|
import json
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
|
from django.contrib import messages
|
||||||
from django.contrib.auth import get_user_model
|
from django.contrib.auth import get_user_model
|
||||||
from django.db import connection
|
from django.db import connection
|
||||||
from django.http import HttpResponse, Http404, HttpResponseRedirect
|
from django.http import HttpResponse, Http404, HttpResponseRedirect
|
||||||
|
|
@ -31,13 +32,14 @@ class creation_checkout_stripe():
|
||||||
) -> None:
|
) -> None:
|
||||||
|
|
||||||
self.absolute_domain = absolute_domain
|
self.absolute_domain = absolute_domain
|
||||||
self.configuration = Configuration.get_solo()
|
self.liste_ligne_article = liste_ligne_article
|
||||||
self.email_paiement = email_paiement
|
self.email_paiement = email_paiement
|
||||||
|
self.metadata = metadata
|
||||||
|
|
||||||
|
self.configuration = Configuration.get_solo()
|
||||||
self.user = self._user_paiement()
|
self.user = self._user_paiement()
|
||||||
self.detail = self._detail()
|
self.detail = self._detail()
|
||||||
self.total = self._total()
|
self.total = self._total()
|
||||||
self.liste_ligne_article = liste_ligne_article
|
|
||||||
self.metadata = metadata
|
|
||||||
self.metadata_json = json.dumps(self.metadata)
|
self.metadata_json = json.dumps(self.metadata)
|
||||||
self.paiement_stripe_db = self._paiement_stripe_db()
|
self.paiement_stripe_db = self._paiement_stripe_db()
|
||||||
self.stripe_api_key = self._stripe_api_key()
|
self.stripe_api_key = self._stripe_api_key()
|
||||||
|
|
@ -64,7 +66,7 @@ class creation_checkout_stripe():
|
||||||
total = 0
|
total = 0
|
||||||
for ligne in self.liste_ligne_article:
|
for ligne in self.liste_ligne_article:
|
||||||
ligne: LigneArticle
|
ligne: LigneArticle
|
||||||
total += ligne.qty * ligne.article.prix
|
total += float(ligne.qty) * float(ligne.article.prix)
|
||||||
return total
|
return total
|
||||||
|
|
||||||
def _detail(self):
|
def _detail(self):
|
||||||
|
|
@ -100,20 +102,23 @@ class creation_checkout_stripe():
|
||||||
line_items.append(
|
line_items.append(
|
||||||
{
|
{
|
||||||
"price": f"{ligne.article.get_id_price_stripe()}",
|
"price": f"{ligne.article.get_id_price_stripe()}",
|
||||||
"quantity": ligne.qty,
|
"quantity": int(ligne.qty),
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
return line_items
|
||||||
|
|
||||||
def _checkout_session(self):
|
def _checkout_session(self):
|
||||||
|
|
||||||
|
|
||||||
checkout_session = stripe.checkout.Session.create(
|
checkout_session = stripe.checkout.Session.create(
|
||||||
customer_email=f'{self.user.email}',
|
|
||||||
line_items=self.line_items,
|
|
||||||
payment_method_types=['card'],
|
|
||||||
mode='payment',
|
|
||||||
metadata=self.metadata,
|
|
||||||
success_url=f'{self.absolute_domain}/stripe/return/{self.paiement_stripe_db.uuid}',
|
success_url=f'{self.absolute_domain}/stripe/return/{self.paiement_stripe_db.uuid}',
|
||||||
cancel_url=f'{self.absolute_domain}/stripe/return/{self.paiement_stripe_db.uuid}',
|
cancel_url=f'{self.absolute_domain}/stripe/return/{self.paiement_stripe_db.uuid}',
|
||||||
client_reference_id=f"{self.user.uuid_user}",
|
payment_method_types=["card"],
|
||||||
|
customer_email=f'{self.user.email}',
|
||||||
|
line_items=self.line_items,
|
||||||
|
mode='payment',
|
||||||
|
metadata=self.metadata,
|
||||||
|
client_reference_id=f"{self.user.uuid}",
|
||||||
)
|
)
|
||||||
|
|
||||||
print(checkout_session.id)
|
print(checkout_session.id)
|
||||||
|
|
@ -146,6 +151,7 @@ class retour_stripe(View):
|
||||||
else:
|
else:
|
||||||
stripe.api_key = configuration.stripe_api_key
|
stripe.api_key = configuration.stripe_api_key
|
||||||
|
|
||||||
|
print(paiement_stripe.status)
|
||||||
if paiement_stripe.status != Paiement_stripe.VALID:
|
if paiement_stripe.status != Paiement_stripe.VALID:
|
||||||
|
|
||||||
checkout_session = stripe.checkout.Session.retrieve(paiement_stripe.id_stripe)
|
checkout_session = stripe.checkout.Session.retrieve(paiement_stripe.id_stripe)
|
||||||
|
|
@ -156,9 +162,6 @@ class retour_stripe(View):
|
||||||
paiement_stripe.save()
|
paiement_stripe.save()
|
||||||
|
|
||||||
elif checkout_session.payment_status == "paid":
|
elif checkout_session.payment_status == "paid":
|
||||||
paiement_stripe.status = Paiement_stripe.PAID
|
|
||||||
paiement_stripe.save()
|
|
||||||
|
|
||||||
# on vérifie si les infos sont cohérente avec la db : Never Trust Input :)
|
# on vérifie si les infos sont cohérente avec la db : Never Trust Input :)
|
||||||
metadata_stripe_json = checkout_session.metadata
|
metadata_stripe_json = checkout_session.metadata
|
||||||
metadata_stripe = json.loads(str(metadata_stripe_json))
|
metadata_stripe = json.loads(str(metadata_stripe_json))
|
||||||
|
|
@ -177,25 +180,26 @@ class retour_stripe(View):
|
||||||
f"metadata ne correspondent pas : {metadata_stripe} {metadata_db}")
|
f"metadata ne correspondent pas : {metadata_stripe} {metadata_db}")
|
||||||
raise Http404
|
raise Http404
|
||||||
|
|
||||||
# on check si il y a un rechargement de carte cashless dans la commande
|
paiement_stripe.status = Paiement_stripe.PAID
|
||||||
if metadata_db.get('recharge_carte_uuid'):
|
paiement_stripe.save()
|
||||||
logger.info(
|
# le .save() lance le process pre_save dans le view QrcodeCashless, qui peut modifier son status
|
||||||
f'{timezone.now()} retour stripe pour rechargement carte : {metadata_db.get("recharge_carte_uuid")}')
|
paiement_stripe.refresh_from_db()
|
||||||
print(
|
if paiement_stripe.status == Paiement_stripe.VALID :
|
||||||
f'{timezone.now()} retour stripe pour rechargement carte : {metadata_db.get("recharge_carte_uuid")}')
|
messages.success(request, f"Paiement validé. Merci !")
|
||||||
|
return HttpResponseRedirect(f"/qr/{metadata_db.get('recharge_carte_uuid')}#success")
|
||||||
print('gerer la recharge sur le serveur cashless')
|
|
||||||
# return postPaimentRecharge(paiement_stripe, request)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
else:
|
else:
|
||||||
paiement_stripe.status = Paiement_stripe.CANCELED
|
paiement_stripe.status = Paiement_stripe.CANCELED
|
||||||
paiement_stripe.save()
|
paiement_stripe.save()
|
||||||
return HttpResponse(f'Le paiement annulé.')
|
|
||||||
|
|
||||||
return HttpResponse(f'Paiement validé')
|
if paiement_stripe.status == Paiement_stripe.VALID:
|
||||||
|
metadata_db_json = paiement_stripe.metadata_stripe
|
||||||
|
metadata_db = json.loads(metadata_db_json)
|
||||||
|
if metadata_db.get('recharge_carte_uuid'):
|
||||||
|
return HttpResponseRedirect(f"/qr/{metadata_db.get('recharge_carte_uuid')}#historique")
|
||||||
|
else :
|
||||||
|
return HttpResponse('Un problème de validation de paiement a été detecté. Merci de contacter un responsable.')
|
||||||
|
# return HttpResponseRedirect("/")
|
||||||
|
|
||||||
|
|
||||||
'''
|
'''
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,9 @@
|
||||||
# Generated by Django 2.2 on 2021-09-23 09:39
|
# Generated by Django 2.2 on 2021-09-27 13:39
|
||||||
|
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
import django.db.models.deletion
|
import django.db.models.deletion
|
||||||
|
import stdimage.models
|
||||||
|
import stdimage.validators
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
class Migration(migrations.Migration):
|
||||||
|
|
@ -9,18 +11,29 @@ class Migration(migrations.Migration):
|
||||||
initial = True
|
initial = True
|
||||||
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
('Customers', '0003_auto_20210623_1351'),
|
('Customers', '0001_initial'),
|
||||||
]
|
]
|
||||||
|
|
||||||
operations = [
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Detail',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('img', stdimage.models.StdImageField(blank=True, null=True, upload_to='images/', validators=[stdimage.validators.MaxSizeValidator(1920, 1920)], verbose_name='Recto de la carte')),
|
||||||
|
('img_url', models.URLField(blank=True, null=True)),
|
||||||
|
('base_url', models.CharField(blank=True, max_length=60, null=True)),
|
||||||
|
('generation', models.SmallIntegerField()),
|
||||||
|
('origine', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='Customers.Client')),
|
||||||
|
],
|
||||||
|
),
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name='CarteCashless',
|
name='CarteCashless',
|
||||||
fields=[
|
fields=[
|
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
('tag_id', models.CharField(db_index=True, max_length=8, unique=True)),
|
('tag_id', models.CharField(db_index=True, max_length=8, unique=True)),
|
||||||
('uuid_qrcode', models.UUIDField(blank=True, null=True, verbose_name='Uuid')),
|
('uuid', models.UUIDField(blank=True, null=True, verbose_name='Uuid')),
|
||||||
('number', models.CharField(blank=True, db_index=True, max_length=8, null=True, unique=True)),
|
('number', models.CharField(db_index=True, max_length=8, unique=True)),
|
||||||
('origine', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='Customers.Client')),
|
('detail', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='QrcodeCashless.Detail')),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-25 07:59
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('QrcodeCashless', '0001_initial'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.RenameField(
|
|
||||||
model_name='cartecashless',
|
|
||||||
old_name='uuid_qrcode',
|
|
||||||
new_name='uuid',
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='cartecashless',
|
|
||||||
name='number',
|
|
||||||
field=models.CharField(db_index=True, default=0, max_length=8, unique=True),
|
|
||||||
preserve_default=False,
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,27 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-25 08:08
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
import stdimage.models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('QrcodeCashless', '0002_auto_20210925_1159'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.CreateModel(
|
|
||||||
name='Detail',
|
|
||||||
fields=[
|
|
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
||||||
('img', stdimage.models.StdImageField(blank=True, null=True, upload_to='images/', verbose_name='Recto de la carte')),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='cartecashless',
|
|
||||||
name='detail',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='QrcodeCashless.Detail'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-25 08:24
|
|
||||||
|
|
||||||
from django.db import migrations
|
|
||||||
import stdimage.models
|
|
||||||
import stdimage.validators
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('QrcodeCashless', '0003_auto_20210925_1208'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='detail',
|
|
||||||
name='img',
|
|
||||||
field=stdimage.models.StdImageField(blank=True, null=True, upload_to='images/', validators=[stdimage.validators.MaxSizeValidator(1920, 1920)], verbose_name='Recto de la carte'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,18 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-25 09:10
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('QrcodeCashless', '0004_auto_20210925_1224'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='detail',
|
|
||||||
name='base_url',
|
|
||||||
field=models.CharField(blank=True, max_length=60, null=True),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-25 10:17
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('Customers', '0003_auto_20210623_1351'),
|
|
||||||
('QrcodeCashless', '0006_remove_cartecashless_origine'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='detail',
|
|
||||||
name='origine',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='Customers.Client'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,18 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-25 10:44
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('QrcodeCashless', '0007_detail_origine'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='detail',
|
|
||||||
name='img_url',
|
|
||||||
field=models.URLField(blank=True, null=True),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
# Generated by Django 2.2 on 2021-09-25 13:55
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('QrcodeCashless', '0008_detail_img_url'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='detail',
|
|
||||||
name='generation',
|
|
||||||
field=models.SmallIntegerField(default=1),
|
|
||||||
preserve_default=False,
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,67 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="fr">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<title>Rechargement Online</title>
|
|
||||||
|
|
||||||
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
|
||||||
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
|
||||||
<!-- Font Awesome -->
|
|
||||||
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.2/css/all.css">
|
|
||||||
<!-- Bootstrap core CSS -->
|
|
||||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css" rel="stylesheet">
|
|
||||||
<!-- Material Design Bootstrap -->
|
|
||||||
{# <link href="css/mdb.min.css" rel="stylesheet">#}
|
|
||||||
<!-- Your custom styles (optional) -->
|
|
||||||
{# <link href="css/style.css" rel="stylesheet">#}
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<br>
|
|
||||||
{% if url_image_carte %}
|
|
||||||
<div class="container-fluid">
|
|
||||||
<img src="{{ url_image_carte }}" alt="Product" class="img-fluid img-thumbnail rounded mx-auto d-block" >
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
<br>
|
|
||||||
<p class="h3 mb-4 text-center">Rechargement Cashless {{ domain.capitalize }}</p>
|
|
||||||
{% if liste_assets %}
|
|
||||||
<p class="h5 mb-5 text-center">Disponible sur votre carte :
|
|
||||||
{% for asset in liste_assets %}
|
|
||||||
<p class="h6 mb-6 text-center"> {{ asset }} </p>
|
|
||||||
{% endfor %}
|
|
||||||
</p>
|
|
||||||
{% else %}
|
|
||||||
<p class="h4 mb-4 text-center">Votre carte est vide.</p>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
|
|
||||||
<form class="border border-light p-5" name="form" method="POST">
|
|
||||||
{% csrf_token %}
|
|
||||||
<label for="numero_carte">Merci de vérifier votre numéro de la carte cashless ( au dessous du QRCode ) :</label>
|
|
||||||
<input type="text" id="numero_carte_cashless" class="form-control" placeholder="Numéro de la carte cashless"
|
|
||||||
value="{{ numero_carte }}" name="numero_carte_cashless" required="True" readonly>
|
|
||||||
<br>
|
|
||||||
|
|
||||||
<label for="Email">Email :</label>
|
|
||||||
{% if email %}
|
|
||||||
<input type="email" id="Email" class="form-control mb-4" placeholder="E-mail" name="email" required="True"
|
|
||||||
value="{{ email }}">
|
|
||||||
{% else %}
|
|
||||||
<input type="email" id="Email" class="form-control mb-4" placeholder="E-mail" name="email" required="True">
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
|
|
||||||
<label for="thune">Somme à recharger (€) :</label>
|
|
||||||
<input id="thune" class="form-control" type="number" min="1" step="any" name="thune" required="True"/>
|
|
||||||
|
|
||||||
<br>
|
|
||||||
|
|
||||||
<div class="d-grid gap-2">
|
|
||||||
<button class="btn btn-primary" type="submit">Payer</button>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -16,8 +16,7 @@
|
||||||
<link rel="stylesheet" href="{% static 'html5up-dimension/assets/css/noscript.css' %}"/>
|
<link rel="stylesheet" href="{% static 'html5up-dimension/assets/css/noscript.css' %}"/>
|
||||||
</noscript>
|
</noscript>
|
||||||
</head>
|
</head>
|
||||||
< class="is-preload">
|
<body class="is-preload">
|
||||||
|
|
||||||
<!-- Wrapper -->
|
<!-- Wrapper -->
|
||||||
<div id="wrapper">
|
<div id="wrapper">
|
||||||
|
|
||||||
|
|
@ -38,12 +37,15 @@
|
||||||
<nav>
|
<nav>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#recharger">Recharger</a></li>
|
<li><a href="#recharger">Recharger</a></li>
|
||||||
|
|
||||||
{% if history %}
|
{% if history %}
|
||||||
<li><a href="#historique">Historique</a></li>
|
<li><a href="#historique">Historique</a></li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if carte_resto %}
|
{% if carte_resto %}
|
||||||
<li><a href="/media/{{ carte_resto }}">Restaurant</a></li>
|
<li><a href="/media/{{ carte_resto }}">Restaurant</a></li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if billetterie_bool %}
|
{% if billetterie_bool %}
|
||||||
<li><a href="/">Billetterie</a></li>
|
<li><a href="/">Billetterie</a></li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
@ -56,6 +58,9 @@
|
||||||
<li><a href="#adherer">Adhérer</a></li>
|
<li><a href="#adherer">Adhérer</a></li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
{% if email and not a_jour_cotisation %}
|
||||||
|
<li><a href="#adherer">Adhérer</a></li>
|
||||||
|
{% endif %}
|
||||||
{# <li><a href="#elements">Elements</a></li>#}
|
{# <li><a href="#elements">Elements</a></li>#}
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
@ -75,15 +80,19 @@
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label for="email">Email</label>
|
<label for="email">Email</label>
|
||||||
{% if email %}
|
{% if email %}
|
||||||
<input type="email" name="email" id="Email" required="True" value="{{ email }}"/>
|
<label for="email">Vérifiez votre adresse Email</label>
|
||||||
|
<input type="email" name="email" id="Email" required="True" value="{{ email }}"
|
||||||
|
style="text-transform: lowercase;"/>
|
||||||
{% else %}
|
{% else %}
|
||||||
<input type="email" name="email" id="email" required="True"/>
|
<label for="email">Entrez votre adresse Email</label>
|
||||||
|
<input type="email" name="email" id="email" required="True"
|
||||||
|
style="text-transform: lowercase;"/>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label for="montant_recharge">Somme à recharger (€)</label>
|
<label for="montant_recharge">Somme à recharger (€)</label>
|
||||||
<input id="montant_recharge" type="number" step="any" name="montant_recharge" required="True"/>
|
<input id="montant_recharge" type="number" name="montant_recharge" required="True"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<ul class="actions">
|
<ul class="actions">
|
||||||
|
|
@ -155,8 +164,11 @@
|
||||||
|
|
||||||
|
|
||||||
<article id="success">
|
<article id="success">
|
||||||
<h2 class="major">Rechargement OK</h2>
|
{% if messages %}
|
||||||
<h4>Vous avez bien rechargé la carte {{ numero_carte }}.</h4>
|
{% for message in messages %}
|
||||||
|
<h2>{{ message }}</h2>
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
<div class="table-wrapper">
|
<div class="table-wrapper">
|
||||||
<table>
|
<table>
|
||||||
<thead>
|
<thead>
|
||||||
|
|
@ -193,9 +205,17 @@
|
||||||
<form method="post" action="#">
|
<form method="post" action="#">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<div class="fields">
|
<div class="fields">
|
||||||
|
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label for="email">Entrez votre Email</label>
|
{% if email %}
|
||||||
<input id="email" name="email" required="True" type="email"/>
|
<label for="email">Vérifiez votre adresse Email</label>
|
||||||
|
<input type="email" name="email" id="Email" required="True" value="{{ email }}"
|
||||||
|
style="text-transform: lowercase;"/>
|
||||||
|
{% else %}
|
||||||
|
<label for="email">Entrez votre adresse Email</label>
|
||||||
|
<input type="email" name="email" id="email" required="True"
|
||||||
|
style="text-transform: lowercase;"/>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<ul class="actions">
|
<ul class="actions">
|
||||||
|
|
@ -247,7 +267,7 @@
|
||||||
{% for tarif in tarifs_adhesion %}
|
{% for tarif in tarifs_adhesion %}
|
||||||
<ul class="actions">
|
<ul class="actions">
|
||||||
<li><a id="{{ tarif.name | slugify }}" href="#paiementadhesionenligne"
|
<li><a id="{{ tarif.name | slugify }}" href="#paiementadhesionenligne"
|
||||||
class="button primary field">{{ tarif.name }} {{ tarif.tarif }}€</a></li>
|
class="button primary field">{{ tarif.name }} {{ tarif.prix }}€</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
<h4>Payer à l'acceuil de l'association avec un vrai humain :</h4>
|
<h4>Payer à l'acceuil de l'association avec un vrai humain :</h4>
|
||||||
|
|
@ -260,11 +280,6 @@
|
||||||
|
|
||||||
<article id="paiementadhesionenligne">
|
<article id="paiementadhesionenligne">
|
||||||
<h2 class="major">Paiement en ligne</h2>
|
<h2 class="major">Paiement en ligne</h2>
|
||||||
{% if messages %}
|
|
||||||
{% for message in messages %}
|
|
||||||
<h3>{{ message }}</h3>
|
|
||||||
{% endfor %}
|
|
||||||
{% endif %}
|
|
||||||
<h3>Adhésion : <span id="text_name_adhesion"></span> <span id="text_tarif_adhesion"></span></h3>
|
<h3>Adhésion : <span id="text_name_adhesion"></span> <span id="text_tarif_adhesion"></span></h3>
|
||||||
<form method="post" action="#">
|
<form method="post" action="#">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
|
|
@ -279,6 +294,8 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="field" style="display: none">
|
<div class="field" style="display: none">
|
||||||
|
<input id="pk_adhesion" type="text" name="pk_adhesion"
|
||||||
|
required="True"/>
|
||||||
<input id="montant_adhesion" type="number" step="any" name="montant_adhesion"
|
<input id="montant_adhesion" type="number" step="any" name="montant_adhesion"
|
||||||
required="True"/>
|
required="True"/>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -286,7 +303,7 @@
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<h4>Voulez vous recharger votre carte en même temps ? Laissez vide si non.</h4>
|
<h4>Voulez vous recharger votre carte en même temps ? Laissez vide si non.</h4>
|
||||||
<label for="montant_recharge">Recharge cashless (€) :</label>
|
<label for="montant_recharge">Recharge cashless (€) :</label>
|
||||||
<input id="montant_recharge" type="number" step="any" name="montant_recharge" />
|
<input id="montant_recharge" type="number" name="montant_recharge"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<ul class="actions">
|
<ul class="actions">
|
||||||
|
|
@ -384,9 +401,10 @@
|
||||||
{% for tarif in tarifs_adhesion %}
|
{% for tarif in tarifs_adhesion %}
|
||||||
document.getElementById('{{ tarif.name | slugify }}').onclick = function () {
|
document.getElementById('{{ tarif.name | slugify }}').onclick = function () {
|
||||||
console.log('{{ tarif.name | slugify }}')
|
console.log('{{ tarif.name | slugify }}')
|
||||||
document.getElementById("montant_adhesion").value = "{{ tarif.tarif }}";
|
document.getElementById("montant_adhesion").value = "{{ tarif.prix }}";
|
||||||
|
document.getElementById("pk_adhesion").value = "{{ tarif.pk }}";
|
||||||
document.getElementById("text_name_adhesion").textContent = "{{ tarif.name }}";
|
document.getElementById("text_name_adhesion").textContent = "{{ tarif.name }}";
|
||||||
document.getElementById("text_tarif_adhesion").textContent = "{{ tarif.tarif }}€";
|
document.getElementById("text_tarif_adhesion").textContent = "{{ tarif.prix }}€";
|
||||||
}
|
}
|
||||||
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
|
||||||
|
|
@ -7,18 +7,19 @@ from django.http import HttpResponseRedirect, HttpResponse, Http404
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from rest_framework.generics import get_object_or_404
|
from rest_framework.generics import get_object_or_404
|
||||||
|
|
||||||
import stripe
|
|
||||||
|
|
||||||
# Create your views here.
|
|
||||||
from django.views import View
|
from django.views import View
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
|
|
||||||
from BaseBillet.models import Configuration, Article, TarifsAdhesion, LigneArticle
|
from BaseBillet.models import Configuration, Article, LigneArticle
|
||||||
from PaiementStripe.models import Paiement_stripe
|
from PaiementStripe.models import Paiement_stripe
|
||||||
from PaiementStripe.views import creation_checkout_stripe
|
from PaiementStripe.views import creation_checkout_stripe
|
||||||
from QrcodeCashless.models import CarteCashless
|
from QrcodeCashless.models import CarteCashless
|
||||||
|
|
||||||
|
from django.db.models.signals import pre_save
|
||||||
|
from django.dispatch import receiver
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -30,10 +31,19 @@ def get_domain(request):
|
||||||
|
|
||||||
raise Http404
|
raise Http404
|
||||||
|
|
||||||
|
|
||||||
def check_carte_local(uuid):
|
def check_carte_local(uuid):
|
||||||
carte = get_object_or_404(CarteCashless, uuid=uuid)
|
carte = get_object_or_404(CarteCashless, uuid=uuid)
|
||||||
|
# on vérifie toujours que la carte vienne bien du domain et Client tenant.
|
||||||
|
if carte.detail.origine != connection.tenant:
|
||||||
|
logger.error(f"{timezone.now()} "
|
||||||
|
f"check_carte_local {carte.uuid} : "
|
||||||
|
f"carte detail origine correspond pas : {carte.detail.origine} != {connection.tenant}")
|
||||||
|
raise Http404
|
||||||
|
|
||||||
return carte
|
return carte
|
||||||
|
|
||||||
|
|
||||||
class gen_one_bisik(View):
|
class gen_one_bisik(View):
|
||||||
def get(self, request, numero_carte):
|
def get(self, request, numero_carte):
|
||||||
print(numero_carte)
|
print(numero_carte)
|
||||||
|
|
@ -74,9 +84,6 @@ class index_scan(View):
|
||||||
|
|
||||||
def get(self, request, uuid):
|
def get(self, request, uuid):
|
||||||
carte = check_carte_local(uuid)
|
carte = check_carte_local(uuid)
|
||||||
if carte.detail.origine != connection.tenant:
|
|
||||||
raise Http404
|
|
||||||
|
|
||||||
# dette technique ...
|
# dette technique ...
|
||||||
# pour rediriger les premières générations de qrcode
|
# pour rediriger les premières générations de qrcode
|
||||||
# m.tibillet.re et raffinerie
|
# m.tibillet.re et raffinerie
|
||||||
|
|
@ -97,21 +104,19 @@ class index_scan(View):
|
||||||
reponse_server_cashless = self.check_carte_serveur_cashless(carte.uuid)
|
reponse_server_cashless = self.check_carte_serveur_cashless(carte.uuid)
|
||||||
if reponse_server_cashless.status_code == 200:
|
if reponse_server_cashless.status_code == 200:
|
||||||
json_reponse = json.loads(reponse_server_cashless.json())
|
json_reponse = json.loads(reponse_server_cashless.json())
|
||||||
liste_assets = json_reponse.get('liste_assets')
|
|
||||||
email = json_reponse.get('email')
|
email = json_reponse.get('email')
|
||||||
|
a_jour_cotisation = json_reponse.get('a_jour_cotisation')
|
||||||
|
|
||||||
if json_reponse.get('history') :
|
if json_reponse.get('history'):
|
||||||
for his in json_reponse.get('history') :
|
for his in json_reponse.get('history'):
|
||||||
his['date'] = datetime.fromisoformat(his['date'])
|
his['date'] = datetime.fromisoformat(his['date'])
|
||||||
|
|
||||||
return render(
|
return render(
|
||||||
request,
|
request,
|
||||||
self.template_name,
|
self.template_name,
|
||||||
{
|
{
|
||||||
'tarifs_adhesion': TarifsAdhesion.objects.all(),
|
'tarifs_adhesion': Article.objects.filter(categorie_article=Article.ADHESION).order_by('-prix'),
|
||||||
'adhesion_obligatoire': configuration.adhesion_obligatoire,
|
'adhesion_obligatoire': configuration.adhesion_obligatoire,
|
||||||
'assets': json_reponse.get('assets'),
|
|
||||||
'total_monnaie': json_reponse.get('total_monnaie'),
|
|
||||||
'history': json_reponse.get('history'),
|
'history': json_reponse.get('history'),
|
||||||
'carte_resto': configuration.carte_restaurant,
|
'carte_resto': configuration.carte_restaurant,
|
||||||
'site_web': configuration.site_web,
|
'site_web': configuration.site_web,
|
||||||
|
|
@ -119,8 +124,11 @@ class index_scan(View):
|
||||||
'numero_carte': carte.number,
|
'numero_carte': carte.number,
|
||||||
'client_name': carte.detail.origine.name,
|
'client_name': carte.detail.origine.name,
|
||||||
'domain': sub_addr,
|
'domain': sub_addr,
|
||||||
'informations_carte': reponse_server_cashless.text,
|
# 'informations_carte': reponse_server_cashless.text,
|
||||||
'liste_assets': liste_assets,
|
'total_monnaie': json_reponse.get('total_monnaie'),
|
||||||
|
'assets': json_reponse.get('assets'),
|
||||||
|
'a_jour_cotisation': a_jour_cotisation,
|
||||||
|
# 'liste_assets': liste_assets,
|
||||||
'email': email,
|
'email': email,
|
||||||
'billetterie_bool': configuration.activer_billetterie,
|
'billetterie_bool': configuration.activer_billetterie,
|
||||||
}
|
}
|
||||||
|
|
@ -130,100 +138,70 @@ class index_scan(View):
|
||||||
elif reponse_server_cashless.status_code == 400:
|
elif reponse_server_cashless.status_code == 400:
|
||||||
# Carte non trouvée
|
# Carte non trouvée
|
||||||
return HttpResponse('Carte inconnue', status=status.HTTP_400_BAD_REQUEST)
|
return HttpResponse('Carte inconnue', status=status.HTTP_400_BAD_REQUEST)
|
||||||
elif reponse_server_cashless.status_code == 403 :
|
elif reponse_server_cashless.status_code == 403:
|
||||||
# Clé api HS
|
# Clé api HS
|
||||||
logger.error(reponse_server_cashless)
|
logger.error(reponse_server_cashless)
|
||||||
return HttpResponse('Forbidden', status=status.HTTP_403_FORBIDDEN)
|
return HttpResponse('Forbidden', status=status.HTTP_403_FORBIDDEN)
|
||||||
else :
|
else:
|
||||||
return HttpResponse(f'{reponse_server_cashless.status_code}', status=reponse_server_cashless.status_code)
|
return HttpResponse("Serveur non disponible. Merci de revenir ultérieurement.",
|
||||||
|
status=status.HTTP_503_SERVICE_UNAVAILABLE)
|
||||||
|
|
||||||
def post(self, request, uuid):
|
def post(self, request, uuid):
|
||||||
carte = check_carte_local(uuid)
|
carte = check_carte_local(uuid)
|
||||||
if carte.detail.origine != connection.tenant:
|
if carte.detail.origine != connection.tenant:
|
||||||
raise Http404
|
raise Http404
|
||||||
|
|
||||||
|
|
||||||
data = request.POST
|
data = request.POST
|
||||||
print(data)
|
print(data)
|
||||||
# c'est une recharge
|
montant_adhesion = data.get('montant_adhesion')
|
||||||
if data.get('montant_recharge') and data.get('email'):
|
montant_recharge = data.get('montant_recharge')
|
||||||
|
|
||||||
|
# c'est un paiement
|
||||||
|
if (montant_adhesion or montant_recharge) and data.get('email'):
|
||||||
# montant_recharge = data.get('montant_recharge')
|
# montant_recharge = data.get('montant_recharge')
|
||||||
montant_recharge = float("{0:.2f}".format(float(data.get('montant_recharge'))))
|
ligne_articles = []
|
||||||
if montant_recharge > 0:
|
metadata = {}
|
||||||
|
metadata['recharge_carte_uuid'] = str(carte.uuid)
|
||||||
# reponse_server_cashless = self.check_carte_serveur_cashless(carte.uuid)
|
if montant_recharge:
|
||||||
# configuration = Configuration.get_solo()
|
|
||||||
|
|
||||||
art, created = Article.objects.get_or_create(
|
art, created = Article.objects.get_or_create(
|
||||||
name="Recharge Carte",
|
name="Recharge Carte",
|
||||||
prix=1,
|
prix=1,
|
||||||
publish=False,
|
|
||||||
categorie_article=Article.RECHARGE_CASHLESS,
|
categorie_article=Article.RECHARGE_CASHLESS,
|
||||||
)
|
)
|
||||||
|
|
||||||
ligne_article = LigneArticle.objects.create(
|
ligne_article_recharge = LigneArticle.objects.create(
|
||||||
article = art,
|
article=art,
|
||||||
qty = montant_recharge,
|
qty=montant_recharge,
|
||||||
)
|
)
|
||||||
|
ligne_articles.append(ligne_article_recharge)
|
||||||
|
|
||||||
metadata = {
|
|
||||||
'recharge_carte_uuid': str(carte.uuid),
|
|
||||||
'recharge_carte_montant': str(montant_recharge),
|
|
||||||
}
|
|
||||||
|
|
||||||
|
metadata['recharge_carte_montant'] = str(montant_recharge)
|
||||||
|
|
||||||
|
if montant_adhesion:
|
||||||
|
art_adhesion = Article.objects.get(pk=data.get('pk_adhesion'))
|
||||||
|
ligne_article_recharge = LigneArticle.objects.create(
|
||||||
|
article=art_adhesion,
|
||||||
|
qty=1,
|
||||||
|
)
|
||||||
|
ligne_articles.append(ligne_article_recharge)
|
||||||
|
metadata['pk_adhesion'] = str(art_adhesion.pk)
|
||||||
|
|
||||||
|
if len(ligne_articles) > 0:
|
||||||
new_checkout_session = creation_checkout_stripe(
|
new_checkout_session = creation_checkout_stripe(
|
||||||
email_paiement = data.get('email'),
|
email_paiement=data.get('email'),
|
||||||
liste_ligne_article = [ligne_article,],
|
liste_ligne_article=ligne_articles,
|
||||||
metadata = metadata,
|
metadata=metadata,
|
||||||
absolute_domain = request.build_absolute_uri().partition('/qr')[0],
|
absolute_domain=request.build_absolute_uri().partition('/qr')[0],
|
||||||
)
|
)
|
||||||
|
|
||||||
if new_checkout_session.is_valid() :
|
if new_checkout_session.is_valid():
|
||||||
print(new_checkout_session.checkout_session.stripe_id)
|
print(new_checkout_session.checkout_session.stripe_id)
|
||||||
return new_checkout_session.redirect_to_stripe()
|
return new_checkout_session.redirect_to_stripe()
|
||||||
|
|
||||||
# c'est la première étape de l'adhésion
|
# Email seul sans montant, c'est une adhésion
|
||||||
elif data.get('email') \
|
elif data.get('email'):
|
||||||
and not data.get('prenom') \
|
|
||||||
and not data.get('prenom') \
|
|
||||||
and not data.get('tel') :
|
|
||||||
|
|
||||||
sess = requests.Session()
|
|
||||||
configuration = Configuration.get_solo()
|
|
||||||
r = sess.post(
|
|
||||||
f'{configuration.server_cashless}/api/billetterie_qrcode_adhesion',
|
|
||||||
headers={
|
|
||||||
'Authorization': f'Api-Key {configuration.key_cashless}'
|
|
||||||
},
|
|
||||||
data={
|
|
||||||
'email': data.get('email'),
|
|
||||||
'uuid_carte': carte.uuid,
|
|
||||||
})
|
|
||||||
|
|
||||||
sess.close()
|
|
||||||
|
|
||||||
# nouveau membre crée avec uniquqment l'email on demande la suite.
|
|
||||||
if r.status_code in (201, 204) :
|
|
||||||
messages.success(request, f"{data.get('email')}", extra_tags='email')
|
|
||||||
return HttpResponseRedirect(f'#demande_nom_prenom_tel')
|
|
||||||
|
|
||||||
#partial information :
|
|
||||||
elif r.status_code == 206:
|
|
||||||
partial = json.loads(r.text)
|
|
||||||
messages.success(request, f"{data.get('email')}", extra_tags='email')
|
|
||||||
if partial.get('name'):
|
|
||||||
messages.success(request, f"Email déja connu. Name déja connu", extra_tags='name')
|
|
||||||
if partial.get('prenom'):
|
|
||||||
messages.success(request, f"Email déja connu. prenom déja connu", extra_tags='prenom')
|
|
||||||
if partial.get('tel'):
|
|
||||||
messages.success(request, f"Email déja connu. tel déja connu", extra_tags='tel')
|
|
||||||
return HttpResponseRedirect(f'#demande_nom_prenom_tel')
|
|
||||||
else:
|
|
||||||
messages.error(request, f'Erreur {r.status_code} {r.text}')
|
|
||||||
return HttpResponseRedirect(f'#erreur')
|
|
||||||
|
|
||||||
# suite de l'adhesion
|
|
||||||
elif data.get('email') and data.get('name') and data.get('prenom') and data.get('tel'):
|
|
||||||
sess = requests.Session()
|
sess = requests.Session()
|
||||||
configuration = Configuration.get_solo()
|
configuration = Configuration.get_solo()
|
||||||
r = sess.post(
|
r = sess.post(
|
||||||
|
|
@ -241,34 +219,65 @@ class index_scan(View):
|
||||||
|
|
||||||
sess.close()
|
sess.close()
|
||||||
|
|
||||||
# nouveau membre crée, on demande la suite.
|
# nouveau membre crée avec uniquement l'email on demande la suite.
|
||||||
if r.status_code == 202 :
|
# HTTP_202_ACCEPTED
|
||||||
messages.success(request, f"Merci ! Membre créé et carte liée.")
|
# HTTP_201_CREATED
|
||||||
|
if r.status_code in (201, 204):
|
||||||
|
messages.success(request, f"{data.get('email')}", extra_tags='email')
|
||||||
|
return HttpResponseRedirect(f'#demande_nom_prenom_tel')
|
||||||
|
|
||||||
|
# partial information :
|
||||||
|
elif r.status_code == 206:
|
||||||
|
partial = json.loads(r.text)
|
||||||
|
messages.success(request, f"{data.get('email')}", extra_tags='email')
|
||||||
|
if partial.get('name'):
|
||||||
|
messages.success(request, f"Email déja connu. Name déja connu", extra_tags='name')
|
||||||
|
if partial.get('prenom'):
|
||||||
|
messages.success(request, f"Email déja connu. prenom déja connu", extra_tags='prenom')
|
||||||
|
if partial.get('tel'):
|
||||||
|
messages.success(request, f"Email déja connu. tel déja connu", extra_tags='tel')
|
||||||
|
return HttpResponseRedirect(f'#demande_nom_prenom_tel')
|
||||||
|
|
||||||
|
# nouveau membre crée, on demande la suite.
|
||||||
|
elif r.status_code == 202:
|
||||||
|
messages.success(request, f"Carte liée au membre {data.get('email')}")
|
||||||
return HttpResponseRedirect(f'#adhesionsuccess')
|
return HttpResponseRedirect(f'#adhesionsuccess')
|
||||||
else :
|
|
||||||
|
else:
|
||||||
messages.error(request, f'Erreur {r.status_code} {r.text}')
|
messages.error(request, f'Erreur {r.status_code} {r.text}')
|
||||||
return HttpResponseRedirect(f'#erreur')
|
return HttpResponseRedirect(f'#erreur')
|
||||||
|
|
||||||
|
|
||||||
def postPaimentRecharge(paiementStripe: Paiement_stripe, request):
|
@receiver(pre_save, sender=Paiement_stripe)
|
||||||
|
def changement_paid_to_valid(sender, instance: Paiement_stripe, update_fields=None, **kwargs):
|
||||||
|
# si l'instance vient d'être créé, ne rien faire :
|
||||||
|
if instance.pk is None:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
paiementStripe = instance
|
||||||
if paiementStripe.status == Paiement_stripe.PAID:
|
if paiementStripe.status == Paiement_stripe.PAID:
|
||||||
|
# old_instance = Paiement_stripe.objects.get(pk=paiementStripe.pk)
|
||||||
|
# print(f"on passe de {old_instance.status} à {paiementStripe.status}")
|
||||||
|
# on passe de non payé -> payé
|
||||||
metadata_db_json = paiementStripe.metadata_stripe
|
metadata_db_json = paiementStripe.metadata_stripe
|
||||||
metadata_db = json.loads(metadata_db_json)
|
metadata_db = json.loads(metadata_db_json)
|
||||||
uuid_carte = metadata_db.get('recharge_carte_uuid')
|
uuid_carte = metadata_db.get('recharge_carte_uuid')
|
||||||
total_rechargement = metadata_db.get('recharge_carte_montant')
|
recharge_carte_montant = metadata_db.get('recharge_carte_montant')
|
||||||
|
pk_adhesion = metadata_db.get('pk_adhesion')
|
||||||
if uuid_carte and total_rechargement :
|
if recharge_carte_montant or pk_adhesion:
|
||||||
|
|
||||||
|
|
||||||
# on vérifie toujours que la carte vienne bien du domain et Client tenant.
|
|
||||||
carte = check_carte_local(uuid_carte)
|
carte = check_carte_local(uuid_carte)
|
||||||
if carte.detail.origine != connection.tenant:
|
|
||||||
logger.error(f"{timezone.now()} "
|
data_pour_serveur_cashless = {
|
||||||
f"postPaimentRecharge {uuid_carte} : "
|
'uuid': carte.uuid,
|
||||||
f"carte detail origine correspond pas : {carte.detail.origine} != {connection.tenant}")
|
'uuid_commande': paiementStripe.uuid,
|
||||||
raise Http404
|
}
|
||||||
|
|
||||||
|
if recharge_carte_montant:
|
||||||
|
data_pour_serveur_cashless['recharge_qty'] = float(recharge_carte_montant)
|
||||||
|
if pk_adhesion :
|
||||||
|
adhesion = Article.objects.get(pk=pk_adhesion)
|
||||||
|
data_pour_serveur_cashless['tarif_adhesion'] = adhesion.prix
|
||||||
|
|
||||||
|
|
||||||
sess = requests.Session()
|
sess = requests.Session()
|
||||||
configuration = Configuration.get_solo()
|
configuration = Configuration.get_solo()
|
||||||
|
|
@ -277,26 +286,24 @@ def postPaimentRecharge(paiementStripe: Paiement_stripe, request):
|
||||||
headers={
|
headers={
|
||||||
'Authorization': f'Api-Key {configuration.key_cashless}'
|
'Authorization': f'Api-Key {configuration.key_cashless}'
|
||||||
},
|
},
|
||||||
data={
|
data=data_pour_serveur_cashless,
|
||||||
'uuid': uuid_carte,
|
)
|
||||||
'qty': float(total_rechargement),
|
|
||||||
'uuid_commande': paiementStripe.uuid,
|
|
||||||
})
|
|
||||||
|
|
||||||
sess.close()
|
sess.close()
|
||||||
|
print(
|
||||||
logger.info(f"{timezone.now()} demande au serveur cashless pour un rechargement. réponse : {r.status_code} ")
|
f"{timezone.now()} demande au serveur cashless pour un rechargement. réponse : {r.status_code} ")
|
||||||
print (f"{timezone.now()} demande au serveur cashless pour un rechargement. réponse : {r.status_code} ")
|
|
||||||
|
|
||||||
if r.status_code == 200:
|
if r.status_code == 200:
|
||||||
# la commande a été envoyé au serveur cashless, on la met en validée
|
# la commande a été envoyé au serveur cashless et validé.
|
||||||
paiementStripe.status = Paiement_stripe.VALID
|
paiementStripe.status = Paiement_stripe.VALID
|
||||||
paiementStripe.save()
|
|
||||||
|
|
||||||
return HttpResponseRedirect(f'#success')
|
|
||||||
|
|
||||||
elif paiementStripe.status == Paiement_stripe.VALID:
|
'''
|
||||||
messages.success(request, f"Le paiement a déja été validé.")
|
# return HttpResponseRedirect(f'#success')
|
||||||
return HttpResponseRedirect(f'#historique')
|
#
|
||||||
|
# elif paiementStripe.status == Paiement_stripe.VALID:
|
||||||
return HttpResponseRedirect(f'#erreurpaiement')
|
# messages.success(request, f"Le paiement a déja été validé.")
|
||||||
|
# return HttpResponseRedirect(f'#historique')
|
||||||
|
#
|
||||||
|
# return HttpResponseRedirect(f'#erreurpaiement')
|
||||||
|
'''
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue