diff --git a/apps/content/migrations/0030_auto_20190809_0133.py b/apps/content/migrations/0030_auto_20190809_0133.py new file mode 100644 index 00000000..da8fed67 --- /dev/null +++ b/apps/content/migrations/0030_auto_20190809_0133.py @@ -0,0 +1,18 @@ +# Generated by Django 2.0.7 on 2019-08-09 01:33 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('content', '0029_auto_20190730_2032'), + ] + + operations = [ + migrations.AlterField( + model_name='package', + name='options', + field=models.TextField(db_index=True, default='', verbose_name='Опции'), + ), + ] diff --git a/apps/payment/migrations/0038_auto_20190809_0133.py b/apps/payment/migrations/0038_auto_20190809_0133.py new file mode 100644 index 00000000..c8c96aab --- /dev/null +++ b/apps/payment/migrations/0038_auto_20190809_0133.py @@ -0,0 +1,36 @@ +# Generated by Django 2.0.7 on 2019-08-09 01:33 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('content', '0030_auto_20190809_0133'), + ('payment', '0037_add_paid_one_more_bonuses'), + ] + + operations = [ + migrations.CreateModel( + name='PackagePayment', + fields=[ + ('payment_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='payment.Payment')), + ('date_start', models.DateField(blank=True, null=True, verbose_name='Дата начала подписки')), + ('date_end', models.DateField(blank=True, null=True, verbose_name='Дата окончания подписки')), + ('camp_payment', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='payment.DrawingCampPayment')), + ('package', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='content.Package')), + ('school_payment', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='payment.SchoolPayment')), + ], + options={ + 'abstract': False, + 'base_manager_name': 'objects', + }, + bases=('payment.payment',), + ), + migrations.AlterField( + model_name='payment', + name='bonus', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='purchase_payments', to='payment.UserBonus'), + ), + ] diff --git a/apps/payment/models.py b/apps/payment/models.py index b8e2d8c1..fdc84020 100644 --- a/apps/payment/models.py +++ b/apps/payment/models.py @@ -16,6 +16,7 @@ from django.core.validators import RegexValidator from django.utils.timezone import now from django.conf import settings +from apps.content.models import Package from project.utils import weekdays_in_date_range from apps.course.models import Course @@ -384,6 +385,14 @@ class GiftCertificatePayment(Payment): verbose_name_plural = 'Платежи за подарочные сертификаты' +class PackagePayment(Payment): + date_start = models.DateField('Дата начала подписки', null=True, blank=True) + date_end = models.DateField('Дата окончания подписки', null=True, blank=True) + package = models.ForeignKey(Package, on_delete=models.CASCADE) + school_payment = models.ForeignKey(SchoolPayment, on_delete=models.SET_NULL, null=True, blank=True) + camp_payment = models.ForeignKey(DrawingCampPayment, on_delete=models.SET_NULL, null=True, blank=True) + + class UserBonus(models.Model): ACTION_FILL_PROFILE = 'fill_profile' ACTION_PAID_ONE_MORE = 'paid_one_more' diff --git a/apps/payment/templates/payment/package_payment_success.html b/apps/payment/templates/payment/package_payment_success.html new file mode 100644 index 00000000..9ad18b96 --- /dev/null +++ b/apps/payment/templates/payment/package_payment_success.html @@ -0,0 +1,12 @@ +{% extends "templates/lilcity/index.html" %} {% load static %} {% block content %} +