From 863008381e6b3b6c87d6752dcb8a8a15261d3661 Mon Sep 17 00:00:00 2001 From: Dmitry Date: Thu, 11 May 2017 04:29:22 +0300 Subject: [PATCH] =?UTF-8?q?=D1=83=D0=B4=D0=B0=D0=BB=D0=B8=D0=BB=20ip=5Fpoo?= =?UTF-8?q?l?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ip_pool/__init__.py | 1 - ip_pool/admin.py | 6 -- ip_pool/apps.py | 6 -- ip_pool/forms.py | 22 ------- ip_pool/migrations/0001_initial.py | 23 ------- ip_pool/migrations/__init__.py | 0 ip_pool/models.py | 59 ------------------ ip_pool/templates/ip_pool/add_pool.html | 48 --------------- ip_pool/templates/ip_pool/index.html | 73 ---------------------- ip_pool/templates/ip_pool/ips.html | 59 ------------------ ip_pool/urls.py | 15 ----- ip_pool/views.py | 81 ------------------------- 12 files changed, 393 deletions(-) delete mode 100644 ip_pool/__init__.py delete mode 100644 ip_pool/admin.py delete mode 100644 ip_pool/apps.py delete mode 100644 ip_pool/forms.py delete mode 100644 ip_pool/migrations/0001_initial.py delete mode 100644 ip_pool/migrations/__init__.py delete mode 100644 ip_pool/models.py delete mode 100644 ip_pool/templates/ip_pool/add_pool.html delete mode 100644 ip_pool/templates/ip_pool/index.html delete mode 100644 ip_pool/templates/ip_pool/ips.html delete mode 100644 ip_pool/urls.py delete mode 100644 ip_pool/views.py diff --git a/ip_pool/__init__.py b/ip_pool/__init__.py deleted file mode 100644 index 8c4aa32..0000000 --- a/ip_pool/__init__.py +++ /dev/null @@ -1 +0,0 @@ -default_app_config = 'ip_pool.apps.IpPoolConfig' diff --git a/ip_pool/admin.py b/ip_pool/admin.py deleted file mode 100644 index e98d823..0000000 --- a/ip_pool/admin.py +++ /dev/null @@ -1,6 +0,0 @@ -from django.contrib import admin - -from . import models - - -admin.site.register(models.IpPoolItem) diff --git a/ip_pool/apps.py b/ip_pool/apps.py deleted file mode 100644 index 8b8d232..0000000 --- a/ip_pool/apps.py +++ /dev/null @@ -1,6 +0,0 @@ -from django.apps import AppConfig - - -class IpPoolConfig(AppConfig): - name = 'ip_pool' - verbose_name = "Ip pool" diff --git a/ip_pool/forms.py b/ip_pool/forms.py deleted file mode 100644 index 0e6f43f..0000000 --- a/ip_pool/forms.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- -from django import forms - -from mydefs import ip_addr_regex - - -class PoolForm(forms.Form): - start_ip = forms.GenericIPAddressField(protocol='ipv4', widget=forms.TextInput(attrs={ - 'pattern': ip_addr_regex, - 'placeholder': '127.0.0.1', - 'id': 'start_ip', - 'class': 'form-control', - 'required': '' - }), required=True) - - end_ip = forms.GenericIPAddressField(protocol='ipv4', widget=forms.TextInput(attrs={ - 'pattern': ip_addr_regex, - 'placeholder': '127.0.0.1', - 'id': 'end_ip', - 'class': 'form-control', - 'required': '' - }), required=True) diff --git a/ip_pool/migrations/0001_initial.py b/ip_pool/migrations/0001_initial.py deleted file mode 100644 index fa5fcad..0000000 --- a/ip_pool/migrations/0001_initial.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9 on 2016-06-28 23:51 - -from django.db import migrations, models - -import mydefs - - -class Migration(migrations.Migration): - initial = True - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='IpPoolItem', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('ip', mydefs.MyGenericIPAddressField(max_length=8, protocol='ipv4')), - ], - ), - ] diff --git a/ip_pool/migrations/__init__.py b/ip_pool/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/ip_pool/models.py b/ip_pool/models.py deleted file mode 100644 index d76e56b..0000000 --- a/ip_pool/models.py +++ /dev/null @@ -1,59 +0,0 @@ -from django.db import models, connection - -from mydefs import ip2int, MyGenericIPAddressField - - -class IpPoolItemManager(models.Manager): - def get_pools(self): - ips = self.raw(r'SELECT id, ip FROM ip_pool_ippoolitem ORDER BY id') - ips_len = len(list(ips)) - if ips_len < 1: - return - last_dg = ip2int(ips[0].ip) - start_pool = last_dg - res = list() - cnt = 0 - for ip in ips: - ipnt = ip2int(ip.ip) - if ipnt > last_dg + 1 or ipnt < last_dg - 1: - res.append((start_pool, last_dg, cnt)) - start_pool = ipnt - cnt = 0 - last_dg = ipnt - cnt += 1 - res.append((start_pool, last_dg, cnt)) - return res - - def add_pool(self, start_ip, end_ip): - start_ip = ip2int(start_ip) - end_ip = ip2int(end_ip) - - if (end_ip - start_ip) > 5000: - raise Exception('Not add over 5000 ip\'s') - - sql_strs = [r"(%d)" % tip for tip in range(start_ip, end_ip + 1)] - sql = r'INSERT INTO ip_pool_ippoolitem (ip) VALUES %s' % r",".join(sql_strs) - - cursor = connection.cursor() - cursor.execute(sql) - - def get_free_ip(self): - sql = r'SELECT ip_pool_ippoolitem.id as id, ip_pool_ippoolitem.ip as ip FROM ip_pool_ippoolitem ' \ - r'LEFT JOIN abonent ON abonent.ip_address_id = ip_pool_ippoolitem.id WHERE ' \ - r'abonent.ip_address_id IS NULL LIMIT 1' - - rs = self.raw(sql) - rs_len = len(list(rs)) - return None if rs_len is 0 else rs[0] - - -class IpPoolItem(models.Model): - ip = MyGenericIPAddressField() - - objects = IpPoolItemManager() - - def int_ip(self): - return ip2int(self.ip) - - def __str__(self): - return self.ip diff --git a/ip_pool/templates/ip_pool/add_pool.html b/ip_pool/templates/ip_pool/add_pool.html deleted file mode 100644 index 3f0fe69..0000000 --- a/ip_pool/templates/ip_pool/add_pool.html +++ /dev/null @@ -1,48 +0,0 @@ -{% extends 'base.html' %} -{% block main %} - - - - - {% include 'message_block.html' %} - -
-
-

Добавить IP пул

-
-
- -
{% csrf_token %} -
- - -
- - {{ form.start_ip }}{{ form.start_ip.errors }} -
-
-
- - -
- - {{ form.end_ip }}{{ form.end_ip.errors }} -
-
-
- - -
-
-
-
- -{% endblock %} \ No newline at end of file diff --git a/ip_pool/templates/ip_pool/index.html b/ip_pool/templates/ip_pool/index.html deleted file mode 100644 index 01e6a44..0000000 --- a/ip_pool/templates/ip_pool/index.html +++ /dev/null @@ -1,73 +0,0 @@ -{% extends 'base.html' %} -{% block main %} - - - - - {% include 'message_block.html' %} - -

Пулы ip адресов

-
- - - - - - - - - - - - {% for pl in pools %} - - - - - - - {% empty %} - - - - {% endfor %} - - - {% if perms.ip_pool.add_ippoolitem %} - - - - - - {% endif %} - -
Начальный IPКонечный IPКоличествоРед.Уд.
{{ pl.0 }}{{ pl.1 }}{{ pl.2 }} - - - - - - {% if perms.ip_pool.delete_ippoolitem %} - - - - {% endif %} - -
Нет ни одного пула зарезервированных ip адресов. - {% if perms.ip_pool.add_ippoolitem %} - Создать - {% endif %} -
- - - -
-
- - {% include 'toolbar_page.html' with pag=pools %} - -{% endblock %} \ No newline at end of file diff --git a/ip_pool/templates/ip_pool/ips.html b/ip_pool/templates/ip_pool/ips.html deleted file mode 100644 index bc12475..0000000 --- a/ip_pool/templates/ip_pool/ips.html +++ /dev/null @@ -1,59 +0,0 @@ -{% extends 'base.html' %} -{% block main %} - - - - - -

История абонента

-
- - - - - - - - - - - {% for pi in pool_ips %} - - - - - - - {% empty %} - - - - {% endfor %} - -
IdIpКлиентУд.
{{ pi.id }}{{ pi.ip }}{% if pi.abon %} - {{ pi.abon.username }} - {% else %}---{% endif %} - - {% if pi.abon %} - - {% elif perms.ip_pool.delete_ippoolitem %} - - - - {% endif %} -
Нет ни одного пула зарезервированных ip адресов. - {% if perms.ip_pool.add_ippoolitem %} - Создать - {% endif %} -
-
- - {% include 'toolbar_page.html' with pag=pool_ips %} - -{% endblock %} \ No newline at end of file diff --git a/ip_pool/urls.py b/ip_pool/urls.py deleted file mode 100644 index de54c47..0000000 --- a/ip_pool/urls.py +++ /dev/null @@ -1,15 +0,0 @@ -# -*- coding:utf-8 -*- -from django.conf.urls import url - -from . import views - - -urlpatterns = [ - - url(r'^$', views.home, name='home'), - url(r'^range$', views.ips, name='ips'), - url(r'^del$', views.del_pool, name='ips_del'), - url(r'^add$', views.add_pool, name='add'), - - url(r'^delip$', views.delip, name='del_ip') -] diff --git a/ip_pool/views.py b/ip_pool/views.py deleted file mode 100644 index 001bf03..0000000 --- a/ip_pool/views.py +++ /dev/null @@ -1,81 +0,0 @@ -# -*- coding: utf-8 -*- -from django.contrib.auth.decorators import login_required, permission_required -from django.shortcuts import render, redirect, get_object_or_404 -from django.contrib import messages - -from .forms import PoolForm -from .models import IpPoolItem -import mydefs - - -@login_required -@mydefs.only_admins -def home(request): - pools = IpPoolItem.objects.get_pools() - - if pools: - pools = [(mydefs.int2ip(ip[0]), mydefs.int2ip(ip[1]), ip[2]) for ip in pools] - pools = mydefs.pag_mn(request, pools) - - return render(request, 'ip_pool/index.html', { - 'pools': pools - }) - - -@login_required -@mydefs.only_admins -def ips(request): - ip_start = request.GET.get('ips') - ip_end = request.GET.get('ipe') - - pool_ips = IpPoolItem.objects.filter(ip__gte=ip_start) - pool_ips = pool_ips.filter(ip__lte=ip_end) - - pool_ips = mydefs.pag_mn(request, pool_ips) - - return render(request, 'ip_pool/ips.html', { - 'pool_ips': pool_ips, - 'ips': ip_start, - 'ipe': ip_end - }) - - -@login_required -@permission_required('ip_pool.delete_ippoolitem') -def del_pool(request): - ip_start = request.GET.get('ips') - ip_end = request.GET.get('ipe') - - pool_ips = IpPoolItem.objects.filter(ip__gte=ip_start) - pool_ips = pool_ips.filter(ip__lte=ip_end) - pool_ips = pool_ips.filter() - - pool_ips.delete() - - return mydefs.res_success(request, 'ip_pool:home') - - -@login_required -@permission_required('ip_pool.add_ippoolitem') -def add_pool(request): - if request.method == 'POST': - frm = PoolForm(request.POST) - if frm.is_valid(): - cd = frm.cleaned_data - IpPoolItem.objects.add_pool(cd['start_ip'], cd['end_ip']) - return redirect('ip_pool:home') - else: - messages.error(request, 'Исправьте ошибки') - else: - frm = PoolForm() - return render(request, 'ip_pool/add_pool.html', { - 'form': frm - }) - - -@login_required -@permission_required('ip_pool.delete_ippoolitem') -def delip(request): - ipid = request.GET.get('id') - get_object_or_404(IpPoolItem, id=ipid).delete() - return mydefs.res_success(request, 'ip_pool:home')