Beispiel #1
0
def index(request):

    timezone.activate(get_tzone(request.user))

    ipaddr = get_ip(request)
    if ipaddr:
        mkdir_on_absent(rs_filepath_info(client_ip_log_file)["foldername"])
        ip_log = TimeStamp_HashFile(client_ip_log_file)
        ip_log.stamp(ipaddr)

    contxt = {
        "NichoNode":
        NichoNode,
        "NichoEdge":
        NichoEdge,
        "settings":
        settings,
        "apache_user":
        getpass.getuser(),
        "acount_minus_wk3":
        len(ip_log.get_keys_timerange(timedelta(days=21), timedelta(days=14))),
        "acount_minus_wk2":
        len(ip_log.get_keys_timerange(timedelta(days=14), timedelta(days=7))),
        "acount_minus_wk1":
        len(ip_log.get_keys_timerange(timedelta(days=7), timedelta(days=0))),
    }  # {{ message|safe }}

    return render(request, "appNichoAnu/map_Anurag1_3.html", contxt)
def add_node(request):

    timezone.activate(get_tzone(request.user))
    timezone_now = timezone.now()

    if request.method == "POST":
        iform_h = dict([(ikey, request.POST[ikey]) for ikey in request.POST])
        node_form = NichoNode_Form(iform_h)
        # node object is already affected at above line???
        # The object is returned with nodeform.save(commit = False)???

        if node_form.is_valid():
            node_newinfo = node_form.save(commit=False)
            node_newinfo.user = request.user
            node_newinfo.timestamp = timezone.now()
            node_newinfo.reliability = NODE_RELIABILITY_DEFAULT
            node_newinfo.save()
            to_networkx_from_rec(update=True)
            return HttpResponse("Node added!")
        else:
            from pprint import pprint
            pprint(node_form.errors)
    else:
        node_form = NichoNode_Form()

    contxt = RequestContext(request, {"node_form": node_form})
    templt = loader.get_template("appNichoAnu/map_Anurag_add_node1.html")

    return HttpResponse(templt.render(contxt))
def add_edge(request):
    
    timezone.activate(get_tzone(request.user))  
            
    if request.method == "POST":
        edge_form = NichoEdge_Form(request.POST)
        # edge object is already affected at above line???
        # The object is returned with edgeform.save(commit = False)???
        
        if edge_form.is_valid():           
            edge_newinfo      = edge_form.save(commit = False) 
            edge_newinfo.user = request.user
            edge_newinfo.timestamp = timezone.now()                           
            edge_newinfo.reliability = EDGE_RELIABILITY_DEFAULT               
            edge_newinfo.save()
            to_networkx_from_rec(update = True)
            return HttpResponse("Modified!")
        else:
            from pprint import pprint
            pprint(edge_form.errors)    
    else:
        edge_form = NichoEdge_Form()                       
    
    contxt = RequestContext(request, { "edge_form" : edge_form })
    templt = loader.get_template("appNichoAnu/map_Anurag_add_edge1.html")
    
    return HttpResponse(templt.render(contxt)) 
def del_edge(request, edge_id, outer_percent=300):

    timezone.activate(get_tzone(request.user))

    # edges_objs = Nichoedge.objects.filter(edge_id = edge_id,
    #                                       obsolete = False)

    edge = NichoEdge.objects.get(id=edge_id)
    edge_oldinfo = edge.generate_obsolete()
    edge_oldinfo.save()

    node_src_x = edge.node_src.pos_x_on_map
    node_src_y = edge.node_src.pos_y_on_map
    node_tgt_x = edge.node_tgt.pos_x_on_map
    node_tgt_y = edge.node_tgt.pos_y_on_map
    center_x = (node_src_x + node_tgt_x) / 2
    center_y = (node_src_y + node_tgt_y) / 2
    x_diff_abs = abs(node_tgt_x - node_src_x)
    y_diff_abs = abs(node_tgt_y - node_src_y)
    if y_diff_abs >= x_diff_abs * HHEIGHT_DEFAULT / HWIDTH_DEFAULT:
        y_width = y_diff_abs
        x_width = y_diff_abs * HWIDTH_DEFAULT / HHEIGHT_DEFAULT
    else:
        x_width = x_diff_abs
        y_width = x_diff_abs * HHEIGHT_DEFAULT / HWIDTH_DEFAULT

    range_x = [
        center_x - x_width / 2 * outer_percent / 100,
        center_x + x_width / 2 * outer_percent / 100
    ]
    range_y = [
        center_y - y_width / 2 * outer_percent / 100,
        center_y + y_width / 2 * outer_percent / 100
    ]

    if (range_x[1] - range_x[0] == HWIDTH_DEFAULT
            and range_y[1] - range_y[0] == HHEIGHT_DEFAULT):
        fig_face_color = (0.8, 0.8, 0.7)
    else:
        fig_face_color = (0.8, 0.8, 0.8)

    node_vis_id_src = edge.node_src.node_vis_id
    node_vis_id_tgt = edge.node_tgt.node_vis_id

    edge.delete()

    grf = to_networkx_from_rec(update=True)
    image_file = os.path.join(settings.UCSD_IMM_WORKDIR, "Media",
                              "appNichoAnu", "Images", "edges",
                              "%s.png" % edge_id)
    mkdir_on_absent(rs_filepath_info(image_file)["foldername"])
    # http://127.0.0.1:8000/UCSD_IMM_media/appNichoAnu/Images/tmp1.png
    image_url = '/'.join([
        settings.MEDIA_URL.rstrip('/'), "appNichoAnu", "Images", "edges",
        "%s.png" % edge_id
    ])

    drawgrf = DrawNetworkX_simple(grf)
    drawgrf.output_fig_around_region_simple(
        range_x,
        range_y,
        nodes_central=[node_vis_id_src, node_vis_id_tgt],
        node_label_off_num_nodes=1000,
        figsize=(6, 6),
        fig_face_color=fig_face_color,
        title="Edge %s - %s deleted" % (node_vis_id_src, node_vis_id_tgt),
        outfile=image_file)

    contxt = RequestContext(request, {"edge": edge, "image_url": image_url})
    templt = loader.get_template("appNichoAnu/map_Anurag_del_edge1.html")

    return HttpResponse(templt.render(contxt))
Beispiel #5
0
def edge_info(request, edge_id, outer_percent=300):

    timezone.activate(get_tzone(request.user))

    # edges_objs = Nichoedge.objects.filter(edge_id = edge_id,
    #                                       obsolete = False)

    edge = NichoEdge.objects.get(id=edge_id)
    edge_oldinfo = edge.generate_obsolete()

    if request.method == "POST":
        # iform_h = dict([(ikey, request.POST[ikey]) for ikey in request.POST])
        # from pprint import pprint
        # pprint(iform_h)

        if request.POST.get("del_edge", "") == "on":
            return HttpResponseRedirect(
                reverse("appNichoAnu:del_edge", kwargs={"edge_id": edge_id}))

        prev_edge_reliab = edge.reliability
        edge_form = NichoEdge_Form(request.POST, instance=edge)
        # edge object is already affected at above line.
        # The object is returned with edgeform.save(commit = False)

        if edge_form.is_valid() and len(edge_form.changed_data):
            edge_newinfo = edge_form.save(commit=False)
            edge_newinfo.user = request.user
            edge_newinfo.timestamp = timezone.now()

            if not edge_newinfo.reliability:
                if prev_edge_reliab:
                    edge_newinfo.reliability = prev_edge_reliab
                else:
                    edge_newinfo.reliability = 1

            edge_newinfo.save()
            edge_oldinfo.save()
            to_networkx_from_rec(update=True)
            return HttpResponse("Modified!")
        else:
            from pprint import pprint
            pprint(edge_form.errors)
    else:
        edge_form = NichoEdge_Form(instance=edge)

    grf = to_networkx_from_rec(focus_edge=edge)
    image_file = os.path.join(settings.UCSD_IAB_WORKDIR, "Media",
                              "appNichoAnu", "Images", "edges",
                              "%s.png" % edge_id)
    mkdir_on_absent(rs_filepath_info(image_file)["foldername"])
    # http://127.0.0.1:8000/UCSD_IMM_media/appNichoAnu/Images/tmp1.png
    image_url = '/'.join([
        settings.MEDIA_URL.rstrip('/'), "appNichoAnu", "Images", "edges",
        "%s.png" % edge_id
    ])

    if True:  # not os.path.isfile(image_file):
        node_src_x = edge.node_src.pos_x_on_map
        node_src_y = edge.node_src.pos_y_on_map
        node_tgt_x = edge.node_tgt.pos_x_on_map
        node_tgt_y = edge.node_tgt.pos_y_on_map
        center_x = (node_src_x + node_tgt_x) / 2
        center_y = (node_src_y + node_tgt_y) / 2
        x_diff_abs = abs(node_tgt_x - node_src_x)
        y_diff_abs = abs(node_tgt_y - node_src_y)
        if y_diff_abs >= x_diff_abs * HHEIGHT_DEFAULT / HWIDTH_DEFAULT:
            y_width = y_diff_abs
            x_width = y_diff_abs * HWIDTH_DEFAULT / HHEIGHT_DEFAULT
        else:
            x_width = x_diff_abs
            y_width = x_diff_abs * HHEIGHT_DEFAULT / HWIDTH_DEFAULT

        range_x = [
            center_x - x_width / 2 * outer_percent / 100,
            center_x + x_width / 2 * outer_percent / 100
        ]
        range_y = [
            center_y - y_width / 2 * outer_percent / 100,
            center_y + y_width / 2 * outer_percent / 100
        ]

        if (range_x[1] - range_x[0] == HWIDTH_DEFAULT
                and range_y[1] - range_y[0] == HHEIGHT_DEFAULT):
            fig_face_color = (0.8, 0.8, 0.7)
        else:
            fig_face_color = (0.8, 0.8, 0.8)

        drawgrf = DrawNetworkX_simple(grf)
        drawgrf.output_fig_around_region_simple(
            range_x,
            range_y,
            nodes_central=[
                edge.node_src.node_vis_id, edge.node_tgt.node_vis_id
            ],
            edges_central=[
                (edge.node_src.node_vis_id, edge.node_tgt.node_vis_id),
                (edge.node_tgt.node_vis_id, edge.node_src.node_vis_id)
            ],
            node_label_off_num_nodes=1000,
            figsize=(6, 6),
            fig_face_color=fig_face_color,
            title="Edge %s - %s" %
            (edge.node_src.node_vis_id, edge.node_tgt.node_vis_id),
            outfile=image_file)

    contxt = {"edge": edge, "edge_form": edge_form, "image_url": image_url}

    return render(request, "appNichoAnu/map_Anurag_edge_info2.html", contxt)
Beispiel #6
0
def node_vis_id_info(request,
                     node_vis_id,
                     hwidth=HWIDTH_DEFAULT,
                     hheight=HHEIGHT_DEFAULT,
                     offx=0,
                     offy=0):
    hwidth = int(hwidth)
    hheight = int(hheight)
    offx = int(offx)
    offy = int(offy)

    timezone.activate(get_tzone(request.user))
    timezone_now = timezone.now()
    node = NichoNode.objects.get(node_vis_id=node_vis_id)
    node_oldinfo = node.generate_obsolete(timezone_now)

    node_pos_x = node.pos_x_on_map
    node_pos_y = node.pos_y_on_map

    if request.method == "POST":

        if request.POST.get("del_node", "") == "on":
            return HttpResponseRedirect(
                reverse("appNichoAnu:del_node",
                        kwargs={"node_vis_id": node_vis_id}))

        iform_h = dict([(ikey, request.POST[ikey]) for ikey in request.POST])
        iform_h["node_vis_id"] = node.node_vis_id
        iform_h["reliability"] = node.reliability
        node_form = NichoNode_Form(iform_h, instance=node)
        # node object is already affected at above line.
        # The object is returned with nodeform.save(commit = False)

        from pprint import pprint
        pprint(iform_h)
        print(".....")

        if node_form.is_valid() and len(node_form.changed_data):
            node_newinfo = node_form.save(commit=False)
            node_newinfo.user = request.user
            node_newinfo.timestamp = timezone.now()
            # New time stamp!
            node_newinfo.save()
            node_oldinfo.save()
            to_networkx_from_rec(update=True)
            return HttpResponse("Modified!")
        else:
            from pprint import pprint
            pprint(node_form.errors)
    else:
        node_form = NichoNode_Form(instance=node)

    grf = to_networkx_from_rec()
    image_file = os.path.join(settings.UCSD_IAB_WORKDIR, "Media",
                              "appNichoAnu", "Images", "nodes",
                              "%s.png" % node_vis_id)
    mkdir_on_absent(rs_filepath_info(image_file)["foldername"])
    # http://127.0.0.1:8000/UCSD_IMM_media/appNichoAnu/Images/tmp1.png
    image_url = '/'.join([
        settings.MEDIA_URL.rstrip('/'), "appNichoAnu", "Images", "nodes",
        "%s.png" % node_vis_id
    ])

    if True:  # not os.path.isfile(image_file):
        drawgrf = DrawNetworkX_simple(grf)
        if hwidth == HWIDTH_DEFAULT and hheight == HHEIGHT_DEFAULT:
            fig_face_color = (0.8, 0.8, 0.7)
        else:
            fig_face_color = (0.8, 0.8, 0.8)
        nodes_drawn, edges_drawn = \
            drawgrf.output_fig_around_region_simple(
                [node_pos_x - hwidth  + offx, node_pos_x + hwidth  + offx],
                [node_pos_y - hheight + offy, node_pos_y + hheight + offy],
                nodes_central = [ node_vis_id ],
                node_label_off_num_nodes = 1000,
                figsize = (6, 6),
                fig_face_color = fig_face_color,
                title = "Network around %s" % node_vis_id,
                outfile = image_file)

        # for nodenam in nodes_drawn:
        #     print("Getting", nodenam)
        #     print(NichoNode.objects.get(node_vis_id = nodenam))

        nodes_drawn = [
            NichoNode.objects.get(node_vis_id=nodenam)
            for nodenam in nodes_drawn
        ]
        print("Nodes drawn:", nodes_drawn)
    else:
        nodes_drawn = []

    hwidth_zi = int(hwidth / 1.5)
    if hwidth_zi < 2:
        hwidth_zi = 2
    hheight_zi = int(hheight / 1.5)
    if hheight_zi < 2:
        hheight_zi = 2

    zoom_in_param = {
        "hwidth": hwidth_zi,
        "hheight": hheight_zi,
        "offx": offx,
        "offy": offy
    }

    zoom_out_param = {
        "hwidth": int(hwidth * 1.5),
        "hheight": int(hheight * 1.5),
        "offx": offx,
        "offy": offy
    }

    shift_left_param = {
        "hwidth": hwidth,
        "hheight": hheight,
        "offx": int(offx - hwidth * 0.5),
        "offy": offy
    }

    shift_right_param = {
        "hwidth": hwidth,
        "hheight": hheight,
        "offx": int(offx + hwidth * 0.5),
        "offy": offy
    }

    shift_down_param = {
        "hwidth": hwidth,
        "hheight": hheight,
        "offx": offx,
        "offy": int(offy - hheight * 0.5)
    }

    shift_up_param = {
        "hwidth": hwidth,
        "hheight": hheight,
        "offx": offx,
        "offy": int(offy + hheight * 0.5)
    }

    contxt = {
        "node": node,
        "node_form": node_form,
        "image_url": image_url,
        "nodes_drawn": nodes_drawn,
        "zoom_in_param": zoom_in_param,
        "zoom_out_param": zoom_out_param,
        "shift_left_param": shift_left_param,
        "shift_right_param": shift_right_param,
        "shift_up_param": shift_up_param,
        "shift_down_param": shift_down_param,
    }

    return render(request, "appNichoAnu/map_Anurag_node_info4.html", contxt)
def del_node(request,
             node_vis_id,
             hwidth=HWIDTH_DEFAULT,
             hheight=HHEIGHT_DEFAULT,
             offx=0,
             offy=0):

    hwidth = int(hwidth)
    hheight = int(hheight)
    offx = int(offx)
    offy = int(offy)

    timezone.activate(get_tzone(request.user))
    timezone_now = timezone.now()
    node = NichoNode.objects.get(node_vis_id=node_vis_id)
    node_pos_x = node.pos_x_on_map
    node_pos_y = node.pos_y_on_map

    node_oldinfo = node.generate_obsolete(timezone_now)
    node_oldinfo.save()
    edges_deleted_str = []
    for edge in node.assoc_edges():
        edge_oldinfo = edge.generate_obsolete(timezone_now)
        edge_oldinfo.save()
        edges_deleted_str = str(edge)
        edge.delete()

    node.delete()

    grf = to_networkx_from_rec(update=True)
    image_file = os.path.join(settings.UCSD_IMM_WORKDIR, "Media",
                              "appNichoAnu", "Images", "nodes",
                              "%s.png" % node_vis_id)
    mkdir_on_absent(rs_filepath_info(image_file)["foldername"])
    # http://127.0.0.1:8000/UCSD_IMM_media/appNichoAnu/Images/tmp1.png
    image_url = '/'.join([
        settings.MEDIA_URL.rstrip('/'), "appNichoAnu", "Images", "nodes",
        "%s.png" % node_vis_id
    ])

    drawgrf = DrawNetworkX_simple(grf)
    if hwidth == HWIDTH_DEFAULT and hheight == HHEIGHT_DEFAULT:
        fig_face_color = (0.8, 0.8, 0.7)
    else:
        fig_face_color = (0.8, 0.8, 0.8)
    nodes_drawn, edges_drawn = \
        drawgrf.output_fig_around_region_simple(
            [node_pos_x - hwidth  + offx, node_pos_x + hwidth  + offx],
            [node_pos_y - hheight + offy, node_pos_y + hheight + offy],
            nodes_central = [ node_vis_id ],
            node_label_off_num_nodes = 1000,
            figsize = (6, 6),
            fig_face_color = fig_face_color,
            title = "Network around %s" % node_vis_id,
            outfile = image_file)

    nodes_drawn = [
        NichoNode.objects.get(node_vis_id=nodenam) for nodenam in nodes_drawn
    ]
    print("Nodes drawn:", nodes_drawn)

    hwidth_zi = int(hwidth / 1.5)
    if hwidth_zi < 2:
        hwidth_zi = 2
    hheight_zi = int(hheight / 1.5)
    if hheight_zi < 2:
        hheight_zi = 2

    zoom_in_param = {
        "hwidth": hwidth_zi,
        "hheight": hheight_zi,
        "offx": offx,
        "offy": offy
    }

    zoom_out_param = {
        "hwidth": int(hwidth * 1.5),
        "hheight": int(hheight * 1.5),
        "offx": offx,
        "offy": offy
    }

    shift_left_param = {
        "hwidth": hwidth,
        "hheight": hheight,
        "offx": int(offx - hwidth * 0.5),
        "offy": offy
    }

    shift_right_param = {
        "hwidth": hwidth,
        "hheight": hheight,
        "offx": int(offx + hwidth * 0.5),
        "offy": offy
    }

    shift_down_param = {
        "hwidth": hwidth,
        "hheight": hheight,
        "offx": offx,
        "offy": int(offy - hheight * 0.5)
    }

    shift_up_param = {
        "hwidth": hwidth,
        "hheight": hheight,
        "offx": offx,
        "offy": int(offy + hheight * 0.5)
    }

    contxt = RequestContext(
        request, {
            "image_url": image_url,
            "nodes_drawn": nodes_drawn,
            "zoom_in_param": zoom_in_param,
            "zoom_out_param": zoom_out_param,
            "shift_left_param": shift_left_param,
            "shift_right_param": shift_right_param,
            "shift_up_param": shift_up_param,
            "shift_down_param": shift_down_param,
        })
    templt = loader.get_template("appNichoAnu/map_Anurag_del_node1.html")

    return HttpResponse(templt.render(contxt))