from django.forms.models import model_to_dict

from utils.rpc import get_rpc_invoker, logging_exception
from user_hierarchy.models import UserGrowthValue


def sync_user_level(user_growth_ids: list):
    """同步用户等级到 gaia。"""

    if not user_growth_ids or not isinstance(user_growth_ids, list):
        return

    users = UserGrowthValue.objects.filter(pk__in=user_growth_ids).values("user_id", "level")
    if users:
        # users = [model_to_dict(user) for user in users]
        rpc_update_user_level(list(users))


def rpc_update_user_level(users: list):
    """rpc调用修改对应用户的等级。

    users是一个字典列表。
        例如:users = [
            {'user_id': 1212, 'level': 2},
            {'user_id': 5432, 'level': 3},
            {'user_id': 5436, 'level': 3},
        ]
    """

    try:
        r = get_rpc_invoker()
        r['api/user/update_level_list'](users_list=users).unwrap()
    except:
        logging_exception()