various panel changes
This commit is contained in:
parent
6c566b80d4
commit
72bf9b1e9f
7 changed files with 23 additions and 20 deletions
|
@ -22,7 +22,7 @@ import onetimepass
|
||||||
|
|
||||||
class Permission:
|
class Permission:
|
||||||
DEPLOY = 0x01
|
DEPLOY = 0x01
|
||||||
ADMINISTER = 0x80
|
ADMINISTER = 0xff
|
||||||
|
|
||||||
class Role(db.Model):
|
class Role(db.Model):
|
||||||
__tablename__ = 'roles'
|
__tablename__ = 'roles'
|
||||||
|
@ -36,7 +36,7 @@ class Role(db.Model):
|
||||||
def insert_roles():
|
def insert_roles():
|
||||||
roles = {
|
roles = {
|
||||||
'User': (Permission.DEPLOY, True),
|
'User': (Permission.DEPLOY, True),
|
||||||
'Administrator': (0xff, False)
|
'Administrator': (Permission.ADMINISTER, False)
|
||||||
}
|
}
|
||||||
for r in roles:
|
for r in roles:
|
||||||
role = Role.query.filter_by(name=r).first()
|
role = Role.query.filter_by(name=r).first()
|
||||||
|
|
|
@ -13,10 +13,10 @@ class OrderForm(FlaskForm):
|
||||||
vmtype = SelectField('Type:', choices=vmtype_choices, coerce=int)
|
vmtype = SelectField('Type:', choices=vmtype_choices, coerce=int)
|
||||||
|
|
||||||
cpu = DecimalRangeField('Processor Cores', default=2)
|
cpu = DecimalRangeField('Processor Cores', default=2)
|
||||||
memory = DecimalRangeField('Memory', default=512)
|
memory = DecimalRangeField('Memory', default=2048)
|
||||||
storage = DecimalRangeField('Storage', default=10)
|
storage = DecimalRangeField('Storage', default=20)
|
||||||
|
|
||||||
alias = StringField('Machine Alias:', [validators.Regexp(message='ex.: myservice1.com, myservice2.local', regex='^[a-zA-Z0-9][a-zA-Z0-9-_]{0,61}[a-zA-Z0-9]{0,1}\.([a-zA-Z]{1,6}|[a-zA-Z0-9-]{1,30}\.[a-zA-Z]{2,3})$'), validators.Length(6,64)])
|
alias = StringField('Name:', [validators.Regexp(message='ex.: myservice1.com, myservice2.local', regex='^[a-zA-Z0-9][a-zA-Z0-9-_]{0,61}[a-zA-Z0-9]{0,1}\.([a-zA-Z]{1,6}|[a-zA-Z0-9-]{1,30}\.[a-zA-Z]{2,3})$'), validators.Length(6,64)])
|
||||||
|
|
||||||
submit = SubmitField('DEPLOY')
|
submit = SubmitField('DEPLOY')
|
||||||
|
|
||||||
|
|
BIN
app/static/images/panel/icons8-administrative-tools-100.png
Normal file
BIN
app/static/images/panel/icons8-administrative-tools-100.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.4 KiB |
BIN
app/static/images/panel/icons8-processor-40.png
Normal file
BIN
app/static/images/panel/icons8-processor-40.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 568 B |
|
@ -24,7 +24,8 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if current_user.is_authenticated %}
|
{% if current_user.is_authenticated %}
|
||||||
<!-- <li><a href="#"><span class="glyphicon glyphicon-send"></span> Deploy Application</a></li>
|
<li><a href="{{ url_for('panel.deploy') }}"><span class="glyphicon glyphicon-send"></span> Deploy</a></li>
|
||||||
|
<!--
|
||||||
<li class="dropdown">
|
<li class="dropdown">
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><span class="glyphicon glyphicon-send"></span> Deploy Application</a>
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><span class="glyphicon glyphicon-send"></span> Deploy Application</a>
|
||||||
<ul class="dropdown-menu">
|
<ul class="dropdown-menu">
|
||||||
|
@ -34,8 +35,6 @@
|
||||||
</ul> -->
|
</ul> -->
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<li><a href="{{ url_for('main.chat') }}" target="_blank"><span class="glyphicon glyphicon-question-sign"></span> Live Chat</a></li>
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<ul class="nav navbar-nav navbar-right">
|
<ul class="nav navbar-nav navbar-right">
|
||||||
|
@ -49,10 +48,12 @@
|
||||||
<li class="dropdown">
|
<li class="dropdown">
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><img class="avatar" src="{{ current_user.gravatar(20) }}"> {{ current_user.email }} <span class="caret"></span></a>
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><img class="avatar" src="{{ current_user.gravatar(20) }}"> {{ current_user.email }} <span class="caret"></span></a>
|
||||||
<ul class="dropdown-menu">
|
<ul class="dropdown-menu">
|
||||||
<li><a href="{{ url_for('panel.dashboard') }}"><span class="glyphicon glyphicon-modal-window"></span> Dashboard</a></li>
|
<li><a href="{{ url_for('panel.dashboard') }}"><span class="glyphicon glyphicon-pencil"></span> Dashboard</a></li>
|
||||||
|
<li role="separator" class="divider"></li>
|
||||||
<li><a href="{{ url_for('uinvoice.transactions') }}"><span class="glyphicon glyphicon-list-alt"></span> Transactions</a></li>
|
<li><a href="{{ url_for('uinvoice.transactions') }}"><span class="glyphicon glyphicon-list-alt"></span> Transactions</a></li>
|
||||||
<li role="separator" class="divider"></li>
|
<li role="separator" class="divider"></li>
|
||||||
<li><a href="{{ url_for('settings.profile') }}"><span class="glyphicon glyphicon-user"></span> Profile</a></li>
|
<li><a href="{{ url_for('settings.profile') }}"><span class="glyphicon glyphicon-user"></span> Profile</a></li>
|
||||||
|
<li><a href="{{ url_for('main.chat') }}" target="_blank"><span class="glyphicon glyphicon-question-sign"></span> Live Chat</a></li>
|
||||||
<li><a href="{{ url_for('auth.logout') }}"><span class="glyphicon glyphicon-off"></span> Logout</a></li>
|
<li><a href="{{ url_for('auth.logout') }}"><span class="glyphicon glyphicon-off"></span> Logout</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
|
@ -1,11 +1,15 @@
|
||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
{% block title %}Deploy New Instance{% endblock %}
|
{% block title %}Deploy a server{% endblock %}
|
||||||
|
|
||||||
{% block scripts %}
|
{% block scripts %}
|
||||||
{{ super() }}
|
{{ super() }}
|
||||||
<script>
|
<script>
|
||||||
function cpuUpdate(value) {
|
function cpuUpdate(value) {
|
||||||
$('#selected-cpu').html('<h3>' + value + ' cores</h3>');
|
$('#selected-cpu').html('<h3>' + value + ' cores</h3>');
|
||||||
|
//for (i = 0; i < value; i++) {
|
||||||
|
// cpuimg += 'x';
|
||||||
|
//}
|
||||||
|
//$('#selected-cpu').html('test ' + cpuimg);
|
||||||
}
|
}
|
||||||
|
|
||||||
function memoryUpdate(value) {
|
function memoryUpdate(value) {
|
||||||
|
@ -24,7 +28,7 @@ function storageUpdate(value) {
|
||||||
<center><h2>Deploy new Server</h2></center>
|
<center><h2>Deploy new Server</h2></center>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<form method="POST" action="{{ url_for('panel.deploy') }}">
|
<form method="POST" action="{{ url_for('panel.deploy') }}">
|
||||||
<div class="col-md-12">
|
<div class="col-md-6">
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">1. Location</div>
|
<div class="panel-heading">1. Location</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
|
@ -37,9 +41,9 @@ function storageUpdate(value) {
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-12">
|
<div class="col-md-6">
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">2. Type</div>
|
<div class="panel-heading">2. Image</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
<p>
|
<p>
|
||||||
{{ form.vmtype.label }}<br /> {{ form.vmtype }}<br />
|
{{ form.vmtype.label }}<br /> {{ form.vmtype }}<br />
|
||||||
|
@ -57,7 +61,7 @@ function storageUpdate(value) {
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
<p>
|
<p>
|
||||||
{{ form.cpu.label }}
|
{{ form.cpu.label }}
|
||||||
{{ form.cpu(min=2, max=16, step=2, oninput="cpuUpdate(value)") }}
|
{{ form.cpu(min=2, max=8, step=2, oninput="cpuUpdate(value)") }}
|
||||||
<center><output for="cpu" id="selected-cpu"><h3>{{ form.cpu.data }} cores</h3></output></center>
|
<center><output for="cpu" id="selected-cpu"><h3>{{ form.cpu.data }} cores</h3></output></center>
|
||||||
{% for error in form.cpu.errors %}
|
{% for error in form.cpu.errors %}
|
||||||
{{ error }}<br />
|
{{ error }}<br />
|
||||||
|
@ -67,7 +71,7 @@ function storageUpdate(value) {
|
||||||
|
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
<p>
|
<p>
|
||||||
{{ form.memory.label }}<br /> {{ form.memory(min=512, max=16384, step=512, oninput="memoryUpdate(value)") }}
|
{{ form.memory.label }}<br /> {{ form.memory(min=1024, max=8192, step=512, oninput="memoryUpdate(value)") }}
|
||||||
<center><output for="memory" id="selected-memory"><h3>{{ form.memory.data }} MB</h3></output></center>
|
<center><output for="memory" id="selected-memory"><h3>{{ form.memory.data }} MB</h3></output></center>
|
||||||
{% for error in form.memory.errors %}
|
{% for error in form.memory.errors %}
|
||||||
{{ error }}<br />
|
{{ error }}<br />
|
||||||
|
@ -77,7 +81,7 @@ function storageUpdate(value) {
|
||||||
|
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
<p>
|
<p>
|
||||||
{{ form.storage.label }}<br /> {{ form.storage(min=10, max=100, step=10, oninput="storageUpdate(value)") }}
|
{{ form.storage.label }}<br /> {{ form.storage(min=20, max=240, step=20, oninput="storageUpdate(value)") }}
|
||||||
<center><output for="storage" id="selected-storage"><h3>{{ form.storage.data }} GB</h3></output></center>
|
<center><output for="storage" id="selected-storage"><h3>{{ form.storage.data }} GB</h3></output></center>
|
||||||
{% for error in form.storage.errors %}
|
{% for error in form.storage.errors %}
|
||||||
{{ error }}<br />
|
{{ error }}<br />
|
||||||
|
|
|
@ -10,9 +10,8 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="panel-heading" data-toggle="collapse" data-parent="#deploycubes" href="#cube{{ deploy.machine_id }}" aria-expanded="true" aria-controls="cube{{ deploy.machine_id }}" role="tab" id="dpanel{{ deploy.machine_id }}">
|
<div class="panel-heading" data-toggle="collapse" data-parent="#deploycubes" href="#cube{{ deploy.machine_id }}" aria-expanded="true" aria-controls="cube{{ deploy.machine_id }}" role="tab" id="dpanel{{ deploy.machine_id }}">
|
||||||
{% if deploy.protected == True %}<img class="icon icons8-Security-Checked" width="24" height="24" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAADr0lEQVRYheXYzWrbWBQHcD1CHiGPkEfwxtaXm05baDclCels0kWbTRbuJl0EJF1JdnHo1DQQOgstSgqBiJIygY4XwVdXFnUIuKA0H1BIiVrTGmxrrBDnzCJ4SNLYkmzZGWb+cFYG3x+6OkdXoqj/Q+LIHGNl8hsnE4eTiZMQC5k4MseuFUWLxk1OJhqvmN9uZT9UH2r7IOXrIOXr8FDbh1vZD1VeMb9xMtFo0bg5cFAsUxpJSHgymS6usMhw72RL7tzqIaQ3XchZrSsrvenC3Ooh3M6Waiwy3GS6uJKQ8GQsUxqJBMUIeDQh4ckbavE9LWK4/7JcTekOLBrHHVGdatE4hpTuwP2X5SotYrihFt8nJDzJCHg0NIoWjcdJxdxnZdKcXrZr8+uVnlDdsPPrFZhetmusTJq8Qj7RovE4EJYWMcxoe8359UpkIL+aX6/AjLbXpEUMgYDDgl2u/waQR6TSrTMHVelNF3jVPPAFJlVra2GjOnTgwkYVkqq1de3A5VLfwOKblO4MBPfnwSl4JwBr9s+/pXQHkmrxjS8wIeCnj15/HgjufN7tXvz90evPkBDwU18gLRVmZ7S95iBxFRd+2uoHr3Y8WirM+gIZAcfuPt/+MUxczmrB3efbPxgBx3yBsUxpJKpZGBSXswLOwHY4RL5K+XrHha0vpx0X6gUn5evBZmA7vGL+0amT7cqp74LvdluBcaE6uB1aKsxOL9u1y3+0ZvsvvFJugXcSHJezWjCx9LERF/BUYCAj4FEWkSs7udvW9YLLWS1gEWmGPhfyqnnQ6T68CrlmX8R5JwDatj8u9P3XDi0WnnWbh5eR5+OdAKyUg3X6g1c7Hi0WnoUGMgIe5RDxwnRqWFzP29sOrxQtv+fyeWRYXEp3gFeKVk84iqKouICn7gV4qrQPAWFwOasF42nrr1Dde1U4yTgKcvwK0q3na2GjCpxkHPWFC3MVw9btbKnW99Vrh5PN3Sjf8lK6A6xM7EhwFHV2wmERaUbxbrxoHLc7NxYZkKIoilPIi4mlcqNf4MRSucEp5EWkOIo6O4Zxsrnbz+vA3OohsDKxI/s2czlxZI4xyHC7HcW6dS2DDHfgn+USUuEXDhEvDFLK1wdz33VKXMBTQZFSvg4cIl5kIyUMkpeN793GT0p3zrZ12Lh/kMgc4xD5OqPtXRhBi8Yx/Pr7jsdJxtG1fwqOZUojLDLejmesxhPdgSe6A+MZq8Ei4+3AurWXMAKOJVVrK6laW0Nrhn9D/gYrB5WUx8IwEwAAAABJRU5ErkJggg==">{% endif %} <a href="#"><b>{% if status[deploy.machine_id] == 'running' %}<font color="green">{% else %}<font color="red">{% endif %}{{ deploy.machine_alias }}</font></b></a>
|
{% if deploy.protected == True %}<img class="icon icons8-Security-Checked" width="24" height="24" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAADr0lEQVRYheXYzWrbWBQHcD1CHiGPkEfwxtaXm05baDclCels0kWbTRbuJl0EJF1JdnHo1DQQOgstSgqBiJIygY4XwVdXFnUIuKA0H1BIiVrTGmxrrBDnzCJ4SNLYkmzZGWb+cFYG3x+6OkdXoqj/Q+LIHGNl8hsnE4eTiZMQC5k4MseuFUWLxk1OJhqvmN9uZT9UH2r7IOXrIOXr8FDbh1vZD1VeMb9xMtFo0bg5cFAsUxpJSHgymS6usMhw72RL7tzqIaQ3XchZrSsrvenC3Ooh3M6Waiwy3GS6uJKQ8GQsUxqJBMUIeDQh4ckbavE9LWK4/7JcTekOLBrHHVGdatE4hpTuwP2X5SotYrihFt8nJDzJCHg0NIoWjcdJxdxnZdKcXrZr8+uVnlDdsPPrFZhetmusTJq8Qj7RovE4EJYWMcxoe8359UpkIL+aX6/AjLbXpEUMgYDDgl2u/waQR6TSrTMHVelNF3jVPPAFJlVra2GjOnTgwkYVkqq1de3A5VLfwOKblO4MBPfnwSl4JwBr9s+/pXQHkmrxjS8wIeCnj15/HgjufN7tXvz90evPkBDwU18gLRVmZ7S95iBxFRd+2uoHr3Y8WirM+gIZAcfuPt/+MUxczmrB3efbPxgBx3yBsUxpJKpZGBSXswLOwHY4RL5K+XrHha0vpx0X6gUn5evBZmA7vGL+0amT7cqp74LvdluBcaE6uB1aKsxOL9u1y3+0ZvsvvFJugXcSHJezWjCx9LERF/BUYCAj4FEWkSs7udvW9YLLWS1gEWmGPhfyqnnQ6T68CrlmX8R5JwDatj8u9P3XDi0WnnWbh5eR5+OdAKyUg3X6g1c7Hi0WnoUGMgIe5RDxwnRqWFzP29sOrxQtv+fyeWRYXEp3gFeKVk84iqKouICn7gV4qrQPAWFwOasF42nrr1Dde1U4yTgKcvwK0q3na2GjCpxkHPWFC3MVw9btbKnW99Vrh5PN3Sjf8lK6A6xM7EhwFHV2wmERaUbxbrxoHLc7NxYZkKIoilPIi4mlcqNf4MRSucEp5EWkOIo6O4Zxsrnbz+vA3OohsDKxI/s2czlxZI4xyHC7HcW6dS2DDHfgn+USUuEXDhEvDFLK1wdz33VKXMBTQZFSvg4cIl5kIyUMkpeN793GT0p3zrZ12Lh/kMgc4xD5OqPtXRhBi8Yx/Pr7jsdJxtG1fwqOZUojLDLejmesxhPdgSe6A+MZq8Ei4+3AurWXMAKOJVVrK6laW0Nrhn9D/gYrB5WUx8IwEwAAAABJRU5ErkJggg==">{% endif %} <a href="#"><b>{% if status[deploy.machine_id] == 'running' %}<font color="green">{% else %}<font color="red">{% endif %}{{ deploy.machine_alias }}</font></b></a>
|
||||||
|
|
||||||
|
|
||||||
</div></div> <!-- end of heading -->
|
</div></div> <!-- end of heading -->
|
||||||
|
|
||||||
<!-- START OF HIDDEN PANEL -->
|
<!-- START OF HIDDEN PANEL -->
|
||||||
{% if deploy.enabled == False or deploy.warning == True %}
|
{% if deploy.enabled == False or deploy.warning == True %}
|
||||||
<div id="cube{{ deploy.machine_id }}" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="heading{{ deploy.machine_id }}" style="border:3px solid #faebcc; border-top: none; margin-bottom: 10px;">
|
<div id="cube{{ deploy.machine_id }}" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="heading{{ deploy.machine_id }}" style="border:3px solid #faebcc; border-top: none; margin-bottom: 10px;">
|
||||||
|
@ -41,7 +40,7 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</br>
|
</br>
|
||||||
</br>
|
</br>
|
||||||
Date Created: {{ moment(deploy.date_created).format('lll') }}<br />
|
Last Payment Date: {{ moment(deploy.date_last_charge).format('lll') }}</br />
|
||||||
{% if deploy.period == 1 %}
|
{% if deploy.period == 1 %}
|
||||||
{{ deploy.period }} month payment cycle<br />
|
{{ deploy.period }} month payment cycle<br />
|
||||||
{% else %}
|
{% else %}
|
||||||
|
@ -68,7 +67,6 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="graphs{{ deploy.machine_id }}" class="tab-pane fade">
|
<div id="graphs{{ deploy.machine_id }}" class="tab-pane fade">
|
||||||
|
|
Loading…
Reference in a new issue