Ejemplo n.º 1
0
def create_filter_child(request, node_id):
    node = get_node_subclass_or_404(request.user, node_id)
    column_name = request.POST['column_name']
    column_filter = request.POST['column_filter']

    child_node = create_filter_child_node(node, column_name, column_filter)

    data = get_rendering_dict(child_node)
    data["node_id"] = node.get_css_id()
    return JsonResponse(data)
Ejemplo n.º 2
0
def node_create(request, analysis_id, node_type):
    global NODE_TYPES_HASH
    if NODE_TYPES_HASH is None:
        NODE_TYPES_HASH = get_node_types_hash_by_class_name()

    analysis = get_analysis_or_404(request.user, analysis_id, write=True)

    node_class = NODE_TYPES_HASH[node_type]
    node = node_class.objects.create(analysis=analysis)
    update_analysis(node.analysis_id)
    return JsonResponse(get_rendering_dict(node))
Ejemplo n.º 3
0
    def render(self, context):
        try:
            nodes = self.nodes_variable.resolve(context)
            nodes_array = []
            for node in nodes:
                try:
                    node_rendering_dict = get_rendering_dict(node)
                    nodes_array.append(node_rendering_dict)
                except Exception as e:
                    logging.error(e)

            return json.dumps(nodes_array)
        except template.VariableDoesNotExist:
            return ''
Ejemplo n.º 4
0
def create_selected_child(request, node_id):
    node = get_node_subclass_or_404(request.user, node_id)
    x = node.x + 50 + random.randrange(-10, 10)
    y = node.y + 100 + random.randrange(-10, 10)

    selected_node = SelectedInParentNode.objects.create(analysis=node.analysis,
                                                        x=x,
                                                        y=y,
                                                        ready=False)
    selected_node.add_parent(node)
    selected_node.save()
    update_analysis(node.analysis.pk)

    data = get_rendering_dict(selected_node)
    data["node_id"] = node.get_css_id()
    return JsonResponse(data)
Ejemplo n.º 5
0
def create_extra_filter_child(request, node_id, extra_filters):
    node = get_node_subclass_or_404(request.user, node_id, write=True)
    x = node.x + 50 + random.randrange(-10, 10)
    y = node.y + 100 + random.randrange(-10, 10)
    filter_node = BuiltInFilterNode.objects.create(
        analysis=node.analysis,
        built_in_filter=extra_filters,
        x=x,
        y=y,
        ready=False)
    filter_node.add_parent(node)
    filter_node.save()

    update_analysis(node.analysis.pk)
    data = get_rendering_dict(filter_node)
    data["node_id"] = node.get_css_id()
    return JsonResponse(data)
Ejemplo n.º 6
0
def nodes_copy(request, analysis_id):
    node_ids = json.loads(request.POST["nodes"])
    node_ids = set([int(i) for i in node_ids])

    nodes = []
    edges = []

    analysis = get_analysis_or_404(request.user, analysis_id, write=True)
    nodes_qs = analysis.analysisnode_set.filter(
        id__in=node_ids).select_subclasses()
    topo_sorted = get_toposorted_nodes(nodes_qs)

    old_new_map = {}
    for group in topo_sorted:
        for node in group:
            if analysis_id is None:
                analysis_id = node.analysis_id

            template_node = get_node_subclass_or_404(request.user, node.id)
            parents = template_node.analysisnode_ptr.parents().filter(
                id__in=old_new_map).values_list('id', flat=True)

            clone_node = template_node.save_clone()
            clone_node.x += 10
            clone_node.y += 10
            clone_node.status = NodeStatus.DIRTY
            clone_node.save()
            old_new_map[node.id] = clone_node

            clone_node.adjust_cloned_parents(old_new_map)

            for parent_id in parents:
                new_parent = old_new_map[parent_id]
                new_parent.add_child(clone_node)

                edge = clone_node.get_connection_data(new_parent)
                edges.append(edge)

            if not clone_node.is_valid():
                clone_node.count = None

            clone_node.save()
            nodes.append(get_rendering_dict(clone_node))

    update_analysis(analysis.pk)
    return JsonResponse({"nodes": nodes, "edges": edges})
Ejemplo n.º 7
0
def node_data(request, node_id):
    node = get_node_subclass_or_404(request.user, node_id)
    return JsonResponse(get_rendering_dict(node))