diff --git a/app.py b/app.py index 15a3742..d6390fb 100644 --- a/app.py +++ b/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') diff --git a/dinect_api.py b/dinect_api.py index 11c8f6e..10f0fe7 100644 --- a/dinect_api.py +++ b/dinect_api.py @@ -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 +# ))