страница с ценами

remotes/origin/feature/packages-page-1-08-19
gzbender 7 years ago
parent 407590f5a1
commit 55c76b6863
  1. 18
      apps/content/migrations/0030_auto_20190809_0133.py
  2. 36
      apps/payment/migrations/0038_auto_20190809_0133.py
  3. 9
      apps/payment/models.py
  4. 12
      apps/payment/templates/payment/package_payment_success.html
  5. 50
      apps/payment/views.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='Опции'),
),
]

@ -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'),
),
]

@ -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'

@ -0,0 +1,12 @@
{% extends "templates/lilcity/index.html" %} {% load static %} {% block content %}
<div class="section">
<div class="section__center center center_xs">
<div class="done">
<div class="done__title title">Вы успешно приобрели подписку с {{ package.date_start }} по {{ package.date_end }}!</div>
<div class="done__foot">
<a class="done__btn btn btn_md btn_stroke" href="{{ course.url }}">ПЕРЕЙТИ К КУРСУ</a>
</div>
</div>
</div>
</div>
{% endblock content %}

@ -20,12 +20,13 @@ from django.utils.timezone import now
from paymentwall import Pingback, Product, Widget
from apps.content.models import Package
from apps.course.models import Course
from apps.payment.tasks import transaction_to_mixpanel, product_payment_to_mixpanel, transaction_to_roistat
from apps.notification.utils import send_email
from .models import AuthorBalance, CoursePayment, SchoolPayment, Payment, UserBonus, GiftCertificate, \
GiftCertificatePayment, UserGiftCertificate, DrawingCampPayment
GiftCertificatePayment, UserGiftCertificate, DrawingCampPayment, PackagePayment
logger = logging.getLogger('django')
@ -486,3 +487,50 @@ class GiftCertificateGetView(TemplateView):
context = self.get_context_data(**kwargs)
return self.render_to_response(context)
@method_decorator(login_required, name='dispatch')
class PackagePaymentBuyView(TemplateView):
model = PackagePayment
template_name = 'payment/paymentwall_widget.html'
def get(self, request, pk, *args, **kwargs):
package = get_object_or_404(Package, pk=pk)
roistat_visit = request.COOKIES.get('roistat_visit', None)
pp = PackagePayment.objects.create(
user=request.user,
package=package,
roistat_visit=roistat_visit, )
context = self.get_context_data(**kwargs)
product = Product(
f'package_{pp.id}',
pp.amount,
'RUB',
'Пакет',
)
host = urlsplit(self.request.META.get('HTTP_REFERER'))
host = str(host[0]) + '://' + str(host[1])
widget = Widget(
str(request.user.id),
'p1_1',
[product],
extra_params={
'lang': 'ru',
'evaluation': 1,
'demo': 1,
'test_mode': 1,
'success_url': host + str(
reverse_lazy('gift-certificate-payment-success', args=[gift_certificate_payment.id])),
'failure_url': host + str(reverse_lazy('payment-error')),
}
)
context['widget'] = widget.get_html_code()
return self.render_to_response(context)
@method_decorator(login_required, name='dispatch')
class PackagePaymentBuySuccessView(TemplateView):
template_name = 'payment/package_payment_success.html'
def get(self, request, pk=None, *args, **kwargs):
course = get_object_or_404(Course, pk=pk)
return self.render_to_response(context={'course': course})

Loading…
Cancel
Save