From 382d9a76e81a20157f3bb0458570fc31ecf4cc09 Mon Sep 17 00:00:00 2001 From: Ivlev Denis Date: Sat, 30 Jun 2018 15:15:04 +0300 Subject: [PATCH] LIL-551. Upload clients to roistat --- apps/user/management/__init__.py | 0 apps/user/management/commands/__init__.py | 0 .../management/commands/users_to_roistat.py | 32 +++++++++++++++++++ apps/user/tasks.py | 23 +++++++++++++ project/settings.py | 5 +++ 5 files changed, 60 insertions(+) create mode 100644 apps/user/management/__init__.py create mode 100644 apps/user/management/commands/__init__.py create mode 100644 apps/user/management/commands/users_to_roistat.py diff --git a/apps/user/management/__init__.py b/apps/user/management/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/apps/user/management/commands/__init__.py b/apps/user/management/commands/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/apps/user/management/commands/users_to_roistat.py b/apps/user/management/commands/users_to_roistat.py new file mode 100644 index 00000000..84ae366e --- /dev/null +++ b/apps/user/management/commands/users_to_roistat.py @@ -0,0 +1,32 @@ +import requests + +from django.conf import settings +from django.contrib.auth import get_user_model +from django.core.management.base import BaseCommand, CommandError + +# User = get_user_model() + +from apps.user.models import User + + +class Command(BaseCommand): + help = 'Upload users to Roistat' + + def handle(self, *args, **options): + users_queryset = User.objects.all() + users = [ + { + 'id': str(user.id), + 'name': user.get_full_name(), + 'phone': str(user.phone), + 'email': user.email, + 'birth_date': user.birthday.strftime('%d%m%Y') if user.birthday else None, + } + for user in users_queryset + ] + project = settings.ROISTAT_PROJECT + key = settings.ROISTAT_KEY + url = settings.ROISTAT_API_URL + f'/project/clients/import?key={key}&project={project}' + resp = requests.post(url, json=users) + self.stdout.write(str(resp)) + self.stdout.write(str(resp.json())) diff --git a/apps/user/tasks.py b/apps/user/tasks.py index a95988be..e35accef 100644 --- a/apps/user/tasks.py +++ b/apps/user/tasks.py @@ -1,6 +1,9 @@ +import requests + from mixpanel import Mixpanel from django.conf import settings +from django.contrib.auth import get_user_model from project.celery import app @@ -20,3 +23,23 @@ def user_to_mixpanel(user_id, email, phone, first_name, last_name, date_joined, 'subscriptions': subscriptions, } ) + + +@app.task +def users_to_roistat(): + User = get_user_model() + users_queryset = User.objects.all() + users = [ + { + 'id': str(user.id), + 'name': user.get_full_name(), + 'phone': str(user.phone), + 'email': user.email, + 'birth_date': user.birthday.strftime('%d%m%Y') if user.birthday else None, + } + for user in users_queryset + ] + project = settings.ROISTAT_PROJECT + key = settings.ROISTAT_KEY + url = settings.ROISTAT_API_URL + f'/project/clients/import?key={key}&project={project}' + resp = requests.post(url, json=users) diff --git a/project/settings.py b/project/settings.py index 61ae04e2..f3e69e23 100644 --- a/project/settings.py +++ b/project/settings.py @@ -222,6 +222,11 @@ CELERY_BEAT_SCHEDULE = { 'schedule': timedelta(minutes=5) if DEBUG else crontab(minute=0, hour=0), 'args': (), }, + 'update_users_in_roistat': { + 'task': 'apps.user.tasks.users_to_roistat', + 'schedule': timedelta(hours=1), + 'args': (), + }, } try: