diff --git a/app/__init__.py b/app/__init__.py
index e3e28c8..346af72 100644
--- a/app/__init__.py
+++ b/app/__init__.py
@@ -3,6 +3,7 @@
# import ConfigParser
from flask import g
from flask import Flask
+from flask import session
from flask import request
from flask import render_template
from flask_babel import Babel
@@ -10,6 +11,7 @@ from flaskext.markdown import Markdown
from app.cloud.views import viewHomepage
from app.cloud.views.documents import viewDocuments
+from app.cloud.views.settings import viewSettings
from app.cloud.views.kb import viewKB
from app.cloud.views.support import viewSupport
from app.cloud.views.account import viewAccount
@@ -47,29 +49,30 @@ app.register_blueprint(viewAccount)
app.register_blueprint(viewPayments)
# /api
app.register_blueprint(viewServerAPI)
+app.register_blueprint(viewSettings)
# /administrator
app.register_blueprint(viewAdministrator)
@app.errorhandler(404)
def page_not_found(e):
- return render_template('errors/404.html'), 404
+ return render_template('default/errors/404.html'), 404
@app.errorhandler(403)
def page_not_found(e):
- return render_template('errors/403.html'), 403
+ return render_template('default/errors/403.html'), 403
@app.errorhandler(410)
def page_not_found(e):
- return render_template('errors/410.html'), 410
+ return render_template('default/errors/410.html'), 410
@app.errorhandler(500)
def page_not_found(e):
print e
- return render_template('errors/500.html'), 500
+ return render_template('default/errors/500.en.html'), 500
@app.before_request
@@ -85,7 +88,7 @@ def before_request():
print e
print request.path
# g.endpoint = request.endpoint.replace('.', '/')
- return render_template('errors/500.html'), 500
+ return render_template('default/errors/500.en.html'), 500
# извлекаем настройки и определяем их в глобальную переменную
for setting in models.Settings.select(models.Settings.key, models.Settings.val).execute():
diff --git a/app/cdn/__init__.py b/app/cdn/__init__.py
new file mode 100644
index 0000000..089ed36
--- /dev/null
+++ b/app/cdn/__init__.py
@@ -0,0 +1 @@
+__author__ = 'vanzhiganov'
diff --git a/app/cloud/views/account/__init__.py b/app/cloud/views/account/__init__.py
index 773f006..7f5e008 100644
--- a/app/cloud/views/account/__init__.py
+++ b/app/cloud/views/account/__init__.py
@@ -4,6 +4,7 @@ from sshpubkeys import SSHKey
from flask import render_template, session, redirect, url_for, request
from flask import g
from flask import Blueprint
+# from flask.ext.babel import gettext
from app import models
from app.cloud.controllers.common import special_match
from app.cloud.controllers.common import ControllerMessagesEmail
@@ -17,116 +18,6 @@ from app.cloud.controllers.billing import ControllerBilling
viewAccount = Blueprint('account', __name__, url_prefix='/account')
-@viewAccount.route('/', methods=['GET', 'POST'])
-def index():
- # check session
- if not ControllerUsers().check_session():
- return redirect(url_for("account.logout"))
- # auth user
- if not ControllerUsers().auth(session['email'], session['password']):
- return redirect(url_for("account.logout"))
-
- cud = ControllerUsersDetails(session['user_id'])
- user = cud.details_get()
-
- # проверяем, есть ли запись в таблице usersdetails, чтобы небыло ошибок
- if not cud.details_exists():
- # если нет, то делаем запись в таблицу, чтобы небыло ошибок
- cud.details_create()
-
- # извлекаем из базы детали пользователя
- user_details = cud.details_get()
-
- return render_template(
- 'default/id/index.html',
- user=user,
- user_details=user_details
- )
-
-
-@viewAccount.route('/edit', methods=['GET', 'POST'])
-def edit():
- # check session
- if not ControllerUsers().check_session():
- return redirect(url_for("account.logout"))
- # auth user
- if not ControllerUsers().auth(session['email'], session['password']):
- return redirect(url_for("account.logout"))
-
- cud = ControllerUsersDetails(session['user_id'])
- user = cud.details_get()
-
- if not cud.details_exists():
- cud.details_create()
-
- if request.method == "POST":
- if not request.form['zipcode'].isdigit():
- g.errors['items'].append(u'Индекс должен содержать только цифры')
- g.errors['total'] += 1
-
- if g.errors['total'] == 0:
- cud.details_update(
- fname=request.form['fname'],
- lname=request.form['lname'],
- address=request.form['address'],
- city=request.form['city'],
- country=request.form['country'],
- state=request.form['state'],
- zipcode=request.form['zipcode']
- )
- return redirect(url_for('account.edit'))
- # get user details
- user_details = cud.details_get()
-
- return render_template('default/id/edit.html', user=user, user_details=user_details)
-
-
-@viewAccount.route('/settings', methods=['GET', 'POST'])
-def settings():
- # check session
- if not ControllerUsers().check_session():
- return redirect(url_for("account.logout"))
- # auth user
- if not ControllerUsers().auth(session['email'], session['password']):
- return redirect(url_for("account.logout"))
- # get user data
- user = ControllerUsers(session['user_id']).get()
-
- return render_template('default/id/index.html', user_details=user)
-
-
-@viewAccount.route('/billing', methods=['GET', 'POST'])
-def billing():
- # check session
- if not ControllerUsers().check_session():
- return redirect(url_for("account.logout"))
- # auth user
- if not ControllerUsers().auth(session['email'], session['password']):
- return redirect(url_for("account.logout"))
-
- user_id = session['user_id']
-
- if models.UsersBalance.select().where(models.UsersBalance.user == user_id).count() == 0:
- models.UsersBalance.create(user=user_id, balance=10)
- user_balance = models.UsersBalance.select().where(models.UsersBalance.user == user_id).limit(1)[0].balance
-
- user_details = models.Users.select().where(models.Users.id == session['user_id']).limit(1)[0]
-
- # выгрузка истории платежей
- history = dict()
- history['total'] = models.UsersBalanceTransactions.select().\
- where(models.UsersBalanceTransactions.user == user_id).count()
- history['items'] = models.UsersBalanceTransactions.select().\
- where(models.UsersBalanceTransactions.user == user_id)
-
- return render_template(
- 'default/id/balance.html',
- user_details=user_details,
- user_balance=user_balance,
- history=history
- )
-
-
@viewAccount.route('/registration', methods=['GET', 'POST'])
def registration():
# check session
@@ -158,21 +49,15 @@ def registration():
# ControllerU
# send mail message with recovery code
message = u"""
- Е-почта: %s
- Пароль: %s
+ Email: %s
+ Password: %s
""" % (request.form['email'], request.form['password'])
- subject = u'GoCloud.ru: Успешная регистрация'
- lead = u"""
- Поздравляем с успешной зарегистрацией.
- """
- callout = u"""
- Для входа в личный кабинет воспользуйтесь
- страницей авторизации.
- """
+ subject = u'Puluttar.ru: Successful registration'
+ lead = u'Congratulations upon successful registration.'
+ callout = u'Use the login page to enter your account.'
email = ControllerMessagesEmail()
email.send(title=subject, to=request.form['email'], lead=lead, message=message, callout=callout)
-
# redirect to login page
return redirect(url_for('account.login'))
else:
@@ -232,13 +117,13 @@ def password_reset():
ControllerUsersRecoveryCodes().create(user_id, recovery_code)
# send mail message with recovery code
- subject = u'GoCloud.ru: Код восстановления доступа'
- message = u'Код восстановления: %s' % recovery_code
+ subject = u'Puluttar.com: Access recovery code'
+ message = u'Recovery code: %s' % recovery_code
lead = u"""
- Данный код необходимо ввести на странице подтверждения
- сброса пароля.
+ This verification code is required to confirm the
+ password reset.
"""
- callout = u'Если вы не хотите сбрасывать пароль, то просто проигнорируйте (или удалите) данное письмо.'
+ callout = u'If you do not want to reset your password, just ignore (or remove) the letter.'
# controllers.Mail().send(request.form['email'], subject, message)
email = ControllerMessagesEmail()
@@ -247,7 +132,7 @@ def password_reset():
# redirect to step 2
return redirect(url_for('account.password_reset_step2'))
else:
- g.errors['items'].append(u'Произошла ошибка. Введите корректный адрес е.почты.')
+ g.errors['items'].append(u'An error has occurred. Please enter a valid email address.')
g.errors['total'] += 1
return render_template('default/id/password_reset_step1.html')
@@ -273,25 +158,25 @@ def password_reset_step2():
ControllerUsers().update(user_id, password=new_password)
# send mail message with new password
- message = u"""Новый пароль: %s""" % new_password
- subject = u"""GoCloud.ru: Новый пароль"""
+ message = u"""New password: %s""" % new_password
+ subject = u"""Puluttar.com: New password"""
lead = u"""
- Пароль для доступа в a< href="https://gocloud.ru/account/login">личный кабинет был сброшен.
+ Old password for your < href="http://puluttar.com/account/login">account was reset.
"""
- callout = u"""Запомните новый пароль и удалите данное сообщение."""
+ callout = u"""Remember the new password and delete this message."""
# controllers.Mail().send(request.form['email'], subject, message)
email = ControllerMessagesEmail()
- email.send(title=subject, to=session['email'], lead=lead, message=message, callout=callout)
+ email.send(title=subject, to=request.form['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['items'].append(u'Wrong recovery code.')
g.errors['total'] += 1
return redirect(url_for('account.password_reset_step2'))
else:
- g.errors['items'].append(u'Произошла ошибка. Введите корректный адрес е.почты.')
+ g.errors['items'].append(u'An error has occurred. Please enter a valid email address.')
g.errors['total'] += 1
return render_template('default/id/password_reset_step2.html')
@@ -319,12 +204,11 @@ def password_update():
# send mail message with recovery code
lead = u"""
- Пароль для достуна в личный кабинет был успешно изменён.
+ Password to access your account has been successfully changed.
"""
message = u"""Пароль: %s""" % request.form['new_password']
- callout = u"""
- """
- subject = u'GoCloud.ru: Смена пароля'
+ callout = u''
+ subject = u'Puluttar.com: Change Password'
email = ControllerMessagesEmail()
email.send(
@@ -354,7 +238,7 @@ def sshkey():
try:
ssh = SSHKey(request.form['sshkey'])
except Exception as e:
- g.errors['items'].append(u"Не корректный ssh-ключ.")
+ g.errors['items'].append(u"Incorrect ssh-key.")
g.errors['total'] += 1
else:
print(ssh.bits)
diff --git a/app/cloud/views/api/__init__.py b/app/cloud/views/api/__init__.py
index 931c45d..b783993 100644
--- a/app/cloud/views/api/__init__.py
+++ b/app/cloud/views/api/__init__.py
@@ -15,10 +15,11 @@ from flask import Blueprint
from app import models
from app.settings import settings
from app.cloud.controllers.users import ControllerUsers
+from app.cloud.controllers.users import ControllerSSHKey
+from app.cloud.controllers.billing import ControllerBilling
from app.cloud.controllers.users import ControllerAPI
from app.cloud.controllers.datacenters import ControllerDataCenters
from app.cloud.controllers.containers import ControllerContainers
-from cloudnsru import CloudnsClient
viewAPI = Blueprint('api', __name__, url_prefix='/api')
diff --git a/app/cloud/views/containers/__init__.py b/app/cloud/views/containers/__init__.py
index 32150fd..aa227e5 100644
--- a/app/cloud/views/containers/__init__.py
+++ b/app/cloud/views/containers/__init__.py
@@ -61,14 +61,11 @@ def create():
if g.errors['total'] == 0:
# select server from selected region with available ip-addresses
-
+ # TODO: make function... this part use in API method
# select IP
select_ip = models.Ips.select().where(
models.Ips.datacenter == request.form['datacenter'] and models.Ips.status == 0
)[0]
-
- print 'select ip: %s' % select_ip.id
-
# mark ip as busy (taken)
up = models.Ips.update(status=1).where(models.Ips.id == select_ip.id)
up.execute()
@@ -139,12 +136,9 @@ def create():
message_parts.append(u"SSH ключ: добавлен")
message = '
\n'.join(message_parts)
- subject = u'GoCloud.ru: Новый контейнер'
- lead = u"""Поздравляем с новым контейнером."""
- callout = u"""
- Для входа в личный кабинет воспользуйтесь
- страницей авторизации.
- """
+ subject = u'Puluttar.com: New continer'
+ lead = u"""Congratulations on the new container."""
+ callout = u"""Account."""
user_data = ControllerUsers(session['user_id']).get()
diff --git a/app/cloud/views/payments/__init__.py b/app/cloud/views/payments/__init__.py
index bc6e123..29f45dc 100644
--- a/app/cloud/views/payments/__init__.py
+++ b/app/cloud/views/payments/__init__.py
@@ -11,6 +11,7 @@ from flask import Blueprint
from app import models
from app.cloud.controllers.users import ControllerUsers
from app.cloud.controllers.payments import ControllerPaymentsRobokassa
+from app.cloud.controllers.payments import twocheckout
viewPayments = Blueprint('payments', __name__, url_prefix='/payments')
@@ -113,3 +114,38 @@ def robokassa(action):
return redirect(url_for('payments.robokassa', action='fail'))
return render_template('default/payment/robokassa/fail.html')
+
+
+@viewPayments.route('/twocheckout/order', methods=['POST'])
+def twocheckout_order():
+ # Setup credentials and environment
+ twocheckout.Api.auth_credentials({
+ 'private_key': 'sandbox-private-key',
+ 'seller_id': 'sandbox-seller_id',
+ 'mode': 'sandbox'
+ })
+
+ # Setup arguments for authorization request
+ args = {
+ 'merchantOrderId': '123',
+ 'token': request.form["token"],
+ 'currency': 'USD',
+ 'total': '1.00',
+ 'billingAddr': {
+ 'name': 'Testing Tester',
+ 'addrLine1': '123 Test St',
+ 'city': 'Columbus',
+ 'state': 'OH',
+ 'zipCode': '43123',
+ 'country': 'USA',
+ 'email': 'example@2co.com',
+ 'phoneNumber': '555-555-5555'
+ }
+ }
+
+ # Make authorization request
+ try:
+ result = twocheckout.Charge.authorize(args)
+ return result.responseMsg
+ except twocheckout.TwocheckoutError as error:
+ return error.msg
\ No newline at end of file
diff --git a/app/cloud/views/settings/__init__.py b/app/cloud/views/settings/__init__.py
new file mode 100644
index 0000000..bd85084
--- /dev/null
+++ b/app/cloud/views/settings/__init__.py
@@ -0,0 +1,136 @@
+# coding: utf-8
+
+from sshpubkeys import SSHKey
+from flask import render_template, session, redirect, url_for, request
+from flask import g
+from flask import Blueprint
+from app import models
+from app.cloud.controllers.common import special_match
+from app.cloud.controllers.common import ControllerMessagesEmail
+from app.cloud.controllers.users import ControllerUsers
+from app.cloud.controllers.users import ControllerAPI
+from app.cloud.controllers.users import ControllerSSHKey
+from app.cloud.controllers.users import ControllerUsersDetails
+from app.cloud.controllers.users import ControllerUsersRecoveryCodes
+from app.cloud.controllers.billing import ControllerBilling
+
+viewSettings = Blueprint('settings', __name__, url_prefix='/settings')
+
+
+@viewSettings.route('/', methods=['GET', 'POST'])
+def index():
+ return redirect(url_for('settings.billing'))
+
+
+@viewSettings.route('/billing')
+def billing():
+ # check session
+ if not ControllerUsers().check_session():
+ return redirect(url_for("account.logout"))
+ # auth user
+ if not ControllerUsers().auth(session['email'], session['password']):
+ return redirect(url_for("account.logout"))
+
+ user_id = session['user_id']
+
+ if models.UsersBalance.select().where(models.UsersBalance.user == user_id).count() == 0:
+ models.UsersBalance.create(user=user_id, balance=10)
+ user_balance = models.UsersBalance.select().where(models.UsersBalance.user == user_id).limit(1)[0].balance
+
+ user_details = models.Users.select().where(models.Users.id == session['user_id']).limit(1)[0]
+
+ # выгрузка истории платежей
+ history = dict()
+ history['total'] = models.UsersBalanceTransactions.select().\
+ where(models.UsersBalanceTransactions.user == user_id).count()
+ history['items'] = models.UsersBalanceTransactions.select().\
+ where(models.UsersBalanceTransactions.user == user_id).order_by(models.UsersBalanceTransactions.id.desc())
+
+ return render_template(
+ 'default/settings/billing/index.html',
+ user_details=user_details,
+ user_balance=user_balance,
+ history=history
+ )
+
+
+@viewSettings.route('/profile')
+def profile():
+ # check session
+ if not ControllerUsers().check_session():
+ return redirect(url_for("account.logout"))
+ # auth user
+ if not ControllerUsers().auth(session['email'], session['password']):
+ return redirect(url_for("account.logout"))
+
+ cud = ControllerUsersDetails(session['user_id'])
+ user = cud.details_get()
+
+ # проверяем, есть ли запись в таблице usersdetails, чтобы небыло ошибок
+ if not cud.details_exists():
+ # если нет, то делаем запись в таблицу, чтобы небыло ошибок
+ cud.details_create()
+
+ # извлекаем из базы детали пользователя
+ user_details = cud.details_get()
+
+ return render_template(
+ 'default/settings/profile/index.html',
+ user=user,
+ user_details=user_details
+ )
+
+
+@viewSettings.route('/profile_edit')
+def profile_edit():
+ # check session
+ if not ControllerUsers().check_session():
+ return redirect(url_for("account.logout"))
+ # auth user
+ if not ControllerUsers().auth(session['email'], session['password']):
+ return redirect(url_for("account.logout"))
+
+ cud = ControllerUsersDetails(session['user_id'])
+ user = cud.details_get()
+
+ if not cud.details_exists():
+ cud.details_create()
+
+ if request.method == "POST":
+ if not request.form['zipcode'].isdigit():
+ g.errors['items'].append(u'ZIP code must contain only digits.')
+ g.errors['total'] += 1
+
+ if g.errors['total'] == 0:
+ cud.details_update(
+ fname=request.form['fname'],
+ lname=request.form['lname'],
+ address=request.form['address'],
+ city=request.form['city'],
+ country=request.form['country'],
+ state=request.form['state'],
+ zipcode=request.form['zipcode']
+ )
+ return redirect(url_for('account.edit'))
+ # get user details
+ user_details = cud.details_get()
+ return render_template(
+ 'default/settings/profile/edit.html',
+ user=user,
+ user_details=user_details
+ )
+
+
+@viewSettings.route('/security')
+def security():
+ return render_template('default/settings/security/index.html')
+
+
+@viewSettings.route('/notifications')
+def notifications():
+ return render_template('default/settings/security/index.html')
+
+
+@viewSettings.route('/team')
+def team():
+ return render_template('default/settings/team/index.html')
diff --git a/app/cloud/views/support/__init__.py b/app/cloud/views/support/__init__.py
index 93b208a..0ec5032 100644
--- a/app/cloud/views/support/__init__.py
+++ b/app/cloud/views/support/__init__.py
@@ -40,7 +40,7 @@ def index():
# send mail message with recovery code
subject = ticket_title
message = ticket_message
- lead = u'Отправитель: %s' % ticket_email
+ lead = u'Sender: %s' % ticket_email
callout = u''
email = ControllerMessagesEmail()
diff --git a/app/dns/__init__.py b/app/dns/__init__.py
new file mode 100644
index 0000000..089ed36
--- /dev/null
+++ b/app/dns/__init__.py
@@ -0,0 +1 @@
+__author__ = 'vanzhiganov'
diff --git a/app/static/css/gocloud.css b/app/static/css/app.css
similarity index 79%
rename from app/static/css/gocloud.css
rename to app/static/css/app.css
index 24bd5ce..d7b2955 100644
--- a/app/static/css/gocloud.css
+++ b/app/static/css/app.css
@@ -12,7 +12,8 @@ header {
padding: 4em 0em 5em;
background: #202020 none repeat scroll 0% 0% / cover;
background-position:
- color: rgba(255, 255, 255, 0.8)
+ color: rgba(255, 255, 255, 0.8);
+ background: transparent url(/static/images/promo/bg2.png) repeat-x scroll 0% 0%;
}
#banner p {
@@ -68,3 +69,12 @@ ul#paymentlist li img {
margin-top: 15px;
margin-bottom: 15px;
}
+
+ul#features-list {
+ /* list-style: none; */
+ font-size: 1.5em;
+}
+ul#features-list li {
+ font-family: 'Clear sans';
+ margin-left: 15px;
+}
\ No newline at end of file
diff --git a/app/static/css/hp.css b/app/static/css/hp.css
deleted file mode 100644
index 44a0078..0000000
--- a/app/static/css/hp.css
+++ /dev/null
@@ -1,29 +0,0 @@
-#logo {
- margin-top: 15px;
- margin-bottom: 15px;
-}
-
-footer {
- margin-top: 30px;
-}
-
-.top-bar {
- background: none repeat scroll 0% 0% #371A5B;
-}
-
-.top-bar-section ul li {
- /*background: none repeat scroll 0% 0% #371A5B;*/
-}
-
-.top-bar-section li:not(.has-form) a:not(.button) {
- background: none repeat scroll 0% 0% #371A5B;
-}
-
-.top-bar-section li:hover(.has-form) a:hover(.button) {
- /*background: none repeat scroll 0% 0% #371A5B;*/
-}
-
-
-.top-bar-section ul li {
- background: none repeat scroll 0% 0% #371A5B;
-}
diff --git a/app/static/css/normalize.css b/app/static/css/normalize.css
deleted file mode 100644
index 458eea1..0000000
--- a/app/static/css/normalize.css
+++ /dev/null
@@ -1,427 +0,0 @@
-/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
-
-/**
- * 1. Set default font family to sans-serif.
- * 2. Prevent iOS text size adjust after orientation change, without disabling
- * user zoom.
- */
-
-html {
- font-family: sans-serif; /* 1 */
- -ms-text-size-adjust: 100%; /* 2 */
- -webkit-text-size-adjust: 100%; /* 2 */
-}
-
-/**
- * Remove default margin.
- */
-
-body {
- margin: 0;
-}
-
-/* HTML5 display definitions
- ========================================================================== */
-
-/**
- * Correct `block` display not defined for any HTML5 element in IE 8/9.
- * Correct `block` display not defined for `details` or `summary` in IE 10/11
- * and Firefox.
- * Correct `block` display not defined for `main` in IE 11.
- */
-
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-main,
-menu,
-nav,
-section,
-summary {
- display: block;
-}
-
-/**
- * 1. Correct `inline-block` display not defined in IE 8/9.
- * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
- */
-
-audio,
-canvas,
-progress,
-video {
- display: inline-block; /* 1 */
- vertical-align: baseline; /* 2 */
-}
-
-/**
- * Prevent modern browsers from displaying `audio` without controls.
- * Remove excess height in iOS 5 devices.
- */
-
-audio:not([controls]) {
- display: none;
- height: 0;
-}
-
-/**
- * Address `[hidden]` styling not present in IE 8/9/10.
- * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
- */
-
-[hidden],
-template {
- display: none;
-}
-
-/* Links
- ========================================================================== */
-
-/**
- * Remove the gray background color from active links in IE 10.
- */
-
-a {
- background-color: transparent;
-}
-
-/**
- * Improve readability when focused and also mouse hovered in all browsers.
- */
-
-a:active,
-a:hover {
- outline: 0;
-}
-
-/* Text-level semantics
- ========================================================================== */
-
-/**
- * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
- */
-
-abbr[title] {
- border-bottom: 1px dotted;
-}
-
-/**
- * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
- */
-
-b,
-strong {
- font-weight: bold;
-}
-
-/**
- * Address styling not present in Safari and Chrome.
- */
-
-dfn {
- font-style: italic;
-}
-
-/**
- * Address variable `h1` font-size and margin within `section` and `article`
- * contexts in Firefox 4+, Safari, and Chrome.
- */
-
-h1 {
- font-size: 2em;
- margin: 0.67em 0;
-}
-
-/**
- * Address styling not present in IE 8/9.
- */
-
-mark {
- background: #ff0;
- color: #000;
-}
-
-/**
- * Address inconsistent and variable font size in all browsers.
- */
-
-small {
- font-size: 80%;
-}
-
-/**
- * Prevent `sub` and `sup` affecting `line-height` in all browsers.
- */
-
-sub,
-sup {
- font-size: 75%;
- line-height: 0;
- position: relative;
- vertical-align: baseline;
-}
-
-sup {
- top: -0.5em;
-}
-
-sub {
- bottom: -0.25em;
-}
-
-/* Embedded content
- ========================================================================== */
-
-/**
- * Remove border when inside `a` element in IE 8/9/10.
- */
-
-img {
- border: 0;
-}
-
-/**
- * Correct overflow not hidden in IE 9/10/11.
- */
-
-svg:not(:root) {
- overflow: hidden;
-}
-
-/* Grouping content
- ========================================================================== */
-
-/**
- * Address margin not present in IE 8/9 and Safari.
- */
-
-figure {
- margin: 1em 40px;
-}
-
-/**
- * Address differences between Firefox and other browsers.
- */
-
-hr {
- -moz-box-sizing: content-box;
- box-sizing: content-box;
- height: 0;
-}
-
-/**
- * Contain overflow in all browsers.
- */
-
-pre {
- overflow: auto;
-}
-
-/**
- * Address odd `em`-unit font size rendering in all browsers.
- */
-
-code,
-kbd,
-pre,
-samp {
- font-family: monospace, monospace;
- font-size: 1em;
-}
-
-/* Forms
- ========================================================================== */
-
-/**
- * Known limitation: by default, Chrome and Safari on OS X allow very limited
- * styling of `select`, unless a `border` property is set.
- */
-
-/**
- * 1. Correct color not being inherited.
- * Known issue: affects color of disabled elements.
- * 2. Correct font properties not being inherited.
- * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
- */
-
-button,
-input,
-optgroup,
-select,
-textarea {
- color: inherit; /* 1 */
- font: inherit; /* 2 */
- margin: 0; /* 3 */
-}
-
-/**
- * Address `overflow` set to `hidden` in IE 8/9/10/11.
- */
-
-button {
- overflow: visible;
-}
-
-/**
- * Address inconsistent `text-transform` inheritance for `button` and `select`.
- * All other form control elements do not inherit `text-transform` values.
- * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
- * Correct `select` style inheritance in Firefox.
- */
-
-button,
-select {
- text-transform: none;
-}
-
-/**
- * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
- * and `video` controls.
- * 2. Correct inability to style clickable `input` types in iOS.
- * 3. Improve usability and consistency of cursor style between image-type
- * `input` and others.
- */
-
-button,
-html input[type="button"], /* 1 */
-input[type="reset"],
-input[type="submit"] {
- -webkit-appearance: button; /* 2 */
- cursor: pointer; /* 3 */
-}
-
-/**
- * Re-set default cursor for disabled elements.
- */
-
-button[disabled],
-html input[disabled] {
- cursor: default;
-}
-
-/**
- * Remove inner padding and border in Firefox 4+.
- */
-
-button::-moz-focus-inner,
-input::-moz-focus-inner {
- border: 0;
- padding: 0;
-}
-
-/**
- * Address Firefox 4+ setting `line-height` on `input` using `!important` in
- * the UA stylesheet.
- */
-
-input {
- line-height: normal;
-}
-
-/**
- * It's recommended that you don't attempt to style these elements.
- * Firefox's implementation doesn't respect box-sizing, padding, or width.
- *
- * 1. Address box sizing set to `content-box` in IE 8/9/10.
- * 2. Remove excess padding in IE 8/9/10.
- */
-
-input[type="checkbox"],
-input[type="radio"] {
- box-sizing: border-box; /* 1 */
- padding: 0; /* 2 */
-}
-
-/**
- * Fix the cursor style for Chrome's increment/decrement buttons. For certain
- * `font-size` values of the `input`, it causes the cursor style of the
- * decrement button to change from `default` to `text`.
- */
-
-input[type="number"]::-webkit-inner-spin-button,
-input[type="number"]::-webkit-outer-spin-button {
- height: auto;
-}
-
-/**
- * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
- * 2. Address `box-sizing` set to `border-box` in Safari and Chrome
- * (include `-moz` to future-proof).
- */
-
-input[type="search"] {
- -webkit-appearance: textfield; /* 1 */
- -moz-box-sizing: content-box;
- -webkit-box-sizing: content-box; /* 2 */
- box-sizing: content-box;
-}
-
-/**
- * Remove inner padding and search cancel button in Safari and Chrome on OS X.
- * Safari (but not Chrome) clips the cancel button when the search input has
- * padding (and `textfield` appearance).
- */
-
-input[type="search"]::-webkit-search-cancel-button,
-input[type="search"]::-webkit-search-decoration {
- -webkit-appearance: none;
-}
-
-/**
- * Define consistent border, margin, and padding.
- */
-
-fieldset {
- border: 1px solid #c0c0c0;
- margin: 0 2px;
- padding: 0.35em 0.625em 0.75em;
-}
-
-/**
- * 1. Correct `color` not being inherited in IE 8/9/10/11.
- * 2. Remove padding so people aren't caught out if they zero out fieldsets.
- */
-
-legend {
- border: 0; /* 1 */
- padding: 0; /* 2 */
-}
-
-/**
- * Remove default vertical scrollbar in IE 8/9/10/11.
- */
-
-textarea {
- overflow: auto;
-}
-
-/**
- * Don't inherit the `font-weight` (applied by a rule above).
- * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
- */
-
-optgroup {
- font-weight: bold;
-}
-
-/* Tables
- ========================================================================== */
-
-/**
- * Remove most spacing between table cells.
- */
-
-table {
- border-collapse: collapse;
- border-spacing: 0;
-}
-
-td,
-th {
- padding: 0;
-}
diff --git a/app/static/css/style.css b/app/static/css/style.css
deleted file mode 100644
index 44a0078..0000000
--- a/app/static/css/style.css
+++ /dev/null
@@ -1,29 +0,0 @@
-#logo {
- margin-top: 15px;
- margin-bottom: 15px;
-}
-
-footer {
- margin-top: 30px;
-}
-
-.top-bar {
- background: none repeat scroll 0% 0% #371A5B;
-}
-
-.top-bar-section ul li {
- /*background: none repeat scroll 0% 0% #371A5B;*/
-}
-
-.top-bar-section li:not(.has-form) a:not(.button) {
- background: none repeat scroll 0% 0% #371A5B;
-}
-
-.top-bar-section li:hover(.has-form) a:hover(.button) {
- /*background: none repeat scroll 0% 0% #371A5B;*/
-}
-
-
-.top-bar-section ul li {
- background: none repeat scroll 0% 0% #371A5B;
-}
diff --git a/app/templates/default/_footer.html b/app/templates/default/_footer.html
index 73ae6b5..fd2b8c5 100644
--- a/app/templates/default/_footer.html
+++ b/app/templates/default/_footer.html
@@ -2,21 +2,15 @@
- GoCloud © Все права защищены. + {{ _("Puluttar © All rights reserved.") }}
Документы
- -Поддержка
-