aboutsummaryrefslogtreecommitdiffstats
path: root/servo/templates/admin
diff options
context:
space:
mode:
Diffstat (limited to 'servo/templates/admin')
-rw-r--r--servo/templates/admin/backups.html17
-rw-r--r--servo/templates/admin/checklist/form.html31
-rw-r--r--servo/templates/admin/checklist/index.html6
-rw-r--r--servo/templates/admin/fields/form.html17
-rw-r--r--servo/templates/admin/fields/index.html30
-rw-r--r--servo/templates/admin/fields/remove.html8
-rwxr-xr-xservo/templates/admin/gsx/form.html20
-rwxr-xr-xservo/templates/admin/gsx/index.html6
-rwxr-xr-xservo/templates/admin/gsx/remove.html13
-rw-r--r--servo/templates/admin/index.html50
-rw-r--r--servo/templates/admin/inventory/index.html18
-rw-r--r--servo/templates/admin/locations/form.html40
-rw-r--r--servo/templates/admin/locations/index.html6
-rw-r--r--servo/templates/admin/notifications/form.html5
-rw-r--r--servo/templates/admin/notifications/index.html39
-rw-r--r--servo/templates/admin/queues/form.html81
-rw-r--r--servo/templates/admin/queues/index.html6
-rw-r--r--servo/templates/admin/queues/remove.html17
-rw-r--r--servo/templates/admin/settings.html136
-rw-r--r--servo/templates/admin/sites/edit_site.html9
-rw-r--r--servo/templates/admin/sites/index.html23
-rw-r--r--servo/templates/admin/statuses/form.html21
-rw-r--r--servo/templates/admin/statuses/index.html6
-rw-r--r--servo/templates/admin/statuses/remove.html17
-rw-r--r--servo/templates/admin/tags/form.html17
-rw-r--r--servo/templates/admin/tags/index.html37
-rw-r--r--servo/templates/admin/templates/form.html21
-rw-r--r--servo/templates/admin/templates/list_templates.html7
-rw-r--r--servo/templates/admin/users/delete_group.html11
-rw-r--r--servo/templates/admin/users/form.html70
-rw-r--r--servo/templates/admin/users/group_form.html23
-rw-r--r--servo/templates/admin/users/groups.html37
-rw-r--r--servo/templates/admin/users/index.html51
-rw-r--r--servo/templates/admin/users/remove.html17
-rw-r--r--servo/templates/admin/users/tabs.html7
-rw-r--r--servo/templates/admin/users/upload_users.html13
36 files changed, 933 insertions, 0 deletions
diff --git a/servo/templates/admin/backups.html b/servo/templates/admin/backups.html
new file mode 100644
index 0000000..1670ea5
--- /dev/null
+++ b/servo/templates/admin/backups.html
@@ -0,0 +1,17 @@
+{% extends "admin/index.html" %}
+{% load i18n %}
+
+{% block second_column %}
+ <h2>{% trans "Backups" %}</h2>
+ <table class="table">
+ <tbody>
+ {% for b in backups %}
+ <tr>
+ <td>{{ b.filename }}</td>
+ <td>{{ b.filesize|filesizeformat }}</td>
+ <td><a href="?dl={{ b.filename }}" class="btn btn-default"><i class="icon-download"></i></a></td>
+ </tr>
+ {% endfor %}
+ </tbody>
+ </table>
+{% endblock second_column %}
diff --git a/servo/templates/admin/checklist/form.html b/servo/templates/admin/checklist/form.html
new file mode 100644
index 0000000..3b44576
--- /dev/null
+++ b/servo/templates/admin/checklist/form.html
@@ -0,0 +1,31 @@
+{% extends "admin/checklist/index.html" %}
+{% load i18n %}
+
+{% block third_column %}
+<form method="post" action="" accept-charset="utf-8" class="form-horizontal">
+ {% csrf_token %}
+ {{ formset.management_form }}
+ <ul class="nav nav-tabs">
+ <li class="active"><a href="#tab1" data-toggle="tab">{% trans "General" %}</a></li>
+ <li><a href="#tab2" data-toggle="tab">{% trans "Tasks" %}</a></li>
+ </ul>
+ <div class="tab-content">
+ <div class="tab-pane active" id="tab1">
+ {% include "form_snippet.html" %}
+ </div>
+ <div class="tab-pane" id="tab2">
+ {% for f in formset %}
+ {% include "form_snippet.html" with form=f %}
+ {% endfor %}
+ </div>
+ </div>
+ <div class="form-actions">
+ {% if checklist.pk %}
+ <a class="btn btn-danger" data-modal="#modal" href="{% url 'admin-delete_checklist' checklist.pk %}">{% trans "Delete" %}</a>
+ {% else %}
+ <a class="btn btn-danger disabled">{% trans "Delete" %}</a>
+ {% endif %}
+ <button type="submit" class="btn btn-primary">{% trans "Save" %}</button>
+ </div>
+</form>
+{% endblock third_column %}
diff --git a/servo/templates/admin/checklist/index.html b/servo/templates/admin/checklist/index.html
new file mode 100644
index 0000000..f4a2820
--- /dev/null
+++ b/servo/templates/admin/checklist/index.html
@@ -0,0 +1,6 @@
+{% extends "generic/admin_list.html" %}
+{% load i18n %}
+
+{% block toolbar %}
+ <a class="btn btn-default navbar-btn" href="{% url 'admin-create_checklist' %}"><i class="icon-plus"></i> {% trans "New Checklist" %}</a>
+{% endblock toolbar %}
diff --git a/servo/templates/admin/fields/form.html b/servo/templates/admin/fields/form.html
new file mode 100644
index 0000000..f377594
--- /dev/null
+++ b/servo/templates/admin/fields/form.html
@@ -0,0 +1,17 @@
+{% extends "admin/fields/index.html" %}
+{% load i18n %}
+
+{% block third_column %}
+ <form method="post" action="" accept-charset="utf-8" class="form-horizontal">
+ {% csrf_token %}
+ {% include "form_snippet.html" %}
+ <div class="form-actions">
+ {% if field.pk %}
+ <a class="btn btn-danger" data-modal="#modal" href="{% url 'admin-delete_field' field.pk %}">{% trans "Delete" %}</a>
+ {% else %}
+ <a class="btn btn-danger disabled">{% trans "Delete" %}</a>
+ {% endif %}
+ <button type="submit" class="btn btn-primary">{% trans "Save" %}</button>
+ </div>
+ </form>
+{% endblock third_column %}
diff --git a/servo/templates/admin/fields/index.html b/servo/templates/admin/fields/index.html
new file mode 100644
index 0000000..e005c75
--- /dev/null
+++ b/servo/templates/admin/fields/index.html
@@ -0,0 +1,30 @@
+{% extends "generic/admin_list.html" %}
+{% load servo_tags %}
+{% load i18n %}
+
+{% block toolbar %}
+<a href="{% url 'admin-create_field' type=type %}" class="btn btn-default navbar-btn"><i class="icon-plus"></i> {% trans "New Field" %}</a>
+{% endblock toolbar %}
+
+{% block second_column %}
+<div class="row-fluid">
+ <ul class="nav nav-tabs">
+ {% for k, v in types %}
+ <li class="{% active request k %}"><a href="{% url 'admin-fields' type=k %}">{{ v }}</a></li>
+ {% endfor %}
+ </ul>
+</div>
+<div class="row-fluid">
+ <div class="span3">
+ <ul class="nav nav-pills nav-stacked">
+ {% for o in object_list %}
+ <li class="{% active_url request o.get_admin_url %}"><a href="{{ o.get_admin_url }}">{{ o.title|truncatechars:25 }}</a></li>
+ {% endfor %}
+ </ul>
+ </div>
+ <div class="span9">
+ {% block third_column %}
+ {% endblock third_column %}
+ </div>
+</div>
+{% endblock second_column %}
diff --git a/servo/templates/admin/fields/remove.html b/servo/templates/admin/fields/remove.html
new file mode 100644
index 0000000..04c2c93
--- /dev/null
+++ b/servo/templates/admin/fields/remove.html
@@ -0,0 +1,8 @@
+{% load i18n %}
+<form action="/fields/remove/" method="post" accept-charset="utf-8" rel="fields">
+ {% csrf_token %}
+ <input type="hidden" name="id" value="{{ id }}" />
+ <img src="/static/images/alert_48.png" alt="alert" class="alert" />
+ <h2>{% trans "Are you sure you want to delete this field?" %}</h2>
+ <p>{% trans "This action cannot be undone." %}</p>
+</form>
diff --git a/servo/templates/admin/gsx/form.html b/servo/templates/admin/gsx/form.html
new file mode 100755
index 0000000..b154d5d
--- /dev/null
+++ b/servo/templates/admin/gsx/form.html
@@ -0,0 +1,20 @@
+{% extends "admin/gsx/index.html" %}
+{% load i18n %}
+
+{% block third_column %}
+<ul class="nav nav-tabs">
+ <li class="active"><a href="#" data-toggle="tab">{% trans "General" %}</a></li>
+</ul>
+<form method="post" action="" accept-charset="utf-8" class="form-horizontal">
+ {% csrf_token %}
+ {% include "form_snippet.html" %}
+ <div class="form-actions">
+ {% if act.pk %}
+ <a class="btn btn-danger" data-modal="#modal" href="{% url 'admin-delete_gsx_account' act.pk %}">{% trans "Delete" %}</a>
+ {% else %}
+ <a class="btn btn-danger disabled">{% trans "Delete" %}</a>
+ {% endif %}
+ <button type="submit" class="btn btn-primary">{% trans "Save" %}</button>
+ </div>
+</form>
+{% endblock third_column %}
diff --git a/servo/templates/admin/gsx/index.html b/servo/templates/admin/gsx/index.html
new file mode 100755
index 0000000..f137e29
--- /dev/null
+++ b/servo/templates/admin/gsx/index.html
@@ -0,0 +1,6 @@
+{% extends "generic/admin_list.html" %}
+{% load i18n %}
+
+{% block toolbar %}
+ <a href="{% url 'admin-edit_gsx_account' %}" class="btn btn-default navbar-btn"><i class="icon-plus"></i> {% trans "New Account" %}</a>
+{% endblock toolbar %}
diff --git a/servo/templates/admin/gsx/remove.html b/servo/templates/admin/gsx/remove.html
new file mode 100755
index 0000000..184e154
--- /dev/null
+++ b/servo/templates/admin/gsx/remove.html
@@ -0,0 +1,13 @@
+{% extends "modal.html" %}
+{% load i18n %}
+
+{% block header %}
+ {% trans "Remove GSX account" %}?
+{% endblock header %}
+
+{% block footer %}
+ <form action="{{ action }}" method="post" accept-charset="utf-8">
+ {% csrf_token %}
+ <button class="btn btn-danger" type="submit">{% trans "Delete" %}</button>
+ </form>
+{% endblock footer %}
diff --git a/servo/templates/admin/index.html b/servo/templates/admin/index.html
new file mode 100644
index 0000000..e982e28
--- /dev/null
+++ b/servo/templates/admin/index.html
@@ -0,0 +1,50 @@
+{% extends "two_column_layout.html" %}
+{% load servo_tags %}
+{% load i18n %}
+
+{% block first_column %}
+<ul class="nav nav-list">
+ <li class="nav-header">{% trans "System Settings" %}</li>
+ <li class="{% active request "settings" %}">
+ <a href="{% url 'admin-settings' %}"><i class="icon-cog"></i> {% trans "Settings" %}</a>
+ </li>
+ <li class="{% active request "gsx" %}">
+ <a href="{% url 'admin-list_gsx_accounts' %}"><i class="icon-globe"></i> {% trans "GSX Accounts" %}</a>
+ </li>
+ <li class="{% active request "locations" %}">
+ <a href="{% url 'admin-locations' %}"><i class="icon-map-marker"></i> {% trans "Locations" %}</a>
+ </li>
+ <li class="{% active request "statuses" %}">
+ <a href="{% url 'admin-statuses' %}"><i class="icon-tasks"></i> {% trans "Statuses" %}</a>
+ </li>
+ <li class="{% active request "queues" %}">
+ <a href="{% url 'admin-queues' %}"><i class="icon-inbox"></i> {% trans "Queues" %}</a>
+ </li>
+ <li class="{% active request "(users)|(groups)" %}">
+ <a href="{% url 'admin-list_users' %}"><i class="icon-user"></i> {% trans "Users & Groups" %}</a>
+ </li>
+ <li class="{% active request "fields" %}">
+ <a href="{% url 'admin-fields' type='customer' %}"><i class="icon-list-alt"></i> {% trans "Fields" %}</a>
+ </li>
+ <li class="{% active request "tags" %}">
+ <a href="{% url 'admin-tags' type='device' %}"><i class="icon-tags"></i> {% trans "Tags" %}</a>
+ </li>
+ <li class="{% active request "templates" %}">
+ <a href="{% url 'admin-list_templates' %}"><i class="icon-file"></i> {% trans "Templates" %}</a>
+ </li>
+ <li class="{% active request "checklists" %}">
+ <a href="{% url 'admin-checklists' %}"><i class="icon-cog"></i> {% trans "Checklists" %}</a>
+ </li>
+ <li class="{% active request "backups" %}">
+ <a href="{% url 'admin-backups' %}"><i class="icon-download"></i> {% trans "Backups" %}</a>
+ </li>
+</ul>
+{% endblock first_column %}
+
+{% block second_column %}
+
+{% endblock second_column %}
+
+{% block crumbs %}
+ <li class="active">{% trans "Systen Settings" %}</li>
+{% endblock crumbs %}
diff --git a/servo/templates/admin/inventory/index.html b/servo/templates/admin/inventory/index.html
new file mode 100644
index 0000000..ef31079
--- /dev/null
+++ b/servo/templates/admin/inventory/index.html
@@ -0,0 +1,18 @@
+{% extends "admin/index.html" %}
+{% load i18n %}
+
+{% block second_column %}
+<form method="post" accept-charset="utf-8" action="" class="form-horizontal">
+ {% csrf_token %}
+ <ul class="nav nav-tabs">
+ <li class="active"><a href="#tab1" data-toggle="tab">{% trans "Stock" %}</a></li>
+ <li><a href="#tab2" data-toggle="tab">{% trans "Categories" %}</a></li>
+ </ul>
+ <div class="tab-content">
+ <div class="tab-pane active" id="tab1">
+ </div>
+ <div class="tab-pane" id="tab2">
+ </div>
+ </div>
+</form>
+{% endblock second_column %}
diff --git a/servo/templates/admin/locations/form.html b/servo/templates/admin/locations/form.html
new file mode 100644
index 0000000..777c9ab
--- /dev/null
+++ b/servo/templates/admin/locations/form.html
@@ -0,0 +1,40 @@
+{% extends "admin/locations/index.html" %}
+{% load i18n %}
+
+{% block third_column %}
+<ul class="nav nav-tabs">
+ <li class="active"><a href="#tab1" data-toggle="tab">{% trans "General" %}</a></li>
+ <li><a href="#tab3" data-toggle="tab">{% trans "GSX" %}</a></li>
+</ul>
+
+<form method="post" action="" accept-charset="utf-8" enctype="multipart/form-data" class="form-horizontal">
+ {% csrf_token %}
+ <div class="tab-content">
+ <div class="tab-pane active" id="tab1">
+ {% include "form_field_snippet.html" with field=form.title %}
+ {% include "form_field_snippet.html" with field=form.email %}
+ {% include "form_field_snippet.html" with field=form.phone %}
+ {% include "form_field_snippet.html" with field=form.address %}
+ {% include "form_field_snippet.html" with field=form.zip_code %}
+ {% include "form_field_snippet.html" with field=form.city %}
+ {% include "form_field_snippet.html" with field=form.timezone %}
+ {% include "form_field_snippet.html" with field=form.notes %}
+ {% include "form_field_snippet.html" with field=form.logo %}
+ {% include "form_field_snippet.html" with field=form.enabled %}
+ </div>
+ <div class="tab-pane" id="tab3">
+ {% include "form_field_snippet.html" with field=form.gsx_shipto %}
+ {% include "form_field_snippet.html" with field=form.gsx_accounts %}
+ {% include "form_field_snippet.html" with field=form.gsx_tz %}
+ </div>
+ </div>
+ <div class="form-actions">
+ {% if location.pk %}
+ <a class="btn btn-danger" data-modal="#modal" href="{% url 'admin-delete_location' location.pk %}">{% trans "Delete" %}</a>
+ {% else %}
+ <a class="btn btn-danger disabled">{% trans "Delete" %}</a>
+ {% endif %}
+ <button type="submit" class="btn btn-primary">{% trans "Save" %}</button>
+ </div>
+</form>
+{% endblock third_column %}
diff --git a/servo/templates/admin/locations/index.html b/servo/templates/admin/locations/index.html
new file mode 100644
index 0000000..92fe940
--- /dev/null
+++ b/servo/templates/admin/locations/index.html
@@ -0,0 +1,6 @@
+{% extends "generic/admin_list.html" %}
+{% load i18n %}
+
+{% block toolbar %}
+ <a href="{% url 'admin-create_location' %}" class="btn btn-default navbar-btn"><i class="icon-plus"></i> {% trans "New Location" %}</a>
+{% endblock toolbar %}
diff --git a/servo/templates/admin/notifications/form.html b/servo/templates/admin/notifications/form.html
new file mode 100644
index 0000000..ce4a8f9
--- /dev/null
+++ b/servo/templates/admin/notifications/form.html
@@ -0,0 +1,5 @@
+{% extends "admin/index.html" %}
+
+{% block admin_content %}
+
+{% endblock admin_content %}
diff --git a/servo/templates/admin/notifications/index.html b/servo/templates/admin/notifications/index.html
new file mode 100644
index 0000000..1fd05a0
--- /dev/null
+++ b/servo/templates/admin/notifications/index.html
@@ -0,0 +1,39 @@
+{% extends "admin/index.html" %}
+{% load i18n %}
+
+{% block second_column %}
+<ul class="nav nav-tabs">
+ <li class="active"><a href="#">{% trans "Reports" %}</a></li>
+</ul>
+
+<form method="post" action="">
+ {% csrf_token %}
+ <table class="table">
+ <thead>
+ <tr>
+ <th></th>
+ <th>{% trans "Daily" %}</th>
+ <th>{% trans "Weekly" %}</th>
+ <th>{% trans "Monthly" %}</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{% trans "Repairs aging beyond limits" %}</td>
+ <td><input type="checkbox"/></td>
+ <td><input type="checkbox"/></td>
+ <td><input type="checkbox"/></td>
+ </tr>
+ <tr>
+ <td>{% trans "Products below stocking limit" %}</td>
+ <td><input type="checkbox"/></td>
+ <td><input type="checkbox"/></td>
+ <td><input type="checkbox"/></td>
+ </tr>
+ </tbody>
+ </table>
+ <div class="form-actions">
+ <button type="submit" class="btn btn-primary pull-right">{% trans "Save" %}</button>
+ </div>
+</form>
+{% endblock second_column %}
diff --git a/servo/templates/admin/queues/form.html b/servo/templates/admin/queues/form.html
new file mode 100644
index 0000000..119275a
--- /dev/null
+++ b/servo/templates/admin/queues/form.html
@@ -0,0 +1,81 @@
+{% extends "admin/queues/index.html" %}
+{% load i18n %}
+
+{% block third_column %}
+<form method="post" action="" accept-charset="utf-8" class="form-horizontal" enctype="multipart/form-data">
+ {% csrf_token %}
+ {{ formset.management_form }}
+ <ul class="nav nav-tabs">
+ <li class="active"><a href="#tab1" data-toggle="tab">{% trans "General" %}</a></li>
+ <li><a href="#tab2" data-toggle="tab">{% trans "Statuses" %}</a></li>
+ <li><a href="#tab5" data-toggle="tab">{% trans "Defaults" %}</a></li>
+ <li><a href="#tab3" data-toggle="tab">{% trans "GSX" %}</a></li>
+ <li><a href="#tab4" data-toggle="tab">{% trans "Templates" %}</a></li>
+ <li><a href="#tab6" data-toggle="tab">{% trans "Users" %}</a></li>
+ </ul>
+ <div class="tab-content">
+ <div class="tab-pane active" id="tab1">
+ {% include "form_field_snippet.html" with field=form.title %}
+ {% include "form_field_snippet.html" with field=form.priority %}
+ {% include "form_field_snippet.html" with field=form.description %}
+ <!--{% include "form_field_snippet.html" with field=form.keywords %}//-->
+ {% include "form_field_snippet.html" with field=form.locations %}
+ </div>
+ <div class="tab-pane" id="tab2">
+ <table class="table table-condensed" id="table-queue-status">
+ <thead>
+ <tr>
+ <th>{% trans "Status" %}</th>
+ <th colspan="3">{% trans "Time limits" %}</th>
+ <th style="width:30px" class="text-center">{% trans "Delete" %}</th>
+ </tr>
+ </thead>
+ <tbody>
+ {% for form in formset %}
+ <tr class="form">
+ {% for field in form %}
+ {% if field.is_hidden %}
+ {{ field }}
+ {% else %}
+ <td>{{ field }}</td>
+ {% endif %}
+ {% endfor %}
+ </tr>
+ {% endfor %}
+ </tbody>
+ </table>
+ <a class="btn" id="add_more"><i class="icon-plus"></i> {% trans "Add Status" %}</a>
+ </div>
+ <div class="tab-pane" id="tab5">
+ {% include "form_field_snippet.html" with field=form.status_created %}
+ {% include "form_field_snippet.html" with field=form.status_assigned %}
+ {% include "form_field_snippet.html" with field=form.status_products_ordered %}
+ {% include "form_field_snippet.html" with field=form.status_products_received %}
+ {% include "form_field_snippet.html" with field=form.status_repair_completed %}
+ {% include "form_field_snippet.html" with field=form.status_dispatched %}
+ {% include "form_field_snippet.html" with field=form.status_closed %}
+ </div>
+ <div class="tab-pane" id="tab3">
+ {% include "form_field_snippet.html" with field=form.gsx_soldto %}
+ </div>
+ <div class="tab-pane" id="tab4">
+ {% include "form_field_snippet.html" with field=form.order_template %}
+ {% include "form_field_snippet.html" with field=form.quote_template %}
+ {% include "form_field_snippet.html" with field=form.receipt_template %}
+ {% include "form_field_snippet.html" with field=form.dispatch_template %}
+ </div>
+ <div class="tab-pane" id="tab6">
+ {% include "form_field_snippet.html" with field=form.users %}
+ </div>
+ </div>
+ {% include "form_buttons.html" %}
+</form>
+{% endblock third_column %}
+
+{% block media %}
+<script type="text/javascript">
+ $('#add_more').click(function() {
+ cloneMore('tr.form:last', 'queuestatus_set', true);
+ });
+</script>
+{% endblock media %}
diff --git a/servo/templates/admin/queues/index.html b/servo/templates/admin/queues/index.html
new file mode 100644
index 0000000..d161dbb
--- /dev/null
+++ b/servo/templates/admin/queues/index.html
@@ -0,0 +1,6 @@
+{% extends "generic/admin_list.html" %}
+{% load i18n %}
+
+{% block toolbar %}
+ <a href="{% url 'admin-create_queue' %}" class="btn btn-default navbar-btn"><i class="icon-plus"></i> {% trans "New Queue" %}</a>
+{% endblock toolbar %}
diff --git a/servo/templates/admin/queues/remove.html b/servo/templates/admin/queues/remove.html
new file mode 100644
index 0000000..125f89e
--- /dev/null
+++ b/servo/templates/admin/queues/remove.html
@@ -0,0 +1,17 @@
+{% extends "modal.html" %}
+{% load i18n %}
+
+{% block header %}
+ {% blocktrans with queue.title as title %}Delete queue "{{ title }}"?{% endblocktrans %}
+{% endblock header %}
+
+{% block body %}
+ <p>{% trans "Orders in this queue will not be deleted." %}</p>
+{% endblock body %}
+
+{% block footer %}
+ <form action="{% url 'admin-delete_queue' queue.pk %}" method="post">
+ {% csrf_token %}
+ <button type="submit" class="btn btn-danger">{% trans "Delete" %}</button>
+ </form>
+{% endblock footer %}
diff --git a/servo/templates/admin/settings.html b/servo/templates/admin/settings.html
new file mode 100644
index 0000000..15266b7
--- /dev/null
+++ b/servo/templates/admin/settings.html
@@ -0,0 +1,136 @@
+{% extends "admin/index.html" %}
+{% load i18n %}
+
+{% block second_column %}
+<form method="post" accept-charset="utf-8" action="" enctype="multipart/form-data" class="form-horizontal">
+ {% csrf_token %}
+<!--
+ {{ formset.management_form }}
+//-->
+ <ul class="nav nav-tabs">
+ <li class="active"><a href="#tab1" data-toggle="tab">{% trans "General" %}</a></li>
+ <li><a href="#tab2" data-toggle="tab">{% trans "Stock" %}</a></li>
+ <li><a href="#tab3" data-toggle="tab">{% trans "Outgoing Mail" %}</a></li>
+ <li><a href="#tab4" data-toggle="tab">{% trans "Incoming Mail" %}</a></li>
+ <li><a href="#tab5" data-toggle="tab">{% trans "Text Messages" %}</a></li>
+ <li><a href="#tab6" data-toggle="tab">{% trans "Check-in" %}</a></li>
+ </ul>
+ <div class="tab-content">
+ <div class="tab-pane active" id="tab1">
+ {% include "form_field_snippet.html" with field=form.company_name %}
+ {% include "form_field_snippet.html" with field=form.company_logo %}
+ {% include "form_field_snippet.html" with field=form.gsx_account %}
+ {% include "form_field_snippet.html" with field=form.terms_of_service %}
+ {% include "form_field_snippet.html" with field=form.autocomplete_repairs %}
+ </div>
+ <div class="tab-pane" id="tab2">
+ {% include "form_field_snippet.html" with field=form.currency %}
+ {% include "form_field_snippet.html" with field=form.pct_margin %}
+ {% include "form_field_snippet.html" with field=form.pct_vat %}
+ {% include "form_field_snippet.html" with field=form.shipping_cost %}
+ {% include "form_field_snippet.html" with field=form.track_inventory %}
+ <div class="control-group">
+ <div class="controls">
+ <label class="checkbox">
+ <input name="update_prices" type="checkbox" value="1"/> {% trans "Update prices" %}
+ </label>
+ <span class="help-block">{% trans "Applies the new settings to existing products after saving" %}</span>
+ </div>
+ </div>
+ </div>
+ <div class="tab-pane" id="tab3">
+ <fieldset>
+ {% include "form_field_snippet.html" with field=form.default_sender %}
+ {% include "form_field_snippet.html" with field=form.default_sender_custom %}
+ {% include "form_field_snippet.html" with field=form.default_subject %}
+ {% include "form_field_snippet.html" with field=form.smtp_host %}
+ {% include "form_field_snippet.html" with field=form.smtp_user %}
+ {% include "form_field_snippet.html" with field=form.smtp_password %}
+ {% include "form_field_snippet.html" with field=form.smtp_ssl %}
+ </fieldset>
+ <fieldset>
+ <legend>{% trans "Notifications" %}</legend>
+ {% include "form_field_snippet.html" with field=form.notify_address %}
+ {% include "form_field_snippet.html" with field=form.notify_location %}
+ </fieldset>
+ </div>
+ <div class="tab-pane" id="tab4">
+ {% include "form_field_snippet.html" with field=form.imap_act %}
+ {% include "form_field_snippet.html" with field=form.imap_host %}
+ {% include "form_field_snippet.html" with field=form.imap_user %}
+ {% include "form_field_snippet.html" with field=form.imap_password %}
+ {% include "form_field_snippet.html" with field=form.imap_ssl %}
+ </div>
+ <div class="tab-pane" id="tab5">
+ {% include "form_field_snippet.html" with field=form.sms_gateway %}
+ {% if config.sms_gateway == 'builtin' %}
+ <p class="text-muted text-center">{% trans "Sending SMS messages will be handled by Servo" %}</p>
+ {% endif %}
+ {% if config.sms_gateway == 'http' %}
+ {% include "form_field_snippet.html" with field=form.sms_http_url %}
+ {% include "form_field_snippet.html" with field=form.sms_http_user %}
+ {% include "form_field_snippet.html" with field=form.sms_http_password %}
+ {% endif %}
+ {% if config.sms_gateway == 'smtp' %}
+ {% include "form_field_snippet.html" with field=form.sms_smtp_address %}
+ {% endif %}
+ {% if config.sms_gateway == 'jazz' %}
+ {% include "form_field_snippet.html" with field=form.sms_http_user %}
+ {% include "form_field_snippet.html" with field=form.sms_http_password %}
+ {% include "form_field_snippet.html" with field=form.sms_http_sender %}
+ {% endif %}
+ {% if config.sms_gateway == 'hqsms' %}
+ {% include "form_field_snippet.html" with field=form.sms_http_user %}
+ {% include "form_field_snippet.html" with field=form.sms_http_password %}
+ {% include "form_field_snippet.html" with field=form.sms_http_sender %}
+ {% endif %}
+ </div>
+ <div class="tab-pane" id="tab6">
+ {% include "form_field_snippet.html" with field=form.checkin_user %}
+ {% include "form_field_snippet.html" with field=form.checkin_group %}
+ {% include "form_field_snippet.html" with field=form.checkin_queue %}
+ {% include "form_field_snippet.html" with field=form.checkin_checklist %}
+ {% include "form_field_snippet.html" with field=form.checkin_password %}
+ {% include "form_field_snippet.html" with field=form.checkin_require_password %}
+ {% include "form_field_snippet.html" with field=form.checkin_require_condition %}
+ {% include "form_field_snippet.html" with field=form.checkin_report_checklist %}
+ {% include "form_field_snippet.html" with field=form.checkin_timeline %}
+<!--
+ <fieldset>
+ <legend>{% trans "Shipping Methods" %}</legend>
+ {% for f in formset %}
+ <div class="form">
+ {% include "form_snippet.html" with form=f %}
+ </div>
+ {% endfor %}
+ </fieldset>
+ <a class="btn" id="add_more"><i class="icon-plus"></i> {% trans "Add Method" %}</a>
+//-->
+ </div>
+ </div>
+ <div class="form-actions">
+ <button type="submit" class="btn btn-primary">{% trans "Save" %}</button>
+ </div>
+</form>
+{% endblock second_column %}
+
+{% block media %}
+<script type="text/javascript">
+ $(function(){
+ $('#id_default_sender').change(function(){
+ if( $(this).val() == 'custom' ) {
+ $('#id_default_sender_custom').attr('disabled', false);
+ $('#id_default_sender_custom').focus();
+ } else {
+ $('#id_default_sender_custom').attr('disabled', true);
+ }
+ });
+ $('#id_default_sender').trigger('change');
+
+ $('#add_more').click(function() {
+ cloneMore('div.form:last', 'form', false);
+ });
+
+ });
+</script>
+{% endblock media %}
diff --git a/servo/templates/admin/sites/edit_site.html b/servo/templates/admin/sites/edit_site.html
new file mode 100644
index 0000000..5c0004a
--- /dev/null
+++ b/servo/templates/admin/sites/edit_site.html
@@ -0,0 +1,9 @@
+{% extends "admin/sites/index.html" %}
+
+{% block detail_block %}
+ <form method="post" action="" class="form-horizontal">
+ {% csrf_token %}
+ {% include "form_snippet.html" %}
+ {% include "form_buttons.html" %}
+ </form>
+{% endblock detail_block %}
diff --git a/servo/templates/admin/sites/index.html b/servo/templates/admin/sites/index.html
new file mode 100644
index 0000000..4cf96f3
--- /dev/null
+++ b/servo/templates/admin/sites/index.html
@@ -0,0 +1,23 @@
+{% extends "admin/index.html" %}
+{% load servo_tags %}
+{% load i18n %}
+
+{% block toolbar %}
+ <a href="{% url 'admin-create_site' %}" class="btn btn-inverse"><i class="fa fa-plus icon-white"></i> {% trans "New Site" %}</a>
+{% endblock toolbar %}
+
+{% block second_column %}
+<div class="span3">
+ <ul class="nav nav-list">
+ <li class="nav-header">{% trans "Sites" %}</li>
+ {% for i in sites %}
+ <li class="{% active request "sites" i.pk %}"><a href="{% url 'admin-edit_site' i.pk %}">{{ i.name }}</a></li>
+ {% endfor %}
+ </ul>
+</div>
+<div class="span9">
+ {% block detail_block %}
+ <h1 class="text-muted">{% trans "No site selected" %}</h1>
+ {% endblock detail_block %}
+</div>
+{% endblock second_column %}
diff --git a/servo/templates/admin/statuses/form.html b/servo/templates/admin/statuses/form.html
new file mode 100644
index 0000000..7998ddf
--- /dev/null
+++ b/servo/templates/admin/statuses/form.html
@@ -0,0 +1,21 @@
+{% extends "admin/statuses/index.html" %}
+{% load i18n %}
+
+{% block third_column %}
+<ul class="nav nav-tabs">
+ <li class="active"><a href="#" data-toggle="tab">{% trans "General" %}</a></li>
+</ul>
+
+<form method="post" action="" accept-charset="utf-8" class="form-horizontal">
+ {% csrf_token %}
+ {% include "form_snippet.html" %}
+ <div class="form-actions">
+ {% if status.pk %}
+ <a class="btn btn-danger" data-modal="#modal" href="{% url 'admin-delete_status' status.pk %}">{% trans "Delete" %}</a>
+ {% else %}
+ <a class="btn btn-danger disabled">{% trans "Delete" %}</a>
+ {% endif %}
+ <button type="submit" class="btn btn-primary">{% trans "Save" %}</button>
+ </div>
+</form>
+{% endblock third_column %}
diff --git a/servo/templates/admin/statuses/index.html b/servo/templates/admin/statuses/index.html
new file mode 100644
index 0000000..01df5fa
--- /dev/null
+++ b/servo/templates/admin/statuses/index.html
@@ -0,0 +1,6 @@
+{% extends "generic/admin_list.html" %}
+{% load i18n %}
+
+{% block toolbar %}
+ <a href="{% url 'admin-create_status' %}" class="btn btn-default navbar-btn"><i class="icon-plus"></i> {% trans "New Status" %}</a>
+{% endblock toolbar %}
diff --git a/servo/templates/admin/statuses/remove.html b/servo/templates/admin/statuses/remove.html
new file mode 100644
index 0000000..78385a6
--- /dev/null
+++ b/servo/templates/admin/statuses/remove.html
@@ -0,0 +1,17 @@
+{% extends "modal.html" %}
+{% load i18n %}
+
+{% block header %}
+ <h2>{% blocktrans with status.title as title %}Delete status "{{ title }}"?{% endblocktrans %}</h2>
+{% endblock header %}
+
+{% block body %}
+ <p>{% trans "This action cannot be undone." %}</p>
+{% endblock body %}
+
+{% block footer %}
+ <form action="{{ action }}" method="post">
+ {% csrf_token %}
+ <button type="submit" class="btn btn-danger">{% trans "Delete" %}</button>
+ </form>
+{% endblock footer %}
diff --git a/servo/templates/admin/tags/form.html b/servo/templates/admin/tags/form.html
new file mode 100644
index 0000000..8f6d975
--- /dev/null
+++ b/servo/templates/admin/tags/form.html
@@ -0,0 +1,17 @@
+{% extends "admin/tags/index.html" %}
+{% load i18n %}
+
+{% block third_column %}
+<form action="" method="post" class="form-horizontal">
+ {% csrf_token %}
+ {% include "form_snippet.html" %}
+ <div class="form-actions">
+ {% if tag.pk %}
+ <a class="btn btn-danger" data-modal="#modal" href="{% url 'admin-delete_tag' tag.pk %}">{% trans "Delete" %}</a>
+ {% else %}
+ <a class="btn btn-danger disabled">{% trans "Delete" %}</a>
+ {% endif %}
+ <button type="submit" class="btn btn-primary">{% trans "Save" %}</button>
+ </div>
+</form>
+{% endblock third_column %}
diff --git a/servo/templates/admin/tags/index.html b/servo/templates/admin/tags/index.html
new file mode 100644
index 0000000..26ff6bd
--- /dev/null
+++ b/servo/templates/admin/tags/index.html
@@ -0,0 +1,37 @@
+{% extends "generic/admin_list.html" %}
+{% load servo_tags %}
+{% load i18n %}
+
+{% block toolbar %}
+<a href="{% url 'admin-create_tag' type=type %}" class="btn btn-default navbar-btn"><i class="icon-plus"></i> {% trans "New Tag" %}</a>
+{% endblock toolbar %}
+
+{% block second_column %}
+
+<div class="row">
+ <ul class="nav nav-tabs">
+ {% for k, v in types %}
+ <li {% if k == type %} class="active"{% endif %}><a href="{% url 'admin-tags' type=k %}">{{ v }}</a></li>
+ {% endfor %}
+ </ul>
+</div>
+
+<div class="row">
+ <div class="span5">
+ <ul class="nav nav-pills nav-stacked">
+ {% for o in object_list %}
+ <li class="{% active_url request o.get_admin_url %}"><a href="{{ o.get_admin_url }}">{{ o.title }}</a></li>
+ {% empty %}
+ <li class="empty">{% blocktrans with objects=title %}No {{ objects }} found.{% endblocktrans %}</li>
+ {% endfor %}
+ </ul>
+ </div>
+ <div class="span7">
+ <ul class="nav nav-tabs">
+ <li class="active"><a href="#tab1" data-toggle="tab">{% trans "General" %}</a></li>
+ </ul>
+ {% block third_column %}
+ {% endblock third_column %}
+ </div>
+</div>
+{% endblock second_column %}
diff --git a/servo/templates/admin/templates/form.html b/servo/templates/admin/templates/form.html
new file mode 100644
index 0000000..a55803a
--- /dev/null
+++ b/servo/templates/admin/templates/form.html
@@ -0,0 +1,21 @@
+{% extends "admin/templates/list_templates.html" %}
+{% load i18n %}
+
+{% block third_column %}
+<ul class="nav nav-tabs">
+ <li class="active"><a href="#" data-toggle="tab">{% trans "General" %}</a></li>
+</ul>
+
+<form method="post" action="" accept-charset="utf-8" class="form-horizontal">
+ {% csrf_token %}
+ {% include "form_snippet.html" %}
+ <div class="form-actions">
+ {% if template.pk %}
+ <a class="btn btn-danger" data-modal="#modal" href="{% url 'admin-delete_template' template.pk %}">{% trans "Delete" %}</a>
+ {% else %}
+ <a class="btn btn-danger disabled">{% trans "Delete" %}</a>
+ {% endif %}
+ <button type="submit" class="btn btn-primary">{% trans "Save" %}</button>
+ </div>
+</form>
+{% endblock third_column %}
diff --git a/servo/templates/admin/templates/list_templates.html b/servo/templates/admin/templates/list_templates.html
new file mode 100644
index 0000000..3af70d3
--- /dev/null
+++ b/servo/templates/admin/templates/list_templates.html
@@ -0,0 +1,7 @@
+{% extends "generic/admin_list.html" %}
+{% load servo_tags %}
+{% load i18n %}
+
+{% block toolbar %}
+ <a class="btn btn-default navbar-btn" href="{% url 'admin-edit_template' %}"><i class="icon-plus"></i> {% trans "New Template" %}</a>
+{% endblock toolbar %}
diff --git a/servo/templates/admin/users/delete_group.html b/servo/templates/admin/users/delete_group.html
new file mode 100644
index 0000000..2c733df
--- /dev/null
+++ b/servo/templates/admin/users/delete_group.html
@@ -0,0 +1,11 @@
+{% extends "modal.html" %}
+{% load i18n %}
+
+{% block header %}{% trans "Really delete this group?" %}{% endblock header %}
+{% block body %}{% trans "Group member accounts will not be deleted." %}{% endblock body %}
+{% block footer %}
+<form action="{{ action }}" method="post">
+ {% csrf_token %}
+ <button type="submit" class="btn btn-danger">{% trans "Delete" %}</button>
+</form>
+{% endblock footer %}
diff --git a/servo/templates/admin/users/form.html b/servo/templates/admin/users/form.html
new file mode 100644
index 0000000..34764ab
--- /dev/null
+++ b/servo/templates/admin/users/form.html
@@ -0,0 +1,70 @@
+{% extends "admin/users/index.html" %}
+{% load i18n %}
+
+{% block third_column %}
+<form action="" method="post" accept-charset="utf-8" class="form-horizontal">
+ {% csrf_token %}
+ <ul class="nav nav-tabs">
+ <li class="active"><a href="#tab1" data-toggle="tab">{% trans "General" %}</a></li>
+ <li><a href="#tab2" data-toggle="tab">{% trans "Permissions" %}</a></li>
+ <li><a href="#tab3" data-toggle="tab">{% trans "Location" %}</a></li>
+ <li><a href="#tab4" data-toggle="tab">{% trans "Profile" %}</a></li>
+ <li><a href="#tab5" data-toggle="tab">{% trans "GSX" %}</a></li>
+ </ul>
+ <div class="tab-content">
+ <div class="tab-pane active" id="tab1">
+ {% include "form_field_snippet.html" with field=form.first_name %}
+ {% include "form_field_snippet.html" with field=form.last_name %}
+ {% include "form_field_snippet.html" with field=form.username %}
+ {% include "form_field_snippet.html" with field=form.email %}
+ {% include "form_field_snippet.html" with field=form.password1 %}
+ {% include "form_field_snippet.html" with field=form.password2 %}
+ {% include "form_field_snippet.html" with field=form.is_active %}
+ </div>
+ <div class="tab-pane" id="tab2">
+ {% include "form_field_snippet.html" with field=form.groups %}
+ {% include "form_field_snippet.html" with field=form.is_staff %}
+ {% include "form_field_snippet.html" with field=form.customer %}
+ <div class="control-group ">
+ <label class="control-label">{% trans "API Tokens" %}</label>
+ <div class="controls">
+ <ul style="padding:5px">
+ {% for t in user.get_tokens %}
+ <li class="muted">{{ t.key }}<a href="{% url 'admin-delete_user_token' user.pk %}"><i class="icon-trash"></i></a></li>
+ {% endfor %}
+ </ul>
+ {% if user.pk %}
+ <a class="btn btn-default btn-small" href="{% url 'admin-create_user_token' user.pk %}">{% trans "New Token" %}</a>
+ {% else %}
+ <a class="btn btn-default btn-small disabled" href="#">{% trans "New Token" %}</a>
+ {% endif %}
+ </div>
+ </div>
+ </div>
+ <div class="tab-pane" id="tab3">
+ {% include "form_field_snippet.html" with field=form.location %}
+ {% include "form_field_snippet.html" with field=form.locations %}
+ </div>
+ <div class="tab-pane" id="tab4">
+ {% include "form_field_snippet.html" with field=form.locale %}
+ {% include "form_field_snippet.html" with field=form.region %}
+ {% include "form_field_snippet.html" with field=form.timezone %}
+ {% include "form_field_snippet.html" with field=form.queues %}
+ </div>
+ <div class="tab-pane" id="tab5">
+ {% include "form_field_snippet.html" with field=form.tech_id %}
+ {% include "form_field_snippet.html" with field=form.gsx_userid %}
+ {% include "form_field_snippet.html" with field=form.gsx_poprefix %}
+ </div>
+ </div>
+ <div class="form-actions">
+ {% if user.pk %}
+ <a href="{% url 'admin-delete_user' user.pk %}" class="btn btn-danger" data-modal="#modal">{% trans "Delete" %}</a>
+ {% else %}
+ <a href="#" class="btn btn-danger disabled">{% trans "Delete" %}</a>
+ {% endif %}
+ <button type="button" class="btn" onclick="javascript:history.back();">{% trans "Back" %}</button>
+ <button type="submit" class="btn btn-primary">{% trans "Save" %}</button>
+ </div>
+</form>
+{% endblock third_column %}
diff --git a/servo/templates/admin/users/group_form.html b/servo/templates/admin/users/group_form.html
new file mode 100644
index 0000000..07b9785
--- /dev/null
+++ b/servo/templates/admin/users/group_form.html
@@ -0,0 +1,23 @@
+{% extends "admin/users/groups.html" %}
+{% load servo_tags %}
+{% load i18n %}
+
+{% block third_column %}
+<div class="row-fluid">
+ <div class="span3">
+ <ul class="nav nav-pills nav-stacked">
+ {% for o in object_list %}
+ <li class="{% active_url request o.get_admin_url %}"><a href="{% url 'admin-edit_group' o.pk %}">{{ o.name }}</a></li>
+ {% endfor %}
+ </ul>
+ </ul>
+ </div>
+ <div class="span9">
+ <form action="" method="post" accept-charset="utf-8" class="form-horizontal">
+ {% csrf_token %}
+ {% include "form_snippet.html" %}
+ {% include "form_buttons.html" %}
+ </form>
+ </div>
+</div>
+{% endblock third_column %}
diff --git a/servo/templates/admin/users/groups.html b/servo/templates/admin/users/groups.html
new file mode 100644
index 0000000..0d81c3b
--- /dev/null
+++ b/servo/templates/admin/users/groups.html
@@ -0,0 +1,37 @@
+{% extends "admin/users/index.html" %}
+{% load servo_tags %}
+{% load i18n %}
+
+{% block second_column %}
+{% include "admin/users/tabs.html" %}
+
+{% block third_column %}
+<table class="table">
+ <thead>
+ <tr>
+ <th>{% trans "Group" %}</th>
+ <th>{% trans "Members" %}</th>
+ <th style="width:100px"></th>
+ </tr>
+ </thead>
+ <tbody>
+ {% for group in object_list %}
+ <tr>
+ <td><a href="{% url 'admin-edit_group' group.pk %}">{{ group.name }}</a></td>
+ <td>{{ group.user_set.all|join:", "}}</td>
+ <td style="text-align:right">
+ <div class="btn-group">
+ <a href="{% url 'admin-edit_group' group.pk %}" class="btn btn-warning"><i class="icon-pencil icon-white"></i></a>
+ <a href="{% url 'admin-delete_group' group.pk %}" class="btn btn-danger" data-modal="#modal"><i class="icon-trash icon-white"></i></a>
+ </div>
+ </td>
+ </tr>
+ {% empty %}
+ <tr>
+ <td colspan="3" class="text-muted empty">{% trans "No groups defined" %}</td>
+ </tr>
+ {% endfor %}
+ </tbody>
+</table>
+{% endblock third_column %}
+{% endblock second_column %}
diff --git a/servo/templates/admin/users/index.html b/servo/templates/admin/users/index.html
new file mode 100644
index 0000000..c85ced1
--- /dev/null
+++ b/servo/templates/admin/users/index.html
@@ -0,0 +1,51 @@
+{% extends "admin/index.html" %}
+{% load servo_tags %}
+{% load i18n %}
+
+{% block toolbar %}
+<div class="btn-group">
+ <a class="btn" href="{% url 'admin-create_user' %}"><i class="icon-plus"></i> {% trans "New User" %}</a>
+ <a class="btn btn-default navbar-btn dropdown-toggle" data-toggle="dropdown" href="#">
+ <span class="caret"></span>
+ </a>
+ <ul class="dropdown-menu">
+ <li><a href="{% url 'admin-create_group' %}">{% trans "New Group" %}</a></li>
+ <li><a href="{% url 'admin-upload_users' %}" data-modal="#modal">{% trans "Upload Users" %}</a></li>
+ </ul>
+</div>
+{% endblock toolbar %}
+
+{% block second_column %}
+<div class="row-fluid">
+ {% include "admin/users/tabs.html" %}
+</div>
+
+<div class="row-fluid">
+ <div class="span3">
+ <div class="btn-group">
+ <a class="btn btn-mini dropdown-toggle" data-toggle="dropdown" href="#">
+ <i class="icon-search"></i>
+ <span class="caret"></span>
+ </a>
+ <ul class="dropdown-menu">
+ {% for l in locations %}
+ <li><a href="?l={{ l.pk|safe }}">{{ l }}</a></li>
+ {% endfor %}
+ </ul>
+ </div>
+ <ul class="nav nav-pills nav-stacked">
+ {% for o in object_list %}
+ {% if o.is_active %}
+ <li class="{% active_url request o.get_admin_url %}"><a href="{{ o.get_admin_url }}"><i class="{{ o.get_icon }}"></i> {{ o.get_name|truncatechars:"25" }}</a></li>
+ {% else %}
+ <li class="{% active_url request o.get_admin_url %}"><a href="{{ o.get_admin_url }}" class="muted"><i class="{{ o.get_icon }}"></i> {{ o.get_name }}</a></li>
+ {% endif %}
+ {% endfor %}
+ </ul>
+ </div>
+ <div class="span9">
+ {% block third_column %}
+ {% endblock third_column %}
+ </div>
+</div>
+{% endblock second_column %}
diff --git a/servo/templates/admin/users/remove.html b/servo/templates/admin/users/remove.html
new file mode 100644
index 0000000..5c80d29
--- /dev/null
+++ b/servo/templates/admin/users/remove.html
@@ -0,0 +1,17 @@
+{% extends "modal.html" %}
+{% load i18n %}
+
+{% block header %}
+ {% blocktrans with user=user.get_full_name %}Delete user {{ user }}?{% endblocktrans %}
+{% endblock header %}
+
+{% block body %}
+ <p>{% trans 'This action cannot be undone.' %}</p>
+{% endblock body %}
+
+{% block footer %}
+ <form action="{% url 'admin-delete_user' user.id %}" method="post" accept-charset="utf-8">
+ {% csrf_token %}
+ <button class="btn btn-danger" type="submit">{% trans "Delete" %}</button>
+ </form>
+{% endblock footer %}
diff --git a/servo/templates/admin/users/tabs.html b/servo/templates/admin/users/tabs.html
new file mode 100644
index 0000000..576e5da
--- /dev/null
+++ b/servo/templates/admin/users/tabs.html
@@ -0,0 +1,7 @@
+{% load i18n %}
+{% load servo_tags %}
+
+<ul class="nav nav-tabs">
+ <li class="{% active request "users" %}"><a href="{% url 'admin-list_users' %}">{% trans "Users" %}</a></li>
+ <li class="{% active request "groups" %}"><a href="{% url 'admin-list_groups' %}">{% trans "Groups" %}</a></li>
+</ul>
diff --git a/servo/templates/admin/users/upload_users.html b/servo/templates/admin/users/upload_users.html
new file mode 100644
index 0000000..746842b
--- /dev/null
+++ b/servo/templates/admin/users/upload_users.html
@@ -0,0 +1,13 @@
+{% extends "modal.html" %}
+{% load i18n %}
+
+{% block header %}
+ {{ title }}
+{% endblock header %}
+
+{% block body %}
+<form method="post" action="{{ action }}" enctype="multipart/form-data" class="form-horizontal" accept-charset="utf-8">
+ {% csrf_token %}
+ {% include "form_snippet.html" %}
+</form>
+{% endblock body %}