# coding: utf-8 u''' Основной грид реестра комплексных ДПП. ''' from java.text import SimpleDateFormat import json from common.sysfunctions import toHexForXml, getGridHeight from ru.curs.celesta.showcase.utils import XMLJSONConverter from security.functions import userHasPermission from umk._umk_orm import vw_complex_programCursor try: from ru.curs.showcase.core.jython import JythonDTO except: from ru.curs.celesta.showcase import JythonDTO def gridData(context, main, add=None, filterinfo=None, session=None, elementId=None, sortColumnList=None, firstrecord=None, pagesize=None): complex_program = vw_complex_programCursor(context) if sortColumnList: sortName = toHexForXml(sortColumnList[0].id) sortType = unicode(sortColumnList[0].sorting).lower() else: sortName = None # Заголовки _header = { 'uid': ['~~id'], 'name': [u'Наименование'], 'speciality_name': [u'Специальность'], 'dev_year': [u'Год разработки'], 'approved_date': [u'Дата утверждения'], 'hours': [u'Кол-во часов'], 'status_name': [u'Статус'], 'properties': [u'properties'] } complex_program.orderBy('speciality_name', 'name') for column in _header: _header[column].append(toHexForXml(_header[column][0])) if sortName == _header[column][1]: complex_program.orderBy("%s %s" % (column, sortType)) complex_program.limit(firstrecord - 1, pagesize) grid_data = { 'records': { 'rec': [] } } df = SimpleDateFormat("dd.MM.yyyy") for complex_program in complex_program.iterate(): row = {} row[_header['uid'][1]] = complex_program.uid row[_header['name'][1]] = complex_program.name if complex_program.education_level_name: row[_header['speciality_name'][1]] = u'%s (%s)' % (complex_program.speciality_name, complex_program.education_level_name) else: row[_header['speciality_name'][1]] = complex_program.speciality_name if complex_program.dev_year: row[_header['dev_year'][1]] = "%d" % complex_program.dev_year if complex_program.approved_date: row[_header['approved_date'][1]] = df.format(complex_program.approved_date) row[_header['hours'][1]] = complex_program.hours row[_header['status_name'][1]] = complex_program.status_name row[_header['properties'][1]] = { 'event': { '@name': 'row_single_click', 'action': { '#sorted': [ { 'main_context': 'current' }, { 'datapanel': { '@type': 'current', '@tab': 'current', 'element': [ { '@id': 'umkVersionGrid', 'add_context': '' }, { '@id': 'complexProgramAttributeGrid', 'add_context': '' } ] } } ] } } } grid_data['records']['rec'].append(row) return JythonDTO(XMLJSONConverter.jsonToXml(json.dumps(grid_data)), None) def gridMeta(context, main=None, add=None, filterinfo=None, session=None, elementId=None, sortColumnList=None): complex_program = vw_complex_programCursor(context) # Заголовки _header = { 'uid': ['~~id'], 'name': [u'Наименование'], 'speciality_name': [u'Специальность'], 'dev_year': [u'Год разработки'], 'approved_date': [u'Дата утверждения'], 'hours': [u'Кол-во часов'], 'status_name': [u'Статус'], 'properties': [u'properties'] } grid_settings = {} grid_settings['gridsettings'] = { 'labels': { 'header': 'Комплексные ДПП' }, 'columns': { 'col': [] }, 'properties': { '@pagesize': 50, '@gridWidth': '100%', '@gridHeight': getGridHeight(session, numberOfGrids=2, gridHeaderHeight=55, delta=59), '@totalCount': complex_program.count(), '@profile': 'default.properties' }, } # Добавляем поля для отображения в gridsettingss grid_settings['gridsettings']['columns']['col'].append({'@id': _header['name'][0], '@width': '300px'}) grid_settings['gridsettings']['columns']['col'].append({'@id': _header['speciality_name'][0], '@width': '120px'}) grid_settings['gridsettings']['columns']['col'].append({'@id': _header['hours'][0], '@width': '50px'}) grid_settings['gridsettings']['columns']['col'].append({'@id': _header['dev_year'][0], '@width': '70px'}) grid_settings['gridsettings']['columns']['col'].append({'@id': _header['status_name'][0], '@width': '100px'}) grid_settings['gridsettings']['columns']['col'].append({'@id': _header['approved_date'][0], '@width': '70px'}) return JythonDTO(None, XMLJSONConverter.jsonToXml(json.dumps(grid_settings))) def gridToolBar(context, main=None, add=None, filterinfo=None, session=None, elementId=None): session_json = json.loads(session)['sessioncontext'] grid_context = session_json['related']['gridContext'] # добавление КДПП if userHasPermission(context, session_json['sid'], 'addComplexProgram'): add_style = "false" else: add_style = "true" # редактирование КДПП if userHasPermission(context, session_json['sid'], 'editComplexProgram'): edit_style = ("false" if 'currentRecordId' in grid_context else "true") else: edit_style = "true" # удаление КДПП if userHasPermission(context, session_json['sid'], 'delComplexProgram'): delete_style = edit_style else: delete_style = "true" grid_toolbar = { 'gridtoolbar': { '#sorted': [ { 'item': { '@text': u'Добавить', '@hint': u'Добавить КДПП', '@disable': add_style, 'action': { '@show_in': 'MODAL_WINDOW', '#sorted': [ { 'main_context': 'current' }, { 'modalwindow': { '@caption': u'Добавить запись о КДПП', '@height': '500', '@width': '800' } }, { 'datapanel': { '@type': 'current', '@tab': 'current', 'element': { '@id': 'complexProgramCard', 'add_context': 'add' } } } ] } } }, { 'item': { '@text': u'Редактировать', '@hint': u'Редактировать КДПП', '@disable': edit_style, 'action': { '@show_in': 'MODAL_WINDOW', '#sorted': [ { 'main_context': 'current' }, { 'modalwindow': { '@caption': u'Редактировать запись о КДПП', '@height': '500', '@width': '800' } }, { 'datapanel': { '@type': 'current', '@tab': 'current', 'element': { '@id': 'complexProgramCard', 'add_context': 'edit' } } } ] } } }, { 'item': { '@text': u'Удалить', '@hint': u'Удалить КДПП', '@disable': delete_style, 'action': { '@show_in': 'MODAL_WINDOW', '#sorted': [ { 'main_context': 'current' }, { 'modalwindow': { '@caption': 'Удалить данные о КДПП', '@height': '140', '@width': '400' } }, { 'datapanel': { '@type': 'current', '@tab': 'current', 'element': { '@id': 'complexProgramDeleteCard', 'add_context': '' } } } ] } } } ] } } if not userHasPermission(context, session_json['sid'], 'addComplexProgram') or \ userHasPermission(context, session_json['sid'], 'editComplexProgram') or \ userHasPermission(context, session_json['sid'], 'deleteComplexProgram'): grid_toolbar = { 'gridtoolbar': { "item": "" } } return XMLJSONConverter.jsonToXml(json.dumps(grid_toolbar))