diff --git a/netbox/dcim/api/serializers.py b/netbox/dcim/api/serializers.py index 8fe51a075..3b1ab720c 100644 --- a/netbox/dcim/api/serializers.py +++ b/netbox/dcim/api/serializers.py @@ -20,8 +20,9 @@ class SiteSerializer(CustomFieldSerializer, serializers.ModelSerializer): class Meta: model = Site - fields = ['id', 'name', 'slug', 'tenant', 'facility', 'asn', 'physical_address', 'shipping_address', 'comments', - 'custom_fields', 'count_prefixes', 'count_vlans', 'count_racks', 'count_devices', 'count_circuits'] + fields = ['id', 'name', 'slug', 'tenant', 'facility', 'asn', 'physical_address', 'shipping_address', + 'contact_name', 'contact_phone', 'contact_email', 'comments', 'custom_fields', 'count_prefixes', + 'count_vlans', 'count_racks', 'count_devices', 'count_circuits'] class SiteNestedSerializer(SiteSerializer): diff --git a/netbox/dcim/forms.py b/netbox/dcim/forms.py index fa0605593..001338427 100644 --- a/netbox/dcim/forms.py +++ b/netbox/dcim/forms.py @@ -62,7 +62,8 @@ class SiteForm(BootstrapMixin, CustomFieldForm): class Meta: model = Site - fields = ['name', 'slug', 'tenant', 'facility', 'asn', 'physical_address', 'shipping_address', 'comments'] + fields = ['name', 'slug', 'tenant', 'facility', 'asn', 'physical_address', 'shipping_address', 'contact_name', + 'contact_phone', 'contact_email', 'comments'] widgets = { 'physical_address': SmallTextarea(attrs={'rows': 3}), 'shipping_address': SmallTextarea(attrs={'rows': 3}), @@ -82,7 +83,7 @@ class SiteFromCSVForm(forms.ModelForm): class Meta: model = Site - fields = ['name', 'slug', 'tenant', 'facility', 'asn'] + fields = ['name', 'slug', 'tenant', 'facility', 'asn', 'contact_name', 'contact_phone', 'contact_email'] class SiteImportForm(BootstrapMixin, BulkImportForm): diff --git a/netbox/dcim/migrations/0024_site_add_contact_fields.py b/netbox/dcim/migrations/0024_site_add_contact_fields.py new file mode 100644 index 000000000..34e17561f --- /dev/null +++ b/netbox/dcim/migrations/0024_site_add_contact_fields.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.4 on 2016-12-29 16:23 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('dcim', '0023_devicetype_comments'), + ] + + operations = [ + migrations.AddField( + model_name='site', + name='contact_email', + field=models.EmailField(blank=True, max_length=254, verbose_name=b'Contact E-mail'), + ), + migrations.AddField( + model_name='site', + name='contact_name', + field=models.CharField(blank=True, max_length=50), + ), + migrations.AddField( + model_name='site', + name='contact_phone', + field=models.CharField(blank=True, max_length=20), + ), + ] diff --git a/netbox/dcim/models.py b/netbox/dcim/models.py index 1ec8162b7..739d881ab 100644 --- a/netbox/dcim/models.py +++ b/netbox/dcim/models.py @@ -245,6 +245,9 @@ class Site(CreatedUpdatedModel, CustomFieldModel): asn = ASNField(blank=True, null=True, verbose_name='ASN') physical_address = models.CharField(max_length=200, blank=True) shipping_address = models.CharField(max_length=200, blank=True) + contact_name = models.CharField(max_length=50, blank=True) + contact_phone = models.CharField(max_length=20, blank=True) + contact_email = models.EmailField(blank=True, verbose_name="Contact E-mail") comments = models.TextField(blank=True) custom_field_values = GenericRelation(CustomFieldValue, content_type_field='obj_type', object_id_field='obj_id') @@ -266,6 +269,9 @@ class Site(CreatedUpdatedModel, CustomFieldModel): self.tenant.name if self.tenant else '', self.facility, str(self.asn) if self.asn else '', + self.contact_name, + self.contact_phone, + self.contact_email, ]) @property diff --git a/netbox/dcim/tests/test_apis.py b/netbox/dcim/tests/test_apis.py index af001148b..1305d7e37 100644 --- a/netbox/dcim/tests/test_apis.py +++ b/netbox/dcim/tests/test_apis.py @@ -22,6 +22,9 @@ class SiteTest(APITestCase): 'asn', 'physical_address', 'shipping_address', + 'contact_name', + 'contact_phone', + 'contact_email', 'comments', 'custom_fields', 'count_prefixes', diff --git a/netbox/templates/dcim/site.html b/netbox/templates/dcim/site.html index e1b582dd2..210ec0c82 100644 --- a/netbox/templates/dcim/site.html +++ b/netbox/templates/dcim/site.html @@ -110,6 +110,36 @@ {% endif %} + + Contact Name + + {% if site.contact_name %} + {{ site.contact_name }} + {% else %} + N/A + {% endif %} + + + + Contact Phone + + {% if site.contact_phone %} + {{ site.contact_phone }} + {% else %} + N/A + {% endif %} + + + + Contact E-Mail + + {% if site.contact_email %} + {{ site.contact_email }} + {% else %} + N/A + {% endif %} + + {% with site.get_custom_fields as custom_fields %} diff --git a/netbox/templates/dcim/site_edit.html b/netbox/templates/dcim/site_edit.html index e3911fc1f..e82ec7985 100644 --- a/netbox/templates/dcim/site_edit.html +++ b/netbox/templates/dcim/site_edit.html @@ -12,6 +12,9 @@ {% render_field form.asn %} {% render_field form.physical_address %} {% render_field form.shipping_address %} + {% render_field form.contact_name %} + {% render_field form.contact_phone %} + {% render_field form.contact_email %} {% if form.custom_fields %} diff --git a/netbox/templates/dcim/site_import.html b/netbox/templates/dcim/site_import.html index 030a3aaa0..7f58e6396 100644 --- a/netbox/templates/dcim/site_import.html +++ b/netbox/templates/dcim/site_import.html @@ -53,10 +53,25 @@ Autonomous system number (optional) 65000 + + Contact Name + Name of administrative contact (optional) + Hank Hill + + + Contact Phone + Phone number (optional) + +1-214-555-1234 + + + Contact E-mail + E-mail address (optional) + hhill@example.com +

Example

-
ASH-4 South,ash4-south,Pied Piper,Equinix DC6,65000
+
ASH-4 South,ash4-south,Pied Piper,Equinix DC6,65000,Hank Hill,+1-214-555-1234,hhill@example.com
{% endblock %}