コード例 #1
0
ファイル: views.py プロジェクト: jordane/nagcat
def retrieve_link(request, link):

    stat,obj = views.parse()

    page = get_object_or_404(ConfiguratorPage, link=link)

    services = page.load_services()

    graphs = []

    for service in services:
        service['isGraphable'] = views.is_graphable(service['host'],
            service['service'])
        service['slug'] = views.slugify(service['host'] + service['service'])
        servicedetail = views.servicedetail(stat, service['host'],
            service['service'])
        servicedetail['is_graphable'] = views.is_graphable(service['host'],
            service['service'])
        servicedetail['slug'] = service['slug']
        service['duration'] = servicedetail['state_duration']
        if '_TEST' in servicedetail:
            servicedetail['nagcat_template'] = servicedetail['_TEST'].split(';',
                1)[-1]
        else:
            servicedetail['nagcat_template'] = ''
        html = render_to_response("graph.html",servicedetail).content
        service['html'] = html
        service['nagcat_template'] = servicedetail['nagcat_template']
        graphs.append(service)

    return views.configurator(request,stat,obj,graphs=graphs, permalink=True,link=link)
コード例 #2
0
ファイル: views.py プロジェクト: nirmalv/nagcat
def retrieve_link(request, link):

    stat, obj = views.parse()

    page = get_object_or_404(ConfiguratorPage, link=link)

    services = page.load_services()

    graphs = []

    for service in services:
        service["isGraphable"] = views.is_graphable(service["host"], service["service"])
        service["slug"] = views.slugify(service["host"] + service["service"])
        servicedetail = views.servicelist_by_host_desc(stat, service["host"], service["service"])[0]
        servicedetail["is_graphable"] = service["isGraphable"]
        servicedetail["slug"] = service["slug"]
        service["duration"] = servicedetail["state_duration"]
        if "_TEST" in servicedetail:
            servicedetail["nagcat_template"] = servicedetail["_TEST"].split(";", 1)[-1]
        else:
            servicedetail["nagcat_template"] = ""
        html = render_to_response("graph.html", servicedetail).content
        service["html"] = html
        service["nagcat_template"] = servicedetail["nagcat_template"]
        graphs.append(service)

    return views.configurator(request, stat, obj, graphs=graphs, permalink=True, link=link)
コード例 #3
0
ファイル: autocomplete.py プロジェクト: jordane/nagcat
def autocomplete(request, context):
    """
    Given a query in a GET parameter, give a list of auto complete suggestions.
    Supports having multiple incomplete values in a comma seperated list.
    """

    query = request.GET.get('term', '')
    limit = int(request.GET.get('limit', 100))

    stat, obj = views.parse()

    choices = []
    queries = []
    q_results = []

    queries = [q.strip() for q in query.split(',') if q.strip()]

    if context == 'host':
        choices = views.hostnames(stat)
    elif context == 'group':
        choices = [x['alias'] for x in views.grouplist(obj)]
    elif context == 'service':
        # servicesnames will return services with the sane name for different
        # hosts, so we make it a set to get rid of duplicate names
        choices = set(views.servicenames(stat))

    for q in queries:
        matching_names = [x for x in choices if q.lower() in x.lower()]
        q_results.append(matching_names)

    # this craziness is to deal with this situation: let valid completions be
    # 'ab', 'ac'. User enters "a, a". Auto complete should give back ['ab,
    # ac'], not ['ab, ac', 'ac, ab'].
    memo = {}
    counts = {}
    for q in q_results:
        key = repr(q) # lists aren't hashable :( but strings are :)
        if key in counts:
            counts[key] += 1
        else:
            counts[key] = 1

    product_foder = []
    for q in q_results:
        try:
            product_foder.append(transpose_combo(q, counts[repr(q)], memo))
        except StopIteration:
            # That means the user entered too many of the substring. ignore an
            # excess entries.
            pass
    # end craziness

    results = itertools.product(*product_foder)
    results = [','.join(result).strip() for result in itertools.islice(results, limit)]
    result = [{"value": r} for r in results if r]
    result.sort(lambda x,y: cmp(len(x['value']), len(y['value'])))

    return HttpResponse(json.dumps(result))
コード例 #4
0
ファイル: views.py プロジェクト: jordane/nagcat
def list_links(request):

    stat,obj = views.parse()

    user = get_user(request)
    page = ConfiguratorPage.objects.filter(user=user).order_by('-creation')
    template = loader.get_template('permalinks.html')
    services = stat['service']

    context_data = {'services': services}
    context_data = views.add_hostlist(stat, obj, context_data)
    context_data['configurator_page'] = page
    context_data['user'] = user
    c = Context(context_data)

    return HttpResponse(template.render(c))
コード例 #5
0
ファイル: views.py プロジェクト: nirmalv/nagcat
def list_links(request):

    stat, obj = views.parse()

    user = get_user(request)
    page = ConfiguratorPage.objects.filter(user=user).order_by("-creation")
    template = loader.get_template("permalinks.html")
    services = stat["service"]

    context_data = {"services": services}
    context_data = views.add_hostlist(stat, obj, context_data)
    context_data["configurator_page"] = page
    context_data["user"] = user
    c = Context(context_data)

    return HttpResponse(template.render(c))
コード例 #6
0
ファイル: views.py プロジェクト: nirmalv/nagcat
def generate_link(request):
    """
    Given a list of services, generates a permanent link at which the page
    can be viewed again by others.
    """
    stat, obj = views.parse()
    source = request.POST if request.POST else request.GET

    services = source.get("services", "")
    description = source.get("description", "")
    user = get_user(request)

    link = ""
    while not link or is_duplicate_page(link):
        link = random_b64_string(LINK_LENGTH)

    page = ConfiguratorPage(link=link, creation=datetime.datetime.now(), user=user, description=description)
    page.save()  # Gives it a primary key, id
    page.save_services(json.loads(services))
    page.save()

    return HttpResponse(link)