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

@author: i.lopatin

'''
import json
import uuid

from ru.curs.celesta.showcase.utils import XMLJSONConverter
from qt._qt_orm import QtiQuestionCursor, QtiThemeCursor, QtiDestructorCursor



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'''Процедура для отрисовки данных карточки. '''
    u"""В карточке присутствует одна кнопка - 'Перейти к отладке'"""
    u"""При нажатии на кнопку открывается новая страница с заданным адресом (переменная extLink)"""

    u"""Курсоры для таблицы вопросов и тем"""
    question = QtiQuestionCursor(context)
    theme = QtiThemeCursor(context)
    qti_destructor = QtiDestructorCursor(context)
    u"""Основа для внешней ссылки, по которой происходит переход"""
    extLink = "&mode=question&package="

    u"""Получение набора данных о гриде"""
    gridContext = json.loads(session)['sessioncontext']['related']['gridContext']
    
    u"""Проверка присутствия выделенных записей"""           
    if 'selectedRecordId' in gridContext:
        selectedRecordId = gridContext['selectedRecordId']
        u"""Приведение данных о выделенных записях к списку"""
        if  not isinstance(selectedRecordId, list):
            selectedRecordId = [selectedRecordId]
            
    u"""Флаг для выполнения дейсвтия один раз"""
    counter = 1  
    emptyFlag = False
    emptyText = ''
    u"""Проход по всем выделенным записям / формирование внешней ссылки"""  
    for record in selectedRecordId:
        question.get(record)
        qti_destructor.setRange('QuestionID',record)
        if qti_destructor.count() == 0:
            emptyFlag = True
            emptyText = u'Вопрос №%d не содержит вариантов ответа'%question.QuestionOrder
        if counter == 1:
            themeId = question.ThemeID
            theme.get(themeId)
            extLink += theme.PackageID
            ucode = unicode(uuid.uuid4())
            extLink += "&param=" + ucode
            extLink += "&question=" + question.QuestionID
            counter += 1 
        else:
            extLink += "&question=" + question.QuestionID 
    
    u"""Данные для карточки"""     
    xformsdata = {"schema":{"questionData": {"@add":add,
                                            "@PackageID": theme.PackageID,
                                            "@uuid": ucode,
                                            "@empty": "true" if emptyFlag else "false",
                                            "@emptyText": emptyText
                                           }
                            }
                  }
   
    
    u"""Начальные настройки карточки"""
    xformssettings = {"properties":{"event":
                        {"@name":"single_click",
                                 "@linkId": "1",
                                 "action":{
                                    "#sorted": 
                                       [
                                        {"main_context": "current"},
                                        {"datapanel":
                                            {"@type": "current",
                                                 "@tab": "current",
                                                 "element": {"@id":"debugQuestionCard",
                                                             "add_context": "hide"
                                                            }
                                            },
                                        },
                                       
                         {"client": 
                            {"activity": 
                                [
                                    {
                                     "@id": "debugQuestion",
                                     "@name": "goToTest",
                                     "add_context": extLink
                                     }
                                 ]

                            }
                          }             ]
                                 
                                            },
                                 }
                        
                        }
          }
    
    return JythonDTO(XMLJSONConverter.jsonToXml(json.dumps(xformsdata)),
                     XMLJSONConverter.jsonToXml(json.dumps(xformssettings))
                     )
 

