Exemplo n.º 1
0
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)
Exemplo n.º 2
0
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)
Exemplo n.º 3
0
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)
Exemplo n.º 4
0
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)
Exemplo n.º 5
0
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)
Exemplo n.º 6
0
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)
Exemplo n.º 7
0
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)
Exemplo n.º 8
0
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)
Exemplo n.º 9
0
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)
Exemplo n.º 10
0
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)
Exemplo n.º 11
0
def charts(request):
    """Charts view."""
    admin_log(request)
    return direct_to_template(template_name="admin/charts.html",
                              extra_context=default_dict)(request)
Exemplo n.º 12
0
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)
Exemplo n.º 13
0
def charts(request):
    """Charts view."""
    admin_log(request)
    return direct_to_template(request, "admin/charts.html",
                              extra_context=default_dict)
Exemplo n.º 14
0
def home(request):
    """Home view."""
    admin_log(request)
    return direct_to_template(request, "admin/home.html",
                              extra_context=default_dict)
Exemplo n.º 15
0
def stats(request):
    """Stats view."""
    admin_log(request)
    return direct_to_template(request, "admin/stats.html",
                              extra_context=default_dict)
Exemplo n.º 16
0
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)
Exemplo n.º 17
0
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)
Exemplo n.º 18
0
def home(request):
    """Home view."""
    admin_log(request)
    return direct_to_template(template_name="admin/home.html",
                              extra_context=default_dict)(request)
Exemplo n.º 19
0
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)
Exemplo n.º 20
0
def stats(request):
    """Stats view."""
    admin_log(request)
    return direct_to_template(template_name="admin/stats.html",
                              extra_context=default_dict)(request)