fix: add_sub_distributor_admin - 用orgtypeid+name查role, 补parentid+org_type
This commit is contained in:
parent
9afb3c279b
commit
e7a4535423
@ -10,7 +10,7 @@ if not userorgid:
|
|||||||
dbname = get_module_dbname('supplychain')
|
dbname = get_module_dbname('supplychain')
|
||||||
async with DBPools().sqlorContext(dbname) as sor:
|
async with DBPools().sqlorContext(dbname) as sor:
|
||||||
recs = await sor.sqlExe(
|
recs = await sor.sqlExe(
|
||||||
'SELECT id, sub_dist_name FROM sub_distributors WHERE id = ${sid}$',
|
'SELECT id, sub_dist_name, resellerid FROM sub_distributors WHERE id = ${sid}$',
|
||||||
{'sid': sub_distributor_id}
|
{'sid': sub_distributor_id}
|
||||||
)
|
)
|
||||||
if not recs:
|
if not recs:
|
||||||
@ -21,14 +21,25 @@ org_id = sd.id
|
|||||||
admin_username = f'admin_{sub_distributor_id[:8]}'
|
admin_username = f'admin_{sub_distributor_id[:8]}'
|
||||||
|
|
||||||
async with DBPools().sqlorContext('sage') as sor_sage:
|
async with DBPools().sqlorContext('sage') as sor_sage:
|
||||||
# Check/ensure org exists
|
parent_reseller_id = sd.resellerid if hasattr(sd, 'resellerid') else '0'
|
||||||
|
|
||||||
|
# Check/ensure org exists with correct parentid and org_type
|
||||||
org_recs = await sor_sage.sqlExe(
|
org_recs = await sor_sage.sqlExe(
|
||||||
'SELECT id FROM organization WHERE id = ${oid}$', {'oid': org_id}
|
'SELECT id FROM organization WHERE id = ${oid}$', {'oid': org_id}
|
||||||
)
|
)
|
||||||
if not org_recs:
|
if not org_recs:
|
||||||
await sor_sage.C('organization', {
|
await sor_sage.C('organization', {
|
||||||
'id': org_id, 'orgname': sd.sub_dist_name,
|
'id': org_id, 'orgname': sd.sub_dist_name,
|
||||||
|
'org_type': 'reseller', 'parentid': parent_reseller_id,
|
||||||
})
|
})
|
||||||
|
else:
|
||||||
|
# Fix missing parentid/org_type on existing org
|
||||||
|
org = org_recs[0]
|
||||||
|
if not getattr(org, 'parentid', None) or org.parentid == '0':
|
||||||
|
await sor_sage.sqlExe(
|
||||||
|
'UPDATE organization SET parentid = ${pid}$, org_type = ${ot}$ WHERE id = ${oid}$',
|
||||||
|
{'pid': parent_reseller_id, 'ot': 'reseller', 'oid': org_id}
|
||||||
|
)
|
||||||
|
|
||||||
# Check if admin already exists
|
# Check if admin already exists
|
||||||
user_recs = await sor_sage.sqlExe(
|
user_recs = await sor_sage.sqlExe(
|
||||||
@ -55,9 +66,10 @@ async with DBPools().sqlorContext('sage') as sor_sage:
|
|||||||
'user_status': '1',
|
'user_status': '1',
|
||||||
})
|
})
|
||||||
|
|
||||||
# Assign roles: logined + reseller.admin + reseller.operator
|
# Assign roles: reseller.admin + reseller.operator
|
||||||
for role_name in ['logined', 'reseller.admin', 'reseller.operator']:
|
# (logined is auto-added by get_userroles(), no need to assign)
|
||||||
role_recs = await sor_sage.R('role', {'role': role_name})
|
for orgtypeid, role_name in [('reseller', 'admin'), ('reseller', 'operator')]:
|
||||||
|
role_recs = await sor_sage.R('role', {'orgtypeid': orgtypeid, 'name': role_name})
|
||||||
if role_recs:
|
if role_recs:
|
||||||
await sor_sage.C('userrole', {
|
await sor_sage.C('userrole', {
|
||||||
'id': getID(), 'userid': user_id, 'roleid': role_recs[0].id,
|
'id': getID(), 'userid': user_id, 'roleid': role_recs[0].id,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user