import portal.slicetabexperiment
import portal.slicetabinfo
import portal.slicetabtestbeds
-import portal.slicetabusers
+import portal.slicetabusers
+import portal.slicetabmeasurements
#### high level choices
# main entry point (set to the / URL)
(r'^slice/(?P<slicename>[^/]+)/?$', portal.sliceview.SliceView.as_view()),
(r'^info/(?P<slicename>[^/]+)/?$', portal.slicetabinfo.SliceInfoView.as_view()),
(r'^testbeds/(?P<slicename>[^/]+)/?$', portal.slicetabtestbeds.SliceTabTestbeds.as_view()),
+ (r'^measurements/(?P<slicename>[^/]+)/?$', portal.slicetabmeasurements.SliceTabMeasurements.as_view()),
(r'^experiment/(?P<slicename>[^/]+)/?$', portal.slicetabexperiment.ExperimentView.as_view()),
url(r'^portal/', include('portal.urls')),
]
def get_context_data(self, **kwargs):
-
+ self.template_name = self.template
page = Page(self.request)
page.add_js_files ( [ "js/jquery.validate.js", "js/my_account.register.js", "js/my_account.edit_profile.js" ] )
page.add_css_files ( [ "css/onelab.css", "css/account_view.css","css/plugin.css" ] )
# we could use zip. this one is used if columns have unequal rows
platform_list = [{'platform_no_access': t[0]}
for t in itertools.izip_longest(total_platform_list)]
-
context = super(AccountView, self).get_context_data(**kwargs)
context['principal_acc'] = principal_acc_list
context['ref_acc'] = ref_acc_list
# GET is for displaying the empty form
# POST is to process it once filled - or show the form again if anything is missing
class ContactView (FreeAccessView, ThemeView):
+ template_name = 'contact.html'
def post (self, request):
form = ContactForm(request.POST) # A form bound to the POST data
if form.is_valid(): # All validation rules pass
# Process the data in form.cleaned_data
- first_name = form.cleaned_data['first_name']
- last_name = form.cleaned_data['last_name']
- authority = form.cleaned_data['authority']
+ #first_name = form.cleaned_data['first_name']
+ #last_name = form.cleaned_data['last_name']
+ #authority = form.cleaned_data['authority']
subject = form.cleaned_data['subject']
description = form.cleaned_data['description']
email = form.cleaned_data['email'] # email of the sender
#theme.template_name = 'email_support.txt'
#recipients = render_to_string(theme.template, form.cleaned_data)
#recipients = subject.replace('\n', '')
- recipients = ['support@myslice.info']
+ recipients = ['support@myslice.info','contact@fed4fire.eu']
if cc_myself:
recipients.append(email)
#recipients = ['support@myslice.info']
username = request.user.email
else :
username = None
- return render(request, 'contact.html', {
+ return render(request, self.template, {
'form': form,
'topmenu_items': topmenu_items('Contact', request),
'theme' : self.theme,
--- /dev/null
+from django.template import RequestContext
+from django.shortcuts import render_to_response
+
+from unfold.loginrequired import LoginRequiredView
+
+from myslice.theme import ThemeView
+
+class SliceTabMeasurements (LoginRequiredView, ThemeView):
+ template_name = "slice-tab-measurement.html"
+
+ def get(self, request, slicename):
+ return render_to_response(self.template, {"theme": self.theme, "username": request.user, "slice" : slicename, "section":"measurements"}, context_instance=RequestContext(request))
<li><a href="/slice/{{ slice }}#testbeds">Testbeds</a></li>
<li class="active"><a class="link" href="/resources/{{ slice }}">Resources</a></li>
<li><a href="/slice/{{ slice }}#users">Users</a></li>
- <li><a href="/slice/{{ slice }}#statistics">Statistics</a></li>
- <li><a href="/slice/{{ slice }}#experiment">Measurements</a></li>
+ <!--<li><a href="/slice/{{ slice }}#statistics">Statistics</a></li> -->
+ <li><a href="/slice/{{ slice }}#measurements">Measurements</a></li>
<li><a href="/slice/{{ slice }}#experiment" data-toggle="tab">Experiment</a></li>
</ul>
{% else %}
<li class="testbeds"><a href="#testbeds">Testbeds</a></li>
<li><a class="link" href="/resources/{{ slice }}">Resources</a></li>
<li class="users"><a href="#users">Users</a></li>
- <li class="statistics"><a href="#statistics">Statistics</a></li>
- <li class="measurements"><a href="#experiment">Measurements</a></li>
+<!-- <li class="statistics"><a href="#statistics">Statistics</a></li> -->
+ <li class="measurements"><a href="#measurements">Measurements</a></li>
<li class="experiment"><a href="#experiment" data-toggle="tab">Experiment</a></li>
</ul>
<script>
$('div#info').load('/info/{{ slice }}/');
});
</script>
-{% endif %}
\ No newline at end of file
+{% endif %}
<table class="profile">
<tr>
<td colspan="2">
- <div>Platforms: Myslice</div>
+ <div><h3>Platform: Myslice</h3></div>
</td>
</tr>
<tr>
</td>
{%endif%}
</tr>
- <tr class="odd">
- {%if 'N/A' not in user_private_key%}
- <td class="key">Identity</td>
- <td>
- <button type="submit" name="dl_identity" class="btn btn-default btn-xs" title="You will require it to use jfed" id="dl_identity">
- <span class="glyphicon glyphicon-download"></span> Download
- </button>
- </td>
- {%else%}
- <td class="key">Identity</td>
- <td>
- <button type="submit" name="dl_identity" class="btn btn-default btn-xs disabled" title="You will require it to use jfed" id="dl_identity">
- <span class="glyphicon glyphicon-download"></span> Download
- </button>
- </td>
- {%endif%}
- </tr>
<tr class="even">
<td colspan="2">
<p class="message" id="pkey_del_msg"><b> Tradeoff:</b> Ease-of-use vs Security.<br>
{% block content %}
<div class="row">
<div class="col-md-12">
- <h1><img src="{{ STATIC_URL }}img/icon_support_small.png" alt="Open a Ticket" /> OneLab Support</h1>
+ <h1><img src="{{ STATIC_URL }}img/icon_support_small.png" alt="Open a Ticket" />Contact us</h1>
</div>
</div>
<div class="row">
<div class="col-md-12">
- <h2>Query Received !</h2>
+ <h2>Query received.</h2>
<p>
We will study your problem and get back to you as soon as possible.
</p>
<br>
<h1>User details</h1>
<br>
-<b>First name :</b> {{first_name}}
-<b>Last name :</b> {{last_name}}
-<b>Authority :</b> {{authority}}
<b>Email :</b> {{email}}
<h1>Query details</h1>
User details:
-First name : {{first_name}}
-Last name : {{last_name}}
email : {{email}}
-Authority : {{authority}}
Query Details:
<table class="profile">
<tr>
<td colspan="2">
- <div>Platforms: Myslice</div>
+ <div>Platform: Myslice</div>
</td>
</tr>
<tr>
<tr class="even" id="pkey_row">
{%if 'N/A' not in user_private_key%}
<td class="key">Private Key </td> <!-- Hide if priv_key doesn't exist in myslice platform -->
- <td class="value">********<a href="#">
+ <td class="value">********<a href="#"></a>
<button type="submit" name="dl_pkey" class="btn btn-default btn-xs" title="Download your privaye key" id="dl_pkey">
<span class="glyphicon glyphicon-download"></span> Download
</button>
</td>
{%else%}
<td class="key">Private Key </td> <!-- Hide if priv_key doesn't exist in myslice platform -->
- <td class="value">********<a href="#">
+ <td class="value">********<a href="#"></a>
<button type="submit" name="dl_pkey" class="btn btn-default btn-xs disabled" title="Download your privaye key" id="dl_pkey">
<span class="glyphicon glyphicon-download"></span> Download
</button>
</td>
{%endif%}
</tr>
- <tr class="odd">
+ <tr class="odd">
+ {%if 'N/A' not in user_private_key%}
+ <td class="key">Identity</td>
+ <td>
+ <button type="submit" name="dl_identity" class="btn btn-default btn-xs" title="You will require it to use jfed" id="dl_identity">
+ <span class="glyphicon glyphicon-download"></span> Download
+ </button>
+ </td>
+ {%else%}
+ <td class="key">Identity</td>
+ <td>
+ <button type="submit" name="dl_identity" class="btn btn-default btn-xs disabled" title="You will require it to use jfed" id="dl_identity">
+ <span class="glyphicon glyphicon-download"></span> Download
+ </button>
+ </td>
+ {%endif%}
+ </tr>
+ <tr class="even">
<td colspan="2">
<p class="message" id="pkey_del_msg"><b> Tradeoff:</b> Ease-of-use vs Security.<br>
<b>Ease-of-use:</b> Automatic account delegation. Don't delete private key.<br>
{% block content %}
<div class="row">
<div class="col-md-12">
- <h1><img src="{{ STATIC_URL }}icons/support-xs.png" alt="Open a Ticket" /> Fed4Fire Support</h1>
+ <h1><img src="{{ STATIC_URL }}icons/support-xs.png" alt="Open a Ticket" />Contact us</h1>
</div>
</div>
<div class="row">
</div>
<div class="row">
<div class="col-md-12">
- <p>Please check the <a href="http://doc.fed4fire.eu/support.html" target="_blank">documentation</a></p>
+ <p> Please check our <a href="http://doc.fed4fire.eu" target="_blank">documentation.</a>
+ Most of the basic problems are explained there.
+ </p>
+ <p>
+ If you have problems using the portal, please check our <a href="/portal/support">FAQ</a> section.
+ </p>
+ <p>
+ If you haven't find your answes in the FAQ, please contact us by filling the form below.<br />
+ You can also <a href="mailto:contact@fed4fire.eu">e-mail</a> us directly.
+ </p>
+
</div>
</div>
<div class="row">
- <div class="col-md-2"></div>
- <div class="col-md-8">
+ <div class="col-md-4">
<form role="form" method="post">
{% csrf_token %}
{% for field in form %}
{{ field.errors }} {{ field }}
</div>
{% endfor %}
- <button type="submit" class="btn btn-default">Create Ticket</button>
+ <button type="submit" class="btn btn-primary">Submit</button>
</form>
</div>
</div>
--- /dev/null
+<img src="http://www.fed4fire.eu/uploads/media/fed4fire-logo.jpg">
+<br>
+<b>Email :</b> {{email}}
+
+<h1>Query details</h1>
+
+<b>Subject :</b> {{subject}}
+<b>Query :</b> {{description}}
--- /dev/null
+email : {{email}}
+
+Query Details:
+
+Subject : {{subject}}
+Description : {{description}}
--- /dev/null
+Fed4fire support: {{email}} submitted a query.
-{% extends "layout.html" %}
+{% extends "layout_base.html" %}
{% load portal_filters %}
{% block content %}
-<div class="row">
-{% widget '_widget_news.html' %}
-</div>
-<div class="row" id="home-dashboard">
- <ul class="nav nav-tabs">
- <li class="active"><a class="home-tab" data-panel="user" href="#">USER</a></li>
- <li><a class="home-tab" data-panel="manager" href="#">MANAGER</a></li>
- </ul>
- <div class="home-panel" id="user">
- <table>
- <tr>
- <td>ACCOUNT</td>
- <td>SLICES</td>
- <td>SUPPORT</td>
- </tr>
- <tr>
- <td><a href="/portal/account/"><img src="{{ STATIC_URL }}img/icon_user_color.png" alt="" /></a></td>
- <td><a href="#"><img src="{{ STATIC_URL }}img/icon_slices.png" alt="" /></a></td>
- <td><a href="http://doc.fed4fire.eu/support.html" target="_blank"><img src="{{ STATIC_URL }}img/icon_support.png" alt="" /></a></td>
- </tr>
- <tr>
- {% if person %}
- <td class="logged-in">
- <button id="logoutbtn" type="button" class="btn btn-default" data-username="{{ username }}"><span class="glyphicon glyphicon-off"></span> Logout</button>
- <div>
- {% if person.last_name %}
- {{person.first_name}} {{person.last_name}}<br />
- {% endif %}
- <span class="label">Email:</span> <a href='/portal/account/'>{{person.email}}</a>
- </div>
- {% else %}
- <td>
- {% widget '_widget-login-user.html' %}
- {% endif %}
- </td>
- <td>
- {% if person %}
- <button id="slicerequestbtn" type="button" class="btn btn-default"><span class="glyphicon glyphicon-plus"></span> Request Slice</button>
- <div id="home-slice-list"><img src="{{ STATIC_URL }}img/loading.gif" alt="Loading Slices" /></div>
- {% else %}
- <button id="signupbtn" type="button" class="btn btn-default"><span class="glyphicon glyphicon-user"></span> Sign Up</button>
+<!-- <div class="row">
+{% widget '_widget-news.html' %}
+</div> -->
+{% if username %}
+<div class="container dashboard">
+ <div class="row">
+ <div class="col-md-3">
+ <h3>
+ EXPERIMENT
+ </h3>
+ <div>
+ <a href="#"><img src="{{ STATIC_URL }}img/icon_slices.png" alt="" /></a>
+ </div>
+ <div>
+ <button id="slicerequestbtn" type="button" class="btn btn-default"><span class="glyphicon glyphicon-plus"></span> Request slice</button>
+ </div>
+ <div>
+ <div id="home-slice-list"><img src="{{ STATIC_URL }}img/loading.gif" alt="Loading Slices" /></div>
+ </div>
+ <div>
+ <button id="jfed" type="button" class="btn btn-default" title="Some tools do their own slice creation and management.">
+ <span class="glyphicon glyphicon-globe"></span>Experiment now</button>
+ </div>
+ <div>
+ <ul><li><a href="" title="Start experiment with jFed.">jFed</a></li></ul>
+ </div>
+ </div>
+ <div class="col-md-3">
+ <h3>MANAGEMENT</h3>
+ <div>
+ <a href="/portal/institution"><img src="{{ STATIC_URL }}img/icon_authority_color.png" alt="" /></a>
+ </div>
+ <div>
+ <button id="validaterequestbtn" type="button" class="btn btn-default"><span class="glyphicon glyphicon-ok"></span> Validate Requests</button>
+ </div>
+ </div>
+ <div class="col-md-3">
+ <h3>
+ SUPPORT
+ </h3>
+ <div>
+ <a href="http://doc.fed4fire.eu/support.html" target="_blank"><img src="{{ STATIC_URL }}img/icon_support.png" alt="" /></a>
+ </div>
+ <div>
+ <button id="ticketbtn" type="button" class="btn btn-default"><span class="glyphicon glyphicon-envelope"></span> Contact</button>
+ </div>
+ </div>
+
+ <div class="col-md-3">
+ <h3>
+ ACCOUNT
+ </h3>
+ <div>
+ <a href="/portal/account/"><img src="{{ STATIC_URL }}img/icon_user_color.png" alt="" /></a>
+ </div>
+ <div>
+ <button id="logoutbtn" type="button" class="btn btn-default" data-username="{{ username }}"><span class="glyphicon glyphicon-off"></span> Logout</button>
+ </div>
+ <div>
+ {% if person.last_name %}
+ {{person.first_name}} {{person.last_name}}<br />
{% endif %}
- </td>
- <td class="support">
- <button id="ticketbtn" type="button" class="btn btn-default"><span class="glyphicon glyphicon-envelope"></span> Contact</button>
- </td>
- </tr>
- </table>
+ <span class="label">Email:</span> <a href='/portal/account/'>{{person.email}}</a>
+ </div>
+ </div>
</div>
- <div class="home-panel" id="manager">
- <table>
- <tr>
- <td>INSTITUTION</td>
- <td>SLICES</td>
- <td>REQUESTS</td>
- </tr>
- <tr>
- <td><a href="/portal/institution"><img src="{{ STATIC_URL }}img/icon_authority_color.png" alt="" /></a></td>
- <td><a href="/portal/institution#slices"><img src="{{ STATIC_URL }}img/icon_slices.png" alt="" /></a></td>
- <td><a href="/portal/validate"><img src="{{ STATIC_URL }}img/icon_testbed_color.png" alt="" /></a></td>
- </tr>
- <tr>
- {% if person %}
- <td class="logged-in">
- <button id="logoutbtn" type="button" class="btn btn-default" data-username="{{ username }}"><span class="glyphicon glyphicon-off"></span> Logout</button>
- {% else %}
- <td>
- {% widget '_widget-login-manager.html' %}
- {% endif %}
- </td>
- <td>
- {% if person %}
- <button id="slicerequestbtn" type="button" class="btn btn-default"><span class="glyphicon glyphicon-plus"></span> Create Slice</button>
- {% endif %}
- </td>
- <td class="support">
- {% if person %}
- <button id="validaterequestbtn" type="button" class="btn btn-default"><span class="glyphicon glyphicon-ok"></span> Validate Requests</button>
- {% endif %}
- </td>
- </tr>
- </table>
+</div>
+{% else %}
+<div class="container-fluid home">
+ <div class="">
+ <div class="col-sm-2"></div>
+ <div class="col-sm-4 slogan">
+ <h2>
+ Your Easy Access to Computer Networking Testbeds.
+ </h2>
+ <h3>
+ A wide variety of world class testbeds available through your one account.
+ </h3>
+ </div>
+ <div class="col-sm-4 col-sm-offset-1" style="width:400px; top:16px; float:left;">
+ <div class="row">
+ {% widget '_widget-login-user.html' %}
+ </div>
+ </div>
+ <div class="col-sm-1"></div>
</div>
</div>
+{% endif %}
+
+
<script type="text/javascript">
$(document).ready(function() {
$('a.home-tab').click(function() {
--- /dev/null
+<iframe src="https://flsmonitor.fed4fire.eu" style="position: absolute; width:100%; height:100%">
--- /dev/null
+{% extends "layout.html" %}
+
+{% block content %}
+<div class="row">
+ <div class="col-md-12">
+ <h1><img src="{{ STATIC_URL }}icons/support-xs.png" alt="Open a Ticket" />Frequently Asked Questions (FAQs)</h1>
+ </div>
+</div>
+
+ <div class="col-md-12">
+ <h3>Users</h3>
+ <ul>
+ <li><h4>Who is a user?</h4></li>
+ <p>A user is an experimenter who registers to the OneLab portal and able to use all the facilites that the portal has to offer. However, a user does not
+ have the right to do any admin operation such as managing slices, users and resources.</p>
+
+
+ <li><h4>How do I register?</h4></li>
+ <p>In order to register you must go to the <a href="/portal/register">Registration</a> page. You have to choose your corresponding institution (authority). After registration you have to wait until the PI validates your account. However upon registration, you will be able login to the portal with a limited access. Do not try to re-register with the same email address.</p>
+
+ <li><h4>Why can't I register with my email?</h4></li>
+ <p>If you have already registered then you won't be able to register again with the same email address. However, if you have never registered and still you are not able to use your email then please
+ <a href="/portal/contact">Contact Support</a> and mention the error message that you are getting while trying to register.</p>
+
+ <li><h4>In registration, in "My keys" option, what should i choose?</h4></li>
+ <p>There are two choices.</p>
+ <p class="text-justify"><b>1. Generate Key Pairs:</b> This option is for users who have no knowledge about SFA and MySlice i.e., new users. We offer convenience to the new users in order to avoid addtional efforts to delegate keys manually. If you choose this option, the portal will automatically handle your credentials and you would be able use the portal as soon as the PI validates your account. However, you can delete your private key from the portal if you are concerned about privacy issues. In that case once your current credentials expire, you have to delegate your credentials manually using <a href="http://trac.myslice.info/wiki/InstallSfa" target="_blank">SFA</a>. As this needs advance knowledge about SFA and Myslice, we highly recommend to the new users to keep both private and public keys in the portal in order to keep the process automatic. </p>
+ <p class="text-justify"><b>2. Upload My Public Key:</b> This option is for users who have experience with MySlice and SFA. If you choose this option, once the PI validates your account, you have to delegate your credentials manually using <a href="http://trac.myslice.info/wiki/InstallSfa" target="_blank">SFA</a>. You have to repeat the same process everytime your credentials expire. Normally, credentials expire every one month. You can see the expiration date in your Account page. </p>
+
+ <li><h4>Who is responsible for validating my account?</h4></li>
+ <p>When you register, you choose an authority fromt he list of authorities. For each authority there is a Principal Investigator (PI). PI of your authority will verify your identity and if he finds that you are from his institution, he will validate your account otherwise he will reject your account.</p>
+
+ <li><h4>How long I have to wait for validation?</h4></li>
+ <p>It depends on the PI of your authority. In general, it should not take more than a week. If you are waiting more than usual, please <a href="/portal/contact">Contact Support</a> and explain your problem.</p>
+ <li><h4>I just registered. Why can't I see any slices and resources?</h4></li>
+ <p>Once you register, you can login to your account with limited access. It means that you can view your account details, modify your name and password. You can also view other pages. However, you will not be able to see any slices as well as resources before your account validation. But you can <a href="/portal/slice_request/">Request Slice</a> before being validated. Therefore, the PI will validate your account as well as your requested slice. Once validated, you will be able to see your slice and if you click on your slice, you will be able to see resources in that slice and you can reserve nodes and start your experiment.</p>
+
+ <li><h4>How can I get access to a slice?</h4></li>
+ <p>If you are a completely new user, you have to <a href="/portal/slice_request/">Request Slice</a>. It is upto the PI of your authority to accept/reject your slice request. </br>On the other hand, if you are a new user to the portal but you already have an account in OneLab SFA registry and you have access to slices, you will be able to see all your slices once your account is validated by the PI.</p>
+
+ <li><h4>I forgot my password, how to recover it?</h4></li>
+ <p>If you have an account in the portal but you forgot the password, you can always <a href="/portal/pass_reset/">Reset your password</a>.</p></ul>
+
+ <h3>Managers</h3>
+ <ul>
+ <li><h4>Who is a manager?</h4></li>
+ <p>A manager is the Principal Investigator (PI) of the institution. Each PI has authority over his own institution. A PI can add, delete, validate users/
+ slices that belong to his institution.</p>
+
+ <li><h4>What is pending users/slices?</h4></li>
+ <p>In <a href="/portal/validate">Requests</a> page you will be able to see all the users that registered under your authority and the slices that users of your authority has requested. Therefore, pending users/slices are those users and slices that are yet to be validated. You can validate/reject these requests based on the policy of your institution.</p>
+
+ <li><h4>How can I manage the users/slices that belong to my institution?</h4></li>
+ <p>In <a href="/portal/institution">Instution</a> page, under "Users" tab, you will be able to see all the users that belong to your authority. You can delete the users that you don't want anymore. Under "Slices" tab, you will be able to see all the slices that belong to your authority. You can renew/delete the slices based on your requirements. As a PI you can also <a href="/portal/slice_request/">Create Slice</a>. Just fill the form of request slice and the slice will be automatically validated if it is requested by a PI. </p>
+
+ </ul>
+ </div>
+
+
+
+{% endblock %}
+
<li><a href="/slice/{{ slice }}#testbeds">Testbeds</a></li>
<li class="active"><a class="link" href="/resources/{{ slice }}">Resources</a></li>
<li><a href="/slice/{{ slice }}#users">Users</a></li>
- <li><a href="/slice/{{ slice }}#experiment">Statistics</a></li>
- <li><a href="/slice/{{ slice }}#experiment">Measurements</a></li>
+<!-- <li><a href="/slice/{{ slice }}#experiment">Statistics</a></li> -->
+ <li><a href="/slice/{{ slice }}#measurements">Measurements</a></li>
<li><a href="/slice/{{ slice }}#experiment" data-toggle="tab">Experiment</a></li>
</ul>
{% else %}
<li class="testbeds"><a href="#testbeds">Testbeds</a></li>
<li><a class="link" href="/resources/{{ slice }}">Resources</a></li>
<li class="users"><a href="#users">Users</a></li>
- <li class="statistics"><a href="#experiment">Statistics</a></li>
- <li class="measurements"><a href="#experiment">Measurements</a></li>
+ <!--<li class="statistics"><a href="#experiment">Statistics</a></li> -->
+ <li class="measurements"><a href="#measurements">Measurements</a></li>
<li class="experiment"><a href="#experiment" data-toggle="tab">Experiment</a></li>
</ul>
<script>
$('div#info').load('/info/{{ slice }}/');
});
</script>
-{% endif %}
\ No newline at end of file
+{% endif %}
<div class="tab-pane row" id="resources">...</div>
<div class="tab-pane row" id="users">...</div>
<!-- <div class="tab-pane row" id="statistics">...</div> -->
- <!-- <div class="tab-pane row" id="measurements">...</div> -->
+ <div class="tab-pane row" id="measurements">...</div>
<div class="tab-pane row" id="experiment">...</div>
</div>
{% endblock %}