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

@author: v.popov
'''

import json
import tempfile
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
    from ru.curs.showcase.app.api import UserMessage, MessageType
except:
    from ru.curs.celesta.showcase import JythonDTO, ResultSelectorData, DataRecord, UserMessage, MessageType
from ru.curs.celesta.showcase.utils import XMLJSONConverter
from qt._qt_orm import QtiPackageCursor, QtiThemeCursor, \
    QtiPackageAttributeCursor, QtiQuestionCursor, QtiDestructorCursor
from qt.functions import convertTestHtml


def attachmentUpload(context, main, add, filterinfo, session, elementId, xformsdata, fileName, file):
    u'''Процедура для скачивания файлов в специальную директорию'''

    session = json.loads(session)
    catalog = QtiPackageCursor(context)
    attribute = QtiPackageAttributeCursor(context)
    theme = QtiThemeCursor(context)
    question = QtiQuestionCursor(context)
    destructor = QtiDestructorCursor(context)
    
    tempFile = tempfile.NamedTemporaryFile('w+b', -1, '', 'tmp_%s' % fileName, dir=None, delete=True)
    while 1:
        onebyte = file.read()
        if onebyte == -1:
            break
        else:
            tempFile.write(chr(onebyte))
    tempFile.seek(0)
    try:
        param = json.loads(xformsdata)['schema']['context']['@param']
        package_id = convertTestHtml(tempFile, fileName, catalog, attribute, theme, question, destructor, param)
        catalog.get(package_id)
        catalog.EditorID = session['sessioncontext']['sid']
        catalog.update()
    except Exception as e:
        context.error(u"Произошла ошибка при загрузке файла: {}".format(e.message))
    tempFile.close()
    

def cardData(context, main=None, add=None, filterinfo=None, session=None, elementId=None):
    u'''Данные для карточки.'''
    # Структура данных
    xformsdata = {"schema": {
                    "context": {
                        "@id": "unique",
                        "@uploadStarted": '1',
                        "@message": u'Выберите, пожалуйста, файл.',
                        "@uploadMessage": u'Пожалуйста ждите. Загрузка может занять некоторое время.',
                        "@successMessage": u'Загрузка файла завершена!',
                        "@mode": add,
                        "@param": "mv",
                        "files1": ''}}}

    xformssettings = {"properties": {
                        "event": {
                            "@name":"single_click",
                            "@linkId": "1",
                            "action": {
                                "#sorted": [
                                    {"main_context": "current"},
                                    {"datapanel": {
                                        "@type": "current",
                                        "@tab": "current",
                                        "element": {"@id":"btzCatalogGrid",
                                        "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):
    session = json.loads(session)['sessioncontext']
