mirror of
https://git.auk.su/Dinect/bonus-import-tools.git
synced 2025-12-28 18:10:01 +00:00
added new_user_by_card function
This commit is contained in:
21
app.py
21
app.py
@@ -11,6 +11,7 @@ from dotenv import load_dotenv
|
||||
# local imports
|
||||
from dinect_api import get_user
|
||||
from dinect_api import new_user
|
||||
from dinect_api import new_user_by_card
|
||||
|
||||
load_dotenv()
|
||||
|
||||
@@ -63,14 +64,22 @@ for f in files:
|
||||
email_info = validate_email(email, check_deliverability=False)
|
||||
email = email_info.normalized
|
||||
except EmailNotValidError as e:
|
||||
email = None
|
||||
print(f'error in line: [{line_count}]- Invalid email: {email}')
|
||||
log_file.write(f'error in line: [{line_count}]- Invalid email: {email}\n')
|
||||
email = None
|
||||
# set email if not found
|
||||
if email is None:
|
||||
email = f'{card}@user.dinect.com'
|
||||
|
||||
# validate / set gender
|
||||
gender = gender.strip()
|
||||
if gender not in ['M', 'F']:
|
||||
gender = 'M'
|
||||
gender = 1
|
||||
else:
|
||||
if gender == 'M':
|
||||
gender = 1
|
||||
else:
|
||||
gender = 2
|
||||
|
||||
line_count += 1
|
||||
except ValueError as e:
|
||||
@@ -91,11 +100,13 @@ for f in files:
|
||||
|
||||
# create new user if not found
|
||||
if not user_found:
|
||||
user_created, data = new_user(
|
||||
full_name=nickname, phone=phone, gender=None, foreign_card=None, email=email,
|
||||
# user_created, data = new_user(
|
||||
# full_name=nickname, phone=phone, gender=1, foreign_card=None, email=email,
|
||||
# )
|
||||
user_created, data = new_user_by_card(
|
||||
full_name=nickname, phone=phone, gender=1, external_card=card, email=email, use_existing=False
|
||||
)
|
||||
if user_created:
|
||||
# log_file.write(f'error in line: [{line_count}]- Invalid user data: {data}\n')
|
||||
print('User created with', data['ID'], data['DIN'])
|
||||
else:
|
||||
log_file.write(f'error in line: [{line_count}]- Invalid user data: {data}\n')
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# __author__ = 'szhdanoff@gmail.com'
|
||||
__version__ = '1.0.1'
|
||||
|
||||
import os
|
||||
import requests
|
||||
import json
|
||||
@@ -28,7 +29,6 @@ app_token = os.getenv('APP_TOKEN')
|
||||
pos_token = os.getenv('POS_TOKEN')
|
||||
currency = os.getenv('CURRENCY', 'RUB')
|
||||
|
||||
|
||||
HEADERS = {
|
||||
'Authorization': f'dmtoken {pos_token}',
|
||||
'DM-Authorization': f'dmapptoken {app_token}',
|
||||
@@ -80,7 +80,7 @@ def get_user(search_id, get_type='auto', headers=None) -> tuple:
|
||||
# return False, r.text
|
||||
|
||||
|
||||
def new_user(full_name, phone, gender=None, foreign_card=None, email=None, headers=None):
|
||||
def new_user(full_name, phone, gender=1, foreign_card=None, email=None, headers=None):
|
||||
"""
|
||||
A function that creates a new user with optional headers.
|
||||
|
||||
@@ -108,7 +108,7 @@ def new_user(full_name, phone, gender=None, foreign_card=None, email=None, heade
|
||||
"full_name": full_name,
|
||||
"phone": phone,
|
||||
"email": email,
|
||||
# "gender": gender,
|
||||
"gender": gender,
|
||||
}
|
||||
|
||||
r = requests.post(base_url, headers=headers, json=params)
|
||||
@@ -165,7 +165,54 @@ def bonuses_update(
|
||||
return False, r.json()
|
||||
|
||||
|
||||
# user_date = new_user('Test2', '79039426493')
|
||||
def new_user_by_card(external_card, full_name, phone, gender=1, email=None, headers=None, use_existing=True):
|
||||
if headers is None:
|
||||
headers = HEADERS
|
||||
|
||||
base_url = url + 'cards/'
|
||||
params = {
|
||||
'full_name': full_name,
|
||||
'phone': phone,
|
||||
'email': email,
|
||||
'gender': gender,
|
||||
'bind': use_existing,
|
||||
'code': external_card,
|
||||
'format': 'qrcode',
|
||||
}
|
||||
r = requests.post(base_url, headers=headers, json=params)
|
||||
if r.status_code == 201:
|
||||
return True, r.json()
|
||||
else:
|
||||
return False, r.text
|
||||
|
||||
|
||||
def add_external_card(user_id, card, headers=None):
|
||||
"""
|
||||
Adds an external card to a user.
|
||||
|
||||
Args:
|
||||
user_id (int): The ID of the user.
|
||||
card (str): The card number.
|
||||
headers (dict, optional): The headers to include in the request. Defaults to None.
|
||||
|
||||
Returns:
|
||||
tuple: A tuple containing a boolean indicating the success of the request and the JSON response.
|
||||
If the request is successful, the boolean is True and the JSON response is returned.
|
||||
If the request is unsuccessful, the boolean is False and the JSON response is returned.
|
||||
"""
|
||||
if headers is None:
|
||||
headers = HEADERS
|
||||
|
||||
base_url = url + 'users/cards/'
|
||||
params = {
|
||||
"card": card
|
||||
}
|
||||
r = requests.post(base_url, headers=headers, json=params)
|
||||
if r.status_code == 201:
|
||||
return True, r.json()
|
||||
|
||||
|
||||
# user_date = new_user('Test2', '79039426493', email='YlEJp@example.com')
|
||||
# print(user_date)
|
||||
|
||||
# 79039426498
|
||||
@@ -183,17 +230,16 @@ def bonuses_update(
|
||||
# print('purchases_url', purchases_url)
|
||||
|
||||
|
||||
# добавление внешней карты лояльности
|
||||
# добавление внешней карты лояльности
|
||||
|
||||
|
||||
print(get_user('4620011139016689273132009'))
|
||||
# print(get_user('4620011139016689273132009'))
|
||||
# print(get_user('1234567890123'))
|
||||
# print(get_user('+79039406889'))
|
||||
# print(new_user())
|
||||
# (True, '{"DIN":3152300,"ID":"4620011139016570939672611"}')
|
||||
|
||||
|
||||
|
||||
# print(bonuses_update(
|
||||
# user_id=int('1002'),
|
||||
# summ_total=100.00,
|
||||
@@ -202,3 +248,10 @@ print(get_user('4620011139016689273132009'))
|
||||
# sum_with_discount=90.00,
|
||||
# sum_discount=10.00,
|
||||
# ))
|
||||
# print(get_user('79039426493', get_type='phone'))
|
||||
# (True, {'DIN': 3155239, 'ID': '4620011139016802073627661'})
|
||||
|
||||
|
||||
# print(new_user_by_card(
|
||||
# external_card='1234567891235', full_name='Test', phone='79039426495', email='123321@example.com', use_existing=False
|
||||
# ))
|
||||
|
||||
Reference in New Issue
Block a user