From 1471437d8a0359648fbec9dc654417878c3a418e Mon Sep 17 00:00:00 2001 From: bashmak Date: Tue, 13 Mar 2018 12:15:27 +0300 Subject: [PATCH] Add customisable pages and add somthing translates. --- clientsideapp/locale/ru/LC_MESSAGES/django.po | 212 +++++++++++++----- .../clientsideapp/custom_pages/footer.htm | 1 + .../clientsideapp/custom_pages/main_page.htm | 1 + .../clientsideapp/custom_pages/service.htm | 2 + .../custom_pages/service_bottom.htm | 1 + .../templates/clientsideapp/debt_buy.html | 10 +- .../templates/clientsideapp/debts.html | 25 ++- .../templates/clientsideapp/ext.html | 51 ++--- .../templates/clientsideapp/index.html | 71 +----- .../clientsideapp/modal_service_buy.html | 4 +- .../templates/clientsideapp/services.html | 44 ++-- djing/local_settings.py.template | 2 + djing/settings.py | 6 + djing/templatetags/__init__.py | 0 djing/templatetags/globaltags.py | 9 + static/clientside/bc.png | Bin 8907 -> 4259 bytes static/img/bcgr.png | Bin 6114 -> 2036 bytes templates/all_base.html | 6 +- 18 files changed, 244 insertions(+), 201 deletions(-) create mode 100644 clientsideapp/templates/clientsideapp/custom_pages/footer.htm create mode 100644 clientsideapp/templates/clientsideapp/custom_pages/main_page.htm create mode 100644 clientsideapp/templates/clientsideapp/custom_pages/service.htm create mode 100644 clientsideapp/templates/clientsideapp/custom_pages/service_bottom.htm create mode 100644 djing/templatetags/__init__.py create mode 100644 djing/templatetags/globaltags.py diff --git a/clientsideapp/locale/ru/LC_MESSAGES/django.po b/clientsideapp/locale/ru/LC_MESSAGES/django.po index 9fcf3b2..a5706a5 100644 --- a/clientsideapp/locale/ru/LC_MESSAGES/django.po +++ b/clientsideapp/locale/ru/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-02-28 12:46+0300\n" +"POT-Creation-Date: 2018-03-13 11:49+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Dmitry Novikov nerosketch@gmail.com\n" "Language: ru\n" @@ -19,121 +19,229 @@ msgstr "" "%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n" "%100>=11 && n%100<=14)? 2 : 3);\n" -#: clientsideapp/templates/clientsideapp/debt_buy.html:6 +#: templates/clientsideapp/debt_buy.html:6 msgid "Debts" msgstr "Задолженность" -#: clientsideapp/templates/clientsideapp/debt_buy.html:11 +#: templates/clientsideapp/debt_buy.html:11 msgid "repayment of debts" msgstr "Оплатить задолженность" -#: clientsideapp/templates/clientsideapp/debt_buy.html:18 +#: templates/clientsideapp/debt_buy.html:18 msgid "Are you sure you want to spend a payment?" msgstr "Вы уверены что хотите провести платёж?" -#: clientsideapp/templates/clientsideapp/debt_buy.html:21 -#, fuzzy, python-format -#| msgid "" -#| "From your account, they withdraw funds in %(amount)s rub.
\n" -#| "As a result, you will remain on your account %(ballance_after)s rubles. " -#| "
\n" -#| "The administrator can immediately see that you shut down the debt." +#: templates/clientsideapp/debt_buy.html:22 msgid "" -"From your account, they withdraw funds in %(amount)s rub.
\n" -"As a result, you will remain on your account %(ballance_after)s rubles.
\n" -"The administrator can immediately see that you shut down the debt." +"From your account, they withdraw funds in %(amount)s rub.
As a " +"result, you will remain on your account %(ballance_after)s rubles.
The " +"administrator can immediately see that you shut down the debt." msgstr "" "С вашего счёта снимутся средства в размере %(amount)s руб.
\n" "В результате у вас на счету останется %(ballance_after)s руб.
\n" "Администратор сразу сможет видеть что у вас закрыта задолженность." -#: clientsideapp/templates/clientsideapp/debt_buy.html:24 +#: templates/clientsideapp/debt_buy.html:28 msgid "Description of payment" msgstr "Описание платежа" -#: clientsideapp/templates/clientsideapp/debt_buy.html:32 +#: templates/clientsideapp/debt_buy.html:36 msgid "Confirm" msgstr "Подтвердить" -#: clientsideapp/templates/clientsideapp/debt_buy.html:35 +#: templates/clientsideapp/debt_buy.html:39 msgid "Cancel" msgstr "Отменить" -#: clientsideapp/templates/clientsideapp/modal_service_buy.html:5 +#: templates/clientsideapp/debts.html:6 +msgid "Your debt" +msgstr "Ваши долги" + +#: templates/clientsideapp/debts.html:11 +msgid "State" +msgstr "Состояние" + +#: templates/clientsideapp/debts.html:12 +msgid "Summ" +msgstr "Сумма" + +#: templates/clientsideapp/debts.html:13 +msgid "Description" +msgstr "Описание" + +#: templates/clientsideapp/debts.html:14 +msgid "Date of create" +msgstr "Дата создания" + +#: templates/clientsideapp/debts.html:15 +msgid "Date of pay" +msgstr "Дата платежа" + +#: templates/clientsideapp/debts.html:16 templates/clientsideapp/debts.html:38 +msgid "Pay" +msgstr "Оплатить" + +#: templates/clientsideapp/debts.html:23 templates/clientsideapp/ext.html:63 +#: templates/clientsideapp/modal_service_buy.html:18 +#: templates/clientsideapp/services.html:26 +#: templates/clientsideapp/services.html:55 +msgid "currency" +msgstr "руб." + +#: templates/clientsideapp/debts.html:31 +msgid "Created paid" +msgstr "Создан оплаченным" + +#: templates/clientsideapp/debts.html:33 +msgid "Not yet paid" +msgstr "Ещё не оплачен" + +#: templates/clientsideapp/debts.html:45 +msgid "You have no debt" +msgstr "У вас нет долгов" + +#: templates/clientsideapp/ext.html:7 templates/clientsideapp/ext.html:41 +msgid "Personal account" +msgstr "Личный кабинет" + +#: templates/clientsideapp/ext.html:46 +msgid "Pays" +msgstr "Платежи" + +#: templates/clientsideapp/ext.html:51 +msgid "Services" +msgstr "Услуги" + +#: templates/clientsideapp/ext.html:55 +msgid "Other" +msgstr "Другое" + +#: templates/clientsideapp/ext.html:57 +msgid "Show debts and pay it" +msgstr "Посмотреть долги и оплатить" + +#: templates/clientsideapp/ext.html:58 +msgid "Quit" +msgstr "Выйти" + +#: templates/clientsideapp/ext.html:63 +#, python-format +msgid "Your balance is %(ballance)s" +msgstr "Ваш балланс %(ballance)s" + +#: templates/clientsideapp/ext.html:74 +msgid "" +"Attantion! You are is admin, and do not be active here, " +"please back to admin side. Client side to you for reference only." +msgstr "" +"Кстати. Вы администратор, и не должны производить действия " +"из кабинета пользователя, производите их из админки. Кабинет клиента для вас " +"только для ознакомления." + +#: templates/clientsideapp/modal_service_buy.html:5 msgid "Pick service" msgstr "Заказать услугу" -#: clientsideapp/templates/clientsideapp/modal_service_buy.html:8 +#: templates/clientsideapp/modal_service_buy.html:8 msgid "Are you sure you want to order the service?" msgstr "Вы уверены что хотите заказать услугу?" +#: templates/clientsideapp/modal_service_buy.html:9 +msgid "" +"Be careful, after purchasing the service you will withdraw money, and " +"you will be able to use the purchased service." +msgstr "" +"Будте внимательны, после заказа услуги с вашего счёта снимутся средства, " +"и вы сможете пользоваться купленной услугой." -#: clientsideapp/templates/clientsideapp/modal_service_buy.html:28 +#: templates/clientsideapp/modal_service_buy.html:15 +#, python-format +msgid "" +"Inbound speed: %(speedIn)s MBit/s
\n" +"Outgoing speed: %(speedOut)s MBit/s
\n" +"Cost: %(amount)s rubles." +msgstr "" + +#: templates/clientsideapp/modal_service_buy.html:18 +#, python-format +msgid "The cost is %(amount)s" +msgstr "Стоимость %(amount)s" + +#: templates/clientsideapp/modal_service_buy.html:22 +#: templates/clientsideapp/services.html:63 msgid "Pick" msgstr "Заказать" -#: clientsideapp/templates/clientsideapp/modal_service_buy.html:30 +#: templates/clientsideapp/modal_service_buy.html:24 msgid "Close" msgstr "Закрыть" -#: clientsideapp/templates/clientsideapp/pays.html:6 +#: templates/clientsideapp/pays.html:6 msgid "conducted payments" msgstr "Проведённые платежи" -#: clientsideapp/templates/clientsideapp/pays.html:11 +#: templates/clientsideapp/pays.html:11 msgid "Transaction Amount (rubles)" msgstr "Сумма транзакции (руб)" -#: clientsideapp/templates/clientsideapp/pays.html:12 +#: templates/clientsideapp/pays.html:12 msgid "Date of transaction" msgstr "Дата транзакции" -#: clientsideapp/templates/clientsideapp/pays.html:13 +#: templates/clientsideapp/pays.html:13 msgid "Comment" msgstr "Комментарий" -#: clientsideapp/templates/clientsideapp/pays.html:25 +#: templates/clientsideapp/pays.html:25 msgid "You have not spent payments" msgstr "У вас нет проведённых платежей" -#: clientsideapp/views.py:53 -#, python-format -msgid "Buy the service via user side, service '%s'" -msgstr "Покупка тарифного плана через личный кабинет, тариф '%s'" +#: templates/clientsideapp/services.html:14 +msgid "Your current service" +msgstr "Ваша текущая услуга" -#: clientsideapp/views.py:82 -#, python-format -msgid "Service '%s' has been finished" -msgstr "Услуга '%s' успешно завершена" +#: templates/clientsideapp/services.html:19 +msgid "The date of connection" +msgstr "Дата подключения" -#: clientsideapp/views.py:87 -#, python-format -msgid "Early terminated service '%s' via client side" -msgstr "Досрочное завершение услуги '%s' из личного кабинета" +#: templates/clientsideapp/services.html:22 +msgid "The date of finish service" +msgstr "Дата завершения услуги" + +#: templates/clientsideapp/services.html:25 +msgid "Cost" +msgstr "Стоимость" + +#: templates/clientsideapp/services.html:35 +msgid "" +"Attantion! You have not yet a service, for use the services " +"please purchase service you want." +msgstr "" +"Внимание! У вас нет услуги, для использования ресурсов приобретите " +"нужную услугу из представленных тут." -#: clientsideapp/views.py:90 clientsideapp/views.py:119 -#: clientsideapp/views.py:147 -msgid "Act is not confirmed" -msgstr "Действие не подтверждено" +#: templates/clientsideapp/services.html:46 +msgid "Services available for ordering" +msgstr "Доступные для заказа услуги" -#: clientsideapp/views.py:103 clientsideapp/views.py:130 -msgid "Temporary network bug" -msgstr "Временные неполадки в сети" +#: templates/clientsideapp/services.html:68 +msgid "No services available for ordering" +msgstr "Нет доступных для заказа услуг" -#: clientsideapp/views.py:126 -msgid "The service was not found" -msgstr "Указанная подписка на услугу не найдена" +#: views.py:51 +#, python-format +msgid "Buy the service via user side, service '%s'" +msgstr "Покупка тарифного плана через личный кабинет, тариф '%s'" -#: clientsideapp/views.py:145 +#: views.py:53 #, python-format msgid "The service '%s' wan successfully activated" msgstr "Услуга '%s' успешно подключена" -#: clientsideapp/views.py:181 +#: views.py:83 msgid "Are you not sure that you want buy the service?" msgstr "Вы не уверены что хотите оплатить долг?" -#: clientsideapp/views.py:183 +#: views.py:85 msgid "Your account have not enough money" msgstr "Недостаточно средств на счету" diff --git a/clientsideapp/templates/clientsideapp/custom_pages/footer.htm b/clientsideapp/templates/clientsideapp/custom_pages/footer.htm new file mode 100644 index 0000000..55ce634 --- /dev/null +++ b/clientsideapp/templates/clientsideapp/custom_pages/footer.htm @@ -0,0 +1 @@ +Your custom content here. \ No newline at end of file diff --git a/clientsideapp/templates/clientsideapp/custom_pages/main_page.htm b/clientsideapp/templates/clientsideapp/custom_pages/main_page.htm new file mode 100644 index 0000000..27e1fca --- /dev/null +++ b/clientsideapp/templates/clientsideapp/custom_pages/main_page.htm @@ -0,0 +1 @@ +

You can change this page

\ No newline at end of file diff --git a/clientsideapp/templates/clientsideapp/custom_pages/service.htm b/clientsideapp/templates/clientsideapp/custom_pages/service.htm new file mode 100644 index 0000000..a987da4 --- /dev/null +++ b/clientsideapp/templates/clientsideapp/custom_pages/service.htm @@ -0,0 +1,2 @@ +

Your custom content

+

You have service variable {{ active_service }}

\ No newline at end of file diff --git a/clientsideapp/templates/clientsideapp/custom_pages/service_bottom.htm b/clientsideapp/templates/clientsideapp/custom_pages/service_bottom.htm new file mode 100644 index 0000000..89cbb76 --- /dev/null +++ b/clientsideapp/templates/clientsideapp/custom_pages/service_bottom.htm @@ -0,0 +1 @@ +

Your custom content on bottom

\ No newline at end of file diff --git a/clientsideapp/templates/clientsideapp/debt_buy.html b/clientsideapp/templates/clientsideapp/debt_buy.html index 510fbe8..a607273 100644 --- a/clientsideapp/templates/clientsideapp/debt_buy.html +++ b/clientsideapp/templates/clientsideapp/debt_buy.html @@ -18,9 +18,13 @@ {% trans 'Are you sure you want to spend a payment?' %} -

{% blocktrans %}From your account, they withdraw funds in {{ amount }} rub.
-As a result, you will remain on your account {{ ballance_after }} rubles.
-The administrator can immediately see that you shut down the debt.{% endblocktrans %}

+

+ {% blocktrans trimmed %} + From your account, they withdraw funds in {{ amount }} rub.
+ As a result, you will remain on your account {{ ballance_after }} rubles.
+ The administrator can immediately see that you shut down the debt. + {% endblocktrans %} +

{% trans 'Description of payment' %}

diff --git a/clientsideapp/templates/clientsideapp/debts.html b/clientsideapp/templates/clientsideapp/debts.html index d7d1038..18563e3 100644 --- a/clientsideapp/templates/clientsideapp/debts.html +++ b/clientsideapp/templates/clientsideapp/debts.html @@ -1,25 +1,26 @@ {% extends 'clientsideapp/ext.html' %} +{% load i18n %} {% block client_main %} - - - - - - + + + + + + {% for debt in debts %} - + {% empty %} - + {% endfor %} diff --git a/clientsideapp/templates/clientsideapp/ext.html b/clientsideapp/templates/clientsideapp/ext.html index bdd7c4d..2ee4627 100644 --- a/clientsideapp/templates/clientsideapp/ext.html +++ b/clientsideapp/templates/clientsideapp/ext.html @@ -1,10 +1,10 @@ - +{% load globaltags %}{% load i18n %} - Личный кабинет + {% global_var 'COMPANY_NAME' %} - {% trans 'Personal account' %} @@ -19,6 +19,8 @@ + +{% url 'client_side:home' as client_side_home %} @@ -80,11 +70,12 @@
{% if request.user.is_staff %} -
- Кстати. - Вы администратор, и не должны производить действия из кабинета пользователя, производите их из админки. - Кабинет клиента для вас только для ознакомления. -
+
+ {% blocktrans trimmed %} + Attantion! + You are is admin, and do not be active here, please back to admin side. Client side to you for reference only. + {% endblocktrans %} +
{% endif %} {% include 'message_block.html' %} @@ -95,7 +86,7 @@ diff --git a/clientsideapp/templates/clientsideapp/index.html b/clientsideapp/templates/clientsideapp/index.html index a0ff0b2..a881d0e 100644 --- a/clientsideapp/templates/clientsideapp/index.html +++ b/clientsideapp/templates/clientsideapp/index.html @@ -1,73 +1,4 @@ {% extends 'clientsideapp/ext.html' %} {% block client_main %} - -
-
Наши реквизиты
-
-
    -
  • Режим работы: с 9:00 до 22:00
  • -
  • Телефоны: +79788328885, +79788318999
  • -
  • Адрес: пос. Нижнегорский, ул. Победы 38. 2й этаж старого дома быта, возле рынка
  • -
- -
-
- -
СостояниеСуммаОписаниеДата созданияДата платежаОплатить{% trans 'State' %}{% trans 'Summ' %}{% trans 'Description' %}{% trans 'Date of create' %}{% trans 'Date of pay' %}{% trans 'Pay' %}
{{ debt.amount }} руб.{{ debt.amount }} {% trans 'currency' %} {{ debt.comment }} {{ debt.date_create|date:'d b H:i' }} @@ -27,21 +28,21 @@ {{ debt.date_pay|date:'d b H:i' }} {% else %} {% if debt.status %} - Создан оплаченным + {% trans 'Created paid' %} {% else %} - Ещё не оплачен + {% trans 'Not yet paid' %} {% endif %} {% endif %} - +
У вас нет долгов {% trans 'You have no debt' %}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
УслугаСтоимость (руб)
Выезд мастера. Цена зависит от удалённости от Нижнегорска100-200
Настройка роутера300
Установка и восстановление сетевых настроек100
Замена кабеля (витая пара)30 руб/метр
Замена конектора RJ-4550
Роутер TL-WR840N + настройка1800
Установка драйвера (с настройкой сетевых установок)100
"Что-то не работает" – по договорённости~
Замена блока питания200
Замена оптоволоконных линий связиот 500
-
- + {% include 'clientsideapp/custom_pages/main_page.htm' %} {% endblock %} diff --git a/clientsideapp/templates/clientsideapp/modal_service_buy.html b/clientsideapp/templates/clientsideapp/modal_service_buy.html index 93d6d7d..4c46754 100644 --- a/clientsideapp/templates/clientsideapp/modal_service_buy.html +++ b/clientsideapp/templates/clientsideapp/modal_service_buy.html @@ -6,7 +6,7 @@ + {% include 'clientsideapp/custom_pages/service_bottom.htm' %} - - -
-
-
-
- - Как работает личный кабинет, раздел услуг -
-
-

Перед вами находится 2 столбца, в левом ваша текущая подключённая услуга, а в правом доступные для заказа услуги. - Когда у вас уже есть подключённая услуга то заказать новую вы не можете пока не завершится текущая.

-

Когда у вас нет действующей подключённой услуги то кнопка заказа станет активной, и вы сможете заказать для себя услугу. - Обратите внимание что именно в этот момент с вашего счёта снимутся деньги в соответствии со стоимостью услуги. -

-
-
-
-
{% endblock %} diff --git a/djing/local_settings.py.template b/djing/local_settings.py.template index 8f251a4..f3ac692 100644 --- a/djing/local_settings.py.template +++ b/djing/local_settings.py.template @@ -57,3 +57,5 @@ API_AUTH_SECRET = 'your api secret' # Allowed subnet for api API_AUTH_SUBNET = '127.0.0.0/8' +# Company name +COMPANY_NAME = 'Your company name' diff --git a/djing/settings.py b/djing/settings.py index cdeb813..ef5e0bc 100644 --- a/djing/settings.py +++ b/djing/settings.py @@ -86,6 +86,9 @@ TEMPLATES = [ 'global_context_processors.context_processor_additional_profile', 'msg_app.context_processors.get_new_messages_count' ], + 'libraries': { + 'globaltags': 'djing.templatetags.globaltags', + } }, }, ] @@ -187,3 +190,6 @@ API_AUTH_SECRET = local_settings.API_AUTH_SECRET # Allowed subnet for api API_AUTH_SUBNET = local_settings.API_AUTH_SUBNET + +# Company name +COMPANY_NAME = local_settings.COMPANY_NAME diff --git a/djing/templatetags/__init__.py b/djing/templatetags/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/djing/templatetags/globaltags.py b/djing/templatetags/globaltags.py new file mode 100644 index 0000000..9b36fd9 --- /dev/null +++ b/djing/templatetags/globaltags.py @@ -0,0 +1,9 @@ +from django import template +from django.conf import settings + +register = template.Library() + + +@register.simple_tag +def global_var(var_name): + return getattr(settings, var_name, '') diff --git a/static/clientside/bc.png b/static/clientside/bc.png index d61c54d4f6370e8b97928e2e3e3fda9f5cbfaa87..c0e9ec3b5e1a61563725adb1e2aa07fc707f1007 100644 GIT binary patch literal 4259 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 Z@BeHTSKT?qo3#J{002ovPDHLkV1g5?{gwa# diff --git a/static/img/bcgr.png b/static/img/bcgr.png index ebe8b5e2156c9f2b0b0014597ea3ce7dba2f73ed..b70f55d393b2dab5271e0a507f2ab62a469dd04a 100644 GIT binary patch literal 2036 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 +{% load globaltags %} - InternetService - Админка + {% global_var 'COMPANY_NAME' %} - Админка @@ -37,7 +37,7 @@ - +