addTestGroupPersonsCard.py 3.61 KB
# coding: utf-8
'''
Created on 09.01.2018 г.

@author: dgulyakin
'''
from __builtin__ import None
import json
from datetime import datetime
from java.text import SimpleDateFormat
from ru.curs.celesta.showcase.utils import XMLJSONConverter
from nci._nci_orm import personCursor
from common.numbersseries.getNextNo import getNextNoOfSeries
try:
    from ru.curs.showcase.core.jython import JythonDTO
except:
    from ru.curs.celesta.showcase import JythonDTO

from edu._edu_orm import educational_groupCursor, edu_group_personsCursor


def cardData(context, main=None, add=None, filterinfo=None, session=None, elementId=None):
    u'''Карточка добавления слушателей в группу тестирования'''    
    group_id = add
    group_name = u'' 
    groupsCur = educational_groupCursor(context)
    if groupsCur.tryGet(group_id):
        group_name = groupsCur.group_name
    
    xformsdata = {"schema": {
                    "@xmlns":"", 
                    "group_id": group_id,
                    "group_name": group_name,
                    "persons": {
                        'person': {
                            'patronymic': u'',
                            'phone': u'',
                            'surname': u'',
                            'name': u''}},
                    "person_template": {
                        'person': {
                            'patronymic': u'',
                            'phone': u'',
                            'surname': u'',
                            'name': u''}}}}
    
    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'''Сохранение глобальных параметров'''
    data_dict = json.loads(xformsdata)["schema"]
    personCur = personCursor(context)
    group_personsCur = edu_group_personsCursor(context)
    group_id = data_dict['group_id']
    
    persons = data_dict['persons']['person']
    if not isinstance(persons, list):
        persons = [persons]    
    
    for person in persons:            
        surname = person['surname'] 
        name = person['name'] 
        patronymic = person['patronymic'] 
        
        personCur.clear()
        personCur.uid = getNextNoOfSeries(context, 'persons')
        personCur.surname = surname 
        personCur.name = name 
        personCur.patronymic = patronymic
        personCur.fullname = u'{} {}{}'.format(surname, name, u' {}'.format(patronymic) if patronymic else u'') 
        personCur.phone = person['phone']
        personCur.insert()
            
        person_id = personCur.uid
        
        group_personsCur.group_person_id = None
        group_personsCur.group_id = group_id
        group_personsCur.person_id = person_id
        group_personsCur.insert()
    
    
    group_personsCur.close()
    personCur.close()