# coding: utf-8
'''
Created on 13 нояб. 2017 г.

@author: dgulyakin
'''
import json

from ru.curs.celesta.showcase.utils import XMLJSONConverter
from nci._nci_orm import global_settingsCursor
from nci import generalSettings
try:
    from ru.curs.showcase.core.jython import JythonDTO
except:
    from ru.curs.celesta.showcase import JythonDTO

def cardData(context, main=None, add=None, filterinfo=None, session=None, elementId=None):
    u'''Карточка глобальных параметров'''    
    xformsdata = {"schema": {"@xmlns":"", "#sorted": []}}
    
    global_settings = global_settingsCursor(context)
    for item in global_settings.iterate():
        xformsdata["schema"]["#sorted"].append({"param": {
                                                    "@id": item.id,
                                                    "name": item.name,
                                                    "value": item.value}})
    global_settings.close()
    
    xformssettings = {"properties": {
                        "event": [
                            {"@name":"single_click",
                             "@linkId": "1",
                             "action": {
                                '#sorted': [
                                    {"main_context": "current"},
                                    {"datapanel": {"@type": "current",
                                        "@tab": "current",
                                        "element": {
                                            "@id":"globalSettings",
                                            "add_context": ""}}}]}}]}}

    return JythonDTO(XMLJSONConverter.jsonToXml(json.dumps(xformsdata)),
                     XMLJSONConverter.jsonToXml(json.dumps(xformssettings)))
    
def cardSave(context, main=None, add=None, filterinfo=None, session=None, elementId=None, xformsdata=None):
    u'''Сохранение глобальных параметров'''
    global_settings = global_settingsCursor(context)
    data = json.loads(xformsdata)["schema"]["param"]
    if isinstance(data, dict):
        data = [data]
    for param in data:
        if global_settings.tryGet(param['@id']):
            global_settings.value = param['value']
            global_settings.update()
    global_settings.close()
    generalSettings.globalSettings = {}
    context.message(u'Настройки успешно изменены')