Browse Source

continue develop

devel
Dmitry 9 years ago
parent
commit
2d48cac99e
  1. BIN
      abonapp/locale/ru/LC_MESSAGES/django.mo
  2. 38
      abonapp/templates/abonapp/editAbon.html
  3. 2
      abonapp/views.py
  4. BIN
      accounts_app/locale/ru/LC_MESSAGES/django.mo
  5. 7
      accounts_app/templates/accounts/login.html
  6. 3
      devapp/dev_types.py
  7. 1
      devapp/models.py
  8. 92
      devapp/templates/devapp/add_dev.html
  9. 16
      devapp/templates/devapp/dev.html
  10. 20
      devapp/templates/devapp/devices.html
  11. 81
      devapp/templates/devapp/devices_null_group.html
  12. 15
      devapp/templates/devapp/ext.htm
  13. 51
      devapp/templates/devapp/group_list.html
  14. 4
      devapp/templates/devapp/ports.html
  15. 12
      devapp/urls.py
  16. 53
      devapp/views.py
  17. BIN
      django_messages/locale/ar/LC_MESSAGES/django.mo
  18. BIN
      django_messages/locale/cs/LC_MESSAGES/django.mo
  19. BIN
      django_messages/locale/da/LC_MESSAGES/django.mo
  20. BIN
      django_messages/locale/de/LC_MESSAGES/django.mo
  21. BIN
      django_messages/locale/el/LC_MESSAGES/django.mo
  22. BIN
      django_messages/locale/es/LC_MESSAGES/django.mo
  23. BIN
      django_messages/locale/es_AR/LC_MESSAGES/django.mo
  24. BIN
      django_messages/locale/fa/LC_MESSAGES/django.mo
  25. BIN
      django_messages/locale/fr/LC_MESSAGES/django.mo
  26. BIN
      django_messages/locale/it/LC_MESSAGES/django.mo
  27. BIN
      django_messages/locale/ko/LC_MESSAGES/django.mo
  28. BIN
      django_messages/locale/lt/LC_MESSAGES/django.mo
  29. BIN
      django_messages/locale/nl/LC_MESSAGES/django.mo
  30. BIN
      django_messages/locale/pl/LC_MESSAGES/django.mo
  31. BIN
      django_messages/locale/pt_BR/LC_MESSAGES/django.mo
  32. BIN
      django_messages/locale/ro/LC_MESSAGES/django.mo
  33. BIN
      django_messages/locale/ru/LC_MESSAGES/django.mo
  34. BIN
      django_messages/locale/zh_CN/LC_MESSAGES/django.mo
  35. 4
      taskapp/models.py
  36. 2
      taskapp/templates/taskapp/tasklist.html
  37. 2
      taskapp/templates/taskapp/tasklist_active.html
  38. 2
      taskapp/templates/taskapp/tasklist_all.html
  39. 2
      taskapp/templates/taskapp/tasklist_finish.html
  40. 2
      taskapp/templates/taskapp/tasklist_own.html
  41. 6
      templates/base.html

BIN
abonapp/locale/ru/LC_MESSAGES/django.mo

38
abonapp/templates/abonapp/editAbon.html

@ -12,59 +12,59 @@
<form role="form" class="form-horizontal" action="{% url 'abonapp:abon_home' abon_group.id abon.id %}" method="post"> {% csrf_token %} <form role="form" class="form-horizontal" action="{% url 'abonapp:abon_home' abon_group.id abon.id %}" method="post"> {% csrf_token %}
<div class="form-group-sm"> <div class="form-group-sm">
<label for="id_username" class="col-sm-2 control-label">{% trans 'login' %}</label>
<div class="col-sm-10">
<label for="id_username" class="col-sm-4 control-label">{% trans 'login' %}</label>
<div class="col-sm-8">
{{ form.username }}{{ form.username.errors }} {{ form.username }}{{ form.username.errors }}
</div> </div>
</div> </div>
<div class="form-group-sm"> <div class="form-group-sm">
<label for="id_fio" class="col-sm-2 control-label">{% trans 'fio' %}</label>
<div class="col-sm-10">
<label for="id_fio" class="col-sm-4 control-label">{% trans 'fio' %}</label>
<div class="col-sm-8">
{{ form.fio }}{{ form.fio.errors }} {{ form.fio }}{{ form.fio.errors }}
</div> </div>
</div> </div>
<div class="form-group-sm"> <div class="form-group-sm">
<label for="id_telephone" class="col-sm-2 control-label">{% trans 'Telephone' %}</label>
<div class="col-sm-10">
<label for="id_telephone" class="col-sm-4 control-label">{% trans 'Telephone' %}</label>
<div class="col-sm-8">
{{ form.telephone }}{{ form.telephone.errors }} {{ form.telephone }}{{ form.telephone.errors }}
</div> </div>
</div> </div>
<div class="form-group-sm"> <div class="form-group-sm">
<label for="id_street" class="col-sm-2 control-label">{% trans 'Street' %}</label>
<label for="id_street" class="col-sm-4 control-label">{% trans 'Street' %}</label>
<div class="col-sm-10">
<div class="col-sm-8">
{{ form.street }}{{ form.street.errors }} {{ form.street }}{{ form.street.errors }}
</div> </div>
</div> </div>
<div class="form-group-sm"> <div class="form-group-sm">
<label for="id_house" class="col-sm-2 control-label">{% trans 'House' %}</label>
<label for="id_house" class="col-sm-4 control-label">{% trans 'House' %}</label>
<div class="col-sm-10">
<div class="col-sm-8">
{{ form.house }}{{ form.house.errors }} {{ form.house }}{{ form.house.errors }}
</div> </div>
</div> </div>
<div class="form-group-sm"> <div class="form-group-sm">
<label for="id_is_active" class="col-sm-2 control-label">{% trans 'Is active' %}</label>
<div class="col-sm-10">
<label for="id_is_active" class="col-sm-4 control-label">{% trans 'Is active' %}</label>
<div class="col-sm-8">
{{ form.is_active }} {{ form.is_active }}
</div> </div>
</div> </div>
<div class="form-group-sm"> <div class="form-group-sm">
<label for="id_group" class="col-sm-2 control-label">{% trans 'User group' %}</label>
<div class="col-sm-10">
<label for="id_group" class="col-sm-4 control-label">{% trans 'User group' %}</label>
<div class="col-sm-8">
{{ form.group }}{{ form.group.errors }} {{ form.group }}{{ form.group.errors }}
</div> </div>
</div> </div>
<div class="form-group-sm"> <div class="form-group-sm">
<label for="id_password" class="col-sm-2 control-label">{% trans 'Password' %}</label>
<div class="col-sm-10">
<label for="id_password" class="col-sm-4 control-label">{% trans 'Password' %}</label>
<div class="col-sm-8">
<div class="input-group input-group-sm"> <div class="input-group input-group-sm">
{{ form.password }}{{ form.password.errors }} {{ form.password }}{{ form.password.errors }}
<span class="input-group-btn"> <span class="input-group-btn">
@ -77,14 +77,14 @@
</div> </div>
<div class="form-group-sm"> <div class="form-group-sm">
<label for="id_description" class="col-sm-2 control-label">{% trans 'Comment' %}</label>
<div class="col-sm-10">
<label for="id_description" class="col-sm-4 control-label">{% trans 'Comment' %}</label>
<div class="col-sm-8">
{{ form.description }}{{ form.description.errors }} {{ form.description }}{{ form.description.errors }}
</div> </div>
</div> </div>
<div class="form-group-sm"> <div class="form-group-sm">
<div class="col-sm-offset-2 col-sm-10 btn-group">
<div class="col-sm-offset-4 col-sm-8 btn-group btn-group-sm">
<button type="submit" class="btn btn-primary btn-sm"> <button type="submit" class="btn btn-primary btn-sm">
<span class="glyphicon glyphicon-save"></span> {% trans 'Save' %} <span class="glyphicon glyphicon-save"></span> {% trans 'Save' %}
</button> </button>

2
abonapp/views.py

@ -8,7 +8,7 @@ from django.contrib.auth.decorators import login_required, permission_required
from django.utils import timezone from django.utils import timezone
from django.http import HttpResponse from django.http import HttpResponse
from django.contrib import messages from django.contrib import messages
from django.utils.translation import ugettext as _
from django.utils.translation import ugettext_lazy as _
from tariff_app.models import Tariff from tariff_app.models import Tariff
from agent import NasFailedResult, Transmitter, NasNetworkError from agent import NasFailedResult, Transmitter, NasNetworkError

BIN
accounts_app/locale/ru/LC_MESSAGES/django.mo

7
accounts_app/templates/accounts/login.html

@ -11,8 +11,7 @@
background-color: #ececec; background-color: #ececec;
} }
.form-signin { .form-signin {
max-width: 35%;
min-width: 222px;
width: 478px;
margin: 10% auto; margin: 10% auto;
position: relative; position: relative;
} }
@ -50,10 +49,10 @@
<div class="btn-group"> <div class="btn-group">
<button type="submit" class="btn btn-sm btn-primary"> <button type="submit" class="btn btn-sm btn-primary">
<span class="glyphicon glyphicon-save"></span> {% trans 'Login' %}
<span class="glyphicon glyphicon-log-in"></span> {% trans 'Login' %}
</button> </button>
<button type="reset" class="btn btn-sm btn-default"> <button type="reset" class="btn btn-sm btn-default">
<span class="glyphicon glyphicon-remove-circle"></span> {% trans 'Reset' %}
<span class="glyphicon glyphicon-remove-sign"></span> {% trans 'Reset' %}
</button> </button>
</div> </div>

3
devapp/dev_types.py

@ -1,5 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from mydefs import RuTimedelta, safe_int from mydefs import RuTimedelta, safe_int
from datetime import timedelta
from .base_intr import DevBase, SNMPBaseWorker, BasePort from .base_intr import DevBase, SNMPBaseWorker, BasePort
@ -77,7 +78,7 @@ class DLinkDevice(DevBase, SNMPBaseWorker):
def uptime(self): def uptime(self):
uptimestamp = safe_int(self.get_item(oids['uptime'])) uptimestamp = safe_int(self.get_item(oids['uptime']))
tm = RuTimedelta(seconds=uptimestamp/100) or RuTimedelta()
tm = RuTimedelta(timedelta(seconds=uptimestamp/100)) or RuTimedelta()
return tm return tm

1
devapp/models.py

@ -18,6 +18,7 @@ class Device(models.Model):
devtype = models.CharField(max_length=2, default=DEVICE_TYPES[0][0], choices=_DeviceChoicesAdapter()) devtype = models.CharField(max_length=2, default=DEVICE_TYPES[0][0], choices=_DeviceChoicesAdapter())
man_passw = models.CharField(max_length=16, null=True, blank=True) man_passw = models.CharField(max_length=16, null=True, blank=True)
map_dot = models.ForeignKey(Dot, on_delete=models.SET_NULL, null=True, blank=True) map_dot = models.ForeignKey(Dot, on_delete=models.SET_NULL, null=True, blank=True)
user_group = models.ForeignKey('abonapp.AbonGroup', on_delete=models.SET_NULL, null=True, blank=True)
class Meta: class Meta:
db_table = 'dev' db_table = 'dev'

92
devapp/templates/devapp/add_dev.html

@ -0,0 +1,92 @@
{% extends request.is_ajax|yesno:'bajax.html,base.html' %}
{% load i18n %}
{% block main %}
<ol class="breadcrumb">
<li><span class="glyphicon glyphicon-home"></span></li>
<li><a href="{% url 'devapp:group_list' %}">{% trans 'Groups' %}</a></li>
<li class="active">{% trans 'Add new device' %}</li>
</ol>
{% include 'message_block.html' %}
<div class="page-header">
<h2>{{ dev.comment|default:_('Not assigned') }}</h2>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">{% trans 'Device info' %}</h3>
</div>
<div class="panel-body">
<form role="form" action="{% url 'devapp:add' %}" method="post">{% csrf_token %}
<div class="form-group">
<label for="id_ip_address">{% trans 'Ip address' %}</label>
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-globe"></span></span>
{{ form.ip_address }}{{ form.ip_address.errors }}
</div>
</div>
<div class="form-group">
<label for="id_comment">{% trans 'Comment' %}</label>
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-comment"></span></span>
{{ form.comment }}{{ form.comment.errors }}
</div>
</div>
<div class="form-group">
<label for="id_devtype">{% trans 'Device type' %}</label>
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-hdd"></span></span>
{{ form.devtype }}{{ form.devtype.errors }}
</div>
</div>
<div class="form-group">
<label for="id_man_passw">{% trans 'SNMP password' %}</label>
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></span>
{{ form.man_passw }}{{ form.man_passw.errors }}
</div>
</div>
<div class="form-group">
<label for="id_map_dot">{% trans 'Map point' %}</label>
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-map-marker"></span></span>
{{ form.map_dot }}{{ form.devtype.errors }}
</div>
</div>
<div class="form-group">
<label for="id_user_group">{% trans 'User group' %}</label>
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-subscript"></span></span>
{{ form.user_group }}{{ form.user_group.errors }}
</div>
</div>
<div class="btn-group">
<button type="submit" class="btn btn-sm btn-primary">
<span class="glyphicon glyphicon-save"></span> {% trans 'Save' %}
</button>
<button type="reset" class="btn btn-sm btn-default">
<span class="glyphicon glyphicon-remove-circle"></span> {% trans 'Reset' %}
</button>
</div>
</form>
</div>
</div>
{% endblock %}

16
devapp/templates/devapp/dev.html

@ -8,12 +8,7 @@
</div> </div>
<div class="panel-body"> <div class="panel-body">
<form role="form" action="
{% if dev.id == 0 %}
{% url 'devapp:add' %}
{% else %}
{% url 'devapp:edit' dev.id %}
{% endif %}" method="post">{% csrf_token %}
<form role="form" action="{% url 'devapp:edit' dev.user_group.pk|default:0 dev.pk %}" method="post">{% csrf_token %}
<div class="form-group"> <div class="form-group">
<label for="id_ip_address">{% trans 'Ip address' %}</label> <label for="id_ip_address">{% trans 'Ip address' %}</label>
@ -60,6 +55,15 @@
</div> </div>
</div> </div>
<div class="form-group">
<label for="id_user_group">{% trans 'User group' %}</label>
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-subscript"></span></span>
{{ form.user_group }}{{ form.user_group.errors }}
</div>
</div>
<div class="btn-group"> <div class="btn-group">
<button type="submit" class="btn btn-sm btn-primary"> <button type="submit" class="btn btn-sm btn-primary">
<span class="glyphicon glyphicon-save"></span> {% trans 'Save' %} <span class="glyphicon glyphicon-save"></span> {% trans 'Save' %}

20
devapp/templates/devapp/devices.html

@ -4,7 +4,8 @@
<ol class="breadcrumb"> <ol class="breadcrumb">
<li><span class="glyphicon glyphicon-home"></span></li> <li><span class="glyphicon glyphicon-home"></span></li>
<li class="active">{% trans 'Devices' %}</li>
<li><a href="{% url 'devapp:group_list' %}">{% trans 'Groups' %}</a></li>
<li class="active">{{ group.title }}</li>
</ol> </ol>
{% include 'message_block.html' %} {% include 'message_block.html' %}
@ -15,19 +16,19 @@
<thead> <thead>
<tr> <tr>
<th> <th>
<a href="{% url 'devapp:devs' %}?order_by=ip_address&dir={{ dir|default:"down" }}">
<a href="{% url 'devapp:devs' group.pk %}?order_by=ip_address&dir={{ dir|default:"down" }}">
{% trans 'Ip address' %} {% trans 'Ip address' %}
</a> </a>
{% if order_by == 'ip_address' %}<span class="glyphicon glyphicon-filter"></span>{% endif %} {% if order_by == 'ip_address' %}<span class="glyphicon glyphicon-filter"></span>{% endif %}
</th> </th>
<th> <th>
<a href="{% url 'devapp:devs' %}?order_by=comment&dir={{ dir|default:"down" }}">
<a href="{% url 'devapp:devs' group.pk %}?order_by=comment&dir={{ dir|default:"down" }}">
{% trans 'Comment' %} {% trans 'Comment' %}
</a> </a>
{% if order_by == 'comment' %}<span class="glyphicon glyphicon-filter"></span>{% endif %} {% if order_by == 'comment' %}<span class="glyphicon glyphicon-filter"></span>{% endif %}
</th> </th>
<th width="250"> <th width="250">
<a href="{% url 'devapp:devs' %}?order_by=devtype&dir={{ dir|default:"down" }}">
<a href="{% url 'devapp:devs' group.pk %}?order_by=devtype&dir={{ dir|default:"down" }}">
{% trans 'Device type' %} {% trans 'Device type' %}
</a> </a>
{% if order_by == 'devtype' %}<span class="glyphicon glyphicon-filter"></span>{% endif %} {% if order_by == 'devtype' %}<span class="glyphicon glyphicon-filter"></span>{% endif %}
@ -39,15 +40,20 @@
<tbody> <tbody>
{% for dev in devices %} {% for dev in devices %}
<tr> <tr>
<td><a href="{% url 'devapp:view' dev.id %}">{{ dev.ip_address }}</a></td>
<td><a href="{% url 'devapp:view' dev.user_group.pk|default:0 dev.pk %}">{{ dev.ip_address }}</a></td>
<td>{{ dev.comment }}</td> <td>{{ dev.comment }}</td>
<td>{{ dev.get_devtype_display }}</td> <td>{{ dev.get_devtype_display }}</td>
<td>
<td class="btn-group btn-group-sm">
{% if perms.devapp.delete_device %} {% if perms.devapp.delete_device %}
<a href="{% url 'devapp:del' dev.id %}" class="btn btn-danger btn-sm">
<a href="{% url 'devapp:del' dev.user_group.pk|default:0 dev.pk %}" class="btn btn-default btn-sm">
<span class="glyphicon glyphicon-remove"></span> <span class="glyphicon glyphicon-remove"></span>
</a> </a>
{% endif %} {% endif %}
{% if perms.devapp.change_device %}
<a href="{% url 'devapp:edit' dev.user_group.pk|default:0 dev.id %}" class="btn btn-default btn-sm">
<span class="glyphicon glyphicon-edit"></span>
</a>
{% endif %}
</td> </td>
</tr> </tr>
{% empty %} {% empty %}

81
devapp/templates/devapp/devices_null_group.html

@ -0,0 +1,81 @@
{% extends request.is_ajax|yesno:'bajax.html,base.html' %}
{% load i18n %}
{% block main %}
<ol class="breadcrumb">
<li><span class="glyphicon glyphicon-home"></span></li>
<li><a href="{% url 'devapp:group_list' %}">{% trans 'Groups' %}</a></li>
<li class="active">{% trans 'Devices' %}</li>
</ol>
{% include 'message_block.html' %}
<h3>{% trans 'Devices without group' %}</h3>
<div class="table-responsive">
<table class="table table-striped table-bordered">
<thead>
<tr>
<th>
<a href="{% url 'devapp:devices_null_group' %}?order_by=ip_address&dir={{ dir|default:"down" }}">
{% trans 'Ip address' %}
</a>
{% if order_by == 'ip_address' %}<span class="glyphicon glyphicon-filter"></span>{% endif %}
</th>
<th>
<a href="{% url 'devapp:devices_null_group' %}?order_by=comment&dir={{ dir|default:"down" }}">
{% trans 'Comment' %}
</a>
{% if order_by == 'comment' %}<span class="glyphicon glyphicon-filter"></span>{% endif %}
</th>
<th width="250">
<a href="{% url 'devapp:devices_null_group' %}?order_by=devtype&dir={{ dir|default:"down" }}">
{% trans 'Device type' %}
</a>
{% if order_by == 'devtype' %}<span class="glyphicon glyphicon-filter"></span>{% endif %}
</th>
<th width="100">Do</th>
</tr>
</thead>
<tbody>
{% for dev in devices %}
<tr>
<td><a href="{% url 'devapp:view' dev.user_group.pk|default:0 dev.id %}">{{ dev.ip_address }}</a></td>
<td>{{ dev.comment }}</td>
<td>{{ dev.get_devtype_display }}</td>
<td class="btn-group btn-group-sm">
{% if perms.devapp.delete_device %}
<a href="{% url 'devapp:del' dev.user_group.pk|default:0 dev.id %}" class="btn btn-danger btn-sm">
<span class="glyphicon glyphicon-remove"></span>
</a>
{% endif %}
{% if perms.devapp.change_device %}
<a href="{% url 'devapp:edit' dev.user_group.pk|default:0 dev.id %}" class="btn btn-default btn-sm">
<span class="glyphicon glyphicon-edit"></span>
</a>
{% endif %}
</td>
</tr>
{% empty %}
<tr>
<td colspan="4">{% trans 'Devices does not found' %}. <a href="{% url 'devapp:add' %}">{% trans 'Create' %}</a></td>
</tr>
{% endfor %}
</tbody>
<tfoot>
<tr>
<td colspan="4">
<a href="{% url 'devapp:add' %}" class="btn btn-success btn-sm">
<span class="glyphicon glyphicon-plus"></span> {% trans 'Create' %}
</a>
</td>
</tr>
</tfoot>
</table>
</div>
{% include 'toolbar_page.html' with pag=devices %}
{% endblock %}

15
devapp/templates/devapp/ext.htm

@ -4,8 +4,13 @@
<ol class="breadcrumb"> <ol class="breadcrumb">
<li><span class="glyphicon glyphicon-home"></span></li> <li><span class="glyphicon glyphicon-home"></span></li>
<li><a href="{% url 'devapp:devs' %}">{% trans 'Devices' %}</a></li>
<li class="active">{{ dev.ip_address }}</li>
<li><a href="{% url 'devapp:group_list' %}">{% trans 'Groups' %}</a></li>
{% if dev.user_group %}
<li><a href="{% url 'devapp:devs' dev.user_group.pk %}">{{ dev.user_group.title }}</a></li>
{% else %}
<li>{% trans 'Not assigned' %}</li>
{% endif %}
<li class="active">{{ dev.comment }}</li>
</ol> </ol>
{% include 'message_block.html' %} {% include 'message_block.html' %}
@ -16,17 +21,19 @@
<ul class="nav nav-tabs"> <ul class="nav nav-tabs">
{% url 'devapp:view' dev.id as devapp_view %}
{% url 'devapp:view' dev.user_group.pk|default:0 dev.id as devapp_view %}
<li{% if devapp_view == request.path %} class="active"{% endif %}> <li{% if devapp_view == request.path %} class="active"{% endif %}>
<a href="{{ devapp_view }}"> <a href="{{ devapp_view }}">
{% trans 'Ports' %} {{ dev.ip_address }} {% trans 'Ports' %} {{ dev.ip_address }}
</a> </a>
</li> </li>
{% url 'devapp:edit' dev.id as devapp_edit %}
{% if perms.devapp.change_device %}
{% url 'devapp:edit' dev.user_group.pk|default:0 dev.id as devapp_edit %}
<li{% if devapp_edit == request.path %} class="active"{% endif %}> <li{% if devapp_edit == request.path %} class="active"{% endif %}>
<a href="{{ devapp_edit }}">{% trans 'Edit' %}</a> <a href="{{ devapp_edit }}">{% trans 'Edit' %}</a>
</li> </li>
{% endif %}
</ul> </ul>
<div class="tab-content"> <div class="tab-content">

51
devapp/templates/devapp/group_list.html

@ -0,0 +1,51 @@
{% extends 'base.html' %}
{% load i18n %}
{% block main %}
<ol class="breadcrumb">
<li><span class="glyphicon glyphicon-home"></span></li>
<li class="active">{% trans 'Groups' %}</li>
</ol>
<h3>{% trans 'Groups' %}</h3>
{% include 'message_block.html' %}
<div class="table-responsive">
<table class="table table-striped table-bordered">
<thead>
<tr>
<th>{% trans 'Group title' %}</th>
</tr>
</thead>
<tbody>
{% for gr in groups %}
<tr>
<td><a href="{% url 'devapp:devs' gr.id %}">{{ gr.title }}</a></td>
</tr>
{% empty %}
<tr>
<td><a href="#">{% trans 'Groups was not found' %}</a></td>
</tr>
{% endfor %}
</tbody>
<tfoot>
<tr>
<td class="btn-group">
{% if perms.abonapp.add_abongroup %}
<a href="{% url 'abonapp:add_group' %}" class="btn btn-success btn-sm">
<span class="glyphicon glyphicon-plus"></span> {% trans 'Add group' %}
</a>
{% endif %}
<a href="{% url 'devapp:devices_null_group' %}" class="btn btn-primary btn-sm">
<span class="glyphicon glyphicon-list-alt"></span> {% trans 'Devices without group' %}
</a>
</td>
</tr>
</tfoot>
</table>
</div>
{% include 'toolbar_page.html' with pag=groups %}
{% endblock %}

4
devapp/templates/devapp/ports.html

@ -30,10 +30,10 @@
<b>{{ port.num }}</b> <b>{{ port.num }}</b>
</a> </a>
<div class="btn-group btn-group-xs btn-group-justified"> <div class="btn-group btn-group-xs btn-group-justified">
<a href="{% url 'devapp:port_toggle' dev.id port.num 1 %}" class="btn btn-success">
<a href="{% url 'devapp:port_toggle' dev.user_group.pk|default:0 dev.id port.num 1 %}" class="btn btn-success">
<span class="glyphicon glyphicon-ok"></span> <span class="glyphicon glyphicon-ok"></span>
</a> </a>
<a href="{% url 'devapp:port_toggle' dev.id port.num 0 %}" class="btn btn-danger">
<a href="{% url 'devapp:port_toggle' dev.user_group.pk|default:0 dev.id port.num 0 %}" class="btn btn-danger">
<span class="glyphicon glyphicon-off"></span> <span class="glyphicon glyphicon-off"></span>
</a> </a>
</div> </div>

12
devapp/urls.py

@ -4,10 +4,12 @@ from . import views
urlpatterns = [ urlpatterns = [
url(r'^$', views.devices, name='devs'),
url(r'^$', views.group_list, name='group_list'),
url(r'^add$', views.dev, name='add'), url(r'^add$', views.dev, name='add'),
url(r'^(?P<did>\d+)$', views.devview, name='view'),
url(r'^(?P<did>\d+)/del$', views.devdel, name='del'),
url(r'^(?P<devid>\d+)/edit$', views.dev, name='edit'),
url(r'^(?P<did>\d+)/(?P<portid>\d+)_(?P<status>[0-1]{1})$', views.toggle_port, name='port_toggle')
url(r'^devices_without_groups$', views.devices_null_group, name='devices_null_group'),
url(r'^(?P<grp>\d+)$', views.devices, name='devs'),
url(r'^(\d+)/(?P<did>\d+)$', views.devview, name='view'),
url(r'^(\d+)/(?P<did>\d+)/del$', views.devdel, name='del'),
url(r'^(\d+)/(?P<devid>\d+)/edit$', views.dev, name='edit'),
url(r'^(\d+)/(?P<did>\d+)/(?P<portid>\d+)_(?P<status>[0-1]{1})$', views.toggle_port, name='port_toggle')
] ]

53
devapp/views.py

@ -1,31 +1,50 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django.contrib.auth.decorators import login_required, permission_required from django.contrib.auth.decorators import login_required, permission_required
from django.core.exceptions import PermissionDenied from django.core.exceptions import PermissionDenied
from django.shortcuts import render, redirect, get_object_or_404
from django.shortcuts import render, redirect, get_object_or_404, resolve_url
from django.contrib import messages from django.contrib import messages
from django.utils.translation import ugettext as _
from django.utils.translation import ugettext_lazy as _
from easysnmp import EasySNMPTimeoutError from easysnmp import EasySNMPTimeoutError
from .models import Device from .models import Device
from mydefs import pag_mn, res_success, res_error, only_admins, ping, order_helper from mydefs import pag_mn, res_success, res_error, only_admins, ping, order_helper
from .forms import DeviceForm from .forms import DeviceForm
from abonapp.models import AbonGroup
@login_required @login_required
@only_admins @only_admins
def devices(request):
devs = Device.objects.all()
def devices(request, grp):
group = get_object_or_404(AbonGroup, pk=grp)
devs = Device.objects.filter(user_group=grp)
# фильтр # фильтр
dr, field = order_helper(request) dr, field = order_helper(request)
if field: if field:
devs = devs.order_by(field) devs = devs.order_by(field)
print(type(request.GET), request.GET)
import django.http.request
devs = pag_mn(request, devs) devs = pag_mn(request, devs)
return render(request, 'devapp/devices.html', { return render(request, 'devapp/devices.html', {
'devices': devs,
'dir': dr,
'order_by': request.GET.get('order_by'),
'group': group
})
@login_required
@only_admins
def devices_null_group(request):
devs = Device.objects.all()
# фильтр
dr, field = order_helper(request)
if field:
devs = devs.order_by(field)
devs = pag_mn(request, devs)
return render(request, 'devapp/devices_null_group.html', {
'devices': devs, 'devices': devs,
'dir': dr, 'dir': dr,
'order_by': request.GET.get('order_by') 'order_by': request.GET.get('order_by')
@ -36,8 +55,10 @@ def devices(request):
@permission_required('devapp.delete_device') @permission_required('devapp.delete_device')
def devdel(request, did): def devdel(request, did):
try: try:
Device.objects.get(pk=did).delete()
return res_success(request, 'devapp:devs')
dev = Device.objects.get(pk=did)
back_url = resolve_url('devapp:devs', grp=dev.user_group.pk if dev.user_group else 0)
dev.delete()
return res_success(request, back_url)
except Device.DoesNotExist: except Device.DoesNotExist:
return res_error(request, _('Delete failed')) return res_error(request, _('Delete failed'))
@ -63,6 +84,11 @@ def dev(request, devid=0):
else: else:
frm = DeviceForm(instance=devinst) frm = DeviceForm(instance=devinst)
if devinst is None:
return render(request, 'devapp/add_dev.html', {
'form': frm
})
else:
return render(request, 'devapp/dev.html', { return render(request, 'devapp/dev.html', {
'form': frm, 'form': frm,
'dev': devinst 'dev': devinst
@ -114,4 +140,13 @@ def toggle_port(request, did, portid, status=0):
messages.warning(request, _('Not Set snmp device password')) messages.warning(request, _('Not Set snmp device password'))
else: else:
messages.error(request, _('Dot was not pinged')) messages.error(request, _('Dot was not pinged'))
return redirect('devapp:view', did=did)
return redirect('devapp:view', dev.user_group or 0, did)
@login_required
@only_admins
def group_list(request):
groups = AbonGroup.objects.all()
return render(request, 'devapp/group_list.html', {
'groups': groups
})

BIN
django_messages/locale/ar/LC_MESSAGES/django.mo

BIN
django_messages/locale/cs/LC_MESSAGES/django.mo

BIN
django_messages/locale/da/LC_MESSAGES/django.mo

BIN
django_messages/locale/de/LC_MESSAGES/django.mo

BIN
django_messages/locale/el/LC_MESSAGES/django.mo

BIN
django_messages/locale/es/LC_MESSAGES/django.mo

BIN
django_messages/locale/es_AR/LC_MESSAGES/django.mo

BIN
django_messages/locale/fa/LC_MESSAGES/django.mo

BIN
django_messages/locale/fr/LC_MESSAGES/django.mo

BIN
django_messages/locale/it/LC_MESSAGES/django.mo

BIN
django_messages/locale/ko/LC_MESSAGES/django.mo

BIN
django_messages/locale/lt/LC_MESSAGES/django.mo

BIN
django_messages/locale/nl/LC_MESSAGES/django.mo

BIN
django_messages/locale/pl/LC_MESSAGES/django.mo

BIN
django_messages/locale/pt_BR/LC_MESSAGES/django.mo

BIN
django_messages/locale/ro/LC_MESSAGES/django.mo

BIN
django_messages/locale/ru/LC_MESSAGES/django.mo

BIN
django_messages/locale/zh_CN/LC_MESSAGES/django.mo

4
taskapp/models.py

@ -1,5 +1,6 @@
# coding=utf-8 # coding=utf-8
from datetime import timedelta from datetime import timedelta
import os
from django.db import models from django.db import models
from django.conf import settings from django.conf import settings
from django.utils import timezone from django.utils import timezone
@ -96,6 +97,9 @@ class Task(models.Model):
) )
self.save(update_fields=['state']) self.save(update_fields=['state'])
def get_attachment_fname(self):
return os.path.basename(self.attachment.name)
def task_handler(sender, instance, **kwargs): def task_handler(sender, instance, **kwargs):
group = '' group = ''

2
taskapp/templates/taskapp/tasklist.html

@ -36,7 +36,7 @@
<td>{{ task.get_state_display }}</td> <td>{{ task.get_state_display }}</td>
<td>{{ task.get_priority_display }}</td> <td>{{ task.get_priority_display }}</td>
<td>{{ task.time_of_create|date:'d N Y H:i:s' }}</td> <td>{{ task.time_of_create|date:'d N Y H:i:s' }}</td>
<td>{% if task.attachment %}<a href="{{ task.attachment.url }}" target="_blank">{{ task.attachment.name }}</a>{% else %}&horbar;{% endif %}</td>
<td>{% if task.attachment %}<a href="{{ task.attachment.url }}" target="_blank">{{ task.get_attachment_fname|truncatechars:32|truncatechars:32 }}</a>{% else %}&horbar;{% endif %}</td>
<td colspan="3" class="btn-group btn-group-justified"> <td colspan="3" class="btn-group btn-group-justified">
<a href="{% url 'taskapp:begin' task.id %}" class="btn btn-primary btn-xs" title="{% trans 'Begin' %}"> <a href="{% url 'taskapp:begin' task.id %}" class="btn btn-primary btn-xs" title="{% trans 'Begin' %}">
<span class="glyphicon glyphicon-cog"></span> <span class="glyphicon glyphicon-cog"></span>

2
taskapp/templates/taskapp/tasklist_active.html

@ -37,7 +37,7 @@
<td>{{ task.get_state_display }}</td> <td>{{ task.get_state_display }}</td>
<td>{{ task.get_priority_display }}</td> <td>{{ task.get_priority_display }}</td>
<td>{{ task.time_of_create|date:'d N Y H:i:s' }}</td> <td>{{ task.time_of_create|date:'d N Y H:i:s' }}</td>
<td>{% if task.attachment %}<a href="{{ task.attachment.url }}" target="_blank">{{ task.attachment.name }}</a>{% else %}&horbar;{% endif %}</td>
<td>{% if task.attachment %}<a href="{{ task.attachment.url }}" target="_blank">{{ task.get_attachment_fname|truncatechars:32 }}</a>{% else %}&horbar;{% endif %}</td>
<td colspan="3" class="btn-group"> <td colspan="3" class="btn-group">
<a href="{% url 'taskapp:finish' task.id %}" class="btn btn-sm btn-success" title="{% trans 'Complete' %}"> <a href="{% url 'taskapp:finish' task.id %}" class="btn btn-sm btn-success" title="{% trans 'Complete' %}">
<span class="glyphicon glyphicon-ok"></span> <span class="glyphicon glyphicon-ok"></span>

2
taskapp/templates/taskapp/tasklist_all.html

@ -48,7 +48,7 @@
<td>{{ task.get_state_display }}</td> <td>{{ task.get_state_display }}</td>
<td>{{ task.get_priority_display }}</td> <td>{{ task.get_priority_display }}</td>
<td>{{ task.time_of_create|date:'d N Y H:i:s' }}</td> <td>{{ task.time_of_create|date:'d N Y H:i:s' }}</td>
<td>{% if task.attachment %}<a href="{{ task.attachment.url }}" target="_blank">{{ task.attachment.name }}</a>{% else %}&horbar;{% endif %}</td>
<td>{% if task.attachment %}<a href="{{ task.attachment.url }}" target="_blank">{{ task.get_attachment_fname|truncatechars:32 }}</a>{% else %}&horbar;{% endif %}</td>
<td colspan="3" class="btn-group btn-group-justified"> <td colspan="3" class="btn-group btn-group-justified">
{% if perms.taskapp.change_task %} {% if perms.taskapp.change_task %}
<a href="{% url 'taskapp:edit' task.id %}" class="btn btn-default btn-sm" title="{% trans 'Edit' %}"> <a href="{% url 'taskapp:edit' task.id %}" class="btn btn-default btn-sm" title="{% trans 'Edit' %}">

2
taskapp/templates/taskapp/tasklist_finish.html

@ -37,7 +37,7 @@
<td>{{ task.get_state_display }}</td> <td>{{ task.get_state_display }}</td>
<td>{{ task.get_priority_display }}</td> <td>{{ task.get_priority_display }}</td>
<td>{{ task.time_of_create|date:'d N Y H:i:s' }}</td> <td>{{ task.time_of_create|date:'d N Y H:i:s' }}</td>
<td>{% if task.attachment %}<a href="{{ task.attachment.url }}" target="_blank">{{ task.attachment.name }}</a>{% else %}&horbar;{% endif %}</td>
<td>{% if task.attachment %}<a href="{{ task.attachment.url }}" target="_blank">{{ task.get_attachment_fname|truncatechars:32 }}</a>{% else %}&horbar;{% endif %}</td>
<td colspan="3" class="btn-group"> <td colspan="3" class="btn-group">
{% if perms.taskapp.change_task %} {% if perms.taskapp.change_task %}
<a href="{% url 'taskapp:edit' task.id %}" class="btn btn-sm btn-default" title="{% trans 'Edit' %}"> <a href="{% url 'taskapp:edit' task.id %}" class="btn btn-sm btn-default" title="{% trans 'Edit' %}">

2
taskapp/templates/taskapp/tasklist_own.html

@ -34,7 +34,7 @@
<td>{{ task.get_state_display }}</td> <td>{{ task.get_state_display }}</td>
<td>{{ task.get_priority_display }}</td> <td>{{ task.get_priority_display }}</td>
<td>{{ task.time_of_create|date:'d N Y H:i:s' }}</td> <td>{{ task.time_of_create|date:'d N Y H:i:s' }}</td>
<td>{% if task.attachment %}<a href="{{ task.attachment.url }}" target="_blank">{{ task.attachment.name }}</a>{% else %}&horbar;{% endif %}</td>
<td>{% if task.attachment %}<a href="{{ task.attachment.url }}" target="_blank">{{ task.get_attachment_fname|truncatechars:32 }}</a>{% else %}&horbar;{% endif %}</td>
<td class="btn-group btn-group-justified"> <td class="btn-group btn-group-justified">
{% if perms.taskapp.change_task %} {% if perms.taskapp.change_task %}
<a href="{% url 'taskapp:edit' task.id %}" class="btn btn-sm btn-default" title="{% trans 'Edit' %}"> <a href="{% url 'taskapp:edit' task.id %}" class="btn btn-sm btn-default" title="{% trans 'Edit' %}">

6
templates/base.html

@ -70,9 +70,9 @@
<span class="glyphicon glyphicon-compressed"></span> ip пул <span class="glyphicon glyphicon-compressed"></span> ip пул
</a></li> </a></li>
{% url 'devapp:devs' as devapp_devs %}
<li{% if devapp_devs in request.path %} class="active"{% endif %}>
<a href="{{ devapp_devs }}">
{% url 'devapp:group_list' as devapp_groups %}
<li{% if devapp_groups in request.path %} class="active"{% endif %}>
<a href="{{ devapp_groups }}">
<span class="glyphicon glyphicon-hdd"></span> железки <span class="glyphicon glyphicon-hdd"></span> железки
</a></li> </a></li>

Loading…
Cancel
Save