def logout(request): """Logout view.""" admin_log(request) auth_token = request.user['access']['token']['id'] ac = astakosclient.AstakosClient(auth_token, settings.ASTAKOS_AUTH_URL, retry=2, use_pool=True, logger=logger) logout_url = ac.ui_url + '/logout' return HttpResponseRedirect(logout_url)
def catalog(request, type=default_view()): """Admin-Interface generic list view.""" admin_log(request, type=type) mod = get_view_module_or_404(type) context = mod.catalog(request) context.update(default_dict) context.update({'view_type': 'list'}) template = mod.templates['list'] return direct_to_template(request, template, extra_context=context)
def json_list(request, type): """Return a class-based view based on the given type.""" admin_log(request, type=type) content_types = request.META.get("HTTP_ACCEPT", "") if "application/json" not in content_types: raise AdminHttp405("""\ The JSON content of this page is for internal use. You cannot view it on your browser.""") view = get_json_view_or_404(type) return view(request)
def details(request, type, id): """Admin-Interface generic details view.""" admin_log(request, type=type, id=id) mod = get_view_module_or_404(type) context = mod.details(request, id) customize_details_context(context) context.update(default_dict) context.update({'view_type': 'details'}) template = mod.templates['details'] return direct_to_template(request, template, extra_context=context)
def stats_component_details(request, component): """Mirror detailed stats view for cyclades/astakos. This stats view will import the get_astakos/cyclades_stats function and return its results to the caller. """ admin_log(request, component=component) data = {} status = 200 if component == 'astakos': data = astakos_stats.get_astakos_stats() elif component == 'cyclades': data = cyclades_stats.get_cyclades_stats() else: status = 404 return HttpResponse(json.dumps(data, cls=DjangoJSONEncoder), mimetype=JSON_MIMETYPE, status=status)
def charts(request): """Charts view.""" admin_log(request) return direct_to_template(template_name="admin/charts.html", extra_context=default_dict)(request)
def admin_actions(request): """Entry-point for all admin actions. Expects a JSON with the following fields: <TODO> """ admin_log(request, json=request.REQUEST) status = 200 response = { 'result': "All actions finished successfully.", 'error_ids': [], } if request.method != "POST": status = 405 response['result'] = "Only POST is allowed." objs = json.loads(request.body) request.POST = objs target = objs['target'] op = objs['op'] ids = objs['ids'] if type(ids) is not list: ids = ids.replace('[', '').replace(']', '').replace(' ', '').split(',') try: mod = get_view_module_or_404(target) except Http404: status = 404 response['result'] = "You have requested an unknown operation." for id in ids: try: mod.do_action(request, op, id) except faults.BadRequest as e: status = 400 response['result'] = e.message response['error_ids'].append(id) except exceptions.AdminActionNotPermitted: status = 403 response['result'] = "You are not allowed to do this operation." response['error_ids'].append(id) except faults.NotAllowed: status = 403 response['result'] = "You are not allowed to do this operation." response['error_ids'].append(id) except exceptions.AdminActionUnknown: status = 404 response['result'] = "You have requested an unknown operation." break except exceptions.AdminActionNotImplemented: status = 501 response['result'] = "You have requested an unimplemented action." break except exceptions.AdminActionCannotApply: status = 400 response['result'] = """ You have requested an action that cannot apply to a target. """ response['error_ids'].append(id) except Exception as e: logging.exception("Uncaught exception") status = 500 response['result'] = e.message response['error_ids'].append(id) if hasattr(mod, 'wait_action'): wait_ids = set(ids) - set(response['error_ids']) for id in wait_ids: mod.wait_action(request, op, id) return HttpResponse(json.dumps(response, cls=DjangoJSONEncoder), mimetype=JSON_MIMETYPE, status=status)
def charts(request): """Charts view.""" admin_log(request) return direct_to_template(request, "admin/charts.html", extra_context=default_dict)
def home(request): """Home view.""" admin_log(request) return direct_to_template(request, "admin/home.html", extra_context=default_dict)
def stats(request): """Stats view.""" admin_log(request) return direct_to_template(request, "admin/stats.html", extra_context=default_dict)
def admin_actions(request): """Entry-point for all admin actions. Expects a JSON with the following fields: <TODO> """ admin_log(request, json=request.REQUEST) status = 200 response = { 'result': "All actions finished successfully.", 'error_ids': [], } if request.method != "POST": status = 405 response['result'] = "Only POST is allowed." objs = json.loads(request.body) request.POST = objs target = objs['target'] op = objs['op'] items = json.loads(objs['items']) ids = [item['id'] for item in items] try: mod = get_view_module_or_404(target) except Http404: status = 404 response['result'] = "You have requested an unknown operation." for item in items: id = item['id'] data = item.get('data') try: mod.do_action(request, op, id, data) except faults.BadRequest as e: status = 400 response['result'] = e.message response['error_ids'].append(id) except exceptions.AdminActionNotPermitted: status = 403 response['result'] = "You are not allowed to do this operation." response['error_ids'].append(id) except faults.NotAllowed: status = 403 response['result'] = "You are not allowed to do this operation." response['error_ids'].append(id) except exceptions.AdminActionUnknown: status = 404 response['result'] = "You have requested an unknown operation." break except exceptions.AdminActionNotImplemented: status = 501 response['result'] = "You have requested an unimplemented action." break except exceptions.AdminActionCannotApply: status = 400 response['result'] = """ You have requested an action that cannot apply to a target. """ response['error_ids'].append(id) except ValidationError, e: status = 400 response['result'] = ', '.join(e.messages) response['error_ids'].append(id) except Exception as e: logging.exception("Uncaught exception") status = 500 response['result'] = e.message response['error_ids'].append(id)
def home(request): """Home view.""" admin_log(request) return direct_to_template(template_name="admin/home.html", extra_context=default_dict)(request)
def stats(request): """Stats view.""" admin_log(request) return direct_to_template(template_name="admin/stats.html", extra_context=default_dict)(request)