import logging import requests from mixpanel import Mixpanel from django.conf import settings from project.celery import app logger = logging.getLogger(__name__) @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, } ) @app.task def product_payment_to_mixpanel(user_id, event_name, time, properties): mix = Mixpanel(settings.MIX_TOKEN) props = { '$time': time, } props.update(properties) mix.track( user_id, event_name, properties=props, ) @app.task def transaction_to_roistat(user_id, payment_id, event_name, amount, time, status, product_type, roistat_visit): body = [{ 'id': str(payment_id), 'name': event_name, 'date_create': time, 'status': str(status), 'roistat': str(roistat_visit) if roistat_visit else None, 'price': str(amount), 'client_id': str(user_id), 'fields': { 'product_type': product_type, } }] project = settings.ROISTAT_PROJECT key = settings.ROISTAT_KEY url = settings.ROISTAT_API_URL + f'/project/add-orders?key={key}&project={project}' resp = requests.post(url, json=body) try: resp_json = resp.json() except: resp_json = None if resp.status_code != 200 or not resp_json or not resp_json.get('processed'): logger.error('TRANSACTION_TO_ROISTAT for payment # %d, %s RUB: %s' % (payment_id, amount, resp.text)) else: logger.info('TRANSACTION_TO_ROISTAT: ' + str(resp))