# coding: utf-8


import json

from nci._nci_orm import vw_status_model_statusCursor
from edu._edu_orm import course_cycleCursor
from security.functions import userHasPermission
from ru.curs.celesta.showcase.utils import XMLJSONConverter
from datetime import datetime
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



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

    record_id = json.loads(session)['sessioncontext']['related']['gridContext']['currentRecordId']
    course_cycle = course_cycleCursor(context)
    course_cycle.get(record_id)

    # Структура данных
    xformsdata = {"schema":
                  {"@xmlns":"",
                    "data":
                        {
                        "record_id": record_id,
                         "oldstatus": course_cycle.status_id,
                         "newstatus": course_cycle.status_id,
                         "comment": ""
                         }

                    }
                  }

    # действия в зависимости от статуса
    vw_status_model_status = vw_status_model_statusCursor(context)
    vw_status_model_status.setRange('model_id', 5)
    print vw_status_model_status.count(), '////////////'
    vw_status_model_status.setRange('status_id1', course_cycle.status_id)
    print course_cycle.status_id, '|||||||||||||'
    xformsdata['schema']['data']['actions'] = []
    xformsdata['schema']['data']['actions'].append({'@label': u'Оставить в текущем статусе',
                                                     '@value': int(course_cycle.status_id)})
    print vw_status_model_status.count(), '++++++++++'
    for vw_status_model_status in vw_status_model_status.iterate():
#         if vw_status_model_s
#         if not userHasPermission(context,sid)

        xformsdata['schema']['data']['actions'].append({'@label': vw_status_model_status.transition_text,
                                                     '@value': int(vw_status_model_status.status_id2)})

   
    # Первоначальная xformssettings
    xformssettings = {"properties":{"event":[{"@name":"single_click",
                                             "@linkId": "1",
                                             "action":{"@keep_user_settings": "true",
                                                      '#sorted': [
                                                          {"main_context": "current"},
                                                          {"datapanel": {"@type": "current",
                                                                     "@tab": "current",
                                                                     "element": {"@id":'courseCycleGrid',
                                                                                 "add_context": ""
                                                                                 }
                                                                     }}]
                                                       }
                                             },
                                             {"@name":"single_click",
                                             "@linkId": "2",
                                             "action":{"@keep_user_settings": "true",
                                                      '#sorted': [
                                                          {"main_context": "current"},
                                                          {"datapanel": {"@type": "current",
                                                                     "@tab": "current"
                                                                                        ,
                                                                     "element": {"@id":elementId,
                                                                                 "add_context": "hide"
                                                                                 }
                                                                     }}]
                                                       }
                                             }]
                                    }
                      }


    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'''Сохранение карточки. '''

    data_dict = json.loads(xformsdata)
    course_cycle = course_cycleCursor(context)
    course_cycle.get(data_dict['schema']['data']['record_id'])
    # статус должен измениться
    if data_dict['schema']['data']['newstatus'] != data_dict['schema']['data']['oldstatus']:
        course_cycle.status_id = int(data_dict['schema']['data']['newstatus'])
        course_cycle.update()