{% insert_str prelude 'css/login.css' %}
<p class='login-status'> {{ state }} </p>
-<a href="/" alt="Home"><img class="logo" src="{{ STATIC_URL }}img/myslice-logo.png" alt="MySlice" /></a>
+<!--<a href="/" alt="Home"><img class="logo" src="{{ STATIC_URL }}img/myslice-logo.png" alt="MySlice" /></a>-->
<form action="/login/" method="post">
{% csrf_token %}
{% if next %}
if user.is_active:
login(request, user)
#state = "You're successfully logged in!"
- return HttpResponseRedirect ('/login-ok')
+ return HttpResponseRedirect ('/portal/dashboard')
+ #return HttpResponseRedirect ('/login-ok')
else:
env['state'] = "Your account is not active, please contact the site admin."
return render_to_response('view-login.html',env, context_instance=RequestContext(request))
env['state'] = "Your username and/or password were incorrect."
return render_to_response('view-login.html',env, context_instance=RequestContext(request))
else:
- state='Welcome to MySlice'
+ state='' #Welcome to MySlice'
env['state']=state
env['username']=the_user(request)
return render_to_response('view-login.html',env, context_instance=RequestContext(request))
var IN_PROGRESS = 101;
var DONE = 102;
+/* Update requests from plugins */
var SET_ADD = 201;
var SET_REMOVED = 202;
+/* Query status */
+var STATUS_NONE = 500; // Query has not been started yet
+var STATUS_GET_IN_PROGRESS = 501; // Query has been sent, no result has been received
+var STATUS_GET_RECEIVED = 502; // Success
+var STATUS_GET_ERROR = 503; // Error
+var STATUS_UPDATE_PENDING = 504;
+var STATUS_UPDATE_IN_PROGRESS = 505;
+var STATUS_UPDATE_RECEIVED = 506;
+var STATUS_UPDATE_ERROR = 507;
+// outdated ?
+
// A structure for storing queries
+
+
function QueryExt(query, parent_query, main_query) {
/* Constructor */
this.query = query
this.parent_query = (typeof parent_query == "undefined") ? false : parent_query
this.main_query = (typeof main_query == "undefined") ? false : main_query
-
- // How to link to an update query ? they both have the same UUID !!
-
+
+ this.status = null;
+ this.results = null;
+ this.update_query = null; // null unless we are a main_query (aka parent_query == null); only main_query_fields can be updated...
}
function QueryStore() {
- var main_queries = {};
- var analyzed_queries = {};
+ this.main_queries = {};
+ this.analyzed_queries = {};
/* Insertion */
query.analyze_subqueries();
}
- query_ext = QueryExt(query, null, null)
+ query_ext = new QueryExt(query, null, null)
manifold.query_store.main_queries[query.query_uuid] = query_ext;
// We also need to insert all queries and subqueries from the analyzed_query
query.iter_subqueries(function(sq, data, parent_query) {
- parent_query_ext = this.find_analyzed_query_ext(parent_query.query_uuid);
+ if (parent_query)
+ parent_query_ext = manifold.query_store.find_analyzed_query_ext(parent_query.query_uuid);
+ else
+ parent_query_ext = null;
sq_ext = QueryExt(sq, parent_query_ext, query_ext)
- this.analyzed_queries[sq.query_uuid] = sq_ext;
+ manifold.query_store.analyzed_queries[sq.query_uuid] = sq_ext;
});
}
* Query management
**************************************************************************/
- query_store: QueryStore(),
+ query_store: new QueryStore(),
// XXX Remaining functions are deprecated since they are replaced by the query store
* \param ManifoldQuery query Query to be added
*/
insert_query : function (query) {
+ // NEW API
+ manifold.query_store.insert(query);
+
+ // FORMER API
if (query.analyzed_query == null) {
query.analyze_subqueries();
}
switch(event_type) {
case SET_ADD:
// Query uuid has been updated with the key of a new element
- query = manifold.find_query(query_uuid);
+ query_ext = manifold.find_analyzed_query(query_uuid);
+
+ // update is only possible is the query is not pending, etc
+ // CHECK status !
+
+ // XXX we can only update subqueries of the main query. Check !
+ // assert query_ext.parent_query == query_ext.main_query
+ update_query = query_ext.parent_query.update_query;
+
+ // NOTE: update might modify the fields in Get
+ // NOTE : we have to modify all child queries
+ // NOTE : parts of a query might not be started (eg slice.measurements, how to handle ?)
+
+ // if everything is done right, update_query should not be null. It is updated when we received results from the get query
+ // object = the same as get
+ // filter = key : update a single object for now
+ // fields = the same as get
- // XXX We need to find the parent to update the property
- // XXX We need to find the non-analyzed query so that it can be updated also
break;
case SET_REMOVED:
// Query uuid has been updated with the key of a removed element
standard_topmenu_items = [
# { 'label':'Tab', 'href': '/tab/'},
# { 'label':'Scroll', 'href': '/scroll/'},
- { 'label':'One Plugin', 'href': '/plugin/'},
+# { 'label':'One Plugin', 'href': '/plugin/'},
{ 'label':'Dashboard', 'href': '/portal/dashboard/'},
{ 'label':'Slice', 'href': '/slice/'},
]
def get_context_data(self, **kwargs):
user_hrn = 'ple.upmc.jordan_auge'
- messages.info(self.request, 'You have logged in')
-
-
+ #messages.info(self.request, 'You have logged in')
page = Page(self.request)
# Slow...
from plugins.messages.messages import Messages
from plugins.updater.updater import Updater
-tmp_default_slice='ple.inria.heartbeat'
+tmp_default_slice='ple.inria.myslicedemo'
debug = True
@login_required
{% endblock unfold2_margin %}
{% block unfold2_main %}
+<!--
<code> This page is currently connected to two authentication systems:</code>
<ul>
<li> A manifold server, located at <code>{{ manifold_url }}</code>, (configured in <code>myslice/config.py</code>), and</li>
{% endfor %}
</ul>
</li></ul>
+-->
+
+<div style='padding: 20px;'>
+ <div style=' padding-top: 12px; background-color: orange; border: 1px solid #61210B; text-align: center;'>
+ <h2 style="font-weight: bold;">Welcome to the OneLab portal !</h2>
+ <h3>New to OneLab? Please <a href="/register">register</a> or learn more about <a href="http://www.fed4fire.eu/" target="_blank">the project</a>.</h3>
+ </div>
+<p/>
+ <p>
+Experimentally-driven research is key to success in exploring the possible
+futures of the Internet. The OneLab initiative provides an open,
+general-purpose, shared experimental facility, both large-scale and
+sustainable, which allows European industry and academia to innovate and assess
+the performance of their solutions. Based on the results of several different
+European and national projects, OneLab offers access to a range of tools and
+testbeds including PlanetLab Europe, the NITOS wireless testbed, and other
+federated testbeds.
+ </p>
+ <div class="item-separator"></div>
+</div>
+
{% endblock unfold2_main %}
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container-fluid">
- <a class="brand" href="/"><img src="{{ STATIC_URL }}img/myslice-logo.png" height="30" alt="MySlice logo" /></a>
+ <a class="brand" href="/"><img src="{{ STATIC_URL }}img/onelab-logo.png" height="30" alt="OneLab logo" /></a>
+ <!--<a class="brand" href="/"><img src="{{ STATIC_URL }}img/myslice-logo.png" height="30" alt="MySlice logo" /></a>-->
<div class="nav-collapse topmenu">
<ul class="nav nav-pills" id='menu_ul'> {% for d in topmenu_items %} {% if d.is_active %}
<li class='active'> <a href="{{ d.href }}"> {{ d.label }} </a> </li> {% else %}