from interact_with_rest_of_app.which_profile_is_being_used import which_profile_is_being_used # Loading and using JSONs from local_data_operations.search_or_setup_json import get_the_path_of_the_folder_for, load_json_as_dict, search_key_in_json # Generic: import json import os def return_profile_filename_and_path(product): # filename: current_profile_number = which_profile_is_being_used() if product == "email": json_file_name = f"email_{current_profile_number}.json" else: # this is sms: json_file_name = f"{current_profile_number}.json" # folder path: path_for_configs = get_the_path_of_the_folder_for('.config', 'sms') # full path: # Check if the folder exists if not os.path.exists(path_for_configs): # Create the folder if it doesn't exist os.makedirs(path_for_configs) print(f"Folder '{path_for_configs}' created.") else: print(f"Folder '{path_for_configs}' already existed.") # Full path for the JSON file full_json_file_path = os.path.join(path_for_configs, json_file_name) return json_file_name, path_for_configs, full_json_file_path def check_if_profile_exists_already(full_json_file_path): # Check if the JSON file exists if os.path.exists(full_json_file_path): return True else: return False # When a profile is initiated, we want to know if it has a country and proxy already assigned. def get_profile_location_and_proxy_status_as_tuple(): # get the path and other variables that are not needed, but have to be unpacked: json_file_name, path_for_configs, full_json_file_path = return_profile_filename_and_path("sms") # Check if the JSON file exists: if os.path.exists(full_json_file_path): # if so get the data: with open(full_json_file_path, 'r') as json_file: data = json.load(json_file) # get the location, or return "none" if it can't be found. # return json_dict.get(key, default_value_if_not_found) assigned_location = data.get("profile", {}).get("location", False) assigned_proxy = data.get("profile", {}).get("assigned_proxy", False) if assigned_location == "": return False else: return (assigned_location, assigned_proxy) else: return False # If it does not exist already, then create it from scratch: # darth vadar def setup_email_config(email_operator, full_email, email_password, email_url): print("SETUP EMAIL CONFIG triggered") email_json_file_name, path_for_configs, email_full_json_file_path = return_profile_filename_and_path("email") # Add the email data: new_data = { "email_operator": email_operator, "full_email": full_email, "email_url": email_url, "email_password": email_password } try: # Update the JSON Profile with new data: with open(email_full_json_file_path, 'w') as json_file: json.dump(new_data, json_file, indent=4) return True # it worked: except: return "error" def wipe_entire_profile_data(): json_file_name, path_for_configs, full_json_file_path = return_profile_filename_and_path("sms") # Check if the file exists if os.path.isfile(full_json_file_path): # Delete the file os.remove(full_json_file_path) print(f"{full_json_file_path} has been deleted.") return True else: print(f"{full_json_file_path} does not exist.") return False def wipe_email_data(): email_json_file_name, path_for_configs, email_full_json_file_path = return_profile_filename_and_path("email") # Check if the file exists if os.path.isfile(email_full_json_file_path): # Delete the file os.remove(email_full_json_file_path) print(f"{email_full_json_file_path} has been deleted.") return True else: print(f"{email_full_json_file_path} does not exist.") return False def get_email_data(): print("READ EMAIL CONFIG triggered") email_json_file_name, path_for_configs, email_full_json_file_path = return_profile_filename_and_path("email") # Check if the JSON file exists if os.path.exists(email_full_json_file_path): try: with open(email_full_json_file_path, 'r') as json_file: email_data = json.load(json_file) email_operator = email_data['email_operator'] full_email = email_data['full_email'] email_url = email_data['email_url'] email_password = email_data['email_password'] packed_email_data = (email_operator, full_email, email_url, email_password) return packed_email_data except: return "error" else: return False def wipe_location_and_proxy(): # then get the profile number & path: json_file_name, path_for_configs, full_json_file_path = return_profile_filename_and_path("sms") if os.path.exists(full_json_file_path): # if so get the data: with open(full_json_file_path, 'r') as json_file: data = json.load(json_file) # clear it: data['profile']['location'] = "" data['profile']['assigned_proxy'] = False try: # Update the JSON Profile with new data: with open(full_json_file_path, 'w') as json_file: json.dump(data, json_file, indent=4) return True # it worked: except: return "error" # if it does NOT exist: else: return True # If it does not exist already, then create it from scratch: def create_or_add_to_profile_config(config_file_data, peer_to_peer_billing_id, chosen_location, proxy_or_not, chosen_service, email_operator): # first check if the user disabled local data saving in the config file: do_we_want_logs = search_key_in_json(config_file_data, "local_data", True) if do_we_want_logs == False: return False else: # then get the profile number & path: json_file_name, path_for_configs, full_json_file_path = return_profile_filename_and_path("sms") if os.path.exists(full_json_file_path): # if so get the data: with open(full_json_file_path, 'r') as json_file: data = json.load(json_file) # If it's a blank location, then update it with the new choices: pre_existing_location = data['profile']['location'] if pre_existing_location == "": data['profile']['location'] = chosen_location data['profile']['assigned_proxy'] = proxy_or_not else: pass # Add the new order: data["orders"][peer_to_peer_billing_id] = { "chosen_service": chosen_service, "wants_sms": True, "completed": False } try: # Update the JSON Profile with new data: with open(full_json_file_path, 'w') as json_file: json.dump(data, json_file, indent=4) return True # it worked: #updated_json = json.dumps(data, indent=4) except: return "error" # if it does NOT exist: else: # We are creating a new Profile Config: # stock the JSON with values for a new profile: default_json_content = { "profile": { "location": chosen_location, "assigned_proxy": proxy_or_not, "got_proxy": False, "email_operator": email_operator }, "orders": { peer_to_peer_billing_id: { "chosen_service": chosen_service, "wants_sms": True, "completed": False } } } try: # Create the JSON file: with open(full_json_file_path, 'w') as json_file: json.dump(default_json_content, json_file, indent=4) return True # it worked: except: return "error" def return_all_locally_saved_orders_for_the_current_profile(): # get the path and other variables that are not needed, but have to be unpacked: json_file_name, path_for_configs, full_json_file_path = return_profile_filename_and_path("sms") # Check if the JSON file exists: if os.path.exists(full_json_file_path): # setup a list to save the orders: list_of_all_past_orders = [] try: # if so get the data: with open(full_json_file_path, 'r') as json_file: data = json.load(json_file) # Iterate through the orders & get their past details: for order in data["orders"]: chosen_service = data["orders"][order]["chosen_service"] completed = data["orders"][order]["completed"] order_data_as_tuple = (order, chosen_service, completed) list_of_all_past_orders.append(order_data_as_tuple) except: return False finally: return list_of_all_past_orders else: return False def delete_an_order(which_order): # get the profile number & path: json_file_name, path_for_configs, full_json_file_path = return_profile_filename_and_path("sms") if os.path.exists(full_json_file_path): # if so get the data: with open(full_json_file_path, 'r') as json_file: data = json.load(json_file) try: # delete it: del data["orders"][which_order] # Update the JSON Profile with new data: with open(full_json_file_path, 'w') as json_file: json.dump(data, json_file, indent=4) return True # it worked except: return "error" ''' # see if email operator is blank even though they have one from the past: if email_operator == None: # then get the profile number & path: json_file_name, path_for_configs, full_json_file_path = return_profile_filename_and_path("sms") try: with open(full_json_file_path, 'r') as json_file: data = json_file.load(json_file) email_operator = data[profile][email_operator] except: email_operator = None ''' #email_operator = None #full_email = "test@t.com" #email_password = "dd" #email_url = "aa.com" #config_file_data = "a" #setup_email_config(config_file_data, email_operator, full_email, email_password, email_url)