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

@author: v.popov
'''

import json
import logging  
import logging.config
import tempfile
from os import path

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, datafile):
    u'''Процедура для скачивания файлов в специальную директорию'''
    
    # Настройка логирования
#     logger_name = 'btz_excel_import'
#     log_file = tempfile.gettempdir() + "/" + logger_name + ".log"
#     log_file = path.dirname(path.abspath(__file__)) + "/" + logger_name + ".log"
    
#     logging.basicConfig(filename=log_file, filemode='w', level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s', datefmt='%d-%b-%y %H:%M:%S')
        
#     logger = logging.getLogger(logger_name)  
#     logger.setLevel(logging.INFO)
#     
#     logger_handler = logging.FileHandler(log_file)  
#     logger_handler.setLevel(logging.INFO)
#     
#     logger_format = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s', '%Y-%m-%d %H:%M:%S')
#     logger_handler.setFormatter(logger_format)
#     
#     logger.addHandler(logger_handler)
#     
#     logging.info(u'Начало загрузки файла %s', fileName)

    session = json.loads(session)
    catalog = QtiPackageCursor(context)
    attribute = QtiPackageAttributeCursor(context)
    theme = QtiThemeCursor(context)
    question = QtiQuestionCursor(context)
    destructor = QtiDestructorCursor(context)
     
    try:
        param = 'excel'
        package_id = convertTestHtml(datafile, fileName, catalog, attribute, theme, question, destructor, param)
        catalog.get(package_id)
        catalog.EditorID = session['sessioncontext']['sid']
        catalog.update()
#         logging.info(u'Загрузка файла %s завершёна', fileName)
    except Exception as e:
        context.error(u"Ошибка при загрузке файла: {}".format(e.message))
#         logging.error(u"Произошла ошибка при загрузке файла: {}".format(e.message))
    

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,
                        "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']

