# coding: utf-8 ''' Created on 14.01.2015 @author: v.popov ''' import json from com.jayway.jsonpath import JsonPath from ru.curs.celesta.showcase.utils import XMLJSONConverter from security.functions import userHasPermission from edu.xform.startTestCard import getPersonTestLink try: from ru.curs.showcase.core.jython import JythonDTO except: from ru.curs.celesta.showcase import JythonDTO def webtext(context, main=None, add=None, filterinfo=None, session=None, elementId=None): sid = JsonPath.read(session, "$.sessioncontext.sid") links = getPersonTestLink(context, sid) test_buttons = list() for key, link in links.items(): test_buttons.append({ "link": link, "text": key, "color": '006666', "icon": 'icon-profy', "type": 'inner' }) medstaff_button = { "link": "?userdata=medstaff", "text": u'Слушатель'.upper(), "color": '006666', "icon": 'icon-profy', "type": 'inner' } method_button = { "link": "?userdata=method", "text": u'Методист'.upper(), "color": '006666', "icon": 'icon-support', "type": 'inner' } prepod_button = { "link": "?userdata=method", "text": u'Преподаватель'.upper(), "color": '006666', "icon": 'icon-support', "type": 'inner' } program_panel_button = { "link": "/home/admin/programs.openi", "text": u'Аналитика по программам'.upper(), "color": '006666', "icon": 'icon-corporate', "type": 'pentaho' } cycle_panel_button = { "link": "/home/admin/cycles.openi", "text": u'Аналитика по циклам'.upper(), "color": '006666', "icon": 'icon-corporate', "type": 'pentaho' } edu_button = { "link": "?userdata=edu", "text": u'Куратор'.upper(), "color": '006666', "icon": 'icon-sko', "type": 'inner' } admin_button = { "link": "?userdata=admin", "text": u'Управление ролями безопасности'.upper(), "color": '546E7A', "icon": 'icon-security', "type": 'inner' } buttons = [] if userHasPermission(context, sid, "medstaffPerspective"): # buttons.append(medstaff_button) for test_button in test_buttons: buttons.append(test_button) if userHasPermission(context, sid, "eduPerspective"): buttons.append(edu_button) if userHasPermission(context, sid, "methodPerspective"): buttons.append(method_button) #buttons.append(program_panel_button) #buttons.append(cycle_panel_button) if userHasPermission(context, sid, "securityPerspective"): buttons.append(admin_button) # test_buttons_div = [] # for test_button in test_buttons: # onClick = "var url='%s';window.open(url,'_self');" % test_button["link"] # test_button_item = { # '@onclick': onClick, # '@class': 'mdl-cell mdl-cell--4-col mdl-cell--6-col-tablet mdl-cell--12-col-phone mdl-card mdl-shadow--3dp mdl-cell__border--{}'.format(test_button["color"]), # 'div': [ # {'@class': 'mdl-card__media', # 'span': { # '@class': '{} mdl-cell__color--{}'.format(test_button["icon"], test_button["color"])}}, # {'@class': 'mdl-card__title mdl-cell__bgcolor--{}'.format(test_button["color"]), # 'span': { # '@class': 'mdl-card__title-text', # '#text': test_button["text"]}}]} # test_buttons_div.append(test_button_item) buttons_div = [] userId, userPwd = 'admin', 'password' for button in buttons: onClick = "var url='%s';window.open(url,'_self');" % button["link"] if button["type"] == 'pentaho': onClick = "getAuth('','','','{}','{}','{}');".format(userId, userPwd, button["link"]) buttonItem = { '@onclick': onClick, '@class': 'mdl-cell mdl-cell--12-col mdl-cell--12-col-tablet mdl-cell--12-col-phone mdl-card mdl-shadow--3dp mdl-cell__border--{}'.format(button["color"]), 'div': [ {'@class': 'mdl-card__media', 'span': { '@class': '{} mdl-cell__color--{}'.format(button["icon"], button["color"])}}, {'@class': 'mdl-card__title mdl-cell__bgcolor--{}'.format(button["color"]), 'span': { '@class': 'mdl-card__title-text', '#text': button["text"]}}]} buttons_div.append(buttonItem) webtextsettings = {"properties": ''} webtextdata = {"div": { 'div': { 'div': { 'div': buttons_div, "@class": "mdl-cell--5-col mdl-cell--6-col-tablet mdl-cell--12-col-phone"}, "@class": "welcome-card-container mdl-grid"}, 'img' : {'@style': "position: absolute; top: 32px; right: 16px", '@src': "resources/login_content/logo.png"}, "@class": "welcome-section"}} if not buttons: # context.error(u"Отсутствуют разрешения для работы с системой. Обратитесь к администратору") context.warning(u"Нет доступных разделов") elif len(buttons) == 1: webtextdata["div"]["div"] = u"Пожалуйста, подождите..." webtextsettings = {"properties": { "action": { "#sorted": [ {"main_context": 'current'}, {"client": { "activity": [ { "@id": 'link', "@name": "redirect", "add_context": buttons[0]["link"]}]}}]}}} settings = XMLJSONConverter.jsonToXml(json.dumps(webtextsettings)) data = XMLJSONConverter.jsonToXml(json.dumps(webtextdata)) return JythonDTO(data, settings)