From 65bbde0ede62e2963813fc0ba69d75eaf240a4c0 Mon Sep 17 00:00:00 2001 From: gzbender Date: Fri, 31 Aug 2018 14:41:12 +0500 Subject: [PATCH] lil-583 --- api/v1/views.py | 1 + apps/payment/models.py | 29 +++++++++---------- apps/user/models.py | 11 +++---- .../blocks/{menu.html => profile-menu.html} | 0 apps/user/templates/user/bonus-history.html | 16 ++++++---- .../templates/user/notification-settings.html | 10 +------ apps/user/templates/user/payment-history.html | 2 +- .../user/templates/user/profile-settings.html | 10 +------ apps/user/views.py | 2 +- project/templates/blocks/lil_store_js.html | 1 + project/templates/lilcity/main.html | 10 ------- web/src/js/modules/common.js | 4 +++ web/src/js/modules/profile.js | 4 +++ 13 files changed, 44 insertions(+), 56 deletions(-) rename apps/user/templates/blocks/{menu.html => profile-menu.html} (100%) diff --git a/api/v1/views.py b/api/v1/views.py index 63dc2ea1..ca551de4 100644 --- a/api/v1/views.py +++ b/api/v1/views.py @@ -486,6 +486,7 @@ class PaymentViewSet(ExtendedModelViewSet): return Response(Payment.calc_amount(user=user, course=course, weekdays=weekdays)) + class ContestViewSet(ExtendedModelViewSet): queryset = Contest.objects.all() serializer_class = ContestCreateSerializer diff --git a/apps/payment/models.py b/apps/payment/models.py index 9f8d4d31..016646a7 100644 --- a/apps/payment/models.py +++ b/apps/payment/models.py @@ -11,7 +11,6 @@ from django.core.validators import RegexValidator from django.utils.timezone import now from django.conf import settings -from apps.user.models import Referral from project.utils import weekday_in_date_range from apps.course.models import Course @@ -122,11 +121,11 @@ class Payment(PolymorphicModel): add_days = school_payment.add_days date_start = school_payment.date_start date_end = school_payment.date_end - referral_discount = 0 - referrer_cashback = 0 + referral_bonus = 0 + referrer_bonus = 0 if hasattr(user, 'referral') and not user.referral.payment: - referral_discount = user.referral.discount - referrer_cashback = user.referral.referrer_cashback + referral_bonus = user.referral.bonus + referrer_bonus = user.referral.referrer_bonus discount = 0 if course: price = course.price @@ -155,14 +154,14 @@ class Payment(PolymorphicModel): price = Decimal(aggregate.get('month_price__sum', 0)) if price >= config.SERVICE_DISCOUNT_MIN_AMOUNT: discount = config.SERVICE_DISCOUNT - referral_discount = (price - discount) * referral_discount / 100 - referrer_cashback = (price - discount) * referrer_cashback / 100 - amount = price - discount - referral_discount + amount = price - discount + referral_bonus = round(amount * referral_bonus / 100) + referrer_bonus = round(amount * referrer_bonus / 100) return { 'price': price, 'amount': amount, - 'referral_discount': referral_discount, - 'referrer_cashback': referrer_cashback, + 'referral_bonus': referral_bonus, + 'referrer_bonus': referrer_bonus, 'discount': discount, } @@ -209,11 +208,11 @@ class CoursePayment(Payment): author_balance.save() # Если юзер реферал и нет платежа, где применялась скидка if hasattr(self.user, 'referral') and not self.user.referral.payment: - # Отправляем кэшбэк - self.user.referral.cashback(amount_data.get('referrer_cashback')) # Платеж - как сигнал, что скидка применилась self.user.referral.payment = self self.user.referral.save() + # Отправляем кэшбэк + self.user.referral.send_bonuses(amount_data.get('referral_bonus'), amount_data.get('referrer_bonus')) class SchoolPayment(Payment): @@ -239,11 +238,11 @@ class SchoolPayment(Payment): super().save(*args, **kwargs) # Если юзер реферал и нет платежа, где применялась скидка if not self.add_days and hasattr(self.user, 'referral') and not self.user.referral.payment: - # Отправляем кэшбэк - self.user.referral.cashback(amount_data.get('referrer_cashback')) # Платеж - как сигнал, что скидка применилась self.user.referral.payment = self self.user.referral.save() + # Отправляем кэшбэк + self.user.referral.send_bonuses(amount_data.get('referral_bonus'), amount_data.get('referrer_bonus')) @property def date_end_humanize(self): @@ -254,6 +253,6 @@ class UserBonus(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='bonuses') amount = models.DecimalField(max_digits=8, decimal_places=2, default=0, editable=False) payment = models.OneToOneField(Payment, on_delete=models.SET_NULL, null=True) - referral = models.ForeignKey(Referral, on_delete=models.SET_NULL, null=True) + referral = models.ForeignKey('user.Referral', on_delete=models.SET_NULL, null=True) created_at = models.DateTimeField(auto_now_add=True) diff --git a/apps/user/models.py b/apps/user/models.py index 1c070240..c2fcf3cd 100644 --- a/apps/user/models.py +++ b/apps/user/models.py @@ -265,14 +265,15 @@ class EmailSubscription(models.Model): class Referral(models.Model): referral = models.OneToOneField(User, on_delete=models.CASCADE, related_name='referral') referrer = models.ForeignKey(User, on_delete=models.CASCADE, related_name='referrals') - discount = models.IntegerField() - referrer_cashback = models.IntegerField() + bonus = models.IntegerField() + referrer_bonus = models.IntegerField() payment = models.OneToOneField('payment.Payment', null=True, blank=True, on_delete=models.CASCADE) class Meta: verbose_name = 'Реферал' verbose_name_plural = 'Рефералы' - def cashback(self, amount): - # TODO - pass + def send_bonuses(self, referral_bonus, referrer_bonus): + from apps.payment.models import UserBonus + UserBonus.objects.create(user=self.referral, amount=referral_bonus, payment=self.payment, referral=self) + UserBonus.objects.create(user=self.referrer, amount=referrer_bonus, payment=self.payment, referral=self) diff --git a/apps/user/templates/blocks/menu.html b/apps/user/templates/blocks/profile-menu.html similarity index 100% rename from apps/user/templates/blocks/menu.html rename to apps/user/templates/blocks/profile-menu.html diff --git a/apps/user/templates/user/bonus-history.html b/apps/user/templates/user/bonus-history.html index b4095470..72be8b05 100644 --- a/apps/user/templates/user/bonus-history.html +++ b/apps/user/templates/user/bonus-history.html @@ -3,18 +3,22 @@ {% load rupluralize from plural %} {% block content %} -{% include "../blocks/menu.html" %} +{% include "../blocks/profile-menu.html" %} -
+
Бонусы
У вас {{ request.user.bonus|rupluralize:"бонус,бонуса,бонусов" }}
- Вы можете пригласить своих друзей в наш сервис, за это вы получите {{ config.REFERRER_BONUS }} % от суммы - их первой покупки и они получат {{ config.REFERRAL_BONUS }} % от суммы покупки на свой бонусный счет
- Просто отправьте им эту ссылку, по которой они смогут зарегестрироваться: + Вы можете пригласить своих друзей в наш сервис, за это вы получите {{ config.REFERRER_BONUS }}% от суммы + их первой покупки и они получат {{ config.REFERRAL_BONUS }}% от суммы первой покупки на свой бонусный счет
+ Просто отправьте им эту ссылку, по которой они смогут зарегистрироваться: +
+
+
+ +
-
{{ referrer_url }}
diff --git a/apps/user/templates/user/notification-settings.html b/apps/user/templates/user/notification-settings.html index 40c679e5..725922bd 100644 --- a/apps/user/templates/user/notification-settings.html +++ b/apps/user/templates/user/notification-settings.html @@ -1,13 +1,5 @@ {% extends "templates/lilcity/index.html" %} {% load static %} {% block content %} - +{% include "../blocks/profile-menu.html" %} {% if not user.is_email_proved %}
diff --git a/apps/user/templates/user/payment-history.html b/apps/user/templates/user/payment-history.html index 75773722..798ffb2b 100644 --- a/apps/user/templates/user/payment-history.html +++ b/apps/user/templates/user/payment-history.html @@ -1,5 +1,5 @@ {% extends "templates/lilcity/index.html" %} {% load static %} {% block content %} -{% include "../blocks/menu.html" %} +{% include "../blocks/profile-menu.html" %} {% if not user.is_email_proved %}
diff --git a/apps/user/templates/user/profile-settings.html b/apps/user/templates/user/profile-settings.html index 90470b96..1d0619cf 100644 --- a/apps/user/templates/user/profile-settings.html +++ b/apps/user/templates/user/profile-settings.html @@ -1,13 +1,5 @@ {% extends "templates/lilcity/index.html" %} {% load static %} {% load thumbnail %} {% block content %} - +{% include "../blocks/profile-menu.html" %} {% if not user.is_email_proved %}
diff --git a/apps/user/views.py b/apps/user/views.py index d7470fee..e26cb579 100644 --- a/apps/user/views.py +++ b/apps/user/views.py @@ -314,6 +314,6 @@ class BonusHistoryView(TemplateView): context = self.get_context_data(**kwargs) context['bonuses'] = request.user.bonuses.all() context['referrer_url'] = '%s%s?referrer=%s' % ( - settings.MAIN_HOST, reverse('index'), short_url.encode(request.user.id) + settings.MAIN_HOST, reverse('index'), short_url.encode_url(request.user.id) ) return self.render_to_response(context) diff --git a/project/templates/blocks/lil_store_js.html b/project/templates/blocks/lil_store_js.html index 32da4573..02faca8f 100644 --- a/project/templates/blocks/lil_store_js.html +++ b/project/templates/blocks/lil_store_js.html @@ -1,6 +1,7 @@ {% load static %} - {% endif %} -{% endblock body_js %} diff --git a/web/src/js/modules/common.js b/web/src/js/modules/common.js index 1b22c165..d4b6b4b8 100644 --- a/web/src/js/modules/common.js +++ b/web/src/js/modules/common.js @@ -40,6 +40,10 @@ $(document).ready(function () { $('.banner').slideUp(); }) }); + + if(window.LIL_STORE.isRegistration && ! window.LIL_STORE.user.id){ + $('.js-header-enter').click(); + } }); function updateHeader() { diff --git a/web/src/js/modules/profile.js b/web/src/js/modules/profile.js index da9a229e..585c35cb 100644 --- a/web/src/js/modules/profile.js +++ b/web/src/js/modules/profile.js @@ -11,4 +11,8 @@ $(document).ready(function () { $(`[data-gender=${currentGender}]`).addClass('active'); genderInput.val(currentGender) }); + + $('#referrer-url').select().click(function(){ + $(this).select(); + }); })