# coding: utf-8 ''' ''' import json import security.functions as secfun from edu._edu_orm import vw_course_view_openCursor, course_cycleCursor,\ courseCursor, educational_groupCursor from nci.functions.persons import getPersonIdBySid from medstaff._medstaff_orm import student_certificateCursor from umk._umk_orm import specialityCursor from string import strip def eduOrgWorkWithPersons(context, session): u'''Навигатор Работа с ФЛ образовательной организацией.''' session = json.loads(session) sid = session['sessioncontext']['sid'] userdata = session['sessioncontext']['userdata'] resultJSON = {"group": { "@id": "eduOrgWorkWithPersons", "@name": u"Заявки на программы", "level1": []}} #Проверка разрешений на формирование навигатора if secfun.userHasPermission(context, sid, 'persons') and not secfun.userHasPermission(context,sid,'allEduOrgCourse'): resultJSON['group']['level1'].append({ '@id': 'persons_edu', '@name': u'Реестр ФЛ', 'action': { '#sorted': [ {'main_context': 'strict'}, # ограниченная функциональность {'datapanel': { '@type': 'edu.datapanel.personDatapanel.datapanel.cl', '@tab': 'firstOrCurrent'}}]}}) if secfun.userHasPermission(context, sid, 'accredCycleRequests'): resultJSON['group']['level1'].append({ '@id': 'certificatesMethod', '@name': u'Заявки на программы', 'action': { '#sorted': [ {'main_context': userdata}, {'datapanel': { '@type': 'edu.datapanel.certificatesMethodDatapanel.datapanel.cl', '@tab': 'firstOrCurrent'}}]}}) if not secfun.userHasPermission(context, sid, 'persons') and \ not secfun.userHasPermission(context, sid, 'accredCycleRequests') and \ not secfun.userHasPermission(context, sid, 'currentAccredCycles'): resultJSON = {"group": None} return resultJSON def eduEducationalProcess(context, session): u'''Навигатор Учебный процесс.''' session = json.loads(session) sid = session['sessioncontext']['sid'] resultJSON = {"group": { "@id": "eduEducationalProcess", "@name": u"Учебный процесс", "level1": []}} if secfun.userHasPermission(context, sid, 'educationalProcess'): coursesJSON = { '@id': 'educationalCources', '@name': u'Программы обучения', "@selectOnLoad": "false", '#sorted': []} courcesOpen = [] courceCur = courseCursor(context) certificateCur = student_certificateCursor(context) certificateCur.setRange('status', 20) for cource in courceCur.iterate(): certificateCur.setRange('course_id', cource.uid) if certificateCur.tryFirst(): id = certificateCur.uid courseOpen = { '@id': 'educational-{}'.format(id), '@name': cource.name, '#sorted': [ {'action': { '#sorted': [ {'main_context': cource.uid}, {'datapanel': { '@type': 'edu.datapanel.educationalCourcesDatapanel.datapanel.cl', '@tab': 'firstOrCurrent', 'element': { '@id': 'courseCardCloseInfo', 'add_context': 'info'}}}]}}]} courcesOpen.append(courseOpen) if courcesOpen: coursesJSON['#sorted'].append({'level2': courcesOpen}) # resultJSON['group']['level1'].append(coursesJSON) if secfun.userHasPermission(context, sid, 'educationalTestGroups'): testGroupsJSON = { '@id': 'testGroups', '@name': u'Группы тестирования', "@selectOnLoad": "false", '#sorted': []} specialities = [] specialityCur = specialityCursor(context) specialityCur.orderBy('name') educational_groupCur = educational_groupCursor(context) for spec in specialityCur.iterate(): speciality_id = spec.uid spec_dict = { '@id': 'speciality-{}'.format(speciality_id), '@name': spec.name, '#sorted': [ {'action': { '#sorted': [ {'main_context': speciality_id}, {'datapanel': { '@type': 'edu.datapanel.educationalTestGroupsDatapanel.datapanel.cl', '@tab': 'firstOrCurrent', 'element': { '@id': 'courseCardCloseInfo', 'add_context': 'info'}}}]}}]} # Добавляем в навигатор группы, по которым идет тестирование educational_groupCur.setRange('speciality', speciality_id) educational_groupCur.setRange('status', 30) educational_groupCur.orderBy('group_name') open_groups = [] for group in educational_groupCur.iterate(): group_name = group.group_name group_dict = {'@id': 'group_{}'.format(group.group_id), '@name': group_name, '#sorted': [ {'action': { '#sorted': [ {'main_context': group.group_id}, {'datapanel': { '@type': 'edu.datapanel.educationalTestGroupsDatapanel.datapanelTesting.cl', '@tab': 'firstOrCurrent'}}]}}]} open_groups.append(group_dict) if open_groups: spec_dict['#sorted'].append({'level3': open_groups}) specialities.append(spec_dict) educational_groupCur.close() specialityCur.close() if specialities: testGroupsJSON['#sorted'].append({'level2': specialities}) resultJSON['group']['level1'].append(testGroupsJSON) if not secfun.userHasPermission(context, sid, 'educationalProcess') and \ not secfun.userHasPermission(context, sid, 'educationalGroups'): resultJSON = {"group": None} return resultJSON def eduEvents(context, session): u"""Образовательные мероприятия""" resultJSON = {"group": { "@id": "eduEvents", "@name": u"Образовательные мероприятия", "level1": []}} sid = json.loads(session)['sessioncontext']['sid'] if secfun.userHasPermission(context, sid, 'eduEvents'): resultJSON['group']['level1'].append({ '@id': 'edu_events', '@name': u'Список образовательных мероприятий', 'action': { '#sorted': [ {'main_context': 'current'}, {'datapanel': { '@type': 'edu.datapanel.eduEventDatapanel.datapanel.cl', '@tab': 'firstOrCurrent'}}]}}) return resultJSON def eduContent(context, session): sid = json.loads(session)['sessioncontext']['sid'] resultJSON = {"group": { "@id": "eduContent", "@name": u"Учебные планы", "level1": []}} if secfun.userHasPermission(context, sid, 'courses'): coursesJSON = { '@id': 'courses', '@name': u'Программы и темы', "@selectOnLoad": "true", '#sorted': [ {'action': { '#sorted': [ {'main_context': 'current'}, {'datapanel': { '@type': 'edu.datapanel.courseAndCyclesDatapanel.datapanel.cl', '@tab': 'firstOrCurrent'}}]}}]} courcesOpen = [] person_id = getPersonIdBySid(context, sid) coursesViewOpenCur = vw_course_view_openCursor(context) coursesViewOpenCur.setRange('person_id', person_id) course_cycle_cur = course_cycleCursor(context) for courseOpenItem in coursesViewOpenCur.iterate(): courseId = courseOpenItem.course_id courseOpen = { '@id': 'certificate-{}'.format(courseId), '@name': courseOpenItem.name, '#sorted': [ {'action': { '#sorted': [ {'main_context': courseId}, {'datapanel': { '@type': 'edu.datapanel.courseAndCyclesDatapanel.courseDatapanel.cl', '@tab': 'firstOrCurrent', 'element': { '@id': 'courseCardCloseInfo', 'add_context': 'info'}}}]}}]} course_cycle_cur.setRange('course_id', courseId) course_cycle_cur.orderBy('cycle_order') cycles = [] for cycle in course_cycle_cur.iterate(): cycle_id = cycle.uid cycle = { '@id': 'cycle-{}'.format(cycle_id), '@name': cycle.note, 'action': { '#sorted': [ {'main_context': cycle_id}, {'datapanel': { '@type': 'edu.datapanel.courseAndCyclesDatapanel.cycleDatapanel.cl', '@tab': 'firstOrCurrent'}}]}} cycles.append(cycle) if cycles: courseOpen['#sorted'].append({'level3': cycles}) courcesOpen.append(courseOpen) coursesViewOpenCur.close() if courcesOpen: coursesJSON['#sorted'].append({'level2': courcesOpen}) resultJSON['group']['level1'].append(coursesJSON) if not resultJSON['group']['level1']: resultJSON = {"group": None} return resultJSON def reports(context, session): u"""Отчёты""" resultJSON = {"group": { "@id": "reports", "@name": u"Отчёты", "level1": []}} sid = json.loads(session)['sessioncontext']['sid'] #Заблокировано для certif_class if secfun.userHasPermission(context, sid, 'reports' and 1!=1): resultJSON['group']['level1'].append({ '@id': 'reportsPanel', '@name': u'Отчёты', 'action': { '#sorted': [ {'main_context': 'current'}, {'datapanel': { '@type': 'edu.datapanel.reportsDatapanel.datapanel.cl', '@tab': 'firstOrCurrent'}}]}}) if not resultJSON['group']['level1']: resultJSON = {"group": None} return resultJSON