Commit 522b5be3 authored by klafyvel's avatar klafyvel

Merge branch 'mac_vendor' into 'dev'

Mac vendor

See merge request federez/re2o!403
parents eacad3bd e0245607
Pipeline #951 failed with stage
...@@ -44,7 +44,7 @@ from django.utils import timezone ...@@ -44,7 +44,7 @@ from django.utils import timezone
from django.utils.functional import cached_property from django.utils.functional import cached_property
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from macaddress.fields import MACAddressField, default_dialect from macaddress.fields import MACAddressField, default_dialect
from netaddr import mac_bare, EUI, IPSet, IPRange, IPNetwork, IPAddress from netaddr import mac_bare, EUI, NotRegisteredError, IPSet, IPRange, IPNetwork, IPAddress
import preferences.models import preferences.models
import users.models import users.models
...@@ -1044,6 +1044,16 @@ class Interface(RevMixin, AclMixin, FieldPermissionModelMixin, models.Model): ...@@ -1044,6 +1044,16 @@ class Interface(RevMixin, AclMixin, FieldPermissionModelMixin, models.Model):
IPv6Address(prefix_v6).exploded[:20] + IPv6Address(prefix_v6).exploded[:20] +
IPv6Address(self.id).exploded[20:] IPv6Address(self.id).exploded[20:]
) )
@cached_property
def get_vendor(self):
"""Retourne le vendeur associé à la mac de l'interface"""
mac = EUI(self.mac_address)
try:
oui = mac.oui
vendor = oui.registration().org
except NotRegisteredError:
vendor = "Unknown vendor"
return(vendor)
def sync_ipv6_dhcpv6(self): def sync_ipv6_dhcpv6(self):
"""Affecte une ipv6 dhcpv6 calculée à partir de l'id de la machine""" """Affecte une ipv6 dhcpv6 calculée à partir de l'id de la machine"""
......
...@@ -92,6 +92,11 @@ with this program; if not, write to the Free Software Foundation, Inc., ...@@ -92,6 +92,11 @@ with this program; if not, write to the Free Software Foundation, Inc.,
</td> </td>
<td> <td>
{{ interface.mac_address }} {{ interface.mac_address }}
<button class="btn btn-default btn-xs" type="button" data-toggle="collapse"
data-target="#collapseVendor_{{ interface.id }}" aria-expanded="true"
aria-controls="collapseVendor_{{ interface.id }}">
{% trans "Display the vendor" %}
</button>
</td> </td>
<td> <td>
<b>IPv4</b> {{ interface.ipv4 }} <b>IPv4</b> {{ interface.ipv4 }}
...@@ -163,6 +168,17 @@ with this program; if not, write to the Free Software Foundation, Inc., ...@@ -163,6 +168,17 @@ with this program; if not, write to the Free Software Foundation, Inc.,
</div> </div>
</td> </td>
</tr> </tr>
<tr>
<td colspan=5 style="border-top: none; padding: 1px;">
<div class="collapse in" id="collapseVendor_{{ interface.id }}">
<ul class="list-group" style="margin-bottom: 0;">
<li class="list-group-item col-xs-6 col-sm-6 col-md-6" style="border: none;">
{{ interface.get_vendor }}
</li>
</ul>
</div>
</td>
</tr>
{% if ipv6_enabled and interface.ipv6 != 'None' %} {% if ipv6_enabled and interface.ipv6 != 'None' %}
<tr> <tr>
<td colspan=5 style="border-top: none; padding: 1px;"> <td colspan=5 style="border-top: none; padding: 1px;">
...@@ -217,6 +233,12 @@ with this program; if not, write to the Free Software Foundation, Inc., ...@@ -217,6 +233,12 @@ with this program; if not, write to the Free Software Foundation, Inc.,
ipv6_div[i].collapse('hide'); ipv6_div[i].collapse('hide');
} }
}); });
$("#machines_table").ready(function () {
var vendor_div = [{% for machine in machines_list %}{% for interface in machine.interface_set.all %}{% if interface.get_vendor %}$("#collapseVendor_{{ interface.id }}"), {% endif %}{% endfor %}{% endfor %}];
for (var i = 0; i < vendor_div.length; i++) {
vendor_div[i].collapse('hide');
}
});
</script> </script>
{% if machines_list.paginator %} {% if machines_list.paginator %}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment