LIL-301, 302

remotes/origin/hasaccess
Ivlev Denis 8 years ago
parent e7b46433ff
commit 397032595d
  1. 18
      apps/payment/tasks.py
  2. 47
      apps/payment/views.py
  3. 14
      apps/user/models.py
  4. 20
      apps/user/tasks.py
  5. 3
      project/settings.py

@ -0,0 +1,18 @@
from mixpanel import Mixpanel
from django.conf import settings
from project.celery import app
@app.task
def transaction_to_mixpanel(user_id, amount, time, product_type):
mix = Mixpanel(settings.MIX_TOKEN)
mix.people_track_charge(
user_id,
amount,
{
'$time': time,
'product_type': product_type,
}
)

@ -17,6 +17,7 @@ from paymentwall import Pingback, Product, Widget
from apps.course.models import Course
from apps.school.models import SchoolSchedule
from apps.payment.tasks import transaction_to_mixpanel
from .models import AuthorBalance, CoursePayment, SchoolPayment
@ -146,27 +147,35 @@ class PaymentwallCallbackView(View):
logger.info(
json.dumps(payment_raw_data),
)
payment.status = pingback.get_type()
payment.data = payment_raw_data
if pingback.is_deliverable() and product_type_name == 'school':
school_payment = SchoolPayment.objects.filter(
user=payment.user,
date_start__lte=now(),
date_end__gt=now(),
status__in=[
Pingback.PINGBACK_TYPE_REGULAR,
Pingback.PINGBACK_TYPE_GOODWILL,
Pingback.PINGBACK_TYPE_RISK_REVIEWED_ACCEPTED,
],
).last()
if school_payment:
date_start = school_payment.date_end + timedelta(days=1)
date_end = date_start + timedelta(days=30)
else:
date_start = now()
date_end = now() + timedelta(days=30)
payment.date_start = date_start
payment.date_end = date_end
if pingback.is_deliverable():
transaction_to_mixpanel.delay(
payment.user.id,
payment.amount,
now().strftime('%Y-%m-%dT%H:%M:%S'),
product_type_name,
)
if product_type_name == 'school':
school_payment = SchoolPayment.objects.filter(
user=payment.user,
date_start__lte=now(),
date_end__gt=now(),
status__in=[
Pingback.PINGBACK_TYPE_REGULAR,
Pingback.PINGBACK_TYPE_GOODWILL,
Pingback.PINGBACK_TYPE_RISK_REVIEWED_ACCEPTED,
],
).last()
if school_payment:
date_start = school_payment.date_end + timedelta(days=1)
date_end = date_start + timedelta(days=30)
else:
date_start = now()
date_end = now() + timedelta(days=30)
payment.date_start = date_start
payment.date_end = date_end
payment.save()
author_balance = getattr(payment, 'author_balance', None)

@ -12,6 +12,8 @@ from django.utils.translation import gettext_lazy as _
from api.v1 import serializers
from apps.notification.utils import send_email
from apps.user.tasks import user_to_mixpanel
class User(AbstractUser):
USER_ROLE = 0
@ -89,6 +91,18 @@ def create_auth_token(sender, instance=None, created=False, **kwargs):
instance.auth_token.delete()
@receiver(post_save, sender=User)
def send_user_info_to_mixpanel(sender, instance=None, created=False, **kwargs):
user_to_mixpanel.delay(
instance.id,
instance.email,
instance.first_name,
instance.last_name,
instance.date_joined,
instance.role,
)
class AuthorRequestManager(models.Manager):
def create_by_user(self, user):
obj = self.model(

@ -0,0 +1,20 @@
from mixpanel import Mixpanel
from django.conf import settings
from project.celery import app
@app.task
def user_to_mixpanel(user_id, email, first_name, last_name, date_joined, role):
mix = Mixpanel(settings.MIX_TOKEN)
mix.people_set(
user_id,
{
'$email': email,
'$first_name': first_name,
'$last_name': last_name,
'$created': date_joined,
'role': role,
}
)

@ -270,6 +270,9 @@ else:
Paymentwall.set_app_key('d6f02b90cf6b16220932f4037578aff7')
Paymentwall.set_secret_key('4ea515bf94e34cf28646c2e12a7b8707')
# Mixpanel settings
MIX_TOKEN = '79bd6bfd98667ed977737e6810b8abcd'
# CORS settings
if DEBUG:

Loading…
Cancel
Save