diff --git a/abonapp/locale/ru/LC_MESSAGES/django.po b/abonapp/locale/ru/LC_MESSAGES/django.po
index fe28b1a..f06f1f4 100644
--- a/abonapp/locale/ru/LC_MESSAGES/django.po
+++ b/abonapp/locale/ru/LC_MESSAGES/django.po
@@ -1012,3 +1012,11 @@ msgstr "Может видеть дополнительные телефоны"
msgid "IP Conflict! %d/%d results"
msgstr "IP Конфликт! ping %d из %d"
+msgid "Phonebook"
+msgstr "Телефонная книга"
+
+msgid "Reset ip"
+msgstr "Сбросить ip"
+
+msgid "Export to csv"
+msgstr "Сохранить в csv"
diff --git a/abonapp/templates/abonapp/editAbon.html b/abonapp/templates/abonapp/editAbon.html
index e219ecb..e5b21e4 100644
--- a/abonapp/templates/abonapp/editAbon.html
+++ b/abonapp/templates/abonapp/editAbon.html
@@ -49,7 +49,14 @@
diff --git a/abonapp/templates/abonapp/ext.htm b/abonapp/templates/abonapp/ext.htm
index 92c9876..35877fb 100644
--- a/abonapp/templates/abonapp/ext.htm
+++ b/abonapp/templates/abonapp/ext.htm
@@ -14,7 +14,7 @@
diff --git a/abonapp/templates/abonapp/peoples.html b/abonapp/templates/abonapp/peoples.html
index 8c465ff..7ccc764 100644
--- a/abonapp/templates/abonapp/peoples.html
+++ b/abonapp/templates/abonapp/peoples.html
@@ -102,7 +102,7 @@
{% else %}———
{% endif %}
- {{ human.ballance }} |
+ {{ human.ballance|floatformat:2 }} |
{% if can_del_trf %}
@@ -125,15 +125,18 @@
- |
+ |
{% if perms.abonapp.add_abon %}
-
+
{% trans 'Add abon' %}
{% endif %}
-
+
{% trans 'Tariffs in groups' %}
+
+ {% trans 'Phonebook' %}
+
|
diff --git a/abonapp/urls_abon.py b/abonapp/urls_abon.py
index d37a86c..1bbf288 100644
--- a/abonapp/urls_abon.py
+++ b/abonapp/urls_abon.py
@@ -6,6 +6,7 @@ urlpatterns = [
url(r'^$', views.peoples, name='people_list'),
url(r'^addabon$', views.addabon, name='add_abon'),
url(r'^services$', views.chgroup_tariff, name='ch_group_tariff'),
+ url(r'^phonebook$', views.phonebook, name='phonebook'),
url(r'^street/add$', views.street_add, name='street_add'),
url(r'^street/edit', views.street_edit, name='street_edit'),
url(r'^street/(?P\d+)/delete$', views.street_del, name='street_del'),
@@ -21,6 +22,7 @@ urlpatterns = [
url(r'^(?P\d+)/passport_view$', views.passport_view, name='passport_view'),
url(r'^(?P\d+)/chart$', views.charts, name='charts'),
url(r'^(?P\d+)/dials$', views.dials, name='dials'),
+ url(r'^(?P\d+)/reset_ip$', views.reset_ip, name='reset_ip'),
url(r'^(?P\d+)/extra_field$', views.make_extra_field, name='extra_field'),
url(r'^(?P\d+)/extra_field/(?P\d+)/delete$', views.extra_field_delete, name='extra_field_delete'),
url(r'^(?P\d+)/extra_field/edit$', views.extra_field_change, name='extra_field_edit'),
diff --git a/abonapp/views.py b/abonapp/views.py
index c5a860d..47a9302 100644
--- a/abonapp/views.py
+++ b/abonapp/views.py
@@ -3,7 +3,7 @@ from json import dumps
from django.contrib.gis.shortcuts import render_to_text
from django.core.exceptions import PermissionDenied
from django.db import IntegrityError, ProgrammingError
-from django.db.models import Count, Q
+from django.db.models import Count, Q, signals
from django.db.transaction import atomic
from django.shortcuts import render, redirect, get_object_or_404, resolve_url
from django.contrib.auth.decorators import login_required
@@ -870,6 +870,43 @@ def tel_del(request, gid, uid):
return redirect('abonapp:abon_home', gid, uid)
+@login_required
+@permission_required('abonapp.can_view_abongroup', (models.AbonGroup, 'pk', 'gid'))
+def phonebook(request, gid):
+ res_format = request.GET.get('f')
+ t1 = models.Abon.objects.filter(group__id=int(gid)).only('telephone', 'fio').values_list('telephone', 'fio')
+ t2 = models.AdditionalTelephone.objects.filter(abon__group__id=gid).only('telephone', 'owner_name').values_list('telephone', 'owner_name')
+ tels = list(t1) + list(t2)
+ if res_format == 'csv':
+ import csv
+ response = HttpResponse(content_type='text/csv')
+ response['Content-Disposition'] = 'attachment; filename="phones.csv"'
+ writer = csv.writer(response, quoting=csv.QUOTE_NONNUMERIC)
+ for row in tels:
+ writer.writerow(row)
+ return response
+ return render_to_text('abonapp/modal_phonebook.html', {
+ 'tels': tels,
+ 'gid': gid
+ }, request=request)
+
+
+@login_required
+@permission_required('abonapp.change_abon')
+@permission_required('abonapp.can_view_abongroup', (models.AbonGroup, 'pk', 'gid'))
+def reset_ip(request, gid, uid):
+ abon = get_object_or_404(models.Abon, pk=uid)
+ signals.post_save.disconnect(models.abon_post_save, sender=models.Abon)
+ abon.ip_address = None
+ abon.save(update_fields=['ip_address'])
+ signals.post_save.connect(models.abon_post_save, sender=models.Abon)
+ return HttpResponse(dumps({
+ 'status': 0,
+ 'dat': ""
+ }))
+
+
+
# API's
def abons(request):
diff --git a/accounts_app/templates/accounts/acc_list.html b/accounts_app/templates/accounts/acc_list.html
index 1704218..7bb82f8 100644
--- a/accounts_app/templates/accounts/acc_list.html
+++ b/accounts_app/templates/accounts/acc_list.html
@@ -34,27 +34,20 @@
Нету{% endif %} |
{% if usr.email %}{{ usr.email }}{% else %}
Нету{% endif %} |
-
-
-
-
-
-
-
-
- {% if usr.id == request.user.id or perms.acc_app.delete_userprofile %}
+ {% if usr.id == request.user.id or perms.acc_app.delete_userprofile %}
+ |
- {% else %}
+ |
+ {% else %}
+
- {% endif %}
+ |
+ {% endif %}
-
{% empty %}
diff --git a/accounts_app/templates/accounts/index.html b/accounts_app/templates/accounts/index.html
index db5f796..35b8034 100644
--- a/accounts_app/templates/accounts/index.html
+++ b/accounts_app/templates/accounts/index.html
@@ -3,7 +3,7 @@
{% block content %}
-
+
| {% trans 'Telephone' %} |
diff --git a/chatbot/telebot.py b/chatbot/telebot.py
index 5e9acb6..c5f31ee 100755
--- a/chatbot/telebot.py
+++ b/chatbot/telebot.py
@@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
from telepot import helper, glance, Bot
+from telepot.exception import TelegramError
import os
import socket
import collections
@@ -142,4 +143,6 @@ def send_notify(msg_text, account):
raise ChatException(_("Recipient '%s' does not subscribed on notifications") % account.get_full_name())
except ProtocolError as e:
raise ChatException(e)
+ except TelegramError as e:
+ raise ChatException("%s - %s" % (e, tb.user.get_full_name()))
diff --git a/clientsideapp/templates/clientsideapp/ext.html b/clientsideapp/templates/clientsideapp/ext.html
index 1d74f13..bdd7c4d 100644
--- a/clientsideapp/templates/clientsideapp/ext.html
+++ b/clientsideapp/templates/clientsideapp/ext.html
@@ -49,6 +49,7 @@
Услуги
+
diff --git a/clientsideapp/templates/clientsideapp/services.html b/clientsideapp/templates/clientsideapp/services.html
index 9646d95..9eaca3d 100644
--- a/clientsideapp/templates/clientsideapp/services.html
+++ b/clientsideapp/templates/clientsideapp/services.html
@@ -6,7 +6,7 @@
-
+
{% if current_service %}
@@ -27,6 +27,8 @@
{{ current_service.tariff.descr }}
+
+
{% else %}
@@ -34,7 +36,7 @@
{% endif %}
-
+
Доступные для заказа услуги
@@ -66,12 +68,15 @@
-
+ {% include 'clientsideapp/services_ext.txt' %}
+
+
+
-
{% endblock %}
diff --git a/clientsideapp/views.py b/clientsideapp/views.py
index 9666e8a..173e056 100644
--- a/clientsideapp/views.py
+++ b/clientsideapp/views.py
@@ -28,12 +28,16 @@ def pays(request):
@login_required
def services(request):
- abon = Abon.objects.get(pk=request.user.pk)
- all_tarifs = abon.group.tariffs.filter(is_admin=False)
-
+ try:
+ abon = Abon.objects.get(pk=request.user.pk)
+ all_tarifs = abon.group.tariffs.filter(is_admin=False)
+ current_service = abon.active_tariff()
+ except:
+ all_tarifs = None
+ current_service = None
return render(request, 'clientsideapp/services.html', {
'tarifs': all_tarifs,
- 'current_service': abon.active_tariff()
+ 'current_service': current_service
})
diff --git a/devapp/views.py b/devapp/views.py
index dc0fa33..43168f1 100644
--- a/devapp/views.py
+++ b/devapp/views.py
@@ -357,7 +357,7 @@ def toggle_port(request, did, portid, status=0):
try:
if ping(dev.ip_address):
if dev.man_passw:
- manager = dev.get_manager_klass()(dev.ip_address, dev.man_passw)
+ manager = dev.get_manager_object()
ports = manager.get_ports()
if status:
ports[portid - 1].enable()
diff --git a/dialing_app/locale/ru/LC_MESSAGES/django.po b/dialing_app/locale/ru/LC_MESSAGES/django.po
index 4889f2b..7e810aa 100644
--- a/dialing_app/locale/ru/LC_MESSAGES/django.po
+++ b/dialing_app/locale/ru/LC_MESSAGES/django.po
@@ -95,14 +95,9 @@ msgstr "Несколько абонентов с указанным номеро
msgid "User with the telephone number not found"
msgstr "Абонент с таким номером телефона не найден"
-msgid "Voice mail"
-msgstr "Оставленные сообщения"
+msgid "Voice mail request"
+msgstr "Заявки на подключение"
-msgid "Type"
-msgstr "Тип"
+msgid "Voice mail report"
+msgstr "Заявки на поломки"
-msgid "Request"
-msgstr "Заявка"
-
-msgid "Report"
-msgstr "Поломка"
\ No newline at end of file
diff --git a/dialing_app/templates/ext.html b/dialing_app/templates/ext.html
index 5d01acc..a5c9401 100644
--- a/dialing_app/templates/ext.html
+++ b/dialing_app/templates/ext.html
@@ -22,13 +22,21 @@
- {% url 'dialapp:vmail' as dialmail %}
+ {% url 'dialapp:vmail_request' as dialmail %}
- {% trans 'Voice mail' %}
+ {% trans 'Voice mail request' %}
+ {% url 'dialapp:vmail_report' as dialmail %}
+
+
+ {% trans 'Voice mail report' %}
+
+
+
+
diff --git a/dialing_app/templates/vmail.html b/dialing_app/templates/vmail.html
index fb4169a..f995ca0 100644
--- a/dialing_app/templates/vmail.html
+++ b/dialing_app/templates/vmail.html
@@ -10,7 +10,6 @@
{% trans 'Play' %} |
{% trans 'calldate' %} |
{% trans 'src' %} |
-
{% trans 'Type' %} |
{% trans 'duration' %} |
{% trans 'start' %} |
{% trans 'answer' %} |
@@ -21,7 +20,7 @@
{% for vmail in vmessages %}
- |
+ |
|
{{ vmail.calldate|date:'d E Y, H:i:s' }} |
{{ vmail.src|abon_if_telephone|safe }} |
-
- {% if vmail.userfield == 'request' %}{% trans 'Request' %}
- {% elif vmail.userfield == 'report' %}{% trans 'Report' %}
- {% else %}{{ vmail.userfield }}{% endif %}
- |
{{ vmail.duration }} |
{{ vmail.start|date:'d E Y, H:i:s' }} |
{{ vmail.answer|date:'d E Y, H:i:s' }} |
@@ -45,7 +39,7 @@
{% empty %}
- | {% trans 'Calls was not found' %} |
+ {% trans 'Calls was not found' %} |
{% endfor %}
diff --git a/dialing_app/urls.py b/dialing_app/urls.py
index 3e81add..6dc3fe8 100644
--- a/dialing_app/urls.py
+++ b/dialing_app/urls.py
@@ -6,5 +6,6 @@ urlpatterns = [
url(r'^$', views.home, name='home'),
url(r'^filter$', views.vfilter, name='vfilter'),
url(r'^to_abon(?P
\+?\d+)$', views.to_abon, name='to_abon'),
- url(r'^voicemail$', views.vmail, name='vmail')
+ url(r'^requests$', views.vmail_request, name='vmail_request'),
+ url(r'^reports$', views.vmail_report, name='vmail_report')
]
diff --git a/dialing_app/views.py b/dialing_app/views.py
index f3ceebd..4386a07 100644
--- a/dialing_app/views.py
+++ b/dialing_app/views.py
@@ -42,8 +42,8 @@ def to_abon(request, tel):
@login_required
@only_admins
-def vmail(request):
- title = _('Voice mail')
+def vmail_request(request):
+ title = _('Voice mail request')
cdr = AsteriskCDR.objects.filter(userfield='request').order_by('-calldate')
cdr = pag_mn(request, cdr)
return render(request, 'vmail.html', {
@@ -51,6 +51,17 @@ def vmail(request):
'vmessages': cdr
})
+@login_required
+@only_admins
+def vmail_report(request):
+ title = _('Voice mail report')
+ cdr = AsteriskCDR.objects.filter(userfield='report').order_by('-calldate')
+ cdr = pag_mn(request, cdr)
+ return render(request, 'vmail.html', {
+ 'title': title,
+ 'vmessages': cdr
+ })
+
@login_required
@only_admins
diff --git a/taskapp/handle.py b/taskapp/handle.py
index e31303f..b00a62c 100644
--- a/taskapp/handle.py
+++ b/taskapp/handle.py
@@ -35,8 +35,6 @@ def handle(task, author, recipients, abon_group):
fulltext += _('Task type - %s.') % task.get_mode_display() + '\n'
fulltext += task.descr if task.descr else ''
- print('task.state:', task.state)
-
if task.state == 'F' or task.state == 'C':
# Если задача завершена или провалена то отправляем одно оповещение автору
try:
diff --git a/taskapp/locale/ru/LC_MESSAGES/django.po b/taskapp/locale/ru/LC_MESSAGES/django.po
index 25e6bec..78af563 100644
--- a/taskapp/locale/ru/LC_MESSAGES/django.po
+++ b/taskapp/locale/ru/LC_MESSAGES/django.po
@@ -378,3 +378,9 @@ msgstr "Задачи, которые необходимо выполнить"
msgid "locality %s. Task type - %s. "
msgstr "с. %s. Тип задачи - %s. "
+
+msgid "ip conflict"
+msgstr "Ip конфликт"
+
+msgid "Internet crash"
+msgstr "Нет интернета"
diff --git a/taskapp/models.py b/taskapp/models.py
index 37e30f6..1ed1742 100644
--- a/taskapp/models.py
+++ b/taskapp/models.py
@@ -23,6 +23,7 @@ TASK_STATES = (
TASK_TYPES = (
('na', _('not chosen')),
+ ('ic', _('ip conflict')),
('yt', _('yellow triangle')),
('rc', _('red cross')),
('ls', _('weak speed')),
@@ -32,6 +33,7 @@ TASK_TYPES = (
('cr', _('router setup')),
('co', _('configure onu')),
('fc', _('crimp cable')),
+ ('ni', _('Internet crash')),
('ot', _('other'))
)