Files
ThingsBoard/Code Snippets/addNewUsers.ipynb
2025-10-16 17:01:21 -05:00

500 lines
19 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"from tb_rest_client.rest_client_pe import *\n",
"from tb_rest_client.rest import ApiException\n",
"from tb_rest_client.api_client import *\n",
"import re, ast, json\n",
"from uuid import uuid4"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"url = \"https://hp.henrypump.cloud\"\n",
"username = \"nmelone@henry-pump.com\"\n",
"password = \"gzU6$26v42mU%3jDzTJf\"\n",
"userIdToCopy = \"7c07cf20-f33b-11ed-97ca-e57c88951dd5\"\n",
"entity_group_id=\"f7c13900-03b6-11ed-9235-5943addfc91e\"\n",
"default_dashboard = \"0f836040-03b7-11ed-b891-29857b87a6b2\""
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"data = [\n",
" \"Manuel Benavides - Manuel.Benavides@conocophillips.com\",\n",
" \"Bradley Armstrong - Bradley.R.Armstrong@conocophillips.com\",\n",
" \"Wesley Kennedy - Wesley.Kennedy@conocophillips.com\",\n",
" \"William Tarin - William.Tarin@conocophillips.com\",\n",
" \"Kevin Hinshaw - Kevin.C.Hinshaw@conocophillips.com\",\n",
" \"Sarah Pace - Sarah.Pace@conocophillips.com\",\n",
" \"Megan Dixon - Megan.Dixon@conocophillips.com\",\n",
" \"Billy Vaughn - Billy.M.Vaughn@conocophillips.com\",\n",
" \"Daniel Sanchez - Daniel.I.Sanchez@conocophillips.com\",\n",
" \"Conrado Vasquez - Conrado.Vasquez@conocophillips.com\",\n",
" \"Martin Hernandez - Martin.Hernandez@conocophillips.com\",\n",
" \"Jose Dominguez - Jose.Dominguez@conocophillips.com\",\n",
" \"Ector Castillo - Ector.Castillo@conocophillips.com\",\n",
" \"Miguel DeHoyos - Miguel.DeHoyos@conocophillips.com\"\n",
" ]"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"def checkUserExists(userEmail, rest_client):\n",
" resp = rest_client.get_user_users(page_size=100, page=0,text_search=userEmail)\n",
" resp = resp.to_dict()\n",
" if resp[\"total_elements\"] > 0:\n",
" return True\n",
" return False"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"def copyUser(userIdToCopy, rest_client):\n",
" resp = rest_client.get_user_by_id(userIdToCopy)\n",
" resp = resp.to_dict()\n",
" del resp[\"id\"]\n",
" del resp[\"tenant_id\"]\n",
" del resp[\"created_time\"]\n",
" return resp\n"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"def process_data(data,entity_group_id,default_dashboard):\n",
" result = []\n",
" for item in data:\n",
" parts = item.split(' - ')\n",
" first_last_name = parts[0].split()\n",
" first_name = first_last_name[0]\n",
" last_name = ' '.join(first_last_name[1:])\n",
" email = parts[1]\n",
" phone = ''\n",
" if len(parts) > 2:\n",
" phone = '+1' + re.sub(r'\\D', '', parts[2])\n",
" \n",
" owner_id = {\n",
" \"id\": entity_group_id,\n",
" \"entity_type\": \"CUSTOMER\"\n",
" }\n",
" if default_dashboard:\n",
" additionalInfo = {\n",
" \"description\": \"\",\n",
" \"defaultDashboardId\": default_dashboard,\n",
" \"defaultDashboardFullscreen\": False,\n",
" \"homeDashboardId\": default_dashboard,\n",
" \"homeDashboardHideToolbar\": False,\n",
" \"userCredentialsEnabled\": True\n",
" }\n",
" else:\n",
" additionalInfo = {}\n",
" \n",
" result.append({\n",
" \"email\": email,\n",
" \"authority\": \"CUSTOMER_USER\",\n",
" \"firstName\": first_name,\n",
" \"lastName\": last_name,\n",
" \"phone\": phone,\n",
" \"additionalInfo\": additionalInfo,\n",
" \"ownerId\": owner_id\n",
" })\n",
" \n",
" return result"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"filtered_users = process_data(data, entity_group_id=entity_group_id,default_dashboard=default_dashboard)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{\n",
" \"email\": \"Manuel.Benavides@conocophillips.com\",\n",
" \"authority\": \"CUSTOMER_USER\",\n",
" \"firstName\": \"Manuel\",\n",
" \"lastName\": \"Benavides\",\n",
" \"phone\": \"\",\n",
" \"additionalInfo\": {\n",
" \"description\": \"\",\n",
" \"defaultDashboardId\": \"0f836040-03b7-11ed-b891-29857b87a6b2\",\n",
" \"defaultDashboardFullscreen\": false,\n",
" \"homeDashboardId\": \"0f836040-03b7-11ed-b891-29857b87a6b2\",\n",
" \"homeDashboardHideToolbar\": false,\n",
" \"userCredentialsEnabled\": true\n",
" },\n",
" \"ownerId\": {\n",
" \"id\": \"f7c13900-03b6-11ed-9235-5943addfc91e\",\n",
" \"entity_type\": \"CUSTOMER\"\n",
" }\n",
"}\n",
"{\n",
" \"email\": \"Bradley.R.Armstrong@conocophillips.com\",\n",
" \"authority\": \"CUSTOMER_USER\",\n",
" \"firstName\": \"Bradley\",\n",
" \"lastName\": \"Armstrong\",\n",
" \"phone\": \"\",\n",
" \"additionalInfo\": {\n",
" \"description\": \"\",\n",
" \"defaultDashboardId\": \"0f836040-03b7-11ed-b891-29857b87a6b2\",\n",
" \"defaultDashboardFullscreen\": false,\n",
" \"homeDashboardId\": \"0f836040-03b7-11ed-b891-29857b87a6b2\",\n",
" \"homeDashboardHideToolbar\": false,\n",
" \"userCredentialsEnabled\": true\n",
" },\n",
" \"ownerId\": {\n",
" \"id\": \"f7c13900-03b6-11ed-9235-5943addfc91e\",\n",
" \"entity_type\": \"CUSTOMER\"\n",
" }\n",
"}\n",
"{\n",
" \"email\": \"Wesley.Kennedy@conocophillips.com\",\n",
" \"authority\": \"CUSTOMER_USER\",\n",
" \"firstName\": \"Wesley\",\n",
" \"lastName\": \"Kennedy\",\n",
" \"phone\": \"\",\n",
" \"additionalInfo\": {\n",
" \"description\": \"\",\n",
" \"defaultDashboardId\": \"0f836040-03b7-11ed-b891-29857b87a6b2\",\n",
" \"defaultDashboardFullscreen\": false,\n",
" \"homeDashboardId\": \"0f836040-03b7-11ed-b891-29857b87a6b2\",\n",
" \"homeDashboardHideToolbar\": false,\n",
" \"userCredentialsEnabled\": true\n",
" },\n",
" \"ownerId\": {\n",
" \"id\": \"f7c13900-03b6-11ed-9235-5943addfc91e\",\n",
" \"entity_type\": \"CUSTOMER\"\n",
" }\n",
"}\n",
"{\n",
" \"email\": \"William.Tarin@conocophillips.com\",\n",
" \"authority\": \"CUSTOMER_USER\",\n",
" \"firstName\": \"William\",\n",
" \"lastName\": \"Tarin\",\n",
" \"phone\": \"\",\n",
" \"additionalInfo\": {\n",
" \"description\": \"\",\n",
" \"defaultDashboardId\": \"0f836040-03b7-11ed-b891-29857b87a6b2\",\n",
" \"defaultDashboardFullscreen\": false,\n",
" \"homeDashboardId\": \"0f836040-03b7-11ed-b891-29857b87a6b2\",\n",
" \"homeDashboardHideToolbar\": false,\n",
" \"userCredentialsEnabled\": true\n",
" },\n",
" \"ownerId\": {\n",
" \"id\": \"f7c13900-03b6-11ed-9235-5943addfc91e\",\n",
" \"entity_type\": \"CUSTOMER\"\n",
" }\n",
"}\n",
"{\n",
" \"email\": \"Kevin.C.Hinshaw@conocophillips.com\",\n",
" \"authority\": \"CUSTOMER_USER\",\n",
" \"firstName\": \"Kevin\",\n",
" \"lastName\": \"Hinshaw\",\n",
" \"phone\": \"\",\n",
" \"additionalInfo\": {\n",
" \"description\": \"\",\n",
" \"defaultDashboardId\": \"0f836040-03b7-11ed-b891-29857b87a6b2\",\n",
" \"defaultDashboardFullscreen\": false,\n",
" \"homeDashboardId\": \"0f836040-03b7-11ed-b891-29857b87a6b2\",\n",
" \"homeDashboardHideToolbar\": false,\n",
" \"userCredentialsEnabled\": true\n",
" },\n",
" \"ownerId\": {\n",
" \"id\": \"f7c13900-03b6-11ed-9235-5943addfc91e\",\n",
" \"entity_type\": \"CUSTOMER\"\n",
" }\n",
"}\n",
"{\n",
" \"email\": \"Sarah.Pace@conocophillips.com\",\n",
" \"authority\": \"CUSTOMER_USER\",\n",
" \"firstName\": \"Sarah\",\n",
" \"lastName\": \"Pace\",\n",
" \"phone\": \"\",\n",
" \"additionalInfo\": {\n",
" \"description\": \"\",\n",
" \"defaultDashboardId\": \"0f836040-03b7-11ed-b891-29857b87a6b2\",\n",
" \"defaultDashboardFullscreen\": false,\n",
" \"homeDashboardId\": \"0f836040-03b7-11ed-b891-29857b87a6b2\",\n",
" \"homeDashboardHideToolbar\": false,\n",
" \"userCredentialsEnabled\": true\n",
" },\n",
" \"ownerId\": {\n",
" \"id\": \"f7c13900-03b6-11ed-9235-5943addfc91e\",\n",
" \"entity_type\": \"CUSTOMER\"\n",
" }\n",
"}\n",
"{\n",
" \"email\": \"Megan.Dixon@conocophillips.com\",\n",
" \"authority\": \"CUSTOMER_USER\",\n",
" \"firstName\": \"Megan\",\n",
" \"lastName\": \"Dixon\",\n",
" \"phone\": \"\",\n",
" \"additionalInfo\": {\n",
" \"description\": \"\",\n",
" \"defaultDashboardId\": \"0f836040-03b7-11ed-b891-29857b87a6b2\",\n",
" \"defaultDashboardFullscreen\": false,\n",
" \"homeDashboardId\": \"0f836040-03b7-11ed-b891-29857b87a6b2\",\n",
" \"homeDashboardHideToolbar\": false,\n",
" \"userCredentialsEnabled\": true\n",
" },\n",
" \"ownerId\": {\n",
" \"id\": \"f7c13900-03b6-11ed-9235-5943addfc91e\",\n",
" \"entity_type\": \"CUSTOMER\"\n",
" }\n",
"}\n",
"{\n",
" \"email\": \"Billy.M.Vaughn@conocophillips.com\",\n",
" \"authority\": \"CUSTOMER_USER\",\n",
" \"firstName\": \"Billy\",\n",
" \"lastName\": \"Vaughn\",\n",
" \"phone\": \"\",\n",
" \"additionalInfo\": {\n",
" \"description\": \"\",\n",
" \"defaultDashboardId\": \"0f836040-03b7-11ed-b891-29857b87a6b2\",\n",
" \"defaultDashboardFullscreen\": false,\n",
" \"homeDashboardId\": \"0f836040-03b7-11ed-b891-29857b87a6b2\",\n",
" \"homeDashboardHideToolbar\": false,\n",
" \"userCredentialsEnabled\": true\n",
" },\n",
" \"ownerId\": {\n",
" \"id\": \"f7c13900-03b6-11ed-9235-5943addfc91e\",\n",
" \"entity_type\": \"CUSTOMER\"\n",
" }\n",
"}\n",
"{\n",
" \"email\": \"Daniel.I.Sanchez@conocophillips.com\",\n",
" \"authority\": \"CUSTOMER_USER\",\n",
" \"firstName\": \"Daniel\",\n",
" \"lastName\": \"Sanchez\",\n",
" \"phone\": \"\",\n",
" \"additionalInfo\": {\n",
" \"description\": \"\",\n",
" \"defaultDashboardId\": \"0f836040-03b7-11ed-b891-29857b87a6b2\",\n",
" \"defaultDashboardFullscreen\": false,\n",
" \"homeDashboardId\": \"0f836040-03b7-11ed-b891-29857b87a6b2\",\n",
" \"homeDashboardHideToolbar\": false,\n",
" \"userCredentialsEnabled\": true\n",
" },\n",
" \"ownerId\": {\n",
" \"id\": \"f7c13900-03b6-11ed-9235-5943addfc91e\",\n",
" \"entity_type\": \"CUSTOMER\"\n",
" }\n",
"}\n",
"{\n",
" \"email\": \"Conrado.Vasquez@conocophillips.com\",\n",
" \"authority\": \"CUSTOMER_USER\",\n",
" \"firstName\": \"Conrado\",\n",
" \"lastName\": \"Vasquez\",\n",
" \"phone\": \"\",\n",
" \"additionalInfo\": {\n",
" \"description\": \"\",\n",
" \"defaultDashboardId\": \"0f836040-03b7-11ed-b891-29857b87a6b2\",\n",
" \"defaultDashboardFullscreen\": false,\n",
" \"homeDashboardId\": \"0f836040-03b7-11ed-b891-29857b87a6b2\",\n",
" \"homeDashboardHideToolbar\": false,\n",
" \"userCredentialsEnabled\": true\n",
" },\n",
" \"ownerId\": {\n",
" \"id\": \"f7c13900-03b6-11ed-9235-5943addfc91e\",\n",
" \"entity_type\": \"CUSTOMER\"\n",
" }\n",
"}\n",
"{\n",
" \"email\": \"Martin.Hernandez@conocophillips.com\",\n",
" \"authority\": \"CUSTOMER_USER\",\n",
" \"firstName\": \"Martin\",\n",
" \"lastName\": \"Hernandez\",\n",
" \"phone\": \"\",\n",
" \"additionalInfo\": {\n",
" \"description\": \"\",\n",
" \"defaultDashboardId\": \"0f836040-03b7-11ed-b891-29857b87a6b2\",\n",
" \"defaultDashboardFullscreen\": false,\n",
" \"homeDashboardId\": \"0f836040-03b7-11ed-b891-29857b87a6b2\",\n",
" \"homeDashboardHideToolbar\": false,\n",
" \"userCredentialsEnabled\": true\n",
" },\n",
" \"ownerId\": {\n",
" \"id\": \"f7c13900-03b6-11ed-9235-5943addfc91e\",\n",
" \"entity_type\": \"CUSTOMER\"\n",
" }\n",
"}\n",
"{\n",
" \"email\": \"Jose.Dominguez@conocophillips.com\",\n",
" \"authority\": \"CUSTOMER_USER\",\n",
" \"firstName\": \"Jose\",\n",
" \"lastName\": \"Dominguez\",\n",
" \"phone\": \"\",\n",
" \"additionalInfo\": {\n",
" \"description\": \"\",\n",
" \"defaultDashboardId\": \"0f836040-03b7-11ed-b891-29857b87a6b2\",\n",
" \"defaultDashboardFullscreen\": false,\n",
" \"homeDashboardId\": \"0f836040-03b7-11ed-b891-29857b87a6b2\",\n",
" \"homeDashboardHideToolbar\": false,\n",
" \"userCredentialsEnabled\": true\n",
" },\n",
" \"ownerId\": {\n",
" \"id\": \"f7c13900-03b6-11ed-9235-5943addfc91e\",\n",
" \"entity_type\": \"CUSTOMER\"\n",
" }\n",
"}\n",
"{\n",
" \"email\": \"Ector.Castillo@conocophillips.com\",\n",
" \"authority\": \"CUSTOMER_USER\",\n",
" \"firstName\": \"Ector\",\n",
" \"lastName\": \"Castillo\",\n",
" \"phone\": \"\",\n",
" \"additionalInfo\": {\n",
" \"description\": \"\",\n",
" \"defaultDashboardId\": \"0f836040-03b7-11ed-b891-29857b87a6b2\",\n",
" \"defaultDashboardFullscreen\": false,\n",
" \"homeDashboardId\": \"0f836040-03b7-11ed-b891-29857b87a6b2\",\n",
" \"homeDashboardHideToolbar\": false,\n",
" \"userCredentialsEnabled\": true\n",
" },\n",
" \"ownerId\": {\n",
" \"id\": \"f7c13900-03b6-11ed-9235-5943addfc91e\",\n",
" \"entity_type\": \"CUSTOMER\"\n",
" }\n",
"}\n",
"{\n",
" \"email\": \"Miguel.DeHoyos@conocophillips.com\",\n",
" \"authority\": \"CUSTOMER_USER\",\n",
" \"firstName\": \"Miguel\",\n",
" \"lastName\": \"DeHoyos\",\n",
" \"phone\": \"\",\n",
" \"additionalInfo\": {\n",
" \"description\": \"\",\n",
" \"defaultDashboardId\": \"0f836040-03b7-11ed-b891-29857b87a6b2\",\n",
" \"defaultDashboardFullscreen\": false,\n",
" \"homeDashboardId\": \"0f836040-03b7-11ed-b891-29857b87a6b2\",\n",
" \"homeDashboardHideToolbar\": false,\n",
" \"userCredentialsEnabled\": true\n",
" },\n",
" \"ownerId\": {\n",
" \"id\": \"f7c13900-03b6-11ed-9235-5943addfc91e\",\n",
" \"entity_type\": \"CUSTOMER\"\n",
" }\n",
"}\n"
]
}
],
"source": [
"with RestClientPE(base_url=url) as rest_client:\n",
" try:\n",
" rest_client.login(username=username, password=password)\n",
" if userIdToCopy:\n",
" templateUser = copyUser(userIdToCopy=userIdToCopy, rest_client=rest_client)\n",
" #templateUser[\"additionalInfo\"] = ast.literal_eval(templateUser['additional_info'].replace(\"'\", '\"'))\n",
" del templateUser[\"additional_info\"]\n",
" else:\n",
" templateUser = {\n",
" \"email\": \"user@example.com\",\n",
" \"authority\": \"CUSTOMER_USER\",\n",
" \"firstName\": \"John\",\n",
" \"lastName\": \"Doe\",\n",
" \"phone\": \"38012345123\",\n",
" \"additionalInfo\": {},\n",
" \"ownerId\": {\n",
" \"id\": \"efe3a0d0-bb6b-11ec-9326-ad8278896f52\",\n",
" \"entityType\": \"CUSTOMER\"\n",
" }\n",
" }\n",
" for user in filtered_users:\n",
" if not checkUserExists(user[\"email\"], rest_client=rest_client):\n",
" \n",
" \"\"\"\n",
" templateUser[\"email\"] = user[\"email\"]\n",
" templateUser[\"name\"] = user[\"email\"]\n",
" templateUser[\"firstName\"] = user[\"information\"][\"first\"]\n",
" templateUser[\"lastName\"] = user[\"information\"][\"last\"]\n",
" if user[\"phone\"]:\n",
" templateUser[\"phone\"] = \"+1\" + \"\".join(user[\"phone\"].split(\"-\"))\n",
" else:\n",
" templateUser[\"phone\"] = \"\"\n",
" \"\"\"\n",
" print(json.dumps(user, indent=4))\n",
" rest_client.save_user(send_activation_mail=False, body=user, entity_group_id=entity_group_id)\n",
" except ApiException as e:\n",
" print(e)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"templateUser[\"additional_info\"][\"userActivated\"]"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "tbreport",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.13.1"
}
},
"nbformat": 4,
"nbformat_minor": 2
}