endTestCard.py 2.3 KB
# coding: utf-8
'''
Created on 11.01.2018

@author: dgulyakin
'''
import json
from ru.curs.celesta.showcase.utils import XMLJSONConverter
from edu._edu_orm import edu_group_personsCursor, educational_groupCursor
from qt.functions import completeTest
try:
    from ru.curs.showcase.core.jython import JythonDTO
except:
    from ru.curs.celesta.showcase import JythonDTO


def cardData(context, main=None, add=None, filterinfo=None, session=None, elementId=None):
    u'''Карточка завершения тестирования'''    
    xformsdata = {"schema": {
                    "@xmlns":"", 
                    "group_id": add,
                    'data': {
                        'form_text' : u'Вы действительно хотите завершить тестирование?',
                        'enable_delete': 'true'}}}    
   
    xformssettings = {"properties": {
                        "event": [
                            {"@name":"single_click",
                             "@linkId": "1",
                             "action": {
                                '#sorted': [
                                    {"main_context": "current"},
                                    {"datapanel": {"@type": "current",
                                        "@tab": "current",
                                        "element": {
                                            "@id":"testGroupsGrid",
                                            "add_context": add}}}]}}]}}

    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'''Сохранение завершения тестирования'''
    
    group_id = int(json.loads(xformsdata)['schema']['group_id'])
    groupCur = educational_groupCursor(context)
    if groupCur.tryGet(group_id):
        personsCur = edu_group_personsCursor(context)
        personsCur.setRange('group_id', group_id)
        for person in personsCur.iterate():
            if person.variant_id:        
                completeTest(context, person.variant_id)
        personsCur.close()
        groupCur.status = 31
        groupCur.update()
    groupCur.close()