Loss of access to the form when transfering users with REST API

I am using a REST API to transfer users from a MySQL database to KoBo and tring to give access to the form i created. My code as follows

import mysql.connector as sql
import requests
import pandas as pd
from requests.auth import HTTPBasicAuth

DEBUG = False
hostname = ‘localhost’ # ‘some host’
database = ‘sql_database’
username = ‘sql_user’
password = ‘sql_password’
port = 3306

access_token_kpi = “token”
headers_kpi = {“Authorization”: "Token "+access_token_kpi}
access_token = “access_token”
project_id = ‘my_project_id’

db_connection = sql.connect(host=hostname, database=database, user=username, password=password, port=port)

sql_query = ‘some_query’

db_cursor = db_connection.cursor()

db_cursor.execute(sql)

table_rows = db_cursor.fetchall()

df = pd.DataFrame(table_rows)

df = pd.read_sql(sql_query, db_connection)

new_permissions = []
usernames = []

URLs

permission_url = “https://my_kobo_site.com/api/v2/assets/”+project_id+“/permission-assignments/”
permission_update_url = “https://my_kobo_site.com/api/v2/assets/” + project_id +“/permission-assignments/bulk/”
user_url = “https://my_kobo_site.com/authorized_application/users/”
headers = {“Authorization”: "Token "+access_token}
r = requests.get(permission_url, headers=headers)

_permissions = r.json()

for permission in _permissions:
p = permission.copy()
p.pop(“label”)
if p.get(“user”) == “https://my_kobo_site.com/api/v2/users/my_super_user/”:
continue
new_permissions.append(p)
username = p.get(“user”).split(“/”)[-2]
usernames.append(username)

new_user = False
for index, row in df.iterrows():
uname = “u” + row.get(“nic”).lower()
password = row.get(“password”)
first_name = row.get(“dsd”)
email = row.get(“email”)
last_name = row.get(“lname”)
data = {
“username”: uname,
“password”: password,
“first_name”: first_name,
“last_name”: last_name,
“email”: email
}
if uname in set(usernames):
continue

url = "https://my_kobo_site.com/me/"



new_user = True
print("Adding User: ", uname)
r = requests.post(user_url, headers=headers_kpi, data=data)
print(r.text)
user = requests.patch(url, auth=HTTPBasicAuth(uname, password))
if DEBUG:
    print("user_post", r.text)
additional_permissions = [{"user":"https://my_kobo_site.com/api/v2/users/"+uname +"/","permission":"https://my_kobo_site.com/api/v2/permissions/add_submissions/"}]
new_permissions = new_permissions + additional_permissions
usernames.append(uname)

if new_user:
r = requests.post(permission_update_url, headers=headers, json=new_permissions)
if DEBUG:
print(“permission”, r.text)

This code works fine and transferring users successfully. But when these users upload some data using APP, they are losing the access to the form, and unable to upload the collected data next time.

The problem is solved when i remove the user permission from Kobotoolbox and share the project with the user again.

Can anyone give a solution for this problem.?