bug fixes

This commit is contained in:
Vyacheslav Anzhiganov 2016-11-07 09:28:03 +03:00
parent 7464da34cf
commit 45f875b3fb
15 changed files with 73 additions and 58 deletions

View file

@ -17,5 +17,5 @@ view_administrator_compute_containers = Blueprint(
def index(): def index():
# формируем список правил # формируем список правил
return render_template( return render_template(
'administrator/containers/index.html', 'administrator/compute/containers/index.html',
containers=models.Containers.get_items()) containers=models.Containers.get_items())

View file

@ -15,7 +15,7 @@ view_administrator_compute_vms = Blueprint('administrator_compute_vms', __name__
def index(): def index():
# формируем список правил # формируем список правил
return render_template( return render_template(
'administrator/vms/index.html', vms=models.Vms.get_items()) 'administrator/compute/vms/index.html', vms=models.Vms.get_items())
@view_administrator_compute_vms.route('/<uuid:vm_id>', methods=['GET']) @view_administrator_compute_vms.route('/<uuid:vm_id>', methods=['GET'])
@ -25,7 +25,7 @@ def details(vm_id):
return redirect(url_for('.index')) return redirect(url_for('.index'))
# формируем список правил # формируем список правил
return render_template( return render_template(
'administrator/vms/details.html', vm=models.Vms.get_item(vm_id)) 'administrator/compute/vms/details.html', vm=models.Vms.get_item(vm_id))
@view_administrator_compute_vms.route('/<uuid:vm_id>/delete', methods=['POST']) @view_administrator_compute_vms.route('/<uuid:vm_id>/delete', methods=['POST'])

View file

@ -18,9 +18,8 @@ view_administrator_tasks = Blueprint('administrator_tasks', __name__, url_prefix
def index(): def index():
return render_template( return render_template(
'administrator/tasks/index.html', 'administrator/tasks/index.html',
# tasks=ControllerManageTasks().get_by_server().get() total=models.Tasks.count_items(),
tasks=ControllerManageTasks().get() tasks=ControllerManageTasks().get())
)
@view_administrator_tasks.route('/edit.html', methods=['GET']) @view_administrator_tasks.route('/edit.html', methods=['GET'])
@ -32,8 +31,7 @@ def edit():
return render_template( return render_template(
'administrator/tasks/edit.html', 'administrator/tasks/edit.html',
task=ControllerManageTasks().get_task(task_id) task=ControllerManageTasks().get_task(task_id))
)
@view_administrator_tasks.route('/edit.html', methods=['POST']) @view_administrator_tasks.route('/edit.html', methods=['POST'])

View file

@ -38,6 +38,8 @@
<tr> <tr>
<td>&nbsp;</td> <td>&nbsp;</td>
<td> <td>
<a href="{{ url_for('administrator_compute_vms.index') }}" class="button primary small">Start</a>
<a href="{{ url_for('administrator_compute_vms.index') }}" class="button primary small">Stop</a>
<a href="{{ url_for('administrator_compute_vms.index') }}" class="button secondary small">Cancel</a> <a href="{{ url_for('administrator_compute_vms.index') }}" class="button secondary small">Cancel</a>
</td> </td>
</tr> </tr>

View file

@ -4,6 +4,7 @@
{% set subtitle="Tasks" %} {% set subtitle="Tasks" %}
{% block content %} {% block content %}
<p>Total: {{total}}</p>
<table class="table table-bordered" width="100%"> <table class="table table-bordered" width="100%">
<thead> <thead>
<tr> <tr>

View file

@ -292,6 +292,12 @@ class Tasks(PgSQLModel):
return False return False
return True return True
@staticmethod
def count_items(status=None):
if status:
Tasks.select().where(Tasks.status == status).count()
return Tasks.select().count()
# @staticmethod # @staticmethod
# def set_task(datacenter_id, server_id, task, status, **args): # def set_task(datacenter_id, server_id, task, status, **args):
# task_id = uuid.uuid4() # task_id = uuid.uuid4()

File diff suppressed because one or more lines are too long

View file

@ -16948,7 +16948,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
} else { } else {
barXY = eventFromBar; barXY = eventFromBar;
} }
offsetPct = percent(barXY, barDim); var offsetPct = percent(barXY, barDim);
value = (this.options.end - this.options.start) * offsetPct + this.options.start; value = (this.options.end - this.options.start) * offsetPct + this.options.start;

View file

@ -11,13 +11,13 @@
</div> </div>
<div class="row"> <div class="row">
<div class="large-12 columns"> <div class="large-12 columns">
<form action="{{ url_for('account.password_update') }}" method="post"> <form action="{{ url_for('account.password_update_post') }}" method="post">
<label>Старый пароль</label> <label for="old_password">Старый пароль</label>
<input type="password" name="old_password" value="" /> <input type="password" name="old_password" id="old_password" value="" />
<label>Новый пароль</label> <label for="new_password">Новый пароль</label>
<input type="password" name="new_password" value="" /> <input type="password" name="new_password" id="new_password" value="" />
<label>Новый пароль (повторно)</label> <label for="new_password_confirm">Новый пароль (повторно)</label>
<input type="password" name="new_password_confirm" value="" /> <input type="password" name="new_password_confirm" id="new_password_confirm" value="" />
<input type="submit" value="Сменить пароль" class="button success" /> <input type="submit" value="Сменить пароль" class="button success" />
<a href="{{ url_for('account.index') }}" class="button secondary">Отмена</a> <a href="{{ url_for('account.index') }}" class="button secondary">Отмена</a>
</form> </form>

View file

@ -9,7 +9,7 @@
Личный счёт успешно пополнен. Личный счёт успешно пополнен.
<ul> <ul>
<li><a href="{{ url_for('account.billing') }}">Биллинг</a></li> <li><a href="{{ url_for('bills.index') }}">Биллинг</a></li>
{% if g.settings.get('SERVICE_CONTAINERS_ENABLE', "0") == "1" %} {% if g.settings.get('SERVICE_CONTAINERS_ENABLE', "0") == "1" %}
<li><a href="{{ url_for('containers.index') }}">Контейнеры</a></li> <li><a href="{{ url_for('containers.index') }}">Контейнеры</a></li>
{% endif %} {% endif %}

View file

@ -101,7 +101,7 @@ def registration():
# Проверяем правильность адреса е-почты и # Проверяем правильность адреса е-почты и
if not validators.email(email): if not validators.email(email):
flash(u'Неправильный адрес електронной почты', 'error') flash(u'Неправильный адрес электронной почты', 'error')
return redirect(url_for('account.registration')) return redirect(url_for('account.registration'))
# Проверяем зарегистрирован ли указанный адрес електронной почты # Проверяем зарегистрирован ли указанный адрес електронной почты
@ -191,12 +191,12 @@ def password_reset():
email = request.form['email'] email = request.form['email']
if not validators.email(email): if not validators.email(email):
flash(u'Произошла ошибка. Введите корректный адрес е.почты.') flash(u'Произошла ошибка. Введите корректный адрес электронной почты.')
return redirect(url_for('account.password_reset')) return redirect(url_for('account.password_reset'))
# check exists email # check exists email
if not cu.user_exists_by_email(email): if not cu.user_exists_by_email(email):
flash(u'Произошла ошибка. Введите корректный адрес е.почты.') flash(u'Произошла ошибка. Введите корректный адрес электронной почты.')
return redirect(url_for('account.password_reset')) return redirect(url_for('account.password_reset'))
# get user_id by email # get user_id by email
@ -214,8 +214,7 @@ def password_reset():
subject = u'GoCloud.ru: Код восстановления доступа' subject = u'GoCloud.ru: Код восстановления доступа'
message = u'Код восстановления: %s' % recovery_code message = u'Код восстановления: %s' % recovery_code
lead = u""" lead = u"""
Данный код необходимо ввести на странице подтверждения Данный код необходимо ввести на странице подтверждения <a href="https://gocloud.ru/account/password_reset_step2">сброса пароля</a>.
<a href="https://gocloud.ru/account/password_reset_step2">сброса пароля</a>.
""" """
callout = u'Если вы не хотите сбрасывать пароль, то просто проигнорируйте (или удалите) данное письмо.' callout = u'Если вы не хотите сбрасывать пароль, то просто проигнорируйте (или удалите) данное письмо.'
# controllers.Mail().send(request.form['email'], subject, message) # controllers.Mail().send(request.form['email'], subject, message)
@ -272,43 +271,53 @@ def password_reset_step2():
return render_template('default/id/password_reset_step2.html') return render_template('default/id/password_reset_step2.html')
@viewAccount.route("/password_update", methods=['GET', 'POST']) @viewAccount.route("/password_update", methods=['GET'])
@requires_login @requires_login
def password_update(): def password_update():
""" """
Обновление пароля из личного кабинета с уведомлением владельца по ел.почте Обновление пароля из личного кабинета с уведомлением владельца по ел.почте
:return: :return:
""" """
if request.method == "POST":
# Проверка старого пароля
check_old = ControllerUsers().auth(session['email'], request.form['old_password'])
if check_old and request.form['new_password'] == request.form['new_password_confirm']:
# Обновляем пароль
ControllerUsers().update(session['user_id'], password=request.form['new_password'])
# send mail message with recovery code
lead = u"""
Пароль для достуна в личный кабинет был успешно изменён.
"""
message = u"""Пароль: %s""" % request.form['new_password']
callout = u"""
"""
subject = u'GoCloud.ru: Смена пароля'
email = ControllerMessagesEmail()
email.send(
title=subject,
to=session['email'],
lead=lead,
message=message,
callout=callout
)
return redirect(url_for('account.password_update'))
return render_template('default/id/password_update.html') return render_template('default/id/password_update.html')
@viewAccount.route("/password_update", methods=['POST'])
@requires_login
def password_update_post():
"""
Обновление пароля из личного кабинета с уведомлением владельца по ел.почте
:return:
"""
# Проверка старого пароля
check_old = ControllerUsers().auth(session['email'], request.form['old_password'])
if check_old and request.form['new_password'] == request.form['new_password_confirm']:
# Обновляем пароль
ControllerUsers().update(session['user_id'], password=request.form['new_password'])
# send mail message with recovery code
lead = u"""
Пароль для достуна в личный кабинет был успешно изменён.
"""
message = u"""Пароль: %s""" % request.form['new_password']
callout = u""""""
subject = u'''GoCloud.ru: Смена пароля'''
email = ControllerMessagesEmail()
email.send(
title=subject,
to=session['email'],
lead=lead,
message=message,
callout=callout)
return redirect(url_for('account.password_update'))
return redirect(url_for('account.password_update'))
@viewAccount.route('/sshkey', methods=['GET']) @viewAccount.route('/sshkey', methods=['GET'])
@requires_login @requires_login
def sshkey(): def sshkey():

View file

@ -8,8 +8,9 @@ from SWSCloudCore.controllers.vms import ControllerVMS
nb = models.Settings.get_item('NEGATIVE_BALANCE') nb = models.Settings.get_item('NEGATIVE_BALANCE')
if int(models.Settings.get_item('SERVICE_VMS_ENABLE')) == 1: if int(models.Settings.get_item('SERVICE_VMS_ENABLE')) == 1:
print 'total vms:', models.Vms.select().count() print 'total vms:', models.Vms.select().where(models.Vms.status == 1).count()
for vm in models.Vms.select():
for vm in models.Vms.select().where(models.Vms.status == 1):
# Высчитываем, сколько стоит виртуальная машина 15 минут # Высчитываем, сколько стоит виртуальная машина 15 минут
price_quarter = vm.plan.price / 30 / 24 / 4 price_quarter = vm.plan.price / 30 / 24 / 4
@ -24,7 +25,7 @@ if int(models.Settings.get_item('SERVICE_VMS_ENABLE')) == 1:
# Shutting down all VMs by users who doesn't have money # Shutting down all VMs by users who doesn't have money
user_balance = models.UsersBalance.select( user_balance = models.UsersBalance.select(
models.UsersBalance.balance).where(models.UsersBalance.user == vm.user.id).get().balance models.UsersBalance.balance).where(models.UsersBalance.user == vm.user.id).get().balance
if -500 > user_balance: if -500 > user_balance and models.Vms.get_state(vm.id) == 1:
print "user_balance", user_balance print "user_balance", user_balance
ControllerVMS(vm.user.id).status_set(vm.id, 3) ControllerVMS(vm.user.id).status_set(vm.id, 3)
# Создание задания # Создание задания

View file

@ -4,7 +4,7 @@ from setuptools import setup
setup( setup(
name='SWSCloudCore', name='SWSCloudCore',
version='2.7.8', version='2.7.9',
author='Vyacheslav Anzhiganov', author='Vyacheslav Anzhiganov',
author_email='hello@anzhiganov.com', author_email='hello@anzhiganov.com',
packages=[ packages=[
@ -107,7 +107,8 @@ setup(
'static/js/vendor/*.js', 'static/js/vendor/*.js',
# #
'templates/administrator/*.html', 'templates/administrator/*.html',
'templates/administrator/containers/*.html', 'templates/administrator/compute/containers/*.html',
'templates/administrator/compute/vms/*.html',
'templates/administrator/datacenters/*.html', 'templates/administrator/datacenters/*.html',
'templates/administrator/email/*.html', 'templates/administrator/email/*.html',
'templates/administrator/ips/*.html', 'templates/administrator/ips/*.html',
@ -118,7 +119,6 @@ setup(
'templates/administrator/tasks/*.html', 'templates/administrator/tasks/*.html',
'templates/administrator/users/*.html', 'templates/administrator/users/*.html',
# 'templates/administrator/payments/*.html', # 'templates/administrator/payments/*.html',
'templates/administrator/vms/*.html',
'templates/administrator/wiki/*.html', 'templates/administrator/wiki/*.html',
'templates/administrator/wiki/article/*.html', 'templates/administrator/wiki/article/*.html',
'templates/administrator/wiki/category/*.html', 'templates/administrator/wiki/category/*.html',