Exemple #1
0
def queries_query_modify(request, graph_slug, query_id):
    graph = get_object_or_404(Graph, slug=graph_slug)
    query = graph.queries.get(id=query_id)

    queries_list_url = reverse("queries_list", args=[graph.slug])
    edit_query_url = reverse("queries_query_edit", args=[graph.slug, query.id])
    new_query_url = reverse("queries_new", args=[graph.slug])

    # We get the neccesary values for the query dictionary
    query_name = query.name
    query_description = query.description
    query_dict = request.session['query']
    query_fields = request.session['query_fields']
    query_aliases = request.session['query_aliases']

    # We create the data dictionary
    data = dict()
    data['graph'] = graph
    data['name'] = query_name
    data['description'] = query_description
    data['query_dict'] = query_dict
    data['query_fields'] = query_fields
    data['query_aliases'] = query_aliases
    data['results_count'] = 0
    data['last_run'] = datetime.now()

    # Let's save the results
    if request.POST:
        if 'modify-query' in request.POST:
            form = SaveQueryForm(data=data, instance=query)
            if form.is_valid():
                with transaction.atomic():
                    query = form.save(commit=False)
                    # We treat the results_count
                    results_count = request.session.get('results_count', None)
                    if results_count:
                        query.results_count = results_count
                        query.last_run = datetime.now()
                    else:
                        query.results_count = 0
                    query.save()
                    return redirect(queries_list_url)
            else:
                return redirect(edit_query_url)
        elif 'save-as-new' in request.POST:
            # We change the query id in session to load the dicts
            request.session['query_id'] = NEW
            request.session['query_name'] = _(NEW) + ' ' + query_name
            request.session['query_description'] = (_(NEW) + ' ' +
                                                    query_description)
            return redirect(new_query_url)
    else:
        return redirect(edit_query_url)
Exemple #2
0
def queries_query_modify(request, graph_slug, query_id):
    graph = get_object_or_404(Graph, slug=graph_slug)
    query = graph.queries.get(id=query_id)

    queries_list_url = reverse("queries_list", args=[graph.slug])
    edit_query_url = reverse("queries_query_edit", args=[graph.slug, query.id])
    new_query_url = reverse("queries_new", args=[graph.slug])

    # We get the neccesary values for the query dictionary
    query_name = query.name
    query_description = query.description
    query_dict = request.session['query']
    query_fields = request.session['query_fields']
    query_aliases = request.session['query_aliases']

    # We create the data dictionary
    data = dict()
    data['graph'] = graph
    data['name'] = query_name
    data['description'] = query_description
    data['query_dict'] = query_dict
    data['query_fields'] = query_fields
    data['query_aliases'] = query_aliases
    data['results_count'] = 0
    data['last_run'] = datetime.now()

    # Let's save the results
    if request.POST:
        if 'modify-query' in request.POST:
            form = SaveQueryForm(data=data, instance=query)
            if form.is_valid():
                with transaction.atomic():
                    query = form.save(commit=False)
                    # We treat the results_count
                    results_count = request.session.get('results_count', None)
                    if results_count:
                        query.results_count = results_count
                        query.last_run = datetime.now()
                    else:
                        query.results_count = 0
                    query.save()
                    return redirect(queries_list_url)
            else:
                return redirect(edit_query_url)
        elif 'save-as-new' in request.POST:
            # We change the query id in session to load the dicts
            request.session['query_id'] = NEW
            request.session['query_name'] = _(NEW) + ' ' + query_name
            request.session['query_description'] = (_(NEW) + ' ' +
                                                    query_description)
            return redirect(new_query_url)
    else:
        return redirect(edit_query_url)
Exemple #3
0
def queries_query_edit(request, graph_slug, query_id):
    graph = get_object_or_404(Graph, slug=graph_slug)
    nodetypes = NodeType.objects.filter(schema__graph__slug=graph_slug)
    reltypes = RelationshipType.objects.filter(
        schema__graph__slug=graph_slug)
    redirect_url = reverse("queries_list", args=[graph.slug])
    query = graph.queries.get(pk=query_id)

    # Breadcrumbs variable
    queries_link = (redirect_url, _("Queries"))
    # We get the modal variable
    as_modal = bool(request.GET.get("asModal", False))
    # We declare the form for the results options
    query_options_form = QueryOptionsForm()
    # We get the query_dicts
    query_dict = json.dumps(query.query_dict)
    query_aliases = json.dumps(query.query_aliases)
    query_fields = json.dumps(query.query_fields)

    # We check if we have the variables in the request.session
    if 'query_id' not in request.session \
            or request.session['query_id'] is None:
        request.session['query_id'] = query.id
    if 'query' not in request.session \
            or request.session['query'] is None:
        request.session['query'] = query_dict
    if 'query_aliases' not in request.session \
            or request.session['query_aliases'] is None:
        request.session['query_aliases'] = query_aliases
    if 'query_fields' not in request.session \
            or request.session['query_fields'] is None:
        request.session['query_fields'] = query_fields

    # We get the session query id to check if the dicts saved in the session
    # are for this query
    session_query_id = request.session.get('query_id', None)
    # We check if the query saved and the query edited are different
    # In that case, we use the query edited
    different_queries = query.query_dict != request.session.get('query', None)
    # We compare the session query fields and the new query fields.
    # This is because we can change the sorting params.
    different_sorting_params = (query.query_fields !=
                                request.session.get('query_fields', None))

    # We check if we are going to edit the query
    if request.POST:
        data = request.POST.copy()
        as_modal = bool(data.get("asModal", False))
        form = SaveQueryForm(data=data, instance=query)
        if form.is_valid():
            with transaction.atomic():
                query = form.save(commit=False)
                # We treat the results_count
                results_count = request.session.get('results_count', None)
                if results_count:
                    query.results_count = results_count
                    query.last_run = datetime.now()
                else:
                    query.results_count = 0
                query.save()
                if as_modal:
                    response = {'type': 'redirect',
                                'action': 'queries_list',
                                'url': redirect_url}
                    return HttpResponse(json.dumps(response), status=200,
                                        content_type='application/json')
                else:
                    return redirect(redirect_url)

    # We have to get the values of the query to introduce them into the form
    form = SaveQueryForm(instance=query)

    # If the queries have changed and the id is the same, we use the dicts
    # of the session
    if different_queries and session_query_id == query.id:
        query_dict = request.session.get('query', None)
        query_aliases = request.session.get('query_aliases', None)
        query_fields = request.session.get('query_fields', None)
    if different_sorting_params and session_query_id == query.id:
        query_fields = request.session.get('query_fields', None)

    if as_modal:
        base_template = 'empty.html'
        render = render_to_string
    else:
        base_template = 'base.html'
        render = render_to_response
    add_url = reverse("queries_query_edit", args=[graph_slug, query_id])
    broader_context = {"graph": graph,
                       "node_types": nodetypes,
                       "relationship_types": reltypes,
                       "queries_link": queries_link,
                       "query": query,
                       "form": form,
                       "query_options_form": query_options_form,
                       "query_dict": query_dict,
                       "query_aliases": query_aliases,
                       "query_fields": query_fields,
                       "base_template": base_template,
                       "as_modal": as_modal,
                       "add_url": add_url,
                       "queries_list_url": redirect_url}
    response = render('queries/queries_new.html', broader_context,
                      context_instance=RequestContext(request))
    if as_modal:
        response = {'type': 'html',
                    'action': 'queries_new',
                    'html': response}
        return HttpResponse(json.dumps(response), status=200,
                            content_type='application/json')
    else:
        return response
Exemple #4
0
def queries_new(request, graph_slug):
    graph = get_object_or_404(Graph, slug=graph_slug)
    nodetypes = NodeType.objects.filter(schema__graph__slug=graph_slug)
    reltypes = RelationshipType.objects.filter(schema__graph__slug=graph_slug)
    redirect_url = reverse("queries_list", args=[graph.slug])

    # We declare the forms needed
    form = SaveQueryForm()
    query_options_form = QueryOptionsForm()
    # Breadcrumbs variable
    queries_link = (redirect_url, _("Queries"))
    # We get the modal variable
    as_modal = bool(request.GET.get("asModal", False))
    # We get the query_dicts of the session variable if they exist
    query_id = request.session.get('query_id', None)
    query_dict = None
    query_aliases = None
    query_fields = None
    # Variable to control the save as new to show the form
    save_as_new = False

    # We check if we have the variables in the request.session
    if 'query_id' not in request.session:
        request.session['query_id'] = None
    if 'query' not in request.session:
        request.session['query'] = None
    if 'query_aliases' not in request.session:
        request.session['query_aliases'] = None
    if 'query_fields' not in request.session:
        request.session['query_fields'] = None
    if 'results_count' not in request.session:
        request.session['results_count'] = None

    # If query_id is 'new' means that we need to get the variables of the
    # session to load the query
    if query_id == NEW:
        query_dict = request.session.get('query', None)
        query_aliases = request.session.get('query_aliases', None)
        query_fields = request.session.get('query_fields', None)
        # We need to check the name and the description for the save as new
        query_name = request.session.get('query_name', None)
        query_description = request.session.get('query_description', None)
        # Variable save as new equals to True
        save_as_new = True

        # We create the data dictionary for the form for the save as new
        data = dict()
        data['graph'] = graph
        data['name'] = query_name
        data['description'] = query_description
        data['query_dict'] = query_dict
        data['query_fields'] = query_fields
        data['query_aliases'] = query_aliases
        data['results_count'] = 0
        data['last_run'] = datetime.now()

        # And we add the data to the form
        form = SaveQueryForm(data=data)

    if request.POST:
        data = request.POST.copy()
        as_modal = bool(data.get("asModal", False))
        form = SaveQueryForm(data=data)
        if form.is_valid():
            with transaction.atomic():
                query = form.save(commit=False)
                graph.queries.add(query)
                # We treat the results_count
                results_count = request.session.get('results_count', None)
                if results_count:
                    query.results_count = results_count
                    query.last_run = datetime.now()
                else:
                    query.results_count = 0
                query.save()
                graph.save()
                if as_modal:
                    response = {'type': 'redirect',
                                'action': 'queries_list',
                                'url': redirect_url}
                    return HttpResponse(json.dumps(response), status=200,
                                        content_type='application/json')
                else:
                    return redirect(redirect_url)
    else:
        if as_modal:
            base_template = 'empty.html'
            render = render_to_string
        else:
            base_template = 'base.html'
            render = render_to_response
        add_url = reverse("queries_new", args=[graph_slug])
        broader_context = {"graph": graph,
                           "queries_link": queries_link,
                           "node_types": nodetypes,
                           "relationship_types": reltypes,
                           "form": form,
                           "query_options_form": query_options_form,
                           "save_as_new": save_as_new,
                           "query_dict": query_dict,
                           "query_aliases": query_aliases,
                           "query_fields": query_fields,
                           "base_template": base_template,
                           "as_modal": as_modal,
                           "add_url": add_url,
                           "queries_list_url": redirect_url}
        response = render('queries/queries_new.html', broader_context,
                          context_instance=RequestContext(request))
        if as_modal:
            response = {'type': 'html',
                        'action': 'queries_new',
                        'html': response}
            return HttpResponse(json.dumps(response), status=200,
                                content_type='application/json')
        else:
            return response
Exemple #5
0
def queries_new(request, graph_slug):
    graph = get_object_or_404(Graph, slug=graph_slug)
    nodetypes = NodeType.objects.filter(schema__graph__slug=graph_slug)
    reltypes = RelationshipType.objects.filter(schema__graph__slug=graph_slug)
    redirect_url = reverse("queries_list", args=[graph.slug])
    # We declare the forms needed
    form = SaveQueryForm()
    query_options_form = QueryOptionsForm()
    # Breadcrumbs variable
    queries_link = (redirect_url, _("Queries"))
    # We check if we have the variables in the request.session
    if 'query_id' not in request.session:
        request.session['query_id'] = None
    if 'query' not in request.session:
        request.session['query'] = None
    if 'query_aliases' not in request.session:
        request.session['query_aliases'] = None
    if 'query_fields' not in request.session:
        request.session['query_fields'] = None
    if 'results_count' not in request.session:
        request.session['results_count'] = None
    # We get the query_dicts of the session variable if they exist
    query_id = request.session.get('query_id', None)
    query_dict = None
    query_aliases = None
    query_fields = None
    # If query_id is 'new' means that we need to get the variables of the
    # session to load the query
    if query_id == 'new':
        query_dict = request.session.get('query', None)
        query_aliases = request.session.get('query_aliases', None)
        query_fields = request.session.get('query_fields', None)
    if request.POST:
        data = request.POST.copy()
        form = SaveQueryForm(data=data)
        if form.is_valid():
            with transaction.atomic():
                query = form.save(commit=False)
                graph.queries.add(query)
                # We treat the results_count
                results_count = request.session.get('results_count', None)
                if results_count:
                    query.results_count = results_count
                    query.last_run = datetime.now()
                else:
                    query.results_count = 0
                query.save()
                graph.save()
                return redirect(redirect_url)
    else:
        return render_to_response('queries/queries_new.html',
                                  {"graph": graph,
                                   "queries_link": queries_link,
                                   "node_types": nodetypes,
                                   "relationship_types": reltypes,
                                   "form": form,
                                   "query_options_form": query_options_form,
                                   "query_dict": query_dict,
                                   "query_aliases": query_aliases,
                                   "query_fields": query_fields},
                                  context_instance=RequestContext(request))
Exemple #6
0
def queries_query_edit(request, graph_slug, query_id):
    graph = get_object_or_404(Graph, slug=graph_slug)
    nodetypes = NodeType.objects.filter(schema__graph__slug=graph_slug)
    reltypes = RelationshipType.objects.filter(
        schema__graph__slug=graph_slug)
    redirect_url = reverse("queries_list", args=[graph.slug])
    query = graph.queries.get(pk=query_id)
    # Breadcrumbs variable
    queries_link = (redirect_url, _("Queries"))
    # We declare the form for the results options
    query_options_form = QueryOptionsForm()
    # We get the query_dicts
    query_dict = json.dumps(query.query_dict)
    query_aliases = json.dumps(query.query_aliases)
    query_fields = json.dumps(query.query_fields)
    # We check if we have the variables in the request.session
    if 'query_id' not in request.session \
            or request.session['query_id'] is None:
        request.session['query_id'] = query.id
    if 'query' not in request.session \
            or request.session['query'] is None:
        request.session['query'] = query_dict
    if 'query_aliases' not in request.session \
            or request.session['query_aliases'] is None:
        request.session['query_aliases'] = query_aliases
    if 'query_fields' not in request.session \
            or request.session['query_fields'] is None:
        request.session['query_fields'] = query_fields
    # We get the session query id to check if the dicts saved in the session
    # are for this query
    session_query_id = request.session.get('query_id', None)
    # We check if the query saved and the query edited are different
    # In that case, we use the query edited
    different_queries = query.query_dict != request.session.get('query', None)
    # We check if we are going to edit the query
    if request.POST:
        data = request.POST.copy()
        form = SaveQueryForm(data=data, instance=query)
        if form.is_valid():
            with transaction.atomic():
                query = form.save(commit=False)
                # We treat the results_count
                results_count = request.session.get('results_count', None)
                if results_count:
                    query.results_count = results_count
                    query.last_run = datetime.now()
                else:
                    query.results_count = 0
                query.save()
                return redirect(redirect_url)
    # We have to get the values of the query to introduce them into the form
    form = SaveQueryForm(instance=query)
    # If the queries have changed and the id is the same, we use the dicts
    # of the session
    if different_queries and session_query_id == query.id:
        query_dict = request.session.get('query', None)
        query_aliases = request.session.get('query_aliases', None)
        query_fields = request.session.get('query_fields', None)
    return render_to_response('queries/queries_new.html',
                              {"graph": graph,
                               "node_types": nodetypes,
                               "relationship_types": reltypes,
                               "queries_link": queries_link,
                               "query": query,
                               "form": form,
                               "query_options_form": query_options_form,
                               "query_dict": query_dict,
                               "query_aliases": query_aliases,
                               "query_fields": query_fields},
                              context_instance=RequestContext(request))
Exemple #7
0
def queries_query_edit(request, graph_slug, query_id):
    graph = get_object_or_404(Graph, slug=graph_slug)
    nodetypes = NodeType.objects.filter(schema__graph__slug=graph_slug)
    reltypes = RelationshipType.objects.filter(schema__graph__slug=graph_slug)
    redirect_url = reverse("queries_list", args=[graph.slug])
    query = graph.queries.get(pk=query_id)

    # Breadcrumbs variable
    queries_link = (redirect_url, _("Queries"))
    # We get the modal variable
    as_modal = bool(request.GET.get("asModal", False))
    # We declare the form for the results options
    query_options_form = QueryOptionsForm()
    # We get the query_dicts
    query_dict = json.dumps(query.query_dict)
    query_aliases = json.dumps(query.query_aliases)
    query_fields = json.dumps(query.query_fields)

    # We check if we have the variables in the request.session
    if 'query_id' not in request.session \
            or request.session['query_id'] is None:
        request.session['query_id'] = query.id
    if 'query' not in request.session \
            or request.session['query'] is None:
        request.session['query'] = query_dict
    if 'query_aliases' not in request.session \
            or request.session['query_aliases'] is None:
        request.session['query_aliases'] = query_aliases
    if 'query_fields' not in request.session \
            or request.session['query_fields'] is None:
        request.session['query_fields'] = query_fields

    # We get the session query id to check if the dicts saved in the session
    # are for this query
    session_query_id = request.session.get('query_id', None)
    # We check if the query saved and the query edited are different
    # In that case, we use the query edited
    different_queries = query.query_dict != request.session.get('query', None)
    # We compare the session query fields and the new query fields.
    # This is because we can change the sorting params.
    different_sorting_params = (query.query_fields != request.session.get(
        'query_fields', None))

    # We check if we are going to edit the query
    if request.POST:
        data = request.POST.copy()
        as_modal = bool(data.get("asModal", False))
        form = SaveQueryForm(data=data, instance=query)
        if form.is_valid():
            with transaction.atomic():
                query = form.save(commit=False)
                # We treat the results_count
                results_count = request.session.get('results_count', None)
                if results_count:
                    query.results_count = results_count
                    query.last_run = datetime.now()
                else:
                    query.results_count = 0
                query.save()
                if as_modal:
                    response = {
                        'type': 'redirect',
                        'action': 'queries_list',
                        'url': redirect_url
                    }
                    return HttpResponse(json.dumps(response),
                                        status=200,
                                        content_type='application/json')
                else:
                    return redirect(redirect_url)

    # We have to get the values of the query to introduce them into the form
    form = SaveQueryForm(instance=query)

    # If the queries have changed and the id is the same, we use the dicts
    # of the session
    if different_queries and session_query_id == query.id:
        query_dict = request.session.get('query', None)
        query_aliases = request.session.get('query_aliases', None)
        query_fields = request.session.get('query_fields', None)
    if different_sorting_params and session_query_id == query.id:
        query_fields = request.session.get('query_fields', None)

    if as_modal:
        base_template = 'empty.html'
        render = render_to_string
    else:
        base_template = 'base.html'
        render = render_to_response
    add_url = reverse("queries_query_edit", args=[graph_slug, query_id])
    broader_context = {
        "graph": graph,
        "node_types": nodetypes,
        "relationship_types": reltypes,
        "queries_link": queries_link,
        "query": query,
        "form": form,
        "query_options_form": query_options_form,
        "query_dict": query_dict,
        "query_aliases": query_aliases,
        "query_fields": query_fields,
        "base_template": base_template,
        "as_modal": as_modal,
        "add_url": add_url,
        "queries_list_url": redirect_url
    }
    response = render('queries/queries_new.html',
                      broader_context,
                      context_instance=RequestContext(request))
    if as_modal:
        response = {'type': 'html', 'action': 'queries_new', 'html': response}
        return HttpResponse(json.dumps(response),
                            status=200,
                            content_type='application/json')
    else:
        return response
Exemple #8
0
def queries_new(request, graph_slug):
    graph = get_object_or_404(Graph, slug=graph_slug)
    nodetypes = NodeType.objects.filter(schema__graph__slug=graph_slug)
    reltypes = RelationshipType.objects.filter(schema__graph__slug=graph_slug)
    redirect_url = reverse("queries_list", args=[graph.slug])

    # We declare the forms needed
    form = SaveQueryForm()
    query_options_form = QueryOptionsForm()
    # Breadcrumbs variable
    queries_link = (redirect_url, _("Queries"))
    # We get the modal variable
    as_modal = bool(request.GET.get("asModal", False))
    # We get the query_dicts of the session variable if they exist
    query_id = request.session.get('query_id', None)
    query_dict = None
    query_aliases = None
    query_fields = None
    # Variable to control the save as new to show the form
    save_as_new = False

    # We check if we have the variables in the request.session
    if 'query_id' not in request.session:
        request.session['query_id'] = None
    if 'query' not in request.session:
        request.session['query'] = None
    if 'query_aliases' not in request.session:
        request.session['query_aliases'] = None
    if 'query_fields' not in request.session:
        request.session['query_fields'] = None
    if 'results_count' not in request.session:
        request.session['results_count'] = None

    # If query_id is 'new' means that we need to get the variables of the
    # session to load the query
    if query_id == NEW:
        query_dict = request.session.get('query', None)
        query_aliases = request.session.get('query_aliases', None)
        query_fields = request.session.get('query_fields', None)
        # We need to check the name and the description for the save as new
        query_name = request.session.get('query_name', None)
        query_description = request.session.get('query_description', None)
        # Variable save as new equals to True
        save_as_new = True

        # We create the data dictionary for the form for the save as new
        data = dict()
        data['graph'] = graph
        data['name'] = query_name
        data['description'] = query_description
        data['query_dict'] = query_dict
        data['query_fields'] = query_fields
        data['query_aliases'] = query_aliases
        data['results_count'] = 0
        data['last_run'] = datetime.now()

        # And we add the data to the form
        form = SaveQueryForm(data=data)

    if request.POST:
        data = request.POST.copy()
        as_modal = bool(data.get("asModal", False))
        form = SaveQueryForm(data=data)
        if form.is_valid():
            with transaction.atomic():
                query = form.save(commit=False)
                graph.queries.add(query)
                # We treat the results_count
                results_count = request.session.get('results_count', None)
                if results_count:
                    query.results_count = results_count
                    query.last_run = datetime.now()
                else:
                    query.results_count = 0
                query.save()
                graph.save()
                if as_modal:
                    response = {
                        'type': 'redirect',
                        'action': 'queries_list',
                        'url': redirect_url
                    }
                    return HttpResponse(json.dumps(response),
                                        status=200,
                                        content_type='application/json')
                else:
                    return redirect(redirect_url)
    else:
        if as_modal:
            base_template = 'empty.html'
            render = render_to_string
        else:
            base_template = 'base.html'
            render = render_to_response
        add_url = reverse("queries_new", args=[graph_slug])
        broader_context = {
            "graph": graph,
            "queries_link": queries_link,
            "node_types": nodetypes,
            "relationship_types": reltypes,
            "form": form,
            "query_options_form": query_options_form,
            "save_as_new": save_as_new,
            "query_dict": query_dict,
            "query_aliases": query_aliases,
            "query_fields": query_fields,
            "base_template": base_template,
            "as_modal": as_modal,
            "add_url": add_url,
            "queries_list_url": redirect_url
        }
        response = render('queries/queries_new.html',
                          broader_context,
                          context_instance=RequestContext(request))
        if as_modal:
            response = {
                'type': 'html',
                'action': 'queries_new',
                'html': response
            }
            return HttpResponse(json.dumps(response),
                                status=200,
                                content_type='application/json')
        else:
            return response