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)
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
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
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))
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))
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
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