Browse Source

fix bugs and refactoring

devel
Dmitry Novikov 8 years ago
parent
commit
8cf6ad1191
  1. 1
      abonapp/models.py
  2. 2
      abonapp/templates/abonapp/editAbon.html
  3. 32
      abonapp/templates/abonapp/modal_phonebook.html
  4. 3
      agent/commands/dhcp.py
  5. 8
      devapp/dev_types.py
  6. 3
      devapp/locale/ru/LC_MESSAGES/django.po
  7. 6
      devapp/models.py
  8. 43
      devapp/views.py
  9. 2
      queue_mngr.py
  10. 19
      static/clientside/custom.css
  11. 2
      taskapp/templates/taskapp/tasklist.html

1
abonapp/models.py

@ -172,6 +172,7 @@ class Abon(UserProfile):
('can_add_ballance', _('fill account')),
('can_ping', _('Can ping'))
)
unique_together = ('device', 'dev_port')
verbose_name = _('Abon')
verbose_name_plural = _('Abons')

2
abonapp/templates/abonapp/editAbon.html

@ -156,7 +156,7 @@
<span class="glyphicon glyphicon-hdd"></span> <span class="hidden-md">{{ device.comment|truncatechars:11 }} {{ device.ip_address }}</span>
</a>
<a href="{% url 'abonapp:clear_dev' abon_group.pk abon.pk %}" class="btn btn-sm btn-danger">
<span class="glyphicon glyphicon-remove-circle"></span> <span class="hidden-xs hidden-md hidden-sm">{% trans 'Remove clutch' %}</span>
<span class="glyphicon glyphicon-remove-circle"></span> <span class="hidden-xs hidden-lg">{% trans 'Remove clutch' %}</span>
</a>
{% else %}
<a href="{% url 'abonapp:dev' abon_group.pk abon.pk %}" class="btn btn-success btn-sm btn-modal">

32
abonapp/templates/abonapp/modal_phonebook.html

@ -0,0 +1,32 @@
{% load i18n %}
<div class="modal-header primary">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title"><span class="glyphicon glyphicon-earphone"></span>{% trans 'Phonebook' %}</h4>
</div>
<table class="table table-striped table-bordered">
<thead>
<tr>
<th>{% trans 'Telephone' %}</th>
<th>{% trans 'Telephone owner' %}</th>
</tr>
</thead>
<tbody>
{% for t in tels %}
<tr>
<td><a href="sip:{{ t.0 }}" class="btn btn-link">{{ t.0 }}</a></td>
<td>{{ t.1 }}</td>
</tr>
{% empty %}
<tr>
<td colspan="2">{% trans 'Telephone numbers not found' %}</td>
</tr>
{% endfor %}
</tbody>
</table>
<div class="modal-footer">
<a href="{% url 'abonapp:phonebook' gid %}?f=csv" class="btn btn-default" target="_blank">
<span class="glyphicon glyphicon-export"></span> {% trans 'Export to csv' %}
</a>
</div>

3
agent/commands/dhcp.py

@ -10,7 +10,6 @@ def dhcp_commit(client_ip, client_mac, switch_mac, switch_port):
dev = Device.objects.get(mac_addr=switch_mac)
mngr_class = dev.get_manager_klass()
#port = _('<never mind>')
if mngr_class.is_use_device_port():
port = Port.objects.get(device=dev, num=switch_port)
abon = Abon.objects.get(dev_port=port, device=dev)
@ -33,7 +32,7 @@ def dhcp_commit(client_ip, client_mac, switch_mac, switch_port):
except Port.DoesNotExist:
print('N:', _('Port %d on device with mac %s does not exist') % (int(switch_port), switch_mac))
except MultipleObjectsReturned as e:
print('E:', 'MultipleObjectsReturned:', type(e), e)
print('E:', 'MultipleObjectsReturned:', type(e), e, port, dev)
def dhcp_expiry(client_ip):

8
devapp/dev_types.py

@ -237,10 +237,10 @@ class EltexSwitch(DLinkDevice):
def get_ports(self):
#nams = self.get_list('.1.3.6.1.4.1.171.10.134.2.1.1.100.2.1.3')
stats = self.get_list('.1.3.6.1.2.1.2.2.1.7')
oper_stats = self.get_list('.1.3.6.1.2.1.2.2.1.8')
stats = list(self.get_list('.1.3.6.1.2.1.2.2.1.7'))
oper_stats = list(self.get_list('.1.3.6.1.2.1.2.2.1.8'))
#macs = self.get_list('.1.3.6.1.2.1.2.2.1.6')
speeds = self.get_list('.1.3.6.1.2.1.31.1.1.1.15')
speeds = list(self.get_list('.1.3.6.1.2.1.31.1.1.1.15'))
res = []
for n in range(28):
res.append(EltexPort(self,
@ -262,7 +262,7 @@ class EltexSwitch(DLinkDevice):
@staticmethod
def has_attachable_to_subscriber():
return False
return True
@staticmethod
def is_use_device_port():

3
devapp/locale/ru/LC_MESSAGES/django.po

@ -334,3 +334,6 @@ msgstr "Исправлено, обновите страницу"
msgid "Fix it"
msgstr "Исправить"
msgid "Duplicate user and port: %s"
msgstr "Пользователь с таким портом и устройством уже есть: %s"

6
devapp/models.py

@ -95,9 +95,9 @@ class Device(models.Model):
return "%s: (%s) %s %s" % (self.comment, self.get_devtype_display(), self.ip_address, self.mac_addr or '')
def update_dhcp(self):
if self.devtype != 'On':
if self.devtype not in ('On','Dl'):
return
grp = self.user_group.pk
grp = self.user_group.id
code = ''
if grp == 87:
code = 'chk'
@ -125,6 +125,8 @@ class Device(models.Model):
code = 'yst'
elif grp == 96:
code = 'lzk'
elif grp == 51:
code = 'sad'
newmac = str(self.mac_addr)
run(["%s/devapp/onu_register.sh" % settings.BASE_DIR, newmac, code])

43
devapp/views.py

@ -2,6 +2,7 @@
from django.contrib.auth.decorators import login_required
from django.contrib.gis.shortcuts import render_to_text
from django.core.exceptions import PermissionDenied
from django.db import IntegrityError
from django.db.models import Q
from django.http import HttpResponse
from django.shortcuts import render, redirect, get_object_or_404, resolve_url
@ -95,24 +96,30 @@ def dev(request, grp, devid=0):
else:
if not request.user.has_perm('devapp.change_device'):
raise PermissionDenied
frm = DeviceForm(request.POST, instance=devinst)
if frm.is_valid():
ndev = frm.save()
ndev.update_dhcp()
messages.success(request, _('Device info has been saved'))
return redirect('devapp:edit', ndev.user_group.pk, ndev.pk)
else:
try:
already_dev = Device.objects.get(mac_addr=request.POST.get('mac_addr'))
if already_dev.user_group:
messages.warning(request, _('You have redirected to existing device'))
return redirect('devapp:view', already_dev.user_group.pk, already_dev.pk)
else:
messages.warning(request, _('Please attach user group for device'))
return redirect('devapp:fix_device_group', already_dev.pk)
except Device.DoesNotExist:
pass
messages.error(request, _('Form is invalid, check fields and try again'))
try:
frm = DeviceForm(request.POST, instance=devinst)
if frm.is_valid():
ndev = frm.save()
ndev.update_dhcp()
messages.success(request, _('Device info has been saved'))
return redirect('devapp:edit', ndev.user_group.pk, ndev.pk)
else:
try:
already_dev = Device.objects.get(mac_addr=request.POST.get('mac_addr'))
if already_dev.user_group:
messages.warning(request, _('You have redirected to existing device'))
return redirect('devapp:view', already_dev.user_group.pk, already_dev.pk)
else:
messages.warning(request, _('Please attach user group for device'))
return redirect('devapp:fix_device_group', already_dev.pk)
except Device.DoesNotExist:
pass
messages.error(request, _('Form is invalid, check fields and try again'))
except IntegrityError as e:
if 'unique constraint' in e.message:
messages.error(request, _('Duplicate user and port: %s') % e)
else:
messages.error(request, e)
else:
if devinst is None:
frm = DeviceForm(initial={

2
queue_mngr.py

@ -18,7 +18,6 @@ obj = {
def on_new_data(client_sock, ip):
from agent.commands.dhcp import dhcp_commit, dhcp_expiry, dhcp_release
data = client_sock.recv(16384)
data = loads(data)
action = data['cmd']
@ -51,5 +50,6 @@ def serve(addr='127.0.0.1', port=5436):
if __name__ == '__main__':
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djing.settings")
django.setup()
from agent.commands.dhcp import dhcp_commit, dhcp_expiry, dhcp_release
serve()

19
static/clientside/custom.css

@ -12,8 +12,27 @@ body > .container {
.table thead {
background-color: #ddd;
}
/* White background in tables */
.table tr:nth-of-type(2n) {
background-color: white;
}
.modal-header{border-radius: 4px 4px 0 0;}
.modal-header.warning {background-color: #d2322d;}
.modal-header.success {background-color: #6ad245;}
.modal-header.primary {background-color: #789cbb;}
html{height: 100%;}
body{
padding: 88px 15px 0;
background-image: url(../img/Transparent_snowman_PNG.png);
background-repeat: no-repeat;
background-position: bottom left;
background-attachment: fixed;
}

2
taskapp/templates/taskapp/tasklist.html

@ -37,7 +37,7 @@
{% if task.abon and task.abon.group %}
<td><a href="{% url 'abonapp:abon_home' task.abon.group.pk task.abon.pk %}" target="_blank" title="{{ task.abon.description|default:'' }}" data-toggle="tooltip">{{ task.abon.get_full_name }}</a></td>
<td>{{ task.abon.group.title }}, {{ task.abon.street|default:_('Not assigned') }} {{ task.abon.house|default:_('Not assigned') }}</td>
<td>{{ task.abon.group.title }}, {{ task.abon.street|default:'' }} {{ task.abon.house|default:'' }}</td>
{% else %}
<td>{% trans 'User does not exist' %}</td>
<td>---</td>

Loading…
Cancel
Save