Initial push to public repo

This commit is contained in:
Jeremy Stretch
2016-03-01 11:23:03 -05:00
commit 27b289ee3b
281 changed files with 26061 additions and 0 deletions

View File

@@ -0,0 +1,102 @@
{% extends '_base.html' %}
{% load helpers %}
{% block title %}{{ circuit.provider }} Circuit {{ circuit.cid }}{% endblock %}
{% block content %}
<div class="row">
<div class="col-md-12">
<ol class="breadcrumb">
<li><a href="{% url 'dcim:site' slug=circuit.site.slug %}">{{ circuit.site }}</a></li>
<li><a href="{% url 'circuits:circuit_list' %}?site={{ circuit.site.slug }}">Circuits</a></li>
<li>{{ circuit }}</li>
</ol>
</div>
</div>
<div class="pull-right">
{% if perms.circuits.change_circuit %}
<a href="{% url 'circuits:circuit_edit' pk=circuit.pk %}" class="btn btn-warning">
<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
Edit this circuit
</a>
{% endif %}
{% if perms.circuits.delete_circuit %}
<a href="{% url 'circuits:circuit_delete' pk=circuit.pk %}" class="btn btn-danger">
<span class="glyphicon glyphicon-trash" aria-hidden="true"></span>
Delete this circuit
</a>
{% endif %}
</div>
<h1>{{ circuit.provider }} Circuit {{ circuit.cid }}</h1>
<div class="row">
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-heading">
<strong>Details</strong>
</div>
<table class="table table-hover panel-body">
<tr>
<td>Provider</td>
<td>
<a href="{% url 'circuits:provider' slug=circuit.provider.slug %}">{{ circuit.provider }}</a>
</td>
</tr>
<tr>
<td>Circuit ID</td>
<td>{{ circuit.cid }}</td>
</tr>
<tr>
<td>Site</td>
<td>
<a href="{% url 'dcim:site' slug=circuit.site.slug %}">{{ circuit.site }}</a>
</td>
</tr>
<tr>
<td>Termination</td>
<td>
{% if circuit.interface %}
<span><a href="{% url 'dcim:device' pk=circuit.interface.device.pk %}">{{ circuit.interface.device }}</a> {{ circuit.interface }}</span>
{% else %}
<span class="text-muted">Not defined</span>
{% endif %}
</td>
</tr>
<tr>
<td>Install Date</td>
<td>{{ circuit.install_date }}</td>
</tr>
<tr>
<td>Port Speed</td>
<td>{{ circuit.get_port_speed_display }}</td>
</tr>
<tr>
<td>Commit Rate</td>
<td>{{ circuit.commit_rate }}</td>
</tr>
<tr>
<td>Cross-Connect</td>
<td>{{ circuit.xconnect_id }}</td>
</tr>
<tr>
<td>Patch Panel/Port</td>
<td>{{ circuit.pp_info }}</td>
</tr>
</table>
</div>
</div>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-heading">
<strong>Comments</strong>
</div>
<div class="panel-body">
{% if circuit.comments %}
{{ circuit.comments|gfm }}
{% else %}
<span class="text-muted">None</span>
{% endif %}
</div>
</div>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,15 @@
{% extends 'utilities/confirmation_form.html' %}
{% load form_helpers %}
{% block title %}Delete Circuits?{% endblock %}
{% block message %}
<p>
Are you sure you want to delete these circuits?
</p>
<ul>
{% for circuit in selected_objects %}
<li><a href="{% url 'circuits:circuit' pk=circuit.pk %}">{{ circuit }}</a></li>
{% endfor %}
</ul>
{% endblock %}

View File

@@ -0,0 +1,17 @@
{% extends 'utilities/bulk_edit_form.html' %}
{% load form_helpers %}
{% block title %}Circuit Bulk Edit{% endblock %}
{% block select_objects_table %}
{% for circuit in selected_objects %}
<tr>
<td><a href="{% url 'circuits:circuit' pk=circuit.pk %}">{{ circuit }}</a></td>
<td>{{ circuit.type }}</td>
<td>{{ circuit.provider }}</td>
<td>{{ circuit.port_speed }}</td>
<td>{{ circuit.commit_rate }}</td>
<td>{{ circuit.comments }}</td>
</tr>
{% endfor %}
{% endblock %}

View File

@@ -0,0 +1,8 @@
{% extends 'utilities/confirmation_form.html' %}
{% load form_helpers %}
{% block title %}Delete {{ circuit.provider }} Circuit {{ circuit.cid }}?{% endblock %}
{% block message %}
<p>Are you sure you want to delete rack {{ circuit }} from {{ circuit.site }}?</p>
{% endblock %}

View File

@@ -0,0 +1,89 @@
{% extends '_base.html' %}
{% load form_helpers %}
{% block title %}{% if circuit %}Editing {{ circuit }}{% else %}Add a circuit{% endif %}{% endblock %}
{% block content %}
{% if circuit %}
<h1>Editing {{ circuit.provider }} circuit {{ circuit.cid }}</h1>
{% else %}
<h1>Add a Circuit</h1>
{% endif %}
<form action="." method="post" class="form form-horizontal">
{% csrf_token %}
<div class="row">
<div class="col-md-6 col-md-offset-3">
{% if form.non_field_errors %}
<div class="panel panel-danger">
<div class="panel-heading"><strong>Errors</strong></div>
<div class="panel-body">
{{ form.non_field_errors }}
</div>
</div>
{% endif %}
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-heading"><strong>Details</strong></div>
<div class="panel-body">
{% render_field form.cid %}
{% render_field form.type %}
{% render_field form.provider %}
{% render_field form.install_date %}
{% render_field form.port_speed %}
{% render_field form.commit_rate %}
{% render_field form.xconnect_id %}
{% render_field form.pp_info %}
</div>
</div>
</div>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-heading"><strong>Termination</strong></div>
<div class="panel-body">
{% render_field form.site %}
<ul class="nav nav-tabs" role="tablist">
<li role="presentation" class="active"><a href="#select" aria-controls="home" role="tab" data-toggle="tab">Select</a></li>
<li role="presentation"><a href="#search" aria-controls="search" role="tab" data-toggle="tab">Search</a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="select">
{% render_field form.rack %}
{% render_field form.device %}
</div>
<div class="tab-pane" id="search">
{% render_field form.livesearch %}
</div>
</div>
{% render_field form.interface %}
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading"><strong>Comments</strong></div>
<div class="panel-body">
{% render_field form.comments %}
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12 text-right">
{% if circuit %}
<button type="submit" name="_update" class="btn btn-primary">Update</button>
<a href="{% url 'circuits:circuit' pk=circuit.pk %}" class="btn btn-default">Cancel</a>
{% else %}
<button type="submit" name="_create" class="btn btn-primary">Create</button>
<button type="submit" name="_addanother" class="btn btn-primary">Create and Add Another</button>
<a href="{{ cancel_url }}" class="btn btn-default">Cancel</a>
{% endif %}
</div>
</div>
</form>
{% endblock %}
{% block javascript %}
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
<script src="/static/js/livesearch.js"></script>
{% endblock %}

View File

@@ -0,0 +1,82 @@
{% extends '_base.html' %}
{% load render_table from django_tables2 %}
{% load form_helpers %}
{% block title %}Circuit Import{% endblock %}
{% block content %}
<h1>Circuit Import</h1>
<div class="row">
<div class="col-md-6">
<form action="." method="post" class="form">
{% csrf_token %}
{% render_form form %}
<div class="form-group">
<button type="submit" class="btn btn-primary">Submit</button>
<a href="{% url obj_list_url %}" class="btn btn-default">Cancel</a>
</div>
</form>
</div>
<div class="col-md-6">
<h4>CSV Format</h4>
<table class="table">
<thead>
<tr>
<th>Field</th>
<th>Description</th>
<th>Example</th>
</tr>
</thead>
<tbody>
<tr>
<td>Circuit ID</td>
<td>Alphanumeric circuit identifier</td>
<td>IC-603122</td>
</tr>
<tr>
<td>Provider</td>
<td>Name of circuit provider</td>
<td>TeliaSonera</td>
</tr>
<tr>
<td>Type</td>
<td>Circuit type</td>
<td>Transit</td>
</tr>
<tr>
<td>Site</td>
<td>Site name</td>
<td>ASH-4</td>
</tr>
<tr>
<td>Install Date</td>
<td>Date in YYYY-MM-DD format (optional)</td>
<td>2016-02-23</td>
</tr>
<tr>
<td>Port Speed</td>
<td>Speed in Mbps (optional)</td>
<td>10000</td>
</tr>
<tr>
<td>Commit rate</td>
<td>Speed in Mbps (optional)</td>
<td>2000</td>
</tr>
<tr>
<td>Cross-connect ID</td>
<td>ID of cross-connect (optional)</td>
<td>937649</td>
</tr>
<tr>
<td>Patch Panel</td>
<td>Patch panel/port ID (optional)</td>
<td>PP8371 ports 13/14</td>
</tr>
</tbody>
</table>
<h4>Example</h4>
<pre>IC-603122,TeliaSonera,Transit,ASH-4,2016-02-23,10000,2000,937649,PP8371 ports 13/14</pre>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,54 @@
{% extends '_base.html' %}
{% load helpers %}
{% block title %}Circuits{% endblock %}
{% block content %}
<div class="pull-right">
{% if perms.circuits.add_circuit %}
<a href="{% url 'circuits:circuit_add' %}" class="btn btn-primary">
<span class="glyphicon glyphicon-plus" aria-hidden="true"></span>
Add a circuit
</a>
{% endif %}
{% if export_templates %}
<div class="btn-group">
<button type="button" class="btn btn-success dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="glyphicon glyphicon-export" aria-hidden="true"></span>
Export circuits <span class="caret"></span>
</button>
<ul class="dropdown-menu">
{% for et in export_templates %}
<li><a href="{% url 'circuits:circuit_list' %}{% if request.GET %}?{{ request.GET.urlencode }}&{% else %}?{% endif %}export={{ et.name }}">{{ et.name }}</a></li>
{% endfor %}
</ul>
</div>
{% endif %}
</div>
<h1>Circuits</h1>
<div class="row">
<div class="col-md-9">
{% include 'circuits/inc/circuit_table.html' with table=circuit_table %}
</div>
<div class="col-md-3">
<div class="panel panel-default">
<div class="panel-heading">
<strong>Search</strong>
</div>
<div class="panel-body">
<form action="{% url 'circuits:circuit_list' %}" method="get">
<div class="input-group">
<input type="text" name="q" class="form-control" placeholder="Name" {% if request.GET.q %}value="{{ request.GET.q }}" {% endif %}/>
<span class="input-group-btn">
<button type="submit" class="btn btn-primary">
<span class="glyphicon glyphicon-search" aria-hidden="true"></span>
</button>
</span>
</div>
</form>
</div>
</div>
{% include 'inc/filter_panel.html' %}
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,21 @@
{% load render_table from django_tables2 %}
{% if perms.circuits.change_circuit or perms.circuits.delete_circuit %}
<form method="post" class="form form-horizontal">
{% csrf_token %}
{% render_table table table_template|default:'table.html' %}
{% if perms.circuits.change_circuit %}
<button type="submit" name="_edit" formaction="{% url 'circuits:circuit_bulk_edit' %}" class="btn btn-warning btn-sm">
<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
Edit Selected
</button>
{% endif %}
{% if perms.circuits.delete_circuit %}
<button type="submit" name="_delete" formaction="{% url 'circuits:circuit_bulk_delete' %}" class="btn btn-danger btn-sm">
<span class="glyphicon glyphicon-trash" aria-hidden="true"></span>
Delete Selected
</button>
{% endif %}
</form>
{% else %}
{% render_table table table_template|default:'table.html' %}
{% endif %}

View File

@@ -0,0 +1,21 @@
{% load render_table from django_tables2 %}
{% if perms.circuits.change_provider or perms.circuits.delete_provider %}
<form method="post" class="form form-horizontal">
{% csrf_token %}
{% render_table table table_template|default:'table.html' %}
{% if perms.circuits.change_provider %}
<button type="submit" name="_edit" formaction="{% url 'circuits:provider_bulk_edit' %}" class="btn btn-warning btn-sm">
<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
Edit Selected
</button>
{% endif %}
{% if perms.circuits.delete_provider %}
<button type="submit" name="_delete" formaction="{% url 'circuits:provider_bulk_delete' %}" class="btn btn-danger btn-sm">
<span class="glyphicon glyphicon-trash" aria-hidden="true"></span>
Delete Selected
</button>
{% endif %}
</form>
{% else %}
{% render_table table table_template|default:'table.html' %}
{% endif %}

View File

@@ -0,0 +1,104 @@
{% extends '_base.html' %}
{% load helpers %}
{% block title %}{{ provider }}{% endblock %}
{% block content %}
<div class="row">
<div class="col-md-12">
<ol class="breadcrumb">
<li><a href="{% url 'circuits:provider_list' %}">Providers</a></li>
<li>{{ provider }}</li>
</ol>
</div>
</div>
<div class="pull-right">
{% if perms.circuits.change_provider %}
<a href="{% url 'circuits:provider_edit' slug=provider.slug %}" class="btn btn-warning">
<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
Edit this provider
</a>
{% endif %}
{% if perms.circuits.delete_provider %}
<a href="{% url 'circuits:provider_delete' slug=provider.slug %}" class="btn btn-danger">
<span class="glyphicon glyphicon-trash" aria-hidden="true"></span>
Delete this provider
</a>
{% endif %}
</div>
<h1>{{ provider }}</h1>
<div class="row">
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-heading">
<strong>Details</strong>
</div>
<table class="table table-hover panel-body">
<tr>
<td>ASN</td>
<td>{{ provider.asn }}</td>
</tr>
<tr>
<td>Account</td>
<td>{{ provider.account }}</td>
</tr>
<tr>
<td>Customer Portal</td>
<td>
<a href="{{ provider.portal_url }}">{{ provider.portal_url }}</a>
</td>
</tr>
<tr>
<td>NOC Contact</td>
<td>{{ provider.noc_contact|linebreaksbr }}</td>
</tr>
<tr>
<td>Admin Contact</td>
<td>{{ provider.admin_contact|linebreaksbr }}</td>
</tr>
</table>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<strong>Comments</strong>
</div>
<div class="panel-body">
{% if provider.comments %}
{{ provider.comments|gfm }}
{% else %}
<span class="text-muted">None</span>
{% endif %}
</div>
</div>
</div>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-heading">
<strong>Circuits</strong>
</div>
<table class="table table-hover panel-body">
{% for c in circuits %}
<tr>
<td>
<a href="{% url 'circuits:circuit' pk=c.pk %}">{{ c.cid }}</a>
</td>
<td>
<a href="{% url 'dcim:site' slug=c.site.slug %}">{{ c.site }}</a>
</td>
<td>
{% if c.interface %}
<a href="{% url 'dcim:device' pk=c.interface.device.pk %}">{{ c.interface.device }}</a>
{% endif %}
</td>
<td>{{ c.get_port_speed_display }}</td>
</tr>
{% empty %}
<tr>
<td class="text-muted">None</td>
</tr>
{% endfor %}
</table>
</div>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,15 @@
{% extends 'utilities/confirmation_form.html' %}
{% load form_helpers %}
{% block title %}Delete Providers?{% endblock %}
{% block message %}
<p>
Are you sure you want to delete these providers?
</p>
<ul>
{% for provider in selected_objects %}
<li><a href="{% url 'circuits:provider' slug=provider.slug %}">{{ provider }}</a></li>
{% endfor %}
</ul>
{% endblock %}

View File

@@ -0,0 +1,15 @@
{% extends 'utilities/bulk_edit_form.html' %}
{% load form_helpers %}
{% block title %}Provider Bulk Edit{% endblock %}
{% block select_objects_table %}
{% for provider in selected_objects %}
<tr>
<td><a href="{% url 'circuits:provider' slug=provider.slug %}">{{ provider }}</a></td>
<td>{{ aggregate.asn }}</td>
<td>{{ aggregate.account }}</td>
<td>{{ aggregate.comments }}</td>
</tr>
{% endfor %}
{% endblock %}

View File

@@ -0,0 +1,8 @@
{% extends 'utilities/confirmation_form.html' %}
{% load form_helpers %}
{% block title %}Delete provider {{ provider }}?{% endblock %}
{% block message %}
<p>Are you sure you want to delete provider {{ provider }}?</p>
{% endblock %}

View File

@@ -0,0 +1,69 @@
{% extends '_base.html' %}
{% load form_helpers %}
{% block title %}{% if provider %}Editing {{ provider }}{% else %}Add a provider{% endif %}{% endblock %}
{% block content %}
{% if provider %}
<h1>Editing {{ provider }}</h1>
{% else %}
<h1>Add a Provider</h1>
{% endif %}
<form action="." method="post" class="form form-horizontal">
{% csrf_token %}
<div class="row">
<div class="col-md-6 col-md-offset-3">
{% if form.non_field_errors %}
<div class="panel panel-danger">
<div class="panel-heading"><strong>Errors</strong></div>
<div class="panel-body">
{{ form.non_field_errors }}
</div>
</div>
{% endif %}
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-heading"><strong>Provider</strong></div>
<div class="panel-body">
{% render_field form.name %}
{% render_field form.slug %}
{% render_field form.category %}
{% render_field form.asn %}
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading"><strong>Comments</strong></div>
<div class="panel-body">
{% render_field form.comments %}
</div>
</div>
</div>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-heading"><strong>Support Info</strong></div>
<div class="panel-body">
{% render_field form.account %}
{% render_field form.portal_url %}
{% render_field form.noc_contact %}
{% render_field form.admin_contact %}
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12 text-right">
{% if provider %}
<button type="submit" name="_update" class="btn btn-primary">Update</button>
<a href="{% url 'circuits:provider' slug=provider.slug %}" class="btn btn-default">Cancel</a>
{% else %}
<button type="submit" name="_create" class="btn btn-primary">Create</button>
<button type="submit" name="_addanother" class="btn btn-primary">Create and Add Another</button>
<a href="{{ cancel_url }}" class="btn btn-default">Cancel</a>
{% endif %}
</div>
</div>
</form>
{% endblock %}

View File

@@ -0,0 +1,62 @@
{% extends '_base.html' %}
{% load render_table from django_tables2 %}
{% load form_helpers %}
{% block title %}Provider Import{% endblock %}
{% block content %}
<h1>Provider Import</h1>
<div class="row">
<div class="col-md-6">
<form action="." method="post" class="form">
{% csrf_token %}
{% render_form form %}
<div class="form-group">
<button type="submit" class="btn btn-primary">Submit</button>
<a href="{% url obj_list_url %}" class="btn btn-default">Cancel</a>
</div>
</form>
</div>
<div class="col-md-6">
<h4>CSV Format</h4>
<table class="table">
<thead>
<tr>
<th>Field</th>
<th>Description</th>
<th>Example</th>
</tr>
</thead>
<tbody>
<tr>
<td>Name</td>
<td>Provider's proper name</td>
<td>Level 3</td>
</tr>
<tr>
<td>Slug</td>
<td>URL-friendly name</td>
<td>level3</td>
</tr>
<tr>
<td>ASN</td>
<td>Autonomous system number (optional)</td>
<td>3356</td>
</tr>
<tr>
<td>Account</td>
<td>Account number (optional)</td>
<td>08931544</td>
</tr>
<tr>
<td>Portal URL</td>
<td>Customer service portal URL (optional)</td>
<td>https://mylevel3.net</td>
</tr>
</tbody>
</table>
<h4>Example</h4>
<pre>Level 3,level3,3356,08931544,https://mylevel3.net</pre>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,33 @@
{% extends '_base.html' %}
{% block title %}Providers{% endblock %}
{% block content %}
<div class="pull-right">
{% if perms.circuits.add_provider %}
<a href="{% url 'circuits:provider_add' %}" class="btn btn-primary">
<span class="glyphicon glyphicon-plus" aria-hidden="true"></span>
Add a provider
</a>
{% endif %}
{% if export_templates %}
<div class="btn-group">
<button type="button" class="btn btn-success dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="glyphicon glyphicon-export" aria-hidden="true"></span>
Export providers <span class="caret"></span>
</button>
<ul class="dropdown-menu">
{% for et in export_templates %}
<li><a href="{% url 'circuits:provider_list' %}{% if request.GET %}?{{ request.GET.urlencode }}&{% else %}?{% endif %}export={{ et.name }}">{{ et.name }}</a></li>
{% endfor %}
</ul>
</div>
{% endif %}
</div>
<h1>Providers</h1>
<div class="row">
<div class="col-md-12">
{% include 'circuits/inc/provider_table.html' with table=provider_table %}
</div>
</div>
{% endblock %}