def _flatten_value(value): if isinstance(value, Mapping): raise ValueError('A dictionary found when converting to string') elif isinstance(value, (list, tuple)): return ', '.join(str(_flatten_value(v)) for v in value) elif isinstance(value, date): return iso8601(value) elif isinstance(value, URLWrapper): return str(value) else: return value
def login(self, request, **data): api = request.api seconds = request.config['SESSION_EXPIRY'] data['user_agent'] = self._user_agent(request) data['ip_address'] = request.get_client_address() data['expiry'] = iso8601(date_from_now(seconds)) response = api.authorizations.post(json=data, jwt=True) token = response.json() session = self._create_session(request, token) request.cache.session = session return token
def render_data(app, value, render, context): if isinstance(value, Mapping): return dict(((k, render_data(app, v, render, context)) for k, v in value.items())) elif isinstance(value, (list, tuple)): return [render_data(app, v, render, context) for v in value] elif isinstance(value, date): return iso8601(value) elif isinstance(value, URLWrapper): return value.to_json(app) elif isinstance(value, str): return render(value, context) else: return value
def render_data(app, value, render, context): """Safely render a data structure """ if isinstance(value, Mapping): return dict(_render_dict(app, value, render, context)) elif isinstance(value, (list, tuple)): return [render_data(app, v, render, context) for v in value] elif isinstance(value, date): return iso8601(value) elif hasattr(value, '__call__'): try: return value(app) except Exception: return SKIP elif isinstance(value, str): return render(value, context) elif value is None or isinstance(value, numbers): return value else: return SKIP