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
|
# local imports
|
||||||
from dinect_api import get_user
|
from dinect_api import get_user
|
||||||
from dinect_api import new_user
|
from dinect_api import new_user
|
||||||
|
from dinect_api import new_user_by_card
|
||||||
|
|
||||||
load_dotenv()
|
load_dotenv()
|
||||||
|
|
||||||
@@ -63,14 +64,22 @@ for f in files:
|
|||||||
email_info = validate_email(email, check_deliverability=False)
|
email_info = validate_email(email, check_deliverability=False)
|
||||||
email = email_info.normalized
|
email = email_info.normalized
|
||||||
except EmailNotValidError as e:
|
except EmailNotValidError as e:
|
||||||
email = None
|
|
||||||
print(f'error in line: [{line_count}]- Invalid email: {email}')
|
print(f'error in line: [{line_count}]- Invalid email: {email}')
|
||||||
log_file.write(f'error in line: [{line_count}]- Invalid email: {email}\n')
|
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
|
# validate / set gender
|
||||||
gender = gender.strip()
|
gender = gender.strip()
|
||||||
if gender not in ['M', 'F']:
|
if gender not in ['M', 'F']:
|
||||||
gender = 'M'
|
gender = 1
|
||||||
|
else:
|
||||||
|
if gender == 'M':
|
||||||
|
gender = 1
|
||||||
|
else:
|
||||||
|
gender = 2
|
||||||
|
|
||||||
line_count += 1
|
line_count += 1
|
||||||
except ValueError as e:
|
except ValueError as e:
|
||||||
@@ -91,11 +100,13 @@ for f in files:
|
|||||||
|
|
||||||
# create new user if not found
|
# create new user if not found
|
||||||
if not user_found:
|
if not user_found:
|
||||||
user_created, data = new_user(
|
# user_created, data = new_user(
|
||||||
full_name=nickname, phone=phone, gender=None, foreign_card=None, email=email,
|
# 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:
|
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'])
|
print('User created with', data['ID'], data['DIN'])
|
||||||
else:
|
else:
|
||||||
log_file.write(f'error in line: [{line_count}]- Invalid user data: {data}\n')
|
log_file.write(f'error in line: [{line_count}]- Invalid user data: {data}\n')
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
# __author__ = 'szhdanoff@gmail.com'
|
# __author__ = 'szhdanoff@gmail.com'
|
||||||
__version__ = '1.0.1'
|
__version__ = '1.0.1'
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import requests
|
import requests
|
||||||
import json
|
import json
|
||||||
@@ -28,7 +29,6 @@ app_token = os.getenv('APP_TOKEN')
|
|||||||
pos_token = os.getenv('POS_TOKEN')
|
pos_token = os.getenv('POS_TOKEN')
|
||||||
currency = os.getenv('CURRENCY', 'RUB')
|
currency = os.getenv('CURRENCY', 'RUB')
|
||||||
|
|
||||||
|
|
||||||
HEADERS = {
|
HEADERS = {
|
||||||
'Authorization': f'dmtoken {pos_token}',
|
'Authorization': f'dmtoken {pos_token}',
|
||||||
'DM-Authorization': f'dmapptoken {app_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
|
# 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.
|
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,
|
"full_name": full_name,
|
||||||
"phone": phone,
|
"phone": phone,
|
||||||
"email": email,
|
"email": email,
|
||||||
# "gender": gender,
|
"gender": gender,
|
||||||
}
|
}
|
||||||
|
|
||||||
r = requests.post(base_url, headers=headers, json=params)
|
r = requests.post(base_url, headers=headers, json=params)
|
||||||
@@ -165,7 +165,54 @@ def bonuses_update(
|
|||||||
return False, r.json()
|
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)
|
# print(user_date)
|
||||||
|
|
||||||
# 79039426498
|
# 79039426498
|
||||||
@@ -183,17 +230,16 @@ def bonuses_update(
|
|||||||
# print('purchases_url', purchases_url)
|
# print('purchases_url', purchases_url)
|
||||||
|
|
||||||
|
|
||||||
# добавление внешней карты лояльности
|
# добавление внешней карты лояльности
|
||||||
|
|
||||||
|
|
||||||
print(get_user('4620011139016689273132009'))
|
# print(get_user('4620011139016689273132009'))
|
||||||
# print(get_user('1234567890123'))
|
# print(get_user('1234567890123'))
|
||||||
# print(get_user('+79039406889'))
|
# print(get_user('+79039406889'))
|
||||||
# print(new_user())
|
# print(new_user())
|
||||||
# (True, '{"DIN":3152300,"ID":"4620011139016570939672611"}')
|
# (True, '{"DIN":3152300,"ID":"4620011139016570939672611"}')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# print(bonuses_update(
|
# print(bonuses_update(
|
||||||
# user_id=int('1002'),
|
# user_id=int('1002'),
|
||||||
# summ_total=100.00,
|
# summ_total=100.00,
|
||||||
@@ -202,3 +248,10 @@ print(get_user('4620011139016689273132009'))
|
|||||||
# sum_with_discount=90.00,
|
# sum_with_discount=90.00,
|
||||||
# sum_discount=10.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