diff --git a/abonapp/migrations/0002_ip_address_change.py b/abonapp/migrations/0002_ip_address_change.py new file mode 100644 index 0000000..29ddc52 --- /dev/null +++ b/abonapp/migrations/0002_ip_address_change.py @@ -0,0 +1,103 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11 on 2018-06-12 12:05 +from __future__ import unicode_literals +import os +import re +from json import load + +import django.core.validators +from django.db import migrations, models +from django.core import serializers + + +TMP_FILE = '/tmp/djing_ip_field_abonapp_migrate.json' + + +def backup_info(apps, _): + Abon = apps.get_model('abonapp', 'Abon') + obs = Abon.objects.all() + with open(TMP_FILE, 'w') as f: + serializers.serialize('json', obs, stream=f) + + +def restore_info_to_new_scheme(apps, _): + Abon = apps.get_model('abonapp', 'Abon') + with open(TMP_FILE, 'r') as f: + for abon in load(f): + Abon.objects.filter(pk=abon['pk']).update(ip_address=abon['fields']['ip_address']) + if os.path.isfile(TMP_FILE): + os.remove(TMP_FILE) + + +class Migration(migrations.Migration): + + dependencies = [ + ('abonapp', '0001_initial'), + ] + + operations = [ + migrations.RunPython(backup_info), + migrations.AlterModelOptions( + name='abon', + options={'ordering': ('fio',), 'permissions': (('can_buy_tariff', 'Buy service perm'), ('can_view_passport', 'Can view passport'), ('can_add_ballance', 'fill account'), ('can_ping', 'Can ping')), 'verbose_name': 'Abon', 'verbose_name_plural': 'Abons'}, + ), + migrations.AlterModelOptions( + name='abonlog', + options={'ordering': ('-date',), 'permissions': (('can_view_abonlog', 'Can view subscriber logs'),)}, + ), + migrations.AlterModelOptions( + name='abonstreet', + options={'ordering': ('name',), 'verbose_name': 'Street', 'verbose_name_plural': 'Streets'}, + ), + migrations.AlterModelOptions( + name='abontariff', + options={'ordering': ('time_start',), 'permissions': (('can_complete_service', 'finish service perm'),), 'verbose_name': 'Abon service', 'verbose_name_plural': 'Abon services'}, + ), + migrations.AlterModelOptions( + name='allpaylog', + options={'ordering': ('-date_action',)}, + ), + migrations.AlterModelOptions( + name='alltimepaylog', + options={'ordering': ('-date_add',)}, + ), + migrations.AlterModelOptions( + name='passportinfo', + options={'ordering': ('series',), 'verbose_name': 'Passport Info', 'verbose_name_plural': 'Passport Info'}, + ), + migrations.AlterModelOptions( + name='periodicpayforid', + options={'ordering': ('last_pay',)}, + ), + migrations.AlterField( + model_name='abon', + name='ip_address', + field=models.GenericIPAddressField(blank=True, null=True, verbose_name='Ip Address'), + ), + migrations.AlterField( + model_name='additionaltelephone', + name='telephone', + field=models.CharField(max_length=16, validators=[django.core.validators.RegexValidator('^(\\+[7,8,9,3]\\d{10,11})?$')], verbose_name='Telephone'), + ), + migrations.AlterField( + model_name='passportinfo', + name='abon', + field=models.OneToOneField(blank=True, null=True, on_delete=models.deletion.CASCADE, to='abonapp.Abon'), + ), + migrations.AlterField( + model_name='passportinfo', + name='distributor', + field=models.CharField(max_length=64, verbose_name='Distributor'), + ), + migrations.AlterField( + model_name='passportinfo', + name='number', + field=models.CharField(max_length=6, validators=[django.core.validators.RegexValidator(re.compile('^-?\\d+\\Z', 32), code='invalid', message='Enter a valid integer.')], verbose_name='Pasport number'), + ), + migrations.AlterField( + model_name='passportinfo', + name='series', + field=models.CharField(max_length=4, validators=[django.core.validators.RegexValidator(re.compile('^-?\\d+\\Z', 32), code='invalid', message='Enter a valid integer.')], verbose_name='Pasport serial'), + ), + migrations.RunPython(restore_info_to_new_scheme) + ] diff --git a/abonapp/models.py b/abonapp/models.py index 4227243..1862b24 100644 --- a/abonapp/models.py +++ b/abonapp/models.py @@ -8,6 +8,7 @@ from django.core.validators import RegexValidator from django.db import models, connection, transaction from django.db.models.signals import post_delete, pre_delete, post_init from django.dispatch import receiver +from django.shortcuts import resolve_url from django.utils import timezone from django.utils.translation import ugettext_lazy as _, gettext @@ -15,7 +16,6 @@ from accounts_app.models import UserProfile, MyUserManager, BaseAccount from agent import Transmitter, AbonStruct, TariffStruct, NasFailedResult, NasNetworkError from group_app.models import Group from djing.lib import ip2int, LogicError -from djing.fields import MyGenericIPAddressField from djing import IP_ADDR_REGEX from tariff_app.models import Tariff, PeriodicPay from bitfield import BitField @@ -135,7 +135,7 @@ class Abon(BaseAccount): current_tariff = models.ForeignKey(AbonTariff, null=True, blank=True, on_delete=models.SET_NULL) group = models.ForeignKey(Group, models.SET_NULL, blank=True, null=True, verbose_name=_('User group')) ballance = models.FloatField(default=0.0) - ip_address = MyGenericIPAddressField(blank=True, null=True, verbose_name=_('Ip Address')) + ip_address = models.GenericIPAddressField(blank=True, null=True, verbose_name=_('Ip Address')) description = models.TextField(_('Comment'), null=True, blank=True) street = models.ForeignKey(AbonStreet, on_delete=models.SET_NULL, null=True, blank=True, verbose_name=_('Street')) house = models.CharField(_('House'), max_length=12, null=True, blank=True) @@ -289,6 +289,9 @@ class Abon(BaseAccount): print('ERROR:', e) return e + def get_absolute_url(self): + return resolve_url('abonapp:abon_home', self.group.id, self.username) + class PassportInfo(models.Model): series = models.CharField(_('Pasport serial'), max_length=4, validators=(validators.integer_validator,)) diff --git a/abonapp/templates/abonapp/addAbon.html b/abonapp/templates/abonapp/addAbon.html index 2c8c1a7..b392e90 100644 --- a/abonapp/templates/abonapp/addAbon.html +++ b/abonapp/templates/abonapp/addAbon.html @@ -1,17 +1,17 @@ {% extends request.is_ajax|yesno:'bajax.html,base.html' %} {% load i18n %} {% load bootstrap3 %} -{% block main %} +{% block breadcrumb %} +{% endblock %} - {% include 'message_block.html' %} - +{% block main %}

{% trans 'Add abon' %}

@@ -65,5 +65,4 @@
- -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/abonapp/templates/abonapp/addInvoice.html b/abonapp/templates/abonapp/addInvoice.html index 8237c05..09de2fd 100644 --- a/abonapp/templates/abonapp/addInvoice.html +++ b/abonapp/templates/abonapp/addInvoice.html @@ -1,7 +1,7 @@ {% extends request.is_ajax|yesno:'bajax.html,base.html' %} {% load i18n %} -{% block main %} +{% block breadcrumb %} +{% endblock %} - {% include 'message_block.html' %} - +{% block main %}

{% trans 'Add receipt for' %} @@ -52,5 +52,4 @@

- {% endblock %} diff --git a/abonapp/templates/abonapp/debtors.html b/abonapp/templates/abonapp/debtors.html index 4b02484..acb2636 100644 --- a/abonapp/templates/abonapp/debtors.html +++ b/abonapp/templates/abonapp/debtors.html @@ -1,17 +1,20 @@ {% extends 'base.html' %} {% load i18n %} -{% block main %} - +{% block breadcrumb %} +{% endblock %} - {% include 'message_block.html' %} - +{% block page-header %}

{% trans 'People with debts' %}

+{% endblock %} + + +{% block main %}
@@ -46,7 +49,4 @@
- - {% include 'pagination.html' %} - {% endblock %} \ No newline at end of file diff --git a/abonapp/templates/abonapp/editAbon.html b/abonapp/templates/abonapp/editAbon.html index 23f789f..fbd20bf 100644 --- a/abonapp/templates/abonapp/editAbon.html +++ b/abonapp/templates/abonapp/editAbon.html @@ -146,7 +146,7 @@
{% if device %} - {{ device.comment|truncatechars:11 }} {{ device.ip_address }} + {{ device.comment|truncatechars:11 }} {{ device.ip_address|default:'' }} diff --git a/abonapp/templates/abonapp/ext.htm b/abonapp/templates/abonapp/ext.htm index de10f19..c2b4d63 100644 --- a/abonapp/templates/abonapp/ext.htm +++ b/abonapp/templates/abonapp/ext.htm @@ -1,24 +1,24 @@ {% extends request.is_ajax|yesno:'bajax.html,base.html' %} {% load i18n %} -{% block main %} +{% block breadcrumb %} +{% endblock %} - {% include 'message_block.html' %} - - +{% block page-header %} +

{{ abon.fio|default:_("Long name") }} + {% trans 'Ballance' %} + {{ abon.ballance|floatformat:2 }} + +

+{% endblock %} +{% block main %}
- {% endblock %} diff --git a/abonapp/templates/abonapp/fin_report.html b/abonapp/templates/abonapp/fin_report.html index d7a9ff8..aa6c286 100644 --- a/abonapp/templates/abonapp/fin_report.html +++ b/abonapp/templates/abonapp/fin_report.html @@ -1,15 +1,18 @@ {% extends 'base.html' %} {% load i18n %} -{% block main %} +{% block breadcrumb %} +{% endblock %} - {% include 'message_block.html' %} - +{% block page-header %}

{% trans 'Money by days' %}

+{% endblock %} + +{% block main %}
@@ -43,7 +46,4 @@
- - {# {% include 'toolbar_page.html' with pag=logs %} #} - {% endblock %} \ No newline at end of file diff --git a/abonapp/templates/abonapp/group_list.html b/abonapp/templates/abonapp/group_list.html index d550ec0..80b82ea 100644 --- a/abonapp/templates/abonapp/group_list.html +++ b/abonapp/templates/abonapp/group_list.html @@ -1,16 +1,18 @@ {% extends 'base.html' %} {% load i18n %} -{% block main %} +{% block breadcrumb %} +{% endblock %} +{% block page-header %}

{% trans 'User groups' %}

+{% endblock %} - {% include 'message_block.html' %} - +{% block main %}
@@ -70,7 +72,4 @@
- - {% include 'pagination.html' %} - {% endblock %} diff --git a/abonapp/templates/abonapp/group_tariffs.html b/abonapp/templates/abonapp/group_tariffs.html index bb9bef9..851bec5 100644 --- a/abonapp/templates/abonapp/group_tariffs.html +++ b/abonapp/templates/abonapp/group_tariffs.html @@ -1,17 +1,20 @@ {% extends request.is_ajax|yesno:'bajax.html,base.html' %} {% load i18n %} -{% block main %} +{% block breadcrumb %} +{% endblock %} - {% include 'message_block.html' %} +{% block page-header %} +

{% trans 'Belonging services for groups' %}

+{% endblock %} - {% trans 'Belonging services for groups' %} +{% block main %}
{% csrf_token %} {% for tariff in tariffs %}
@@ -29,5 +32,4 @@
- {% endblock %} \ No newline at end of file diff --git a/abonapp/templates/abonapp/invoiceForPayment.html b/abonapp/templates/abonapp/invoiceForPayment.html index 6e96c96..7ffa0a7 100644 --- a/abonapp/templates/abonapp/invoiceForPayment.html +++ b/abonapp/templates/abonapp/invoiceForPayment.html @@ -1,7 +1,7 @@ {% extends 'base.html' %} {% load i18n %} -{% block main %} +{% block breadcrumb %} +{% endblock %} - {% include 'message_block.html' %} - +{% block page-header %}

{% trans 'Debtor' %} {{ abon.fio }}

+{% endblock %} + +{% block main %}
@@ -66,7 +69,4 @@ {% endif %}
- - {% include 'pagination.html' %} - {% endblock %} diff --git a/abonapp/templates/abonapp/log.html b/abonapp/templates/abonapp/log.html index 19d7edd..c665365 100644 --- a/abonapp/templates/abonapp/log.html +++ b/abonapp/templates/abonapp/log.html @@ -1,16 +1,19 @@ {% extends 'base.html' %} {% load i18n %} -{% block main %} +{% block breadcrumb %} +{% endblock %} - {% include 'message_block.html' %} - +{% block page-header %}

{% trans 'History of subscriber' %}

+{% endblock %} + +{% block main %}
@@ -55,7 +58,4 @@
- - {% include 'pagination.html' %} - {% endblock %} \ No newline at end of file diff --git a/abonapp/templates/abonapp/peoples.html b/abonapp/templates/abonapp/peoples.html index 93e8e46..1e923a7 100644 --- a/abonapp/templates/abonapp/peoples.html +++ b/abonapp/templates/abonapp/peoples.html @@ -1,16 +1,16 @@ {% extends 'base.html' %} {% load i18n %} {% load dpagination %} -{% block main %} +{% block breadcrumb %} +{% endblock %} - {% include 'message_block.html' %} - +{% block main %}
@@ -174,7 +174,4 @@
- - {% include 'pagination.html' %} - {% endblock %} diff --git a/abonapp/views.py b/abonapp/views.py index ed1a717..51a5b16 100644 --- a/abonapp/views.py +++ b/abonapp/views.py @@ -102,12 +102,10 @@ class AbonCreateView(CreateView): group = None abon = None form_class = forms.AbonForm + model = models.Abon template_name = 'abonapp/addAbon.html' context_object_name = 'group' - def get_success_url(self): - return resolve_url('abonapp:abon_home', self.group.id, self.abon.username) - def dispatch(self, request, *args, **kwargs): group = get_object_or_404(Group, pk=self.kwargs.get('gid')) if not request.user.has_perm('group_app.can_view_group', group): @@ -349,13 +347,6 @@ class AbonHomeUpdateView(UpdateView): context.update(kwargs) return super(AbonHomeUpdateView, self).get_context_data(**context) - def get_success_url(self): - abon = self.object - return resolve_url('abonapp:abon_home', - gid=getattr(abon.group, 'pk', 0), - uname=abon.username - ) - @transaction.atomic def terminal_pay(request): @@ -1091,14 +1082,12 @@ class EditSibscriberMarkers(UpdateView): http_method_names = ('get', 'post') template_name = 'abonapp/modal_user_markers.html' form_class = forms.MarkersForm + model = models.Abon def get_object(self, queryset=None): obj = models.Abon.objects.get(username=self.kwargs.get('uname')) return obj - def get_success_url(self): - return resolve_url('abonapp:abon_home', self.kwargs.get('gid'), self.kwargs.get('uname')) - def get_context_data(self, **kwargs): context = super(EditSibscriberMarkers, self).get_context_data(**kwargs) context['gid'] = self.kwargs.get('gid') @@ -1123,7 +1112,7 @@ def abons(request): ablist = ({ 'id': abn.pk, 'tarif_id': abn.active_tariff().tariff.pk if abn.active_tariff() is not None else 0, - 'ip': abn.ip_address.int_ip(), + 'ip': lib.ip2int(abn.ip_address), 'is_active': abn.is_active } for abn in models.Abon.objects.all()) diff --git a/accounts_app/locale/ru/LC_MESSAGES/django.po b/accounts_app/locale/ru/LC_MESSAGES/django.po index 881bbb7..55837cd 100644 --- a/accounts_app/locale/ru/LC_MESSAGES/django.po +++ b/accounts_app/locale/ru/LC_MESSAGES/django.po @@ -305,3 +305,6 @@ msgstr "Сотрудник" msgid "Manage responsibility groups" msgstr "Ответственность за группы" + +msgid "Profile" +msgstr "Учётная запись" diff --git a/accounts_app/models.py b/accounts_app/models.py index e99199c..d094eb2 100644 --- a/accounts_app/models.py +++ b/accounts_app/models.py @@ -124,5 +124,6 @@ class UserProfile(BaseAccount): im.save(self.avatar.path) def save(self, *args, **kwargs): - super().save(*args, **kwargs) + r = super().save(*args, **kwargs) self._thumbnail_avatar() + return r diff --git a/accounts_app/templates/accounts/acc_list.html b/accounts_app/templates/accounts/acc_list.html index 5ee015f..e2315cf 100644 --- a/accounts_app/templates/accounts/acc_list.html +++ b/accounts_app/templates/accounts/acc_list.html @@ -1,15 +1,18 @@ {% extends 'base.html' %} {% load i18n %} -{% block main %} +{% block breadcrumb %} +{% endblock %} - {% include 'message_block.html' %} - +{% block page-header %}

{% trans 'Admin accounts list' %}

+{% endblock %} + +{% block main %}
@@ -79,7 +82,4 @@ {% endif %}
- - {% include 'pagination.html' %} - {% endblock %} diff --git a/accounts_app/templates/accounts/create_acc.html b/accounts_app/templates/accounts/create_acc.html index 34d396f..a89d878 100644 --- a/accounts_app/templates/accounts/create_acc.html +++ b/accounts_app/templates/accounts/create_acc.html @@ -1,16 +1,16 @@ {% extends request.is_ajax|yesno:'bajax.html,base.html' %} {% load globaltags %} {% load i18n %} -{% block main %} +{% block breadcrumb %} +{% endblock %} - {% include 'message_block.html' %} - +{% block main %}

{% trans 'Create new account' %}

@@ -97,5 +97,4 @@
- {% endblock %} diff --git a/accounts_app/templates/accounts/ext.htm b/accounts_app/templates/accounts/ext.htm index 99f1431..d5bb280 100644 --- a/accounts_app/templates/accounts/ext.htm +++ b/accounts_app/templates/accounts/ext.htm @@ -1,15 +1,19 @@ {% extends request.is_ajax|yesno:'bajax.html,base.html' %} {% load i18n %} -{% block main %} +{% block breadcrumb %} +{% endblock %} - {% include 'message_block.html' %} +{% block page-header %} +

{% trans 'Profile' %}

+{% endblock %} +{% block main %}
@@ -74,5 +78,4 @@
- {% endblock %} diff --git a/accounts_app/templates/accounts/perms/objects_of_type.html b/accounts_app/templates/accounts/perms/objects_of_type.html index 4c7d6df..77a213e 100644 --- a/accounts_app/templates/accounts/perms/objects_of_type.html +++ b/accounts_app/templates/accounts/perms/objects_of_type.html @@ -1,7 +1,7 @@ {% extends 'base.html' %} {% load i18n %} -{% block main %} +{% block breadcrumb %} +{% endblock %} + +{% block page-header %}

{% trans 'Pick object for edit permissions' %}

+{% endblock %} - {% include 'message_block.html' %} +{% block main %}
@@ -28,7 +32,4 @@
- - {% include 'pagination.html' %} - {% endblock %} diff --git a/accounts_app/templates/accounts/perms/objects_types.html b/accounts_app/templates/accounts/perms/objects_types.html index a831c76..648fc49 100644 --- a/accounts_app/templates/accounts/perms/objects_types.html +++ b/accounts_app/templates/accounts/perms/objects_types.html @@ -1,19 +1,21 @@ {% extends 'base.html' %} {% load i18n %} {% load acc_tags %} -{% block main %} +{% block breadcrumb %} +{% endblock %} +{% block page-header %}

{% trans 'Pick the type of object' %}

+{% endblock %} - {% include 'message_block.html' %} - +{% block main %}
@@ -32,5 +34,4 @@
- {% endblock %} diff --git a/accounts_app/templates/accounts/perms/perms_edit.html b/accounts_app/templates/accounts/perms/perms_edit.html index 1e0cf96..ddd9767 100644 --- a/accounts_app/templates/accounts/perms/perms_edit.html +++ b/accounts_app/templates/accounts/perms/perms_edit.html @@ -1,8 +1,8 @@ {% extends 'base.html' %} {% load i18n %} {% load guardian_tags %} -{% block main %} +{% block breadcrumb %} +{% endblock %} + +{% block page-header %}

{% trans 'Pick object for edit permissions' %}

+{% endblock %} - {% include 'message_block.html' %} +{% block main %} {% if userprofile.is_superuser %}
@@ -67,5 +71,4 @@
- {% endblock %} diff --git a/accounts_app/templates/accounts/settings/ext.htm b/accounts_app/templates/accounts/settings/ext.htm index 572c19d..2943855 100644 --- a/accounts_app/templates/accounts/settings/ext.htm +++ b/accounts_app/templates/accounts/settings/ext.htm @@ -1,16 +1,20 @@ {% extends request.is_ajax|yesno:'bajax.html,base.html' %} {% load i18n %} -{% block main %} +{% block breadcrumb %} +{% endblock %} - {% include 'message_block.html' %} +{% block page-header %} +

{% trans 'Options' %}

+{% endblock %} +{% block main %}
- - {% endblock %} \ No newline at end of file diff --git a/clientsideapp/templates/clientsideapp/index.html b/clientsideapp/templates/clientsideapp/index.html index 3ac7e35..1768036 100644 --- a/clientsideapp/templates/clientsideapp/index.html +++ b/clientsideapp/templates/clientsideapp/index.html @@ -18,7 +18,7 @@
{{ user.telephone }}
{% trans 'Ip Address' %}
-
{{ user.ip_address }}
+
{{ user.ip_address|default:'-' }}
{% if user.street %}
{% trans 'Address' %}
diff --git a/devapp/migrations/0005_device_ip_address_change.py b/devapp/migrations/0005_device_ip_address_change.py new file mode 100644 index 0000000..76840ce --- /dev/null +++ b/devapp/migrations/0005_device_ip_address_change.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11 on 2018-06-12 11:24 +from __future__ import unicode_literals +import os +from json import load + +from django.db import migrations, models +from django.core import serializers + + +TMP_FILE = '/tmp/djing_ip_field_devapp_migrate.json' + + +def device_backup_info(apps, _): + Device = apps.get_model('devapp', 'Device') + obs = Device.objects.all() + with open(TMP_FILE, 'w') as f: + serializers.serialize('json', obs, stream=f) + + +def device_restore_info_to_new_scheme(apps, _): + Device = apps.get_model('devapp', 'Device') + with open(TMP_FILE, 'r') as f: + for device in load(f): + Device.objects.filter(pk=device['pk']).update(ip_address=device['fields']['ip_address']) + if os.path.isfile(TMP_FILE): + os.remove(TMP_FILE) + + +class Migration(migrations.Migration): + + dependencies = [ + ('devapp', '0004_device_extra_data'), + ] + + operations = [ + migrations.RunPython(device_backup_info), + migrations.AlterField( + model_name='device', + name='ip_address', + field=models.GenericIPAddressField(blank=True, null=True, protocol='ipv4', verbose_name='Ip address'), + ), + migrations.RunPython(device_restore_info_to_new_scheme) + ] diff --git a/devapp/models.py b/devapp/models.py index b0a94ee..2b6575f 100644 --- a/devapp/models.py +++ b/devapp/models.py @@ -3,10 +3,11 @@ from typing import Optional, AnyStr from subprocess import run from django.db import models from django.conf import settings +from django.shortcuts import resolve_url from django.utils.translation import gettext_lazy as _ from jsonfield import JSONField -from djing.fields import MACAddressField, MyGenericIPAddressField +from djing.fields import MACAddressField from djing.lib import MyChoicesAdapter from group_app.models import Group from . import dev_types @@ -24,7 +25,7 @@ class DeviceMonitoringException(Exception): class Device(models.Model): _cached_manager = None - ip_address = MyGenericIPAddressField(verbose_name=_('Ip address'), null=True, blank=True) + ip_address = models.GenericIPAddressField(verbose_name=_('Ip address'), null=True, blank=True) mac_addr = MACAddressField(verbose_name=_('Mac address'), null=True, blank=True, unique=True) comment = models.CharField(_('Comment'), max_length=256) DEVICE_TYPES = ( @@ -121,6 +122,9 @@ class Device(models.Model): return mng.register_device(self.parent_dev.extra_data) return mng.register_device(self.extra_data) + def get_absolute_url(self): + return resolve_url('devapp:edit', self.group.pk, self.pk) + class Port(models.Model): device = models.ForeignKey(Device, models.CASCADE, verbose_name=_('Device')) diff --git a/devapp/templates/devapp/add_dev.html b/devapp/templates/devapp/add_dev.html index 30fbb9c..f1e0af1 100644 --- a/devapp/templates/devapp/add_dev.html +++ b/devapp/templates/devapp/add_dev.html @@ -1,21 +1,21 @@ {% extends request.is_ajax|yesno:'bajax.html,base.html' %} {% load i18n %} {% load bootstrap3 %} -{% block main %} +{% block breadcrumb %} +{% endblock %} - {% include 'message_block.html' %} - - +{% block page-header %} + {{ group.title|default:_('Not assigned') }} +{% endblock %} +{% block main %}

{% trans 'Device info' %}

@@ -51,7 +51,7 @@ {% if selected_parent_dev %} {% else %} @@ -79,5 +79,4 @@
- {% endblock %} diff --git a/devapp/templates/devapp/devices.html b/devapp/templates/devapp/devices.html index eeaee62..da5b9be 100644 --- a/devapp/templates/devapp/devices.html +++ b/devapp/templates/devapp/devices.html @@ -1,17 +1,20 @@ {% extends request.is_ajax|yesno:'bajax.html,base.html' %} {% load i18n %} {% load dpagination %} -{% block main %} +{% block breadcrumb %} +{% endblock %} - {% include 'message_block.html' %} +{% block page-header %} + {% trans 'Devices' %} +{% endblock %} -

{% trans 'Devices' %}

+{% block main %}
@@ -59,7 +62,7 @@ {% endif %} - + @@ -96,7 +99,4 @@
{{ dev.ip_address }}{{ dev.ip_address|default:'' }} {{ dev.comment }} {{ dev.mac_addr|default:_('Not assigned') }} {{ dev.get_devtype_display }}
- - {% include 'pagination.html' %} - {% endblock %} diff --git a/devapp/templates/devapp/devices_null_group.html b/devapp/templates/devapp/devices_null_group.html index 3eeaaf0..ab6775c 100644 --- a/devapp/templates/devapp/devices_null_group.html +++ b/devapp/templates/devapp/devices_null_group.html @@ -1,16 +1,19 @@ {% extends request.is_ajax|yesno:'bajax.html,base.html' %} {% load i18n %} -{% block main %} +{% block breadcrumb %} +{% endblock %} - {% include 'message_block.html' %} +{% block page-header %} + {% trans 'Devices without group' %} +{% endblock %} -

{% trans 'Devices without group' %}

+{% block main %}
@@ -77,7 +80,4 @@
- - {% include 'pagination.html' %} - {% endblock %} \ No newline at end of file diff --git a/devapp/templates/devapp/ext.htm b/devapp/templates/devapp/ext.htm index b7ee865..d8421b9 100644 --- a/devapp/templates/devapp/ext.htm +++ b/devapp/templates/devapp/ext.htm @@ -1,34 +1,34 @@ {% extends request.is_ajax|yesno:'bajax.html,base.html' %} {% load i18n %} -{% block main %} - {% block breadcrumb %} - - {% endblock %} - - {% include 'message_block.html' %} - - + +{% block breadcrumb %} + +{% endblock %} + + +{% block page-header %} +

{{ dev.comment|default:_('Not assigned') }}

+{% endblock %} + + +{% block main %}