jcloude/press/patches/v0_0_1/user_account_to_team.py
2025-12-23 21:34:08 +08:00

51 lines
1.5 KiB
Python

# -*- coding: utf-8 -*-
# Copyright (c) 2020, JINGROW
# For license information, please see license.txt
import jingrow
def execute():
jingrow.reload_pg("jcloude", "pagetype", "site")
jingrow.reload_pg("jcloude", "pagetype", "account_request")
jingrow.reload_pg("jcloude", "pagetype", "team")
jingrow.reload_pg("jcloude", "pagetype", "team_member")
user_accounts = jingrow.db.sql(
"SELECT user, account_key, creation FROM `tabUser Account`", as_dict=1
)
enabled_users = [d.name for d in jingrow.db.get_all("User", {"enabled": 1}, ["name"])]
users = [d.user for d in user_accounts]
# create team for Administrator too
if "Administrator" not in users:
user_accounts.append(jingrow._dict({"user": "Administrator"}))
for d in user_accounts:
if not d.user:
continue
# create team
team = jingrow.new_pg("Team")
team.name = d.user
team.append("team_members", {"user": d.user})
team.enabled = d.user in enabled_users
team.creation = d.creation
team.modified = d.modified
team.insert()
# create account request
if d.account_key:
account_request = jingrow.new_pg("Account Request")
account_request.request_key = d.account_key
account_request.email = d.user
account_request.team = d.user
account_request.role = "Jcloude Admin"
account_request.creation = d.creation
account_request.insert()
# update team in sites
jingrow.db.set_value("Site", {"owner": d.user}, "team", team.name)
jingrow.delete_pg_if_exists("PageType", "User Account")