added new_user_by_card function

This commit is contained in:
Sergey
2024-08-09 20:51:38 +03:00
parent 273b97bbc7
commit 6ad5e18879
2 changed files with 76 additions and 12 deletions

21
app.py
View File

@@ -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')

View File

@@ -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
# ))