# coding: utf-8
'''
Created on 14.01.2016

@author: i.lopatin

'''
import json
import uuid




from ru.curs.celesta.showcase.utils import XMLJSONConverter
from qt._qt_orm import QtiPackageCursor

from qt._qt_orm import QtiPackageAttributeCursor

try:
    from ru.curs.showcase.core.jython import JythonDTO
    from ru.curs.showcase.core.selector import ResultSelectorData
    from ru.beta2.extra.gwt.ui.selector.api import DataRecord
except:
    from ru.curs.celesta.showcase import JythonDTO, DataRecord, ResultSelectorData

def cardData(context, main=None, add=None, filterinfo=None, session=None, elementId=None):
   
    u'''Процедура для отрисовки данных карточки. '''

    attribute = QtiPackageAttributeCursor(context)

    u"""Получение набора всего набора полей из данной таблицы"""
    gridContext = json.loads(session)['sessioncontext']['related']['gridContext']
    
    u"""Получение id аттрибута выделенной записи"""    
    for grid in gridContext:
        if grid["@id"] == "btzAttributesGrid":
            currAttributeId = grid.get("currentRecordId")   
             
    u"""Выбор карточки 'Редактировать' или 'Удалить'"""
    if add == 'edit':
        if currAttributeId:
            attribute.get(currAttributeId)  
    
    u"""Данные для полей на карточке"""    
    xformsdata = {"schema":{"attributeData": {"@add":add,
                                            "@AttributeName": attribute.AttributeName,
                                            "@AttributeValue": attribute.AttributeValue,
                                            "@PackageID": attribute.PackageID,
                                           }
                            }
                  }
    
    xformssettings = {"properties":{"event":{"@name":"single_click",
                                             "@linkId": "1",
                                             "action":{
                                                  "#sorted": [
                                                      {"main_context": "current"},
                                                      {"datapanel": {"@type": "current",
                                                                     "@tab": "current",
                                                                     "element": {"@id":"btzAttributesGrid",
                                                                                 "add_context": ""}
                                                                     }
                                                      }]}
                                             },
                                    
                                    }
                      }
    
    return JythonDTO(XMLJSONConverter.jsonToXml(json.dumps(xformsdata)),
                     XMLJSONConverter.jsonToXml(json.dumps(xformssettings))
                     )


def cardDataSave(context, main=None, add=None, filterinfo=None, session=None, elementId=None, xformsdata=None):    
    u'''Процедура сохранения'''  

    u"""Получение набора полей, в которых будут проводиться изменения"""  
    content = json.loads(xformsdata)["schema"]["attributeData"]

    u"""Получение набора всего набора полей из данной таблицы"""
    idContent = json.loads(session)['sessioncontext']['related']['gridContext']
    
    u"""Создание курсоров для таблиц qtiThemes, numbersSeries и linesOfNumbersSeries"""
    attribute = QtiPackageAttributeCursor(context)
    catalog = QtiPackageCursor(context)

    u""" Проверка выбранной карточки"""
    if add == "add":  
        u"""Записываем в поле ThemeID сгенерированный id"""
        attribute.AttributeID = unicode(uuid.uuid4())
        for grid in idContent:
            if grid["@id"] == "btzCatalogGrid":
                currentPackageId = grid['currentRecordId']
                attribute.PackageID = currentPackageId
                        
    elif add == "edit":
        for grid in idContent:
            if grid["@id"] == "btzAttributesGrid":
                currAttributeId = grid['currentRecordId']
                attribute.get(currAttributeId)

    attribute.AttributeName = content["@AttributeName"]
    attribute.AttributeValue = content["@AttributeValue"]
 
            
    u""" Обновление, удаление, и редактирование для соответсвующей карточки"""
    if add == "add":
        attribute.insert()
    elif add == "edit":
        attribute.update()

    context.message(u"Данные сохранены")

