Access Keys:
Skip to content (Access Key - 0)

Knowledgebase

Part 10 : Using Saved Queries


Table of Contents

Step 1: Construct the Saved Queries template

  1. In mytemplates/thewebapp make the new template savedquery.html
  2. Add the following:
    {% if the_username %}
    	Hello <b>{{ the_username }}</b>, you are logged in. Do you want to <a href="/logout/">Logout?</a><br>
    	{% if queries %}
    		<h3>Use a previously submitted Query</h3>
    		<form action="/savedqueries/">
    			<table border="1">
    				<th>Query</th>
    				<th>The query's details</th>
    				<th>The query submitted</th>
    				{% for aq in queries%}
    					<tr>
    						<td>
    							<input type=radio name="selectedquery" value={{aq.pk}}>
    						</td>
    						<td>	
    							URL:<dd><b>{{aq.url}}</b></dd><br>
    							{%if aq.object != ''%}Object:<dd><b>{{aq.object}}</b></dd><br>{%endif%}
    							Type of Query:<dd><b>{{aq.thekind}}</b></dd><br>
    							{% if aq.filename != ''%}Input File:<dd><b>{{aq.filename}}</b></dd><br>{%endif%}
    							{% if aq.dattr != '' %}Attribute selected:<dd><b>{{aq.dattr}}</b></dd><br>{%endif%}
    							{% if aq.sattr != '' %}Attributes selected:<dd><b>{{aq.sattr}}</b></dd><br>{%endif%}
    							{% if aq.aattrvalue != '' %}
    								roleName:<dd><b>{{aq.rolename}}</b></dd><br>
    								{%if aq.cql2%}endName:{%else%}className:{%endif%}<dd><b>{{aq.classname}}</b></dd><br>
    								Attribute selected:<dd><b>{{aq.aattr}}</dd></b><br>
    								Predicate selected:<dd><b>{{aq.predicate}}</dd></b><br>
    								Value selected:<dd><b>{{aq.aattrvalue}}</dd></b><br>
    							{%endif%}
    							<br>
    						</td>
    						<td>
    							{%if aq.cql2%}CQL2 Query<br>
    							{%else%}CQL1 Query<br>
    							{%endif%}				
    							<textarea rows="10" cols="75">{{aq.query}}</textarea>
    						</td>
    					</tr>
    				{%endfor%}
    			</table>
    			<input type="submit" value="Submit" />
    		</form>
    	{%else%}
    		<p><h2>You haven't queried any data services yet</h2></p>
    	{%endif%}
    	{% if stringw %}
    		<h3>Results</h3>
    		<textarea rows="50" cols="150">{{stringw}}</textarea><br>
    	{%endif%}
    {% else %}
    	Hello, do you want to <a href="/login/">Login</a> to save queries and query secure data services?<br>
    	<p><h2>You have to login to save queries and access your stored queries</h2></p>
    {% endif %}
    <a href="/index/">Back to the Index</a><br>
    
  3. Save the file

Step 2: Add the Saved Queries method

  1. Open GridClient/views.py
  2. Add the savedqueries method
    def savedqueries(request):
        if "selectedquery" in request.GET:
            u=user.objects.get(pk=int(request.session["user_id"]))
            q=u.queries_set.get(pk=int(request.GET["selectedquery"]))
            #if 'url' in request.session: del request.session['url'] 
            request.session['url']=q.url
            
            if(q.cql2):
                query2=CQL2SerializationUtil.deserializeCql2Query(StringReader(q.query))
                results=processquery(request,query2,None)
            else:
                query1=Utils.deserializeObject(StringReader(q.query), CQL1Query)
                results=processquery(request,None,query1)
            return render_to_response('thewebapp/savedquery.html', 
                                          {'the_username':logged_in(request),
                                           'queries':u.queries_set.all().order_by('url'),
                                           'stringw': results,}, 
                                      context_instance=RequestContext(request)) 
        else:
            
            if "user_id" in request.session:
                u=user.objects.get(pk=int(request.session["user_id"]))
                q=u.queries_set.all().order_by('url')
                
                return render_to_response('thewebapp/savedquery.html', 
                                      {'the_username':logged_in(request),
                                       'queries':q,}, 
                                      context_instance=RequestContext(request))
            else:
                return render_to_response('thewebapp/savedquery.html', 
                                      {'the_username':logged_in(request),}, 
                                      context_instance=RequestContext(request))
    
  3. Save the file

Step 3: Add the SavedQueries urls

  1. Open GridClient/urls.py
  2. Add the savedqueries url and the savedqueries method in urlpatterns
    urlpatterns = patterns('',
        (r'^index/$', 'thewebapp.views.index'),
        (r'^login/$', 'thewebapp.views.login'),
        (r'^logout/$', 'thewebapp.views.logout'),
        (r'^badlogin/$', 'thewebapp.views.badlogin'),
        (r'^listservices/$','thewebapp.views.listservices'),
        (r'^discoverservices/$','thewebapp.views.discoverservices'),
        (r'^dataservices/$','thewebapp.views.dataservices'),
        (r'^geturls/$','thewebapp.views.geturls'),
        (r'^getfile/$','thewebapp.views.getfile'),
        (r'^getquery/$','thewebapp.views.getquery'),
        (r'^getobject/$','thewebapp.views.getobject'),
        (r'^getmodifier/$','thewebapp.views.getmodifier'),
        (r'^getdattr/$','thewebapp.views.getdattr'),
        (r'^getsattr/$','thewebapp.views.getsattr'),
        (r'^getassoc/$','thewebapp.views.getassoc'),
        (r'^getassocattr/$','thewebapp.views.getassocattr'),
        (r'^savedqueries/$','thewebapp.views.savedqueries'),
    )
    
  3. Save the file

Step 4: Test the Saved Queries page

  1. Go to http://localhost:8000/savedqueries
  2. Select a query and press the Submit button at the bottom of the page
  3. The current results of that query is shown at the bottom of the page
Last edited by
Saba Bokhari (555 days ago)
Adaptavist Theme Builder Powered by Atlassian Confluence