#!/usr/bin/env python3

# coding: utf-8
"""
Закрепление виртуальной машины за администратором.
"""

import os
import sys

# чтобы сработал запуск из другой директории и импорт всего чего надо
for func in (os.chdir, sys.path.append):
    func('/opt/crm')

from patch.include import *


def parse_args():
    """ Разбор аргументов"""
    parser = argparse.ArgumentParser()
    parser.description = "Вписываем email админа в CRM."
    parser.add_argument('--admin', '--admin', required=True, type=str, help='Email администратора')
    return parser.parse_args()


def rename_admin(email):
    def_admin = 'default.admin@crm.evacrm.ru'
    admin = models.CmfPerson.get(login=def_admin, fields=['login', 'email', 'phone', 'rg_member_of'])
    assert admin, "Не найдена стандартная учётная запись администратора CRM"
    admin.code = admin.login = admin.email = email
    admin.name = email.split('@')[0]
    admin.rg_member_of = ['Admins', 'Users']
    # Возможно здесь дублируется запрос к аккаунту models.CmfPerson.account_sync_users.apply()
    admin.save()


@app_context(commit=True)
def main():
    logging.basicConfig(level=logging.INFO, format="%(message)s")
    args = parse_args()
    rename_admin(args.admin)
    # Вроде как и здесь надо коммит делать перед синхронизацией.
    # commit()
    # Синхронизация account. На stage1 нужно чтобы прописать acrm25333:Users acrm25333:Admins
    models.CmfPerson.account_sync_users.apply()


if __name__ == '__main__':
    main()
