def add_dynamic_selfservice_enrollment(config, actions): ''' add_dynamic_actions - load the html of the dynamic tokens according to the policy definition :param actions: the allowd policy actions for the current scope :type actions: array of actions names :return: hash of {tokentype : html for tab} ''' dynanmic_actions = {} g = config['pylons.app_globals'] tokenclasses = g.tokenclasses for tok in tokenclasses.keys(): tclass = tokenclasses.get(tok) tclass_object = newToken(tclass) if hasattr(tclass_object, 'getClassInfo'): try: selfservice = tclass_object.getClassInfo('selfservice', ret=None) # # check if we have a policy in the token definition for the enroll if selfservice.has_key('enroll') and 'enroll' + tok.upper() in actions: service = selfservice.get('enroll') tab = service.get('title') c.scope = tab.get('scope') t_file = tab.get('html') t_html = render(t_file) ''' remove empty lines ''' t_html = '\n'.join([line for line in t_html.split('\n') if line.strip() != '']) e_name = "%s.%s.%s" % (tok, 'selfservice', 'enroll') dynanmic_actions[e_name] = t_html # # check if there are other selfserive policy actions policy = tclass_object.getClassInfo('policy', ret=None) if 'selfservice' in policy: selfserv_policies = policy.get('selfservice').keys() for action in actions: if action in selfserv_policies: # # now lookup, if there is an additional section # # in the selfservice to render service = selfservice.get(action) tab = service.get('title') c.scope = tab.get('scope') t_file = tab.get('html') t_html = render(t_file) ''' remove empty lines ''' t_html = '\n'.join([line for line in t_html.split('\n') if line.strip() != '']) e_name = "%s.%s.%s" % (tok, 'selfservice', action) dynanmic_actions[e_name] = t_html except Exception as e: log.info('[_add_dynamic_actions] no policy for tokentype ' '%s found (%r)' % (unicode(tok), e)) return dynanmic_actions
def add_dynamic_selfservice_enrollment(config, actions): """ add_dynamic_actions - load the html of the dynamic tokens according to the policy definition :param actions: the allowd policy actions for the current scope :type actions: array of actions names :return: hash of {tokentype : html for tab} """ dynanmic_actions = {} g = config["pylons.app_globals"] tokenclasses = g.tokenclasses for tok in tokenclasses.keys(): tclass = tokenclasses.get(tok) tclass_object = newToken(tclass) if hasattr(tclass_object, "getClassInfo"): try: selfservice = tclass_object.getClassInfo("selfservice", ret=None) # # check if we have a policy in the token definition for the enroll if selfservice.has_key("enroll") and "enroll" + tok.upper() in actions: service = selfservice.get("enroll") tab = service.get("title") c.scope = tab.get("scope") t_file = tab.get("html") t_html = render(t_file) """ remove empty lines """ t_html = "\n".join([line for line in t_html.split("\n") if line.strip() != ""]) e_name = "%s.%s.%s" % (tok, "selfservice", "enroll") dynanmic_actions[e_name] = t_html # # check if there are other selfserive policy actions policy = tclass_object.getClassInfo("policy", ret=None) if "selfservice" in policy: selfserv_policies = policy.get("selfservice").keys() for action in actions: if action in selfserv_policies: # # now lookup, if there is an additional section # # in the selfservice to render service = selfservice.get(action) tab = service.get("title") c.scope = tab.get("scope") t_file = tab.get("html") t_html = render(t_file) """ remove empty lines """ t_html = "\n".join([line for line in t_html.split("\n") if line.strip() != ""]) e_name = "%s.%s.%s" % (tok, "selfservice", action) dynanmic_actions[e_name] = t_html except Exception as e: log.info("[_add_dynamic_actions] no policy for tokentype " "%s found (%r)" % (unicode(tok), e)) return dynanmic_actions
def _getTokenTypeConfig(section='config'): ''' _getTokenTypeConfig - retrieve from the dynamic token the tokentype section, eg. config or enroll :param section: the section of the tokentypeconfig :type section: string :return: dict with tab and page definition (rendered) :rtype: dict ''' res = {} g = config['pylons.app_globals'] tokenclasses = g.tokenclasses for tok in tokenclasses.keys(): tclass = tokenclasses.get(tok) tclass_object = newToken(tclass) if hasattr(tclass_object, 'getClassInfo'): conf = tclass_object.getClassInfo(section, ret={}) ## set globale render scope, so that the mako ## renderer will return only a subsection from the template p_html = '' t_html = '' try: page = conf.get('page') c.scope = page.get('scope') p_html = render(os.path.sep + page.get('html')) p_html = remove_empty_lines(p_html) tab = conf.get('title') c.scope = tab.get('scope') t_html = render(os.path.sep + tab.get('html')) t_html = remove_empty_lines(t_html) except CompileException as ex: log.error( "[_getTokenTypeConfig] compile error while processing %r.%r:" % (tok, section)) log.error("[_getTokenTypeConfig] %r" % ex) log.error("[_getTokenTypeConfig] %s" % traceback.format_exc()) raise Exception(ex) except Exception as e: log.debug('no config for token type %r (%r)' % (tok, e)) p_html = '' if len(p_html) > 0: res[tok] = {'html': p_html, 'title': t_html} return res
def _getTokenTypeConfig(section='config'): ''' _getTokenTypeConfig - retrieve from the dynamic token the tokentype section, eg. config or enroll :param section: the section of the tokentypeconfig :type section: string :return: dict with tab and page definition (rendered) :rtype: dict ''' res = {} g = config['pylons.app_globals'] tokenclasses = g.tokenclasses for tok in tokenclasses.keys(): tclass = tokenclasses.get(tok) tclass_object = newToken(tclass) if hasattr(tclass_object, 'getClassInfo'): conf = tclass_object.getClassInfo(section, ret={}) ## set globale render scope, so that the mako ## renderer will return only a subsection from the template p_html = '' t_html = '' try: page = conf.get('page') c.scope = page.get('scope') p_html = render(os.path.sep + page.get('html')) p_html = remove_empty_lines(p_html) tab = conf.get('title') c.scope = tab.get('scope') t_html = render(os.path.sep + tab.get('html')) t_html = remove_empty_lines(t_html) except CompileException as ex: log.error("[_getTokenTypeConfig] compile error while processing %r.%r:" % (tok, section)) log.error("[_getTokenTypeConfig] %r" % ex) log.error("[_getTokenTypeConfig] %s" % traceback.format_exc()) raise Exception(ex) except Exception as e: log.debug('no config for token type %r (%r)' % (tok, e)) p_html = '' if len (p_html) > 0: res[tok] = { 'html' : p_html, 'title' : t_html} return res
def _getTokenTypeConfig(section="config"): """ _getTokenTypeConfig - retrieve from the dynamic token the tokentype section, eg. config or enroll :param section: the section of the tokentypeconfig :type section: string :return: dict with tab and page definition (rendered) :rtype: dict """ res = {} g = config["pylons.app_globals"] tokenclasses = g.tokenclasses for tok in tokenclasses.keys(): tclass = tokenclasses.get(tok) tclass_object = newToken(tclass) if hasattr(tclass_object, "getClassInfo"): conf = tclass_object.getClassInfo(section, ret={}) ## set globale render scope, so that the mako ## renderer will return only a subsection from the template p_html = "" t_html = "" try: page = conf.get("page") c.scope = page.get("scope") p_html = render(os.path.sep + page.get("html")) p_html = remove_empty_lines(p_html) tab = conf.get("title") c.scope = tab.get("scope") t_html = render(os.path.sep + tab.get("html")) t_html = remove_empty_lines(t_html) except CompileException as ex: log.exception("[_getTokenTypeConfig] compile error while processing %r.%r:" % (tok, section)) log.error("[_getTokenTypeConfig] %r" % ex) raise Exception(ex) except Exception as e: log.debug("no config for token type %r (%r)" % (tok, e)) p_html = "" if len(p_html) > 0: res[tok] = {"html": p_html, "title": t_html} return res
def tokentype(self): """ """ c.title = "TokenTypeInfo" g = config["pylons.app_globals"] tokens = g.tokenclasses ttinfo = [] ttinfo.extend(tokens.keys()) for tok in tokens: tclass = tokens.get(tok) tclass_object = newToken(tclass) if hasattr(tclass_object, "getClassType"): ii = tclass_object.getClassType() ttinfo.append(ii) log.debug("[index] importers: %s" % IMPORT_TEXT) c.tokeninfo = ttinfo return render("/manage/tokentypeinfo.mako")
def tokentype(self): ''' ''' c.title = 'TokenTypeInfo' g = config['pylons.app_globals'] tokens = g.tokenclasses ttinfo = [] ttinfo.extend(tokens.keys()) for tok in tokens: tclass = tokens.get(tok) tclass_object = newToken(tclass) if hasattr(tclass_object, 'getClassType'): ii = tclass_object.getClassType() ttinfo.append(ii) log.debug("[index] importers: %s" % IMPORT_TEXT) c.tokeninfo = ttinfo return render('/manage/tokentypeinfo.mako')
def add_dynamic_selfservice_policies(config, actions): ''' add_dynamic_actions - load the html of the dynamic tokens according to the policy definition :param actions: the allowd policy actions for the current scope :type actions: array of actions names :return: hash of {tokentype : html for tab} ''' dynamic_policies = [] g = config['pylons.app_globals'] tokenclasses = g.tokenclasses defined_policies = [] for tok in tokenclasses.keys(): tclass = tokenclasses.get(tok) tclt = newToken(tclass) if hasattr(tclt, 'getClassInfo'): # # check if we have a policy in the token definition try: policy = tclt.getClassInfo('policy', ret=None) if policy is not None and policy.has_key('selfservice'): scope_policies = policy.get('selfservice').keys() ''' initialize the policies ''' if len(defined_policies) == 0: for pol in actions: if '=' in pol: (name, val) = pol.split('=') defined_policies.append(name) for local_policy in scope_policies: if local_policy not in defined_policies: dynamic_policies.append(local_policy) except Exception as e: log.info('[_add_dynamic_actions] no policy for tokentype ' '%s found (%r)' % (unicode(tok), e)) return dynamic_policies
def _getTokenTypes(): """ _getTokenTypes - retrieve the list of dynamic tokens and their title section :return: dict with token type and title :rtype: dict """ glo = config["pylons.app_globals"] tokenclasses = glo.tokenclasses tokens = [] tokens.extend(tokenclasses.keys()) tinfo = {} for tok in tokens: if tok in tokenclasses.keys(): tclass = tokenclasses.get(tok) tclass_object = newToken(tclass) if hasattr(tclass_object, "getClassInfo"): ii = tclass_object.getClassInfo("title") or tok tinfo[tok] = _(ii) return tinfo
def _getTokenTypes(): ''' _getTokenTypes - retrieve the list of dynamic tokens and their title section :return: dict with token type and title :rtype: dict ''' glo = config['pylons.app_globals'] tokenclasses = glo.tokenclasses tokens = [] tokens.extend(tokenclasses.keys()) tinfo = {} for tok in tokens: if tok in tokenclasses.keys(): tclass = tokenclasses.get(tok) tclass_object = newToken(tclass) if hasattr(tclass_object, 'getClassInfo'): ii = tclass_object.getClassInfo('title') or tok tinfo[tok] = _(ii) return tinfo
def load_form(self): ''' This shows the enrollment form for a requested token type. implicit parameters are: :param type: token type :param scope: defines the rendering scope :return: rendered html of the requested token ''' res = '' param = {} try: param.update(request.params) act = getParam(param, "type", required) try: (tok, section, scope) = act.split('.') except Exception: return res if section != 'selfservice': return res g = config['pylons.app_globals'] tokenclasses = copy.deepcopy(g.tokenclasses) if tok in tokenclasses: tclass = tokenclasses.get(tok) tclt = newToken(tclass) if hasattr(tclt, 'getClassInfo'): sections = tclt.getClassInfo(section, {}) if scope in sections.keys(): section = sections.get(scope) page = section.get('page') c.scope = page.get('scope') c.authUser = self.authUser html = page.get('html') res = render(os.path.sep + html) res = remove_empty_lines(res) Session.commit() return res except CompileException as exx: log.exception("[load_form] compile error while processing %r.%r:" % (tok, scope)) log.error("[load_form] %r" % exx) Session.rollback() raise Exception(exx) except Exception as exx: Session.rollback() error = ('error (%r) accessing form data for: tok:%r, scope:%r' ', section:%r' % (exx, tok, scope, section)) log.exception(error) return '<pre>%s</pre>' % error finally: Session.close() log.debug('[load_form] done')