hot fixes
This commit is contained in:
parent
0e77cb60cc
commit
0a95073b50
19 changed files with 208 additions and 138 deletions
|
@ -1,45 +1,29 @@
|
|||
# coding: utf-8
|
||||
|
||||
from flask import Blueprint, flash
|
||||
from flask import g
|
||||
from flask import redirect
|
||||
from flask import render_template
|
||||
from flask import request
|
||||
from flask import session
|
||||
from flask import url_for
|
||||
from flask import Blueprint, flash, g, redirect, render_template, request, session, url_for
|
||||
|
||||
from SWSCloudCore.controllers.administrators import ControllerAdministrators
|
||||
from SWSCloudCore.controllers.billing import ControllerBilling
|
||||
from SWSCloudCore.controllers.users.manage import ControllerManageUsers
|
||||
from SWSCloudCore.controllers.users.manage import ControllerManageUsersBalance
|
||||
from SWSCloudCore.controllers.users.manage import ControllerManageUsersDetails
|
||||
from SWSCloudAdministrator.Administrator.common import requires_login
|
||||
|
||||
view_administrator_users = Blueprint('administrator_users', __name__, url_prefix='/administrator/users')
|
||||
|
||||
|
||||
@view_administrator_users.route('/')
|
||||
@requires_login
|
||||
def users():
|
||||
# check session
|
||||
if not ControllerAdministrators().check_session():
|
||||
return redirect(url_for("administrator.logout"))
|
||||
# auth user
|
||||
if not ControllerAdministrators().auth(session['admin_email'], session['admin_password']):
|
||||
return redirect(url_for("administrator.logout"))
|
||||
#
|
||||
return render_template(
|
||||
'administrator/users/index.html',
|
||||
users=ControllerManageUsers().items_get()
|
||||
)
|
||||
users=ControllerManageUsers().items_get())
|
||||
|
||||
|
||||
@view_administrator_users.route('/details/<uuid:user_id>.html')
|
||||
@requires_login
|
||||
def user_details(user_id):
|
||||
# check session
|
||||
if not ControllerAdministrators().check_session():
|
||||
return redirect(url_for("administrator.logout"))
|
||||
# auth user
|
||||
if not ControllerAdministrators().auth(session.get('admin_email'), session.get('admin_password')):
|
||||
return redirect(url_for("administrator.logout"))
|
||||
# check exists user by uuid
|
||||
if not ControllerManageUsers().exists_by_id(user_id):
|
||||
return redirect(url_for('administrator_users.users'))
|
||||
|
@ -50,19 +34,12 @@ def user_details(user_id):
|
|||
'administrator/users/details.html',
|
||||
user_account=ControllerManageUsers().item_get(user_id),
|
||||
user_details=ControllerManageUsersDetails().item_get(user_id),
|
||||
user_balance=ControllerManageUsersBalance().item_get(user_id),
|
||||
)
|
||||
user_balance=ControllerManageUsersBalance().item_get(user_id))
|
||||
|
||||
|
||||
@view_administrator_users.route('/credit_increase.html', methods=['POST'])
|
||||
@requires_login
|
||||
def user_credits_add():
|
||||
# check session
|
||||
if not ControllerAdministrators().check_session():
|
||||
return redirect(url_for("administrator.logout"))
|
||||
# auth user
|
||||
if not ControllerAdministrators().auth(session.get('admin_email'), session.get('admin_password')):
|
||||
return redirect(url_for("administrator.logout"))
|
||||
|
||||
user_id = request.form.get('user_id')
|
||||
__amount = request.form.get('amount')
|
||||
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
# coding: utf-8
|
||||
|
||||
import os
|
||||
from flask import Flask, g, render_template
|
||||
from flask_babel import Babel
|
||||
from flaskext.markdown import Markdown
|
||||
from flask_multistatic import MultiStaticFlask
|
||||
|
||||
from SWSCloudAdministrator.Administrator import viewAdministrator
|
||||
from SWSCloudCore import models
|
||||
|
@ -18,10 +20,35 @@ from SWSCloudWeb.views.payments import viewPayments
|
|||
from SWSCloudWeb.views.support import viewSupport
|
||||
from SWSCloudWeb.views.tasks import viewTasks
|
||||
|
||||
app = Flask(__name__, static_folder='static', static_url_path='')
|
||||
# app = Flask(__name__, static_folder='static', static_url_path='')
|
||||
app = MultiStaticFlask(__name__, static_folder='static', static_url_path='')
|
||||
# app.config['SERVER_NAME'] = settings.get('Application', 'SERVER_NAME')
|
||||
app.config['DEBUG'] = config.getboolean('Application', 'DEBUG')
|
||||
app.config['SECRET_KEY'] = config.get("Application", "SECRET_KEY")
|
||||
|
||||
|
||||
if app.config.get('THEME_TEMPLATE_FOLDER', False):
|
||||
# Jinja can be told to look for templates in different folders
|
||||
# That's what we do here
|
||||
template_folder = app.config['THEME_TEMPLATE_FOLDER']
|
||||
if template_folder[0] != '/':
|
||||
template_folder = os.path.join(app.root_path, app.template_folder, template_folder)
|
||||
import jinja2
|
||||
|
||||
# Jinja looks for the template in the order of the folders specified
|
||||
templ_loaders = [jinja2.FileSystemLoader(template_folder), app.jinja_loader]
|
||||
app.jinja_loader = jinja2.ChoiceLoader(templ_loaders)
|
||||
if app.config.get('THEME_STATIC_FOLDER', False):
|
||||
static_folder = app.config['THEME_STATIC_FOLDER']
|
||||
if static_folder[0] != '/':
|
||||
static_folder = os.path.join(app.root_path, 'static', static_folder)
|
||||
print static_folder
|
||||
# Unlike templates, to serve static files from multiples folders we
|
||||
# need flask-multistatic
|
||||
# app.static_folder = [static_folder, os.path.join(app.root_path, 'static')]
|
||||
app.static_folder = static_folder
|
||||
|
||||
|
||||
Markdown(app)
|
||||
babel = Babel(app)
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -7,6 +7,7 @@ body {
|
|||
header {
|
||||
background: #333 none repeat scroll 0% 0%;
|
||||
}
|
||||
|
||||
#banner {
|
||||
overflow: hidden;
|
||||
padding: 4em 0 5em;
|
||||
|
@ -39,14 +40,6 @@ text-align: center;
|
|||
margin-bottom: 50px;
|
||||
}
|
||||
|
||||
|
||||
footer {
|
||||
border-top: 1px solid #999;
|
||||
}
|
||||
footer .row {
|
||||
margin-top: 25px;
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
.price {
|
||||
text-align: right;
|
||||
}
|
||||
|
@ -98,3 +91,21 @@ ul#features-list li {
|
|||
#account_bills {
|
||||
color: white;
|
||||
}
|
||||
|
||||
footer {
|
||||
background-color: #f0f0f0;
|
||||
/*border-top: 1px solid #999;*/
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
height: 3em; /* choose any height */
|
||||
}
|
||||
|
||||
footer .row div ul {
|
||||
list-style: none;
|
||||
}
|
||||
footer .row div ul li {
|
||||
float: left;
|
||||
background-color: #f1f1f1;
|
||||
margin: .7em;
|
||||
}
|
|
@ -1,7 +1,6 @@
|
|||
<footer>
|
||||
<div class="row">
|
||||
<div class="large-6 medium-6 columns">
|
||||
<b>{{ _('Поддержка') }}</b>
|
||||
<div class="large-12 columns">
|
||||
<ul>
|
||||
{% if g.settings.get('SUPPORT_TEL', None) %}
|
||||
<li>{{g.system_settings.get('SUPPORT_TEL')}}</li>
|
||||
|
@ -9,12 +8,10 @@
|
|||
{% if g.settings.get('SUPPORT_EMAIL', None) %}
|
||||
<li>{{g.system_settings.get('SUPPORT_EMAIL')}}</li>
|
||||
{% endif %}
|
||||
<li>2009−2016 © GoCloud.ru</li>
|
||||
<li><a href="{{ url_for('support.index') }}">{{ _('Форма обратной связи') }}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="large-6 medium-6 columns">
|
||||
<p>2009−2016 © GoCloud.ru</p>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
{% if g.settings['footer_code'] %}
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
{% if session['user_id'] %}
|
||||
<ul class="right">
|
||||
<li><a href="{{ url_for('account.index') }}">{{ _('Учётная запись') }}</a></li>
|
||||
<li><a href="{{ url_for('bills.index') }}">{{ _('Счёт') }}<span id="account_bills"></span></a></li>
|
||||
<li><a href="{{ url_for('bills.index') }}">{{ _('Баланс') }}<span id="account_bills"></span></a></li>
|
||||
<li><a href="{{ url_for('account.logout') }}">{{ _('Выход') }}</a></li>
|
||||
</ul>
|
||||
<ul class="left">
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<ul class="inline-list">
|
||||
<li><a href="{{ url_for('.index') }}">Счёт</a></li>
|
||||
<li><a href="{{ url_for('.index') }}">Баланс</a></li>
|
||||
<li><a href="{{ url_for('.payments') }}">Платежи</a></li>
|
||||
<li><a href="{{ url_for('.charge') }}">Пополнить баланс</a></li>
|
||||
</ul>
|
|
@ -5,9 +5,7 @@
|
|||
{% block content %}
|
||||
<div class="row">
|
||||
<div class="large-12 columns">
|
||||
<h2>Счёт / Пополнить баланс</h2>
|
||||
</div>
|
||||
<div class="large-12 columns">
|
||||
<h2>Пополнить баланс</h2>
|
||||
{% include "default/billing/_menu.html" %}
|
||||
</div>
|
||||
</div>
|
||||
|
@ -15,7 +13,6 @@
|
|||
<div class="large-12 column">
|
||||
<h5>Электронные платёжные системы</h5>
|
||||
</div>
|
||||
|
||||
{% if g.settings['PAY_ROBOKASSA_ENABLED'] == "1" %}
|
||||
<form action="{{ url_for('payments.robokassa', action='process') }}" method="post">
|
||||
<div class="large-3 columns">
|
||||
|
|
|
@ -5,15 +5,20 @@
|
|||
{% block content %}
|
||||
<div class="row">
|
||||
<div class="large-12 columns">
|
||||
<h2>Счёт</h2>
|
||||
</div>
|
||||
<div class="large-12 columns">
|
||||
<h2>Баланс</h2>
|
||||
{% include "default/billing/_menu.html" %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="large-6 columns">
|
||||
<p>Баланс: {{ user_balance }} рублей</p>
|
||||
<div class="large-12 columns">
|
||||
<p>Баланс: <b>{{ user_balance }} рублей</b>.</p>
|
||||
</div>
|
||||
<div class="large-12 columns">
|
||||
<div style="background: green; color: #fff; padding:1em;">
|
||||
<p>Мы предоставляем вам возможность работать при отрицательном балансе до −500 рублей.</p>
|
||||
<p>При отсутствии оплаты в течении 15 дней виртуальный сервер автоматически отключается.
|
||||
По истечению последующих 30 дней виртуальный сервер удаляется.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -5,15 +5,12 @@
|
|||
{% block content %}
|
||||
<div class="row">
|
||||
<div class="large-12 columns">
|
||||
<h2>Учётная запись</h2>
|
||||
</div>
|
||||
<div class="large-12 columns">
|
||||
<h2>История платежей</h2>
|
||||
{% include "default/billing/_menu.html" %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="large-12 columns">
|
||||
<h4>История платежей</h4>
|
||||
<table width="100%">
|
||||
<thead>
|
||||
<tr>
|
||||
|
@ -53,7 +50,8 @@
|
|||
{{ record['status'] }}
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>{{record['method']}}</td>
|
||||
<td>{{record['method']}}</td>
|
||||
<td>{% if record['paid'] %}{{record['paid']}}{% else %}−{% endif %}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
|
|
@ -2,6 +2,6 @@
|
|||
<li><a href="{{ url_for('account.index') }}">Учётная запись</a></li>
|
||||
{# <li><a href="{{ url_for('account.settings') }}">Настройки</a></li>#}
|
||||
<li><a href="{{ url_for('account.password_update') }}">Смена пароля</a></li>
|
||||
<li><a href="{{ url_for('account.sshkey') }}">SSH ключ</a></li>
|
||||
<li><a href="{{ url_for('account.sshkey') }}">SSH-ключ</a></li>
|
||||
<li><a href="{{ url_for('account.api_index') }}">API</a></li>
|
||||
</ul>
|
|
@ -5,17 +5,10 @@
|
|||
{% block content %}
|
||||
<div class="row">
|
||||
<div class="large-12 columns">
|
||||
<h2>Учётная запись</h2>
|
||||
</div>
|
||||
<div class="large-12 columns">
|
||||
<h2>API</h2>
|
||||
{% include "default/id/_menu.html" %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="large-12 columns">
|
||||
<h3>API</h3>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="large-12 columns">
|
||||
|
|
|
@ -5,16 +5,11 @@
|
|||
{% block content %}
|
||||
<div class="row">
|
||||
<div class="large-12 columns">
|
||||
<h2>Учётная запись</h2>
|
||||
</div>
|
||||
<div class="large-12 columns">
|
||||
<h2>Смена пароля</h2>
|
||||
{% include "default/id/_menu.html" %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="large-12 columns">
|
||||
<h3>Смена пароля</h3>
|
||||
</div>
|
||||
<div class="large-12 columns">
|
||||
<form action="{{ url_for('account.password_update') }}" method="post">
|
||||
<label>Старый пароль</label>
|
||||
|
|
|
@ -3,31 +3,30 @@
|
|||
{% block title %}SSH-ключ{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="row">
|
||||
<div class="large-12 columns">
|
||||
<h2>Учётная запись</h2>
|
||||
<div class="row">
|
||||
<div class="large-12 columns content">
|
||||
<div class="row">
|
||||
<div class="large-12 columns">
|
||||
<h2>SSH-ключ</h2>
|
||||
{% include "default/id/_menu.html" %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="large-12 columns">
|
||||
{% if sshkey.exists %}
|
||||
<form action="{{ url_for('account.sshkey_delete') }}" method="post">
|
||||
<input type="text" value="{{ sshkey.sshkey }}" disabled />
|
||||
<input type="submit" value="Удалить ключ" class="button alert" />
|
||||
</form>
|
||||
{% else %}
|
||||
<form action="{{ url_for('account.sshkey_post') }}" method="post">
|
||||
<label for="sshkey">SSH-ключ</label>
|
||||
<input type="text" name="sshkey" value="" id="sshkey" class="form" />
|
||||
<input type="submit" value="Добавить ключ" class="button button-success" />
|
||||
</form>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="large-12 columns">
|
||||
<h3>SSH-ключ</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="large-12 columns">
|
||||
{% if sshkey.exists %}
|
||||
<form action="{{ url_for('account.sshkey_delete') }}" method="post">
|
||||
<input type="text" value="{{ sshkey.sshkey }}" disabled />
|
||||
<input type="submit" value="Удалить ключ" class="button alert" />
|
||||
</form>
|
||||
{% else %}
|
||||
<form action="{{ url_for('account.sshkey') }}" method="post">
|
||||
<label for="sshkey">SSH-ключ</label>
|
||||
<input type="text" name="sshkey" value="" id="sshkey" class="form" />
|
||||
<input type="submit" value="Добавить ключ" class="button button-success" />
|
||||
</form>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -26,8 +26,8 @@
|
|||
<div class="title-bar-right">
|
||||
{% if session['user_id'] %}
|
||||
<ul class="menu">
|
||||
<li><a href="{{ url_for('account.index') }}">{{ _('Учётная запись') }}</a></li>
|
||||
<li><a href="{{ url_for('bills.index') }}">{{ _('Счёт') }}<span id="account_bills"></span></a></li>
|
||||
<li><a href="{{ url_for('vms.index') }}">{{ _('Панель управления') }}</a></li>
|
||||
<li><a href="{{ url_for('bills.index') }}">{{ _('Баланс') }}<span id="account_bills"></span></a></li>
|
||||
<li><a href="{{ url_for('account.logout') }}">{{ _('Выход') }}</a></li>
|
||||
</ul>
|
||||
{% else %}
|
||||
|
@ -57,7 +57,8 @@
|
|||
|
||||
<footer>
|
||||
<hr>
|
||||
<div class="row">
|
||||
{# <div class="row">
|
||||
|
||||
<div class="large-4 columns text-center">
|
||||
<b>Поддержка</b>
|
||||
<ul>
|
||||
|
@ -79,8 +80,15 @@
|
|||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
#}
|
||||
<div class="row">
|
||||
<div class="large-12 columns text-center">
|
||||
<div class="large-6 columns text-center">
|
||||
<ul>
|
||||
<li>+7 499 702-02-36</li>
|
||||
<li>support@gocloud.ru</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="large-6 columns text-center">
|
||||
<p class="copyright">2009-2016 © GoCloud.ru</p>
|
||||
<script type="text/javascript" src="//yastatic.net/es5-shims/0.0.2/es5-shims.min.js" charset="utf-8"></script>
|
||||
<script type="text/javascript" src="//yastatic.net/share2/share.js" charset="utf-8"></script>
|
||||
|
|
|
@ -13,48 +13,79 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<article class="row">
|
||||
<div class="large-12 columns">
|
||||
<p>Виртуальный приватный сервер, практически полностью позволяющий заменить основные возможности физического сервера.</p>
|
||||
<p>На нем можно реализовать проекты любой сложности, например персональный блог, интернет-магазина, крупный корпоративный портал или требующий больших ресурсов проект.</p>
|
||||
<p>VPS хостинг GoCloud отличают невысокие цены, высокая скорость работы, гибкость работы в виртуальной машине.</p>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<div class="pricing">
|
||||
<div class="row">
|
||||
<div class="large-3 medium-12 small-12 columns">
|
||||
<div class="large-4 medium-4 small-12 columns">
|
||||
<ul class="pricing-table">
|
||||
<li class="title">G0</li>
|
||||
<li class="price">200 <small>руб./мес.</small></li>
|
||||
<li class="bullet-item">Процессор <span>1</span></li>
|
||||
<li class="bullet-item">Память <span>512Мб</span></li>
|
||||
<li class="bullet-item">Диск <span>10Гб</span></li>
|
||||
<li class="cta-button"><a class="button alert" href="{{ url_for('vms.create') }}">Создать сервер</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="large-4 medium-4 small-12 columns">
|
||||
<ul class="pricing-table">
|
||||
<li class="title">G1</li>
|
||||
<li class="price">590 <small>руб./мес.</small></li>
|
||||
<li class="bullet-item">Процессор <span>1</span></li>
|
||||
<li class="bullet-item">Память <span>1Гб</span></li>
|
||||
<li class="bullet-item">Диск <span>20Гб</span></li>
|
||||
<li class="cta-button"><a class="button" href="{{ url_for('vms.create') }}">Создать сервер</a></li>
|
||||
<li class="cta-button"><a class="button alert" href="{{ url_for('vms.create') }}">Создать сервер</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="large-3 medium-12 small-12 columns">
|
||||
<div class="large-4 medium-4 small-12 columns">
|
||||
<ul class="pricing-table">
|
||||
<li class="title">G2</li>
|
||||
<li class="price">1080 <small>руб./мес.</small></li>
|
||||
<li class="bullet-item">Процессор <span>2</span></li>
|
||||
<li class="bullet-item">Память <span>2Гб</span></li>
|
||||
<li class="bullet-item">Диск <span>30Гб</span></li>
|
||||
<li class="cta-button"><a class="button" href="{{ url_for('vms.create') }}">Создать сервер</a></li>
|
||||
<li class="cta-button"><a class="button alert" href="{{ url_for('vms.create') }}">Создать сервер</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="large-3 medium-12 small-12 columns">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="large-4 medium-4 small-12 columns">
|
||||
<ul class="pricing-table">
|
||||
<li class="title">G4</li>
|
||||
<li class="price">2050 <small>руб./мес.</small></li>
|
||||
<li class="bullet-item">Процессор <span>2</span></li>
|
||||
<li class="bullet-item">Память <span>4Гб</span></li>
|
||||
<li class="bullet-item">Диск <span>50Гб</span></li>
|
||||
<li class="cta-button"><a class="button" href="{{ url_for('vms.create') }}">Создать сервер</a></li>
|
||||
<li class="cta-button"><a class="button alert" href="{{ url_for('vms.create') }}">Создать сервер</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="large-3 medium-12 small-12 columns">
|
||||
<div class="large-4 medium-4 small-12 columns">
|
||||
<ul class="pricing-table">
|
||||
<li class="title">G8</li>
|
||||
<li class="price">3900 <small>руб./мес.</small></li>
|
||||
<li class="bullet-item">Процессор <span>4</span></li>
|
||||
<li class="bullet-item">Память <span>8Гб</span></li>
|
||||
<li class="bullet-item">Диск <span>80Гб</span></li>
|
||||
<li class="cta-button"><a class="button" href="{{ url_for('vms.create') }}">Создать сервер</a></li>
|
||||
<li class="cta-button"><a class="button alert" href="{{ url_for('vms.create') }}">Создать сервер</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="large-4 medium-4 small-12 columns">
|
||||
<ul class="pricing-table">
|
||||
<li class="title">G16</li>
|
||||
<li class="price">6800 <small>руб./мес.</small></li>
|
||||
<li class="bullet-item">Процессор <span>8</span></li>
|
||||
<li class="bullet-item">Память <span>16Гб</span></li>
|
||||
<li class="bullet-item">Диск <span>160Гб</span></li>
|
||||
<li class="cta-button"><a class="button alert" href="{{ url_for('vms.create') }}">Создать сервер</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% include 'gocloud2016/macros/testimonials.html' %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -12,20 +12,30 @@
|
|||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th> </th>
|
||||
<th>План</th>
|
||||
<th>Процессор</th>
|
||||
<th>Память</th>
|
||||
<th>Диск</th>
|
||||
<th>Цена</th>
|
||||
<th> </th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>G0</td>
|
||||
<td>1</td>
|
||||
<td>0.5 Гб</td>
|
||||
<td>10 Гб</td>
|
||||
<td>200 руб./мес.</td>
|
||||
<td><a href="{{ url_for('vms.create') }}" class="button alert ordernow">Заказать</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>G1</td>
|
||||
<td>1</td>
|
||||
<td>1 Гб</td>
|
||||
<td>20 Гб</td>
|
||||
<td>590 руб./мес.</td>
|
||||
<td><a href="{{ url_for('vms.create') }}" class="button alert ordernow">Заказать</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>G2</td>
|
||||
|
@ -33,6 +43,7 @@
|
|||
<td>2 Гб</td>
|
||||
<td>30 Гб</td>
|
||||
<td>1080 руб./мес.</td>
|
||||
<td><a href="{{ url_for('vms.create') }}" class="button alert ordernow">Заказать</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>G4</td>
|
||||
|
@ -40,6 +51,7 @@
|
|||
<td>4 Гб</td>
|
||||
<td>50 Гб</td>
|
||||
<td>2050 руб./мес.</td>
|
||||
<td><a href="{{ url_for('vms.create') }}" class="button alert ordernow">Заказать</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>G8</td>
|
||||
|
@ -47,6 +59,15 @@
|
|||
<td>8 Гб</td>
|
||||
<td>80 Гб</td>
|
||||
<td>3900 руб./мес.</td>
|
||||
<td><a href="{{ url_for('vms.create') }}" class="button alert ordernow">Заказать</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>G16</td>
|
||||
<td>8</td>
|
||||
<td>16 Гб</td>
|
||||
<td>160 Гб</td>
|
||||
<td>6800 руб./мес.</td>
|
||||
<td><a href="{{ url_for('vms.create') }}" class="button alert ordernow">Заказать</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
@ -259,17 +259,16 @@ def password_reset_step2():
|
|||
# controllers.Mail().send(request.form['email'], subject, message)
|
||||
|
||||
email = ControllerMessagesEmail()
|
||||
email.send(title=subject, to=request.form.GET('email'), lead=lead, message=message, callout=callout)
|
||||
email.send(title=subject, to=request.form.get('email'), lead=lead, message=message, callout=callout)
|
||||
|
||||
# redirect to login page
|
||||
return redirect(url_for('account.login'))
|
||||
# redirect to step 2
|
||||
g.errors['items'].append(u'Ошибочный код')
|
||||
g.errors['total'] += 1
|
||||
flash(u'Ошибочный код')
|
||||
return redirect(url_for('account.password_reset_step2'))
|
||||
else:
|
||||
g.errors['items'].append(u'Произошла ошибка. Введите корректный адрес е.почты.')
|
||||
g.errors['total'] += 1
|
||||
flash(u'Произошла ошибка. Введите корректный адрес е.почты.')
|
||||
return redirect(url_for('account.password_reset_step2'))
|
||||
return render_template('default/id/password_reset_step2.html')
|
||||
|
||||
|
||||
|
@ -310,31 +309,33 @@ def password_update():
|
|||
return render_template('default/id/password_update.html')
|
||||
|
||||
|
||||
@viewAccount.route('/sshkey', methods=['GET', 'POST'])
|
||||
@viewAccount.route('/sshkey', methods=['GET'])
|
||||
@requires_login
|
||||
def sshkey():
|
||||
controllersshkey = ControllerSSHKey(session['user_id'])
|
||||
|
||||
if request.method == "POST":
|
||||
try:
|
||||
ssh = SSHKey(request.form['sshkey'])
|
||||
except Exception as e:
|
||||
g.errors['items'].append(u"Не корректный ssh-ключ.")
|
||||
g.errors['total'] += 1
|
||||
else:
|
||||
print(ssh.bits)
|
||||
print(ssh.hash())
|
||||
|
||||
controllersshkey.set(request.form['sshkey'])
|
||||
|
||||
sshkey = {
|
||||
"exists": controllersshkey.check(),
|
||||
"sshkey": controllersshkey.get()
|
||||
}
|
||||
sshkey = {"exists": controllersshkey.check(), "sshkey": controllersshkey.get()}
|
||||
|
||||
return render_template('default/id/sshkey.html', sshkey=sshkey)
|
||||
|
||||
|
||||
@viewAccount.route('/sshkey', methods=['POST'])
|
||||
@requires_login
|
||||
def sshkey_post():
|
||||
controllersshkey = ControllerSSHKey(session['user_id'])
|
||||
|
||||
try:
|
||||
ssh = SSHKey(request.form['sshkey'])
|
||||
except Exception as e:
|
||||
flash(u"Не корректный ssh-ключ.")
|
||||
else:
|
||||
print(ssh.bits)
|
||||
print(ssh.hash())
|
||||
|
||||
controllersshkey.set(request.form['sshkey'])
|
||||
return redirect(url_for('account.sshkey'))
|
||||
|
||||
|
||||
@viewAccount.route('/sshkey_delete', methods=['POST'])
|
||||
@requires_login
|
||||
def sshkey_delete():
|
||||
|
|
3
setup.py
3
setup.py
|
@ -4,7 +4,7 @@ from setuptools import setup
|
|||
|
||||
setup(
|
||||
name='SWSCloudCore',
|
||||
version='2.7.3',
|
||||
version='2.7.4',
|
||||
author='Vyacheslav Anzhiganov',
|
||||
author_email='hello@anzhiganov.com',
|
||||
packages=[
|
||||
|
@ -150,6 +150,7 @@ setup(
|
|||
'Flask-Markdown==0.3',
|
||||
'Flask-Babel==0.9',
|
||||
'flask-peewee==0.6.0',
|
||||
'flask-multistatic',
|
||||
'Jinja2==2.8',
|
||||
'peewee==2.8',
|
||||
'validators==0.10',
|
||||
|
|
Loading…
Add table
Reference in a new issue