Browse Source

Add devices to search, and translate searchapp

devel
bashmak 8 years ago
parent
commit
5a5857ab85
  1. 44
      searchapp/locale/ru/LC_MESSAGES/django.po
  2. 57
      searchapp/templates/searchapp/index.html
  3. 16
      searchapp/views.py
  4. 49
      taskapp/handle.sh

44
searchapp/locale/ru/LC_MESSAGES/django.po

@ -0,0 +1,44 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Dmitry Novikov nerosketch@gmail.com, 2018.
#
#, fuzzy
msgid ""
msgstr ""
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-04-09 11:15+0300\n"
"Last-Translator: Dmitry Novikov nerosketch@gmail.com\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%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"
#: templates/searchapp/index.html:8
#, python-format
msgid "Search by %(searchstring)s"
msgstr "Поиск по %(searchstring)s"
#: templates/searchapp/index.html:16
msgid "Change search string there"
msgstr "Измените строку поиска"
#: templates/searchapp/index.html:21
msgid "Find"
msgstr "Найти"
#: templates/searchapp/index.html:46 templates/searchapp/index.html:75
msgid "Nothing to found"
msgstr "Ничего не найдено"
#: templates/searchapp/index.html:49 templates/searchapp/index.html:78
msgid "You can change search string and try again"
msgstr "Вы можете изменить строку поиска и попробовать ещё раз"
#: templates/searchapp/index.html:68
#, python-format
msgid "Network state is %(netw_status)s"
msgstr "Сетевой статус: %(netw_status)s"

57
searchapp/templates/searchapp/index.html

@ -1,19 +1,24 @@
{% extends 'base.html' %} {% extends 'base.html' %}
{% load i18n %}
{% block main %} {% block main %}
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading"> <div class="panel-heading">
<h3 class="panel-title">Поиск по &quot;{{ s }}&quot;</h3>
<h3 class="panel-title">
{% blocktrans trimmed with searchstring=s %}
Search by {{ searchstring }}
{% endblocktrans %}
</h3>
</div> </div>
<div class="panel-body"> <div class="panel-body">
<form role="form" action="{% url 'searchapp:home' %}" method="get"> <form role="form" action="{% url 'searchapp:home' %}" method="get">
<div class="form-group"> <div class="form-group">
<label for="srfield">Измените тут строку поиска</label>
<label for="srfield">{% trans 'Change search string there' %}</label>
<div class="input-group"> <div class="input-group">
<span class="input-group-btn"> <span class="input-group-btn">
<button class="btn btn-default"> <button class="btn btn-default">
<span class="glyphicon glyphicon-search"></span> Найти
<span class="glyphicon glyphicon-search"></span> {% trans 'Find' %}
</button> </button>
</span> </span>
<input id="srfield" name="s" type="text" value="{{ s }}" class="form-control"> <input id="srfield" name="s" type="text" value="{{ s }}" class="form-control">
@ -22,8 +27,11 @@
</form> </form>
<div class="list-group"> <div class="list-group">
{% for ab in abons %} {% for ab in abons %}
<a href="{% url 'abonapp:abon_home' ab.group.id ab.username %}" target="_blank" class="list-group-item">
<h4 class="list-group-item-heading">{{ ab.username_display|safe }}</h4>
<a href="{% url 'abonapp:abon_home' ab.group.id ab.username %}" target="_blank" class="list-group-item">
<h4 class="list-group-item-heading">
<span class="glyphicon glyphicon-user"></span>
{{ ab.username_display|safe }}
</h4>
<p class="list-group-item-text"> <p class="list-group-item-text">
{{ ab.fio|safe }} {{ ab.fio|safe }}
@ -35,10 +43,45 @@
</a> </a>
{% empty %} {% empty %}
<a class="list-group-item"> <a class="list-group-item">
<h4 class="list-group-item-heading">Ничего не найдено</h4>
<h4 class="list-group-item-heading">
<span class="glyphicon glyphicon-user"></span>
{% trans 'Nothing to found' %}
</h4>
<p class="list-group-item-text"> <p class="list-group-item-text">
Результат поиска пуст, попробуйте изменить строку поиска, и попробуйте найти ещё раз.
{% trans 'You can change search string and try again' %}
</p>
</a>
{% endfor %}
{% for dev in devices %}
<a href="{% url 'devapp:view' dev.group.id dev.pk %}" target="_blank" class="list-group-item">
<h4 class="list-group-item-heading">
<span class="glyphicon glyphicon-hdd"></span>
{{ dev.comment|safe }}
</h4>
<p class="list-group-item-text">
{% if dev.ip_address %}
<span>{{ dev.ip_address }}</span>,
{% endif %}
{% if dev.mac_addr %}
<span>{{ dev.mac_addr }}</span>,
{% endif %}
{{ dev.get_devtype_display }},
{% blocktrans trimmed with netw_status=dev.get_status_display %}
Network state is {{ netw_status }}
{% endblocktrans %}
</p>
</a>
{% empty %}
<a class="list-group-item">
<h4 class="list-group-item-heading">
<span class="glyphicon glyphicon-hdd"></span>
{% trans 'Nothing to found' %}
</h4>
<p class="list-group-item-text">
{% trans 'You can change search string and try again' %}
</p> </p>
</a> </a>
{% endfor %} {% endfor %}

16
searchapp/views.py

@ -3,7 +3,8 @@ from django.db.models import Q
from django.shortcuts import render from django.shortcuts import render
from django.utils.html import escape from django.utils.html import escape
from abonapp.models import Abon from abonapp.models import Abon
from mydefs import ip_addr_regex
from devapp.models import Device
from djing import MAC_ADDR_REGEX, IP_ADDR_REGEX
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
@ -17,21 +18,32 @@ def home(request):
s = s.replace('+', '') s = s.replace('+', '')
if s: if s:
if bool(re.match(ip_addr_regex, s)):
if re.match(IP_ADDR_REGEX, s):
abons = Abon.objects.filter(ip_address=s) abons = Abon.objects.filter(ip_address=s)
devices = Device.objects.filter(ip_address=s)
else: else:
abons = Abon.objects.filter( abons = Abon.objects.filter(
Q(fio__icontains=s) | Q(username__icontains=s) | Q(telephone__icontains=s) Q(fio__icontains=s) | Q(username__icontains=s) | Q(telephone__icontains=s)
) )
if re.match(MAC_ADDR_REGEX, s):
devices = Device.objects.filter(mac_addr=s)
else:
devices = Device.objects.filter(comment__icontains=s)
else: else:
abons = [] abons = []
devices = []
for abn in abons: for abn in abons:
abn.fio = replace_without_case(escape(abn.fio), s, "<b>%s</b>" % s) abn.fio = replace_without_case(escape(abn.fio), s, "<b>%s</b>" % s)
abn.username_display = replace_without_case(escape(abn.username), s, "<b>%s</b>" % s) abn.username_display = replace_without_case(escape(abn.username), s, "<b>%s</b>" % s)
abn.telephone = replace_without_case(escape(abn.telephone), s, "<b>%s</b>" % s) abn.telephone = replace_without_case(escape(abn.telephone), s, "<b>%s</b>" % s)
for dev in devices:
dev.comment = replace_without_case(escape(dev.comment), s, "<b>%s</b>" % s)
return render(request, 'searchapp/index.html', { return render(request, 'searchapp/index.html', {
'abons': abons, 'abons': abons,
'devices': devices,
's': s 's': s
}) })

49
taskapp/handle.sh

@ -1,49 +0,0 @@
#!/usr/bin/env bash
FIRST="$1" # $1 - 'start' or 'change'
FAIL_MODE="$2" # $2 - mode
RESERVED="$3" # $3 - (dev ip)
STATE="$4" # $4 - state
AUTHOR_TEL="$5" # $5 - author telephone
RECIPIENT_TEL="$6" # $6 - recipient telephone
DESCR="$7" # $7 - description
ABON_FIO="$8" # $8 - abon fio
ABON_ADDR="$9" # $9 - abon address
ABON_TEL="${10}" # $10- abon telephone
ABON_GRP="${11}" # $11- имя группы абонента
text=''
if [[ "$FIRST" == "start" ]]
then
text="Нов"
else
text="Изм"
fi
# Если сигнал самому себе то молчим
if [[ "$AUTHOR_TEL" == "$RECIPIENT_TEL" ]]
then
exit
fi
# Если задача 'На выполнении' то молчим
if [[ "$STATE" == "C" ]]
then
exit
fi
# Если задача завершена
if [[ "$STATE" == "F" ]]
then
text="Задача завершена"
# Меняем телефон назначения на телефон автора, т.к. при завершении
# идёт оповещение автору о выполнении
RECIPIENT_TEL="$AUTHOR_TEL"
fi
FULLTEXT="$text: $ABON_FIO. $ABON_ADDR $ABON_TEL. $ABON_GRP. $FAIL_MODE. $DESCR"
echo "TO $RECIPIENT_TEL: $FULLTEXT"
/usr/bin/gammu-smsd-inject EMS $RECIPIENT_TEL -text "$FULLTEXT" -unicode
Loading…
Cancel
Save