""" Contains html text in variables to make and html response """ import yaml from http import HTTPStatus __author__ = "Alfonso Tierno " html_start = """ Welcome to OSM
( {} ) VNFDs NSDs NSs USERs PROJECTs TOKENs logout
""" html_body = """

{item}

""" html_end = """ """ html_body_error = "

Error
{}

" html_auth2 = """ OSM Login

{error}

Sign in to OSM

Username
Password
""" html_upload_body = """

Upload {} descriptor (tar.gz) file:

""" def format(data, request, response, session): """ Format a nice html response, depending on the data :param data: :param request: cherrypy request :param response: cherrypy response :return: string with teh html response """ response.headers["Content-Type"] = 'text/html' if response.status == HTTPStatus.UNAUTHORIZED.value: if response.headers.get("WWW-Authenticate") and request.config.get("auth.allow_basic_authentication"): response.headers["WWW-Authenticate"] = "Basic" + response.headers["WWW-Authenticate"][6:] return else: return html_auth2.format(error=data) body = html_body.format(item=request.path_info) if response.status and response.status > 202: body += html_body_error.format(yaml.safe_dump(data, explicit_start=True, indent=4, default_flow_style=False)) elif isinstance(data, (list, tuple)): if request.path_info == "/vnfpkgm/v1/vnf_packages_content": body += html_upload_body.format(request.path_info, "VNFD") elif request.path_info == "/nsd/v1/ns_descriptors_content": body += html_upload_body.format(request.path_info, "NSD") for k in data: if isinstance(k, dict): data_id = k.pop("_id", None) elif isinstance(k, str): data_id = k body += '

{id}: {t}

'.format(url=request.path_info, id=data_id, t=k) elif isinstance(data, dict): if "Location" in response.headers: body += ' show '.format(response.headers["Location"]) else: body += ' '.format(request.path_info) body += "
" + yaml.safe_dump(data, explicit_start=True, indent=4, default_flow_style=False) + "
" elif data is None: if request.method == "DELETE" or "METHOD=DELETE" in request.query_string: body += "
 deleted 
" else: body = str(data) user_text = " " if session: if session.get("username"): user_text += "user: {}".format(session.get("username")) if session.get("project_id"): user_text += ", project: {}".format(session.get("project_id")) return html_start.format(user_text) + body + html_end #yaml.safe_dump(data, explicit_start=True, indent=4, default_flow_style=False) # tags=False, # encoding='utf-8', allow_unicode=True)