LIL-267. Add payment models

remotes/origin/hasaccess
Ivlev Denis 8 years ago
parent 448748285d
commit 8b4bf99dd4
  1. 16
      apps/payment/migrations/0002_delete_purchase.py
  2. 71
      apps/payment/migrations/0003_auto_20180220_1912.py
  3. 59
      apps/payment/models.py
  4. 1
      src/paymentwall

@ -0,0 +1,16 @@
# Generated by Django 2.0.2 on 2018-02-20 17:37
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('payment', '0001_initial'),
]
operations = [
migrations.DeleteModel(
name='Purchase',
),
]

@ -0,0 +1,71 @@
# Generated by Django 2.0.2 on 2018-02-20 19:12
from django.conf import settings
import django.contrib.postgres.fields
import django.contrib.postgres.fields.jsonb
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
('course', '0034_auto_20180215_1503'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('contenttypes', '0002_remove_content_type_name'),
('payment', '0002_delete_purchase'),
]
operations = [
migrations.CreateModel(
name='Payment',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('amount', models.DecimalField(decimal_places=2, default=0, max_digits=8, verbose_name='Итого')),
('status', models.PositiveSmallIntegerField(choices=[(0, 'regular'), (1, 'goodwill'), (2, 'negative'), (200, 'risk under review'), (201, 'risk reviewed accepted'), (202, 'risk reviewed declined'), (203, 'risk authorization voided'), (12, 'subscription cancelation'), (13, 'subscription expired'), (14, 'subscription payment failed')], verbose_name='Статус платежа')),
('data', django.contrib.postgres.fields.jsonb.JSONField(default={}, verbose_name='Данные платежа от провайдера')),
],
options={
'verbose_name': 'Платеж',
'verbose_name_plural': 'Платежи',
},
),
migrations.CreateModel(
name='CoursePayment',
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')),
('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='course.Course', verbose_name='Курс')),
],
options={
'verbose_name': 'Платеж за курс',
'verbose_name_plural': 'Платежи за курсы',
},
bases=('payment.payment',),
),
migrations.CreateModel(
name='SchoolPayment',
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')),
('weekdays', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), size=7, verbose_name='Дни недели')),
('date_start', models.DateField(verbose_name='Дата начала подписки')),
('date_end', models.DateField(verbose_name='Дата окончания подписки')),
],
options={
'verbose_name': 'Платеж за курс',
'verbose_name_plural': 'Платежи за курсы',
},
bases=('payment.payment',),
),
migrations.AddField(
model_name='payment',
name='polymorphic_ctype',
field=models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_payment.payment_set+', to='contenttypes.ContentType'),
),
migrations.AddField(
model_name='payment',
name='user',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Пользователь'),
),
]

@ -1,15 +1,52 @@
from django.db import models from django.db import models
from django.contrib.auth import get_user_model
from django.contrib.postgres.fields import ArrayField, JSONField
from paymentwall import Pingback
from polymorphic.models import PolymorphicModel
class Purchase(models.Model): from apps.course.models import Course
COMPLETE = 'COMPLETE' from apps.school.models import SchoolSchedule
CHARGEBACK = 'CHARGEBACK'
REFUNDED = 'REFUNDED'
ERROR = 'ERROR'
PENDING = 'PENDING'
transaction_id = models.PositiveIntegerField() User = get_user_model()
status = models.CharField(max_length=50)
product_id = models.PositiveIntegerField()
created_at = models.DateTimeField(auto_now_add=True) class Payment(PolymorphicModel):
updated_at = models.DateTimeField(auto_now=True) PW_STATUS_CHOICES = (
(Pingback.PINGBACK_TYPE_REGULAR, 'regular',),
(Pingback.PINGBACK_TYPE_GOODWILL, 'goodwill',),
(Pingback.PINGBACK_TYPE_NEGATIVE, 'negative',),
(Pingback.PINGBACK_TYPE_RISK_UNDER_REVIEW, 'risk under review',),
(Pingback.PINGBACK_TYPE_RISK_REVIEWED_ACCEPTED, 'risk reviewed accepted',),
(Pingback.PINGBACK_TYPE_RISK_REVIEWED_DECLINED, 'risk reviewed declined',),
(Pingback.PINGBACK_TYPE_RISK_AUTHORIZATION_VOIDED, 'risk authorization voided',),
(Pingback.PINGBACK_TYPE_SUBSCRIPTION_CANCELLATION, 'subscription cancelation',),
(Pingback.PINGBACK_TYPE_SUBSCRIPTION_EXPIRED, 'subscription expired',),
(Pingback.PINGBACK_TYPE_SUBSCRIPTION_PAYMENT_FAILED, 'subscription payment failed',),
)
user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name='Пользователь')
amount = models.DecimalField('Итого', max_digits=8, decimal_places=2, default=0)
status = models.PositiveSmallIntegerField('Статус платежа', choices=PW_STATUS_CHOICES)
data = JSONField('Данные платежа от провайдера', default={})
class Meta:
verbose_name = 'Платеж'
verbose_name_plural = 'Платежи'
class CoursePayment(Payment):
course = models.ForeignKey(Course, on_delete=models.CASCADE, verbose_name='Курс')
class Meta:
verbose_name = 'Платеж за курс'
verbose_name_plural = 'Платежи за курсы'
class SchoolPayment(Payment):
weekdays = ArrayField(models.IntegerField(), size=7, verbose_name='Дни недели')
date_start = models.DateField('Дата начала подписки')
date_end = models.DateField('Дата окончания подписки')
class Meta:
verbose_name = 'Платеж за курс'
verbose_name_plural = 'Платежи за курсы'

@ -0,0 +1 @@
Subproject commit 1b1f6c04088f5e7ab089c2179f3ab19ff8d81078
Loading…
Cancel
Save