diff --git a/api/v1/views.py b/api/v1/views.py index 50e0d848..47a507ee 100644 --- a/api/v1/views.py +++ b/api/v1/views.py @@ -432,6 +432,16 @@ class UserViewSet(ExtendedModelViewSet): # 'delete': IsAdmin, # } + def update(self, *args, **kwargs): + response = super().update(*args, **kwargs) + instance = self.get_object() + + if instance.review_url and not instance.bonuses.filter(is_service=True, + action_name=UserBonus.ACTION_HAVE_REVIEW).count(): + UserBonus.objects.create(user=instance, amount=UserBonus.AMOUNT_HAVE_REVIEW, is_service=True, + action_name=UserBonus.ACTION_HAVE_REVIEW) + return response + def list(self, request, *args, **kwargs): queryset = self.filter_queryset(self.get_queryset()) diff --git a/apps/user/models.py b/apps/user/models.py index 4991a6fb..aca57b23 100644 --- a/apps/user/models.py +++ b/apps/user/models.py @@ -155,19 +155,6 @@ class User(AbstractUser): course_payment_cnt = CoursePayment.objects.filter(status__in=Payment.PW_PAID_STATUSES, user=self).count() return school_payments_cnt > 1 or course_payment_cnt > 1 or (school_payments_cnt and course_payment_cnt) - def save(self, *args, **kwargs): - super().save(*args, **kwargs) - from apps.payment.models import UserBonus - # начисляемм бонусы, если заполнил профиль - if self.phone and self.first_name and self.last_name and not self.bonuses.filter( - is_service=True, action_name=UserBonus.ACTION_FILL_PROFILE).count(): - UserBonus.objects.create(user=self, amount=UserBonus.AMOUNT_FILL_PROFILE, is_service=True, - action_name=UserBonus.ACTION_FILL_PROFILE) - if self.review_url and not self.bonuses.filter(is_service=True, - action_name=UserBonus.ACTION_HAVE_REVIEW).count(): - UserBonus.objects.create(user=self, amount=UserBonus.AMOUNT_HAVE_REVIEW, is_service=True, - action_name=UserBonus.ACTION_HAVE_REVIEW) - @receiver(post_save, sender=User) def create_auth_token(sender, instance=None, created=False, **kwargs): diff --git a/apps/user/views.py b/apps/user/views.py index 1c244b01..e2571acc 100644 --- a/apps/user/views.py +++ b/apps/user/views.py @@ -24,7 +24,7 @@ from apps.config.models import Config from apps.course.models import Course from apps.notification.utils import send_email from apps.school.models import SchoolSchedule -from apps.payment.models import AuthorBalance, CoursePayment, SchoolPayment, Payment, UserGiftCertificate +from apps.payment.models import AuthorBalance, CoursePayment, SchoolPayment, Payment, UserGiftCertificate, UserBonus from apps.user.models import AuthorRequest, EmailSubscription, SubscriptionCategory from .forms import AuthorRequesForm, UserEditForm, WithdrawalForm @@ -245,7 +245,14 @@ class ProfileEditView(UpdateView): else: messages.error(request, 'Неверный пароль.') messages.info(request, 'Данные сохранены.') - return super().post(request, *args, **kwargs) + response = super().post(request, *args, **kwargs) + user = User.objects.get(pk=request.user.id) + # начисляемм бонусы, если заполнил профиль + if user.phone and user.first_name and user.last_name and not user.bonuses.filter( + is_service=True, action_name=UserBonus.ACTION_FILL_PROFILE).count(): + UserBonus.objects.create(user=user, amount=UserBonus.AMOUNT_FILL_PROFILE, is_service=True, + action_name=UserBonus.ACTION_FILL_PROFILE) + return response def get_success_url(self): return reverse('user-edit-profile') diff --git a/project/templates/blocks/popup_bonuses_came.html b/project/templates/blocks/popup_bonuses_came.html index 2f29bd70..2c2415a5 100644 --- a/project/templates/blocks/popup_bonuses_came.html +++ b/project/templates/blocks/popup_bonuses_came.html @@ -11,7 +11,7 @@