Commit 8d004e78 by Őry Máté

Merge branch 'feature-improve-templates'

Feature: Improve Templates

* add missing i18n markings to templates
* show hostname on vm list
* change console tab to always accessible
* updating hungarian translation
parents 2a1ce8f5 920d1272
......@@ -10,7 +10,7 @@ from django.db.models import (
DateTimeField,
)
from django.template.loader import render_to_string
from django.utils.translation import ugettext_lazy as _, override
from django.utils.translation import ugettext_lazy as _, override, ugettext
from model_utils.models import TimeStampedModel
from model_utils.fields import StatusField
......@@ -50,7 +50,7 @@ class Notification(TimeStampedModel):
with override(language):
context['user'] = user
rendered = render_to_string(template, context)
subject = unicode(subject)
subject = ugettext(unicode(subject))
return cls.objects.create(to=user, subject=subject, message=rendered,
valid_until=valid_until)
......
......@@ -7,7 +7,7 @@
{% if not d.failed %}
{% if d.size %}{{ d.size|filesize }}{% endif %}
{% else %}
<div class="label label-danger"{% if user.is_superuser %} title="{{ d.get_latest_activity_result }}"{% endif %}>failed</div>
<div class="label label-danger"{% if user.is_superuser %} title="{{ d.get_latest_activity_result }}"{% endif %}>{% trans "failed" %}</div>
{% endif %}
{% else %}<span class="disk-list-disk-percentage" data-disk-pk="{{ d.pk }}">{{ d.get_download_percentage }}</span>%{% endif %}
<a href="{% url "dashboard.views.disk-remove" pk=d.pk %}?next={{ request.path }}"
......
......@@ -50,7 +50,7 @@
</span>
</li>
<li>
<i class="icon-hand-right"></i> Description:
<i class="icon-hand-right"></i> {% trans "Description" %}:
<span style="float: right; max-width: 350px;">
{{ t.description }}
</span>
......
......@@ -75,7 +75,7 @@
<footer>
<a href="#">{% trans "Legal notice" %}</a> | <a href="#">{% trans "Policy" %}</a> | <a href="#">{% trans "Help" %}</a> |
<a href="#">{% trans "Support" %}</a>
<span class="pull-right">&copy; {{ COMPANY_NAME }}</span>
<span class="pull-right">{{ COMPANY_NAME }}</span>
</footer>
</body>
{% block extra_js %}
......
......@@ -12,8 +12,8 @@
{% endif %}
<br />
<div class="pull-right" style="margin-top: 15px;">
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
<button id="confirmation-modal-button" type="button" class="btn btn-danger">Delete</button>
<button type="button" class="btn btn-default" data-dismiss="modal">{% trans "Cancel" %}</button>
<button id="confirmation-modal-button" type="button" class="btn btn-danger">{% trans "Delete" %}</button>
</div>
<div class="clearfix"></div>
</div>
......
......@@ -9,7 +9,7 @@
{% if title %}
{{ title }}
{% else %}
Delete confirmation
{% trans "Delete confirmation" %}
{% endif %}
</h3>
</div>
......@@ -24,9 +24,9 @@
<div class="pull-right">
<form action="" method="POST">
{% csrf_token %}
<a class="btn btn-default">Back</a>
<a class="btn btn-default">{% trans "Cancel" %}</a>
<input type="hidden" name="next" value="{{ request.GET.next }}"/>
<button class="btn btn-danger">Yes</button>
<button class="btn btn-danger">{% trans "Yes" %}</button>
</form>
</div>
</div>
......
......@@ -2,14 +2,13 @@
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-body">
Are you sure you want to delete these objects<br />
{% trans "Are you sure you want to delete the following objects?" %}<br />
{% for o in objects %}
<strong>{{ o }}</strong>{% if not forloop.last %},{% endif %}
{% endfor %}
?
<div class="pull-right" style="margin-top: 40px;">
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
<button id="confirmation-modal-button" type="button" class="btn btn-danger">Delete</button>
<button type="button" class="btn btn-default" data-dismiss="modal">{% trans "Cancel" %}</button>
<button id="confirmation-modal-button" type="button" class="btn btn-danger">{% trans "Delete" %}</button>
</div>
<div class="clearfix"></div>
</div>
......
......@@ -9,7 +9,7 @@
{% if title %}
{{ title }}
{% else %}
Status changing confirmation
{% trans "Status changing confirmation" %}
{% endif %}
</h3>
</div>
......@@ -24,9 +24,10 @@
<div class="pull-right">
<form action="" method="POST">
{% csrf_token %}
<a class="btn btn-default">Back</a>
<a class="btn btn-default">{% trans "Cancel" %}</a>
<button type="button" class="btn btn-default" data-dismiss="modal"></button>
<input type="hidden" name="change_status" value=""/>
<button class="btn btn-warning">Yes, {{ status }}</button>
<button class="btn btn-warning">{% blocktrans with status=status %}Yes, {{status}}{% endblocktrans %}</button>
</form>
</div>
</div>
......
<a class="btn btn-info btn-xs group-list-details" href="#"
>Member list</a>
{% load i18n %}
<a class="btn btn-info btn-xs group-list-details" href="#">{% trans "Members" %}</a>
......@@ -4,7 +4,7 @@
<div class="pull-right toolbar">
<span class="btn btn-default btn-xs infobtn" title="{% trans "Help" %}"><i class="icon-info-sign"></i></span>
</div>
<h3 class="no-margin"><i class="icon-group"></i> Groups</h3>
<h3 class="no-margin"><i class="icon-group"></i> {% trans "Groups" %}</h3>
</div>
<div class="list-group" id="vm-list-view">
{% for i in groups %}
......@@ -15,7 +15,7 @@
<div href="#" class="list-group-item list-group-footer text-right">
<div class="row">
<div class="col-sm-6 col-xs-6 input-group input-group-sm">
<input type="text" class="form-control" placeholder="Search..." />
<input type="text" class="form-control" placeholder="{% trans "Search..." %}" />
<div class="input-group-btn">
<button type="submit" class="form-control btn btn-primary" title="search"><i class="icon-search"></i></button>
</div>
......@@ -26,7 +26,7 @@
<i class="icon-chevron-sign-right"></i> <strong>{{ more_groups }}</strong> more
</a>
{% endif %}
<a class="btn btn-success btn-xs group-create" href="#"><i class="icon-upload-alt"></i> upload </a>
<a class="btn btn-success btn-xs group-create" href="#"><i class="icon-upload-alt"></i> {% trans "new" %} </a>
</div>
</div>
</div>
......
......@@ -7,10 +7,10 @@
<a href="#index-list-view" data-index-box="node" class="btn btn-default btn-xs disabled"><i class="icon-list"></i></a>
</div>
<span class="btn btn-default btn-xs infobtn" title="{% trans "Help" %}"><i class="icon-info-sign"></i></span>
<span class="btn btn-default btn-xs infobtn" title="{% trans "List of compute nodes, also called worker nodes or hypervisors, which run the virtual machines." %}"><i class="icon-info-sign"></i></span>
</div>
<h3 class="no-margin">
<i class="icon-sitemap"></i> {% trans "Compute nodes" %}
<i class="icon-sitemap"></i> {% trans "Nodes" %}
</h3>
</div >
<div class="list-group" id="node-list-view">
......@@ -22,7 +22,7 @@
<div href="#" class="list-group-item list-group-footer">
<div class="row">
<div class="col-sm-6 col-xs-6 input-group input-group-sm">
<input type="text" class="form-control" placeholder="Search..." />
<input type="text" class="form-control" placeholder="{% trans "Search..." %}" />
<div class="input-group-btn">
<button type="submit" class="form-control btn btn-primary" title="search"><i class="icon-search"></i></button>
</div>
......@@ -56,7 +56,7 @@
<div class="clearfix"></div>
<div class="row">
<div class="col-sm-6 col-xs-6 input-group input-group-sm">
<input type="text" class="form-control" placeholder="Search..." />
<input type="text" class="form-control" placeholder="{% trans "Search..." %}" />
<div class="input-group-btn">
<button type="submit" class="form-control btn btn-primary" title="search"><i class="icon-search"></i></button>
</div>
......@@ -64,7 +64,7 @@
<div class="col-sm-6 text-right">
{% if more_nodes >= 0 %}
<a class="btn btn-primary btn-xs" href="{% url "dashboard.views.node-list" %}">
<i class="icon-chevron-sign-right"></i> <strong>{{ more_nodes }}</strong> more
<i class="icon-chevron-sign-right"></i> {% blocktrans with count=more_nodes %}<strong>{{count}}</strong> more{% endblocktrans %}
</a>
{% endif %}
<a class="btn btn-success btn-xs node-create" href="{% url "dashboard.views.node-create" %}"><i class="icon-plus-sign"></i> {% trans "new" %}</a>
......
......@@ -4,7 +4,7 @@
<span class="btn btn-default btn-xs infobtn pull-right" title="{% trans "Help" %}">
<i class="icon-info-sign"></i>
</span>
<h3 class="no-margin"><i class="icon-puzzle-piece"></i> Templates
<h3 class="no-margin"><i class="icon-puzzle-piece"></i> {% trans "Templates" %}
</h3>
</div>
<div class="list-group" id="vm-list-view">
......
......@@ -9,19 +9,20 @@
<span class="btn btn-default btn-xs infobtn" title="{% trans "Help" %}"><i class="icon-info-sign"></i></span>
</div>
<h3 class="no-margin">
<i class="icon-desktop"></i> Virtual machines
<i class="icon-desktop"></i> {% trans "Virtual machines" %}
</h3>
</div>
<div class="list-group" id="vm-list-view">
<div id="dashboard-vm-list">
{% for i in instances %}
<a href="{{ i.get_absolute_url }}" class="list-group-item">
<i class="icon-{% if i.state == "RUNNING" %}play-sign{% else %}pause{% endif %}"></i> {{ i.name }}
<i class="{{ i.get_status_icon }}" title="{{ i.get_status_display }}"></i> {{ i.name }}
<small class="text-muted">{{ i.primary_host.hostname }}</small>
<div class="pull-right dashboard-vm-favourite" data-vm="{{ i.pk }}">
{% if i.fav %}
<i class="icon-star text-primary title-favourite" title="Unfavourite"></i>
<i class="icon-star text-primary title-favourite" title="{% trans "Unfavourite" %}"></i>
{% else %}
<i class="icon-star-empty text-primary title-favourite" title="Mark as favorite"></i>
<i class="icon-star-empty text-primary title-favourite" title="{% trans "Mark as favorite" %}"></i>
{% endif %}
</div>
</a>
......@@ -38,7 +39,7 @@
<div class="col-sm-6 text-right">
{% if more_instances > 0 %}
<a class="btn btn-primary btn-xs" href="{% url "dashboard.views.vm-list" %}">
<i class="icon-chevron-sign-right"></i> {% blocktrans with more_instances=more_instances %}<strong>{{ more_instances }}</strong> more{% endblocktrans %}
<i class="icon-chevron-sign-right"></i> {% blocktrans with count=more_instances %}<strong>{{ count }}</strong> more{% endblocktrans %}
</a>
{% endif %}
<a class="btn btn-success btn-xs vm-create" href="{% url "dashboard.views.vm-create" %}"><i class="icon-plus-sign"></i> {% trans "new" %}</a>
......@@ -48,14 +49,16 @@
</div>
<div class="panel-body" id="vm-graph-view" style="display: none">
<p class="pull-right"> <input class="knob" data-fgColor="chartreuse" data-thickness=".4" data-max="{{ request.user.profile.instance_limit }}" data-width="100" data-height="100" data-readOnly="true" value="{{ instances|length|add:more_instances }}"></p>
<p><span class="bigbig"><big>{{ running_vm_num }}</big> running </span>
<p><span class="bigbig">{% blocktrans with count=running_vm_num %}<big>{{ count }}</big> running{% endblocktrans %}</span>
<ul class="list-inline">
{% for vm in running_vms %}
<li class="label label-success"><i class="icon-play-sign"></i> {{ vm.name}}</li>
<li class="label label-success">
<a href="vm.get_absolute_url" title="{{vm.primary_host.get_fqdn}}"><i class="{{vm.get_status_icon}}"></i> {{vm.name}}</a>
</li>
{% endfor %}
</ul>
</p>
<p class="big text-warning"><big>{{ stopped_vm_num }}</big> stopped</p>
<p class="big text-warning">{% blocktrans with count=stopped_vm_num %}<big>{{ count }}</big> stopped{% endblocktrans %}</p>
<div class="clearfix"></div>
<div class="text-right">
......
......@@ -26,14 +26,14 @@
{% elif node.state == 'OFFLINE' %}label-warning
{% endif %}">{{ node.get_status_display|upper }}</span>
<div class="btn-group">
<button type="button" class="btn {{ btn_size }} btn-warning nojs-dropdown-toogle dropdown-toggle" data-toggle="dropdown">Action <i class="icon-caret-down"></i></button>
<button type="button" class="btn {{ btn_size }} btn-warning nojs-dropdown-toogle dropdown-toggle" data-toggle="dropdown">{% trans "Action" %} <i class="icon-caret-down"></i></button>
<ul class="dropdown-menu nojs-dropdown-toogle" role="menu">
<li><a href="#" class="node-details-rename-button"><i class="icon-pencil"></i> {% trans "Rename" %}</a></li>
<li><a data-node-pk="{{ node.pk }}" class="real-link node-flush" href="{% url "dashboard.views.flush-node" pk=node.pk %}"><i class="icon-cloud-upload"></i>{% trans "Flush" %}</a>
<li>
<a style="display:{% if node.enabled %}none{% else %}block{% endif %}" data-node-pk="{{ node.pk }}" class="real-link node-enable" href="{% url "dashboard.views.status-node" pk=node.pk %}?next={{ request.path }}"><i class="icon-check"></i>{% trans "Enable" %}</a>
<a style="display:{% if not node.enabled %}none{% else %}block{% endif %}" data-node-pk="{{ node.pk }}" class="real-link node-enable" href="{% url "dashboard.views.status-node" pk=node.pk %}?next={{ request.path }}"><i class="icon-remove"></i>{% trans "Disable" %}</a></li>
<li><a data-node-pk="{{ node.pk }}" class="real-link node-delete" href="{% url "dashboard.views.delete-node" pk=node.pk %}?next={{ request.path }}"><i class="icon-trash"></i> Delete</a></li>
<li><a data-node-pk="{{ node.pk }}" class="real-link node-delete" href="{% url "dashboard.views.delete-node" pk=node.pk %}?next={{ request.path }}"><i class="icon-trash"></i> {% trans "Delete" %}</a></li>
</ul>
</div>
</div>
......
{% load i18n %}
<div class="row">
<div class="col-md-4">
<dl>
<dt>System:</dt>
<dd><i class="icon-linux"></i> Uhu Binux Optikai Rendszer</dd>
<dt>Description:</dt>
<dd><small>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc est libero, hendrerit at posuere sed, molestie congue quam. </small></dd>
</dl>
<div style="font-weight: bold;">{% trans "Traits" %}</div>
<div style="font-weight: bold;">{% trans "Traits the node provides" %}</div>
<div id="node-details-traits" style="margin-bottom: 20px;">
<div id="node-details-traits-list">
{% if node.traits.all %}
......
......@@ -3,30 +3,12 @@
{% load render_table from django_tables2 %}
{% block content %}
<div class="alert alert-info">
Tip #1: you can select multiple vm instances while holding down the <strong>CTRL</strong> key!
</div>
<div class="alert alert-info">
Tip #2: if you want to select multiple instances by one click select an instance then hold down <strong>SHIFT</strong> key and select another one!
</div>
<div class="row">
<div class="col-md-12">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="no-margin"><i class="icon-desktop"></i> Your nodes</h3>
<h3 class="no-margin"><i class="icon-desktop"></i> {% trans "Compute nodes" %}</h3>
</div>
<div class="panel-body node-list-group-control">
<p>
<strong>Group actions</strong>
<button id="node-list-group-select-all" class="btn btn-info btn-xs">Select all</button>
<a class="btn btn-default btn-xs" id="node-list-group-migrate" disabled><i class="icon-truck"></i> Migrate</a>
<a disabled href="#" class="btn btn-default btn-xs"><i class="icon-refresh"></i> Reboot</a>
<a disabled href="#" class="btn btn-default btn-xs"><i class="icon-off"></i> Shutdown</a>
<a id="node-list-group-delete" disabled href="#" class="btn btn-danger btn-xs"><i class="icon-remove"></i> Discard</a>
</p>
</div>
<div id="table_container">
<div id="rendered_table" class="panel-body">
......
<a class="btn btn-default btn-xs" title data-original-title="Flush">
<a class="btn btn-default btn-xs" title="{% trans "Flush" %}">
<i class="icon-cloud-upload"></i>
</a>
<a id="node-list-rename-button" class="btn btn-default btn-xs" title data-original-title="Rename">
<a id="node-list-rename-button" class="btn btn-default btn-xs" title="{% trans "Rename" %}">
<i class="icon-pencil"></i>
</a>
</a>
......@@ -8,7 +8,7 @@
<div class="col-md-8">
<div class="panel panel-default">
<div class="panel-heading">
<a class="pull-right btn btn-default btn-xs" href="{% url "dashboard.views.template-list" %}">Back</a>
<a class="pull-right btn btn-default btn-xs" href="{% url "dashboard.views.template-list" %}">{% trans "Back" %}</a>
<h3 class="no-margin"><i class="icon-puzzle-piece"></i> {% trans "Edit template" %}</h3>
</div>
<div class="panel-body">
......
......@@ -36,6 +36,7 @@
</div>
</div>
{% comment %}
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-heading">
......@@ -46,6 +47,7 @@
</div>
</div>
</div>
{% endcomment %}
</div>
{% endblock %}
......
{% load i18n %}
<a href="{% url "dashboard.views.template-create" %}?parent={{ record.pk }}" id="template-list-clone-button" class="btn btn-default btn-xs" title data-original-title="{% trans "Clone" %}">
<a href="{% url "dashboard.views.template-create" %}?parent={{ record.pk }}" id="template-list-clone-button" class="btn btn-default btn-xs" title="{% trans "Clone" %}">
<i class="icon-copy"></i>
</a>
<a href="{% url "dashboard.views.template-detail" pk=record.pk%}" id="template-list-edit-button" class="btn btn-default btn-xs" title data-original-title="{% trans "Edit" %}">
<a href="{% url "dashboard.views.template-detail" pk=record.pk%}" id="template-list-edit-button" class="btn btn-default btn-xs" title="{% trans "Edit" %}">
<i class="icon-edit"></i>
</a>
<a data-template-pk="{{ record.pk }}" href="{% url "dashboard.views.template-delete" pk=record.pk %}" class="btn btn-danger btn-xs template-delete" title="{% trans "Delete" %}">
......
......@@ -74,7 +74,7 @@
</li>
<li>
<strong>{% trans "Wake up" %}:</strong>
{% trans "?" %}
{% trans "Wake up suspended machine." %}
</li>
<li>
<strong>{% trans "Shutdown" %}:</strong>
......@@ -98,7 +98,7 @@
</li>
<li>
<strong>{% trans "Save as template" %}:</strong>
{% trans "?" %}
{% trans "Shut down the virtual machine, and save it as a new template." %}
</li>
<li>
<strong>{% trans "Destroy" %}:</strong>
......@@ -113,7 +113,7 @@
<div class="big">
<span id="vm-details-state" class="label label-success">{{ instance.state }}</span>
<div class="btn-group">
<button type="button" class="btn btn-warning nojs-dropdown-toogle dropdown-toggle" data-toggle="dropdown">Action <i class="icon-caret-down"></i></button>
<button type="button" class="btn btn-warning nojs-dropdown-toogle dropdown-toggle" data-toggle="dropdown">{% trans "Action" %} <i class="icon-caret-down"></i></button>
<ul class="nojs-dropdown-menu dropdown-menu" role="menu">
<li><a href="#" class="vm-details-rename-button"><i class="icon-pencil"></i> {% trans "Rename" %}</a></li>
<li><a data-vm-pk="{{ instance.pk }}" href="#" class="vm-details-save-as-button"><i class="icon-save"></i> {% trans "Save as" %}</a></li>
......@@ -126,7 +126,7 @@
<h3>{% trans "Connection" %}</h3>
<input type="text" value="{{ instance.get_connect_command }}" class="form-control" readonly />
<dl class="dl-horizontal vm-details-pw">
<dt>Password:</dt>
<dt>{% trans "Password" %}:</dt>
<dd>
<div class="input-group">
<input type="text" id="vm-details-pw-input" class="form-control input-sm input-tags" value="{{ instance.pw }}"/>
......@@ -136,15 +136,15 @@
</div>
</dd>
<dd style="font-size: 10px; text-align: right; padding-top: 8px;">
<a id="vm-details-pw-change" href="#">Generate new password!</a>
<a id="vm-details-pw-change" href="#">{% trans "Generate new password!" %}</a>
</dd>
<div id="vm-details-pw-confirm">
<div id="vm-details-pw-confirm"> {% comment %} TODO Couldn't this use a modal? {% endcomment%}
<dt>
Are you sure?
{% trans "Are you sure?" %}
</dt>
<dd>
<a href="#" class="vm-details-pw-confirm-choice label label-success" data-choice="1" data-vm="{{ instance.pk }}">Yes</a> /
<a href="#" class="vm-details-pw-confirm-choice label label-danger" data-choice="0">No</a>
<a href="#" class="vm-details-pw-confirm-choice label label-success" data-choice="1" data-vm="{{ instance.pk }}">{% trans "Yes" %}</a> /
<a href="#" class="vm-details-pw-confirm-choice label label-danger" data-choice="0">{% trans "No" %}</a>
</dd>
</div>
</dl>
......@@ -162,11 +162,8 @@
<i class="icon-tasks icon-2x"></i><br>
{% trans "Resources" %}</a>
</li>
<li {% if not instance.is_console_available %}class="disabled">
<a href="#" data-toggle="pill_" data-target="#_console" class="text-center">
{% else %}>
<li{% if not instance.is_console_available %} class="disabled"{% endif %}>
<a href="#console" data-toggle="pill" data-target="#_console" class="text-center">
{% endif %}
<i class="icon-desktop icon-2x"></i><br>
{% trans "Console" %}</a></li>
<li>
......
{% load i18n %}
<div class="btn-toolbar">
<button id="sendCtrlAltDelButton" class="btn btn-danger small">Send CtrlAltDel</button>
<button id="sendPasswordButton" class="btn btn-default small">Type password</button>
<button id="sendCtrlAltDelButton" class="btn btn-danger small">{% trans "Send Ctrl+Alt+Del" %}</button>
<button id="sendPasswordButton" class="btn btn-default small">{% trans "Type password" %}</button>
</div>
<div class="alert alert-info" id="noVNC_status">
</div>
......
......@@ -2,9 +2,9 @@
<div class="row">
<div class="col-md-4">
<dl>
<dt>System:</dt>
<dt>{% trans "System" %}:</dt>
<dd><i class="icon-{{ os_type_icon }}"></i> {{ instance.system }}</dd>
<dt style="margin-top: 5px;">Description:</dt>
<dt style="margin-top: 5px;">{% trans "Description" %}:</dt>
<dd><small>{{ instance.description }}</small></dd>
</dl>
......@@ -29,7 +29,7 @@
</div>
{% endfor %}
{% else %}
<small>No tag added!</small>
<small>{% trans "No tag added!" %}</small>
{% endif %}
</div>
<form action="" method="POST">
......
{% load i18n %}
<h2>
<a href="#" id="vm-details-network-add" class="btn btn-success pull-right no-js-hidden">
<i class="icon-plus"></i> add interface
<i class="icon-plus"></i> {% trans "add interface" %}
</a>
Interfaces
{% trans "Interfaces" %}
</h2>
<div class="row" id="vm-details-network-add-for-form">
......@@ -12,7 +12,7 @@
{% for i in instance.interface_set.all %}
<h3 class="list-group-item-heading dashboard-vm-details-network-h3">
<i class="icon-{% if i.host %}globe{% else %}link{% endif %}"></i> {{ i.vlan.name }}
{% if not i.host %}(unmanaged) <a href="#" class="btn btn-danger btn-xs">remove</a>{% endif %}
{% if not i.host %}(unmanaged) <a href="#" class="btn btn-danger btn-xs">{% trans "remove" %}</a>{% endif %}
</h3>
{% if i.host %}
<div class="row">
......@@ -31,10 +31,10 @@
</div>
<div class="col-md-7">
<ul class="nav nav-pills pull-right">
<li class="active"><a href="#ipv4_{{ i.host.vlan.pk }}" data-toggle="pill" class="text-center">IPv4</a></li>
<li><a href="#ipv6_{{ i.host.vlan.pk }}" data-toggle="pill" class="text-center">IPv6</a></li>
<li class="active"><a href="#ipv4_{{ i.host.vlan.pk }}" data-toggle="pill" class="text-center">{% trans "IPv4" %}</a></li>
<li><a href="#ipv6_{{ i.host.vlan.pk }}" data-toggle="pill" class="text-center">{% trans "IPv6" %}</a></li>
</ul>
<h4>Port access</h4>
<h4>{% trans "Port access" %}</h4>
<div class="tab-content" style="padding-top: 10px;">
<div class="tab-pane active" id="ipv4_{{ i.host.vlan.pk }}">
<table class="table table-striped rule-table">
......
......@@ -6,15 +6,17 @@
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="no-margin">
Transfer ownership
{% trans "Transfer ownership" %}
</h3>
</div>
<div class="panel-body">
<div class="pull-right">
<form action="" method="POST">
{% csrf_token %}
E-mail address or identifier of user:
<input name="name">
<label>
{% trans "E-mail address or identifier of user" %}:
<input name="name">
</label>
<input type="submit">
</form>
</div>
......
......@@ -778,7 +778,7 @@ class TemplateCreate(SuccessMessageMixin, CreateView):
post['max_ram_size'] = post['ram_size']
inst = Instance.create(params=post, disks=[], networks=networks,
tags=tags, req_traits=req_traits)
messages.success(request, _("Your disk has been created, "
messages.success(request, _("The template has been created, "
"you can now add disks to it!"))
return redirect("%s#resources" % inst.get_absolute_url())
......
......@@ -1200,3 +1200,14 @@ class Instance(AclBase, VirtualMachineDescModel, StatusModel,
**kwargs):
self.shutdown(user, task_uuid)
self.save_as_template(name, **kwargs)
def get_status_icon(self):
return {
'NOSTATE': 'icon-rocket',
'RUNNING': 'icon-play',
'STOPPED': 'icon-stop',
'SUSPENDED': 'icon-pause',
'ERROR': 'icon-warning_sign',
'PENDING': 'icon-rocket',
'DESTROYED': 'icon-trash',
'MIGRATING': 'icon-truck'}.get(self.status, 'icon-question-sign')
......@@ -97,6 +97,13 @@ class InstanceTestCase(TestCase):
self.assertNotIn(call().__enter__().sub_activity(u'scheduling'),
ia.mock_calls)
def test_status_icon(self):
inst = MagicMock(spec=Instance)
inst.status = 'dummy-value'
self.assertEqual(Instance.get_status_icon(inst), 'icon-question-sign')
inst.status = 'RUNNING'
self.assertEqual(Instance.get_status_icon(inst), 'icon-play')
class InterfaceTestCase(TestCase):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment