about summary refs log tree commit diff
path: root/gn2/wqflask/templates/admin
diff options
context:
space:
mode:
Diffstat (limited to 'gn2/wqflask/templates/admin')
-rw-r--r--gn2/wqflask/templates/admin/change_resource_owner.html114
-rw-r--r--gn2/wqflask/templates/admin/create_group.html84
-rw-r--r--gn2/wqflask/templates/admin/group_manager.html147
-rw-r--r--gn2/wqflask/templates/admin/ind_user_manager.html111
-rw-r--r--gn2/wqflask/templates/admin/manage_resource.html124
-rw-r--r--gn2/wqflask/templates/admin/manage_user.html79
-rw-r--r--gn2/wqflask/templates/admin/search_for_groups.html134
-rw-r--r--gn2/wqflask/templates/admin/set_group_privileges.html102
-rw-r--r--gn2/wqflask/templates/admin/user_manager.html41
-rw-r--r--gn2/wqflask/templates/admin/view_group.html270
10 files changed, 1206 insertions, 0 deletions
diff --git a/gn2/wqflask/templates/admin/change_resource_owner.html b/gn2/wqflask/templates/admin/change_resource_owner.html
new file mode 100644
index 00000000..7fd84387
--- /dev/null
+++ b/gn2/wqflask/templates/admin/change_resource_owner.html
@@ -0,0 +1,114 @@
+{% extends "base.html" %}
+{% block title %}Resource Manager{% endblock %}
+{% block css %}
+    <link rel="stylesheet" type="text/css" href="{{ url_for('css', filename='DataTables/css/jquery.dataTables.css') }}" />
+    <link rel="stylesheet" type="text/css" href="/static/new/css/show_trait.css" />
+{% endblock %}
+{% block content %}
+<!-- Start of body -->
+    <div class="container">
+        <div class="page-header">
+            <h1>Search for user to assign ownership to:</h1>
+        </div>
+        <form id="change_owner_form" action="/resource-management/resources/{{ resource_id }}/change-owner" method="POST">
+            <div style="min-width: 600px; max-width: 800px;">
+                <fieldset>
+                    <div class="form-horizontal" style="width: 900px;">
+                        <div style="margin-bottom: 30px;">
+                            <h2>Search for user by either name or e-mail:</h2>
+                        </div>
+                        <div class="form-group" style="padding-left: 20px;">
+                            <label for="user_name" class="col-xs-3" style="float: left; font-size: 18px;">User's Name:</label>
+                            <div class="controls input-append col-xs-9" style="display: flex; padding-left: 20px; float: left;">
+                                <input name="user_name" type="text" value="">
+                            </div>
+                        </div>
+                        <div class="form-group" style="padding-left: 20px;">
+                            <label for="user_email" class="col-xs-3" style="float: left; font-size: 18px;">User's E-mail:</label>
+                            <div class="controls input-append col-xs-9" style="display: flex; padding-left: 20px; float: left;">
+                                <input name="user_email" type="text" value="">
+                            </div>
+                        </div>
+                        <div class="form-group" style="padding-left: 20px;">
+                            <label class="col-xs-3" style="float: left; font-size: 18px;"></label>
+                            <div class="controls input-append col-xs-9" style="display: flex; padding-left: 20px; float: left;">
+                                <button type="button" id="find_users" class="btn btn-primary">Search</button>
+                                <button style="margin-left: 20px; display: none;" type="submit" id="submit_new_owner" class="btn btn-success">Assign Ownership to Selected User</button>
+                            </div>
+                        </div>
+                    </div>
+                </fieldset>
+                <hr>
+                <div id="user_results">
+                </div>
+            </div>
+        </form>
+    </div>
+
+<!-- End of body -->
+
+{% endblock %}
+
+{% block js %}
+    <script language="javascript" type="text/javascript" src="{{ url_for('js', filename='DataTables/js/jquery.dataTables.min.js') }}"></script>
+
+    <script language="javascript">
+        $('#find_users').click(function() {
+            $.ajax({
+                method: "POST",
+                url: "/resource-management/{{ resource_id }}/users/search",
+                data: {
+                    user_name: $('input[name=user_name]').val(),
+                    user_email: $('input[name=user_email]').val()
+                },
+                success: populate_users
+            });
+        })
+
+        populate_users = function(json_user_list){
+            let user_list = JSON.parse(json_user_list)
+            let searchResultsHtml = ""
+            if (user_list.length > 0){
+                searchResultsHtml += "<table id='users_table' style='padding-top: 10px; width: 100%;' class='table-hover table-striped cell-border'>";
+                searchResultsHtml += "<thead><tr><th></th><th>Index</th><th>Name</th><th>E-mail Address</th><th>Organization</th></tr></thead>";
+                searchResultsHtml += "<tbody>";
+                for (_i = 0, _len = user_list.length; _i < _len; _i++) {
+                    this_user = user_list[_i]
+                    searchResultsHtml += "<tr>";
+                    searchResultsHtml += "<td align='center' class='select_user'><input type='radio' name='new_owner' value='" + this_user.user_id + "'></td>";
+                    searchResultsHtml += "<td>" + (_i + 1).toString() + "</td>"
+                    if ("full_name" in this_user) {
+                        searchResultsHtml += "<td>" + this_user.full_name + "</td>";
+                    } else {
+                        searchResultsHtml += "<td>N/A</td>"
+                    }
+                    if ("email_address" in this_user) {
+                        searchResultsHtml += "<td>" + this_user.email_address + "</td>";
+                    } else {
+                        searchResultsHtml += "<td>N/A</td>"
+                    }
+                    if ("organization" in this_user) {
+                        searchResultsHtml += "<td>" + this_user.organization + "</td>";
+                    } else {
+                        searchResultsHtml += "<td>N/A</td>"
+                    }
+                    searchResultsHtml += "</tr>"
+                }
+                searchResultsHtml += "</tbody>";
+                searchResultsHtml += "</table>";
+            } else {
+                searchResultsHtml = "<span>No users were found matching the entered criteria.</span>"
+            }
+
+            $('#user_results').html(searchResultsHtml)
+            if (user_list.length > 0){
+                $('#users_table').dataTable({
+                    'order': [[1, "asc" ]],
+                    'sDom': 'tr'
+                });
+                $('input[name=select_user]:eq(0)').prop("checked", true)
+                $('#submit_new_owner').css("display", "inline-block")
+            }
+        }
+    </script>
+{% endblock %}
diff --git a/gn2/wqflask/templates/admin/create_group.html b/gn2/wqflask/templates/admin/create_group.html
new file mode 100644
index 00000000..b1d214ea
--- /dev/null
+++ b/gn2/wqflask/templates/admin/create_group.html
@@ -0,0 +1,84 @@
+{% extends "base.html" %}
+{% block title %}Group Manager{% endblock %}
+{% block content %}
+<!-- Start of body -->
+    <div class="container">
+        <div class="page-header">
+            <h1>Create Group</h1>
+        </div>
+        <form action="{{ url_for('group_management.create_new_group') }}"
+              method="POST">
+            <input type="hidden" name="admin_emails_to_add" value="">
+            <input type="hidden" name="member_emails_to_add" value="">
+            <fieldset>
+                <div class="form-horizontal" style="width: 900px; margin-bottom: 50px;">
+                    <div class="form-group" style="padding-left: 20px;">
+                        <label for="group_name" class="col-xs-3" style="float: left; font-size: 18px;">Group Name:</label>
+                        <div class="controls input-append col-xs-9" style="display: flex; padding-left: 20px; float: left;">
+                            <div class="col-xs-12">
+                                <input name="group_name" type="text" style="width:100%;"></input>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="form-group" style="padding-left: 20px;">
+                        <label for="user_email" class="col-xs-3" style="float: left; font-size: 18px;">Add User Email:</label>
+                        <div class="controls input-append col-xs-9" style="display: flex; padding-left: 20px; float: left;">
+                            <div class="col-xs-12">
+                                <input name="user_email" type="text" style="width:100%;"></input>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="form-group" style="padding-left: 20px;">
+                        <label class="col-xs-3"></label>
+                        <div class="controls input-append col-xs-9" style="display: flex; padding-left: 20px; float: left;">
+                            <div class="col-xs-6">
+                                <button type="button" id="add_to_admins" class="btn btn-default">Add to Admins</button>
+                            </div>
+                            <div class="col-xs-6">
+                                <button type="button" id="add_to_members" class="btn btn-default">Add to Members</button>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="form-group" style="padding-left: 20px;">
+                        <label class="col-xs-3" style="font-size: 18px;">Members to be added:</label>
+                        <div class="controls input-append col-xs-9" style="display: flex; padding-left: 20px; float: left;">
+                            <div class="col-xs-6">
+                                <textarea rows="8" cols="60" readonly placeholder="No users added" style="overflow-y: scroll; resize: none; width: 200px;" class="added_admins"></textarea>
+                            </div>
+                            <div class="col-xs-6">
+                                <textarea rows="8" cols="60" readonly placeholder="No users added" style="overflow-y: scroll; resize: none; width: 200px;" class="added_members"></textarea>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="form-group" style="padding-left: 20px;">
+                        <label class="col-xs-3"></label>
+                        <div class="controls input-append col-xs-9" style="display: flex; padding-left: 20px; float: left;">
+                            <div class="col-xs-6">
+                                <button type="button" id="clear_admins" class="btn btn-default">Clear</button>
+                            </div>
+                            <div class="col-xs-6">
+                                <button type="button" id="clear_members" class="btn btn-default">Clear</button>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="form-group" style="padding-left: 20px;">
+                        <label for="create_group" class="col-xs-3" style="float: left; font-size: 18px;"></label>
+                        <div class="controls input-append col-xs-9" style="display: flex; padding-left: 20px; float: left;">
+                            <div class="col-xs-6">
+                                <button type="submit" id="create_group" class="btn btn-primary">Create Group</button>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </fieldset>
+        </form>
+    </div>
+
+<!-- End of body -->
+{% endblock %}
+
+{% block js %}
+     <script language="javascript" type="text/javascript" src="{{ url_for('js', filename='DataTables/js/jquery.js') }}"></script>
+    <script language="javascript" type="text/javascript" src="/static/new/javascript/group_manager.js"></script>
+    <script language="javascript" type="text/javascript" src="{{ url_for('js', filename='js_alt/underscore.min.js') }}"></script>
+{% endblock %}
diff --git a/gn2/wqflask/templates/admin/group_manager.html b/gn2/wqflask/templates/admin/group_manager.html
new file mode 100644
index 00000000..eedfe138
--- /dev/null
+++ b/gn2/wqflask/templates/admin/group_manager.html
@@ -0,0 +1,147 @@
+{% extends "base.html" %}
+{% block title %}Group Manager{% endblock %}
+{% block css %}
+    <link rel="stylesheet" type="text/css" href="{{ url_for('css', filename='DataTables/css/jquery.dataTables.css') }}" />
+     <link rel="stylesheet" type="text/css" href="{{ url_for('css', filename='DataTablesExtensions/buttonStyles/css/buttons.dataTables.min.css') }}" />
+    <link rel="stylesheet" type="text/css" href="/static/new/css/show_trait.css" />
+{% endblock %}
+{% block content %}
+<!-- Start of body -->
+    <div class="container">
+        <div class="page-header">
+            <h1>Manage Groups</h1>
+            {% if admin_groups|length != 0 or member_groups|length != 0 %}
+            <div style="display: inline;">
+                <a href="{{ url_for('group_management.view_create_group_page') }}" target="_blank">
+                    <button type="button" class="btn btn-primary">
+                        Create Group
+                    </button>
+                </a>
+                <button type="button" id="remove_groups" class="btn btn-primary"
+                        data-url="{{ url_for('group_management.delete_groups') }}">
+                    Remove Selected Groups
+                </button>
+            </div>
+            {% endif %}
+        </div>
+        <form id="groups_form" action="/groups/manage" method="POST">
+            <input type="hidden" name="selected_group_ids" value="">
+            <div style="min-width: 800px; max-width: 1000px;">
+                {% if admin_groups|length == 0 and member_groups|length == 0 %}
+                <h4>You currently aren't a member or admin of any groups.</h4>
+                <br>
+                <a href="{{ url_for('group_management.view_create_group_page') }}" target="_blank">
+                    <button type="button" class="btn btn-primary">
+                        Create Group
+                    </button>
+                </a>
+                {% else %}
+                <div style="margin-top: 20px;"><h2>Admin Groups</h2></div>
+                <hr>
+                {% if admin_groups|length == 0 %}
+                <h4>You currently aren't the administrator of any groups.</h4>
+                {% else %}
+                <table id="admin_groups" class="table-hover table-striped cell-border" style="float: left;">
+                    <thead>
+                        <tr>
+                            <th></th>
+                            <th>Index</th>
+                            <th>Name</th>
+                            <th># Members</th>
+                            <th>Created</th>
+                            <th>Last Changed</th>
+                            <th>Group ID</th>
+                        </tr>
+                    </thead>
+                    <tbody>
+                        {% for group in admin_groups %}
+                        <tr>
+                            <td><input type="checkbox" name="group_id" value="{{ group.id }}"></td>
+                            <td align="right">{{ loop.index }}</td>
+                            {% set group_url = url_for('group_management.view_group', group_id=group.uuid) %}
+                            <td><a href="{{ group_url  }}">{{ group.name }}</a></td>
+                            <td align="right">{{ group.admins|length + group.members|length }}</td>
+                            <td>{{ group.created_timestamp }}</td>
+                            <td>{{ group.changed_timestamp }}</td>
+                            <td>{{ group.uuid }}</td>
+                        </tr>
+                        {% endfor %}
+                    </tbody>
+                </table>
+                {% endif %}
+            </div>
+            <hr>
+            <div style="min-width: 800px; max-width: 1000px;">
+                <div><h2>User Groups</h2></div>
+                <hr>
+                {% if member_groups|length == 0 %}
+                <h4>You currently aren't a member of any groups.</h4>
+                {% else %}
+                <table id="member_groups" class="table-hover table-striped cell-border" style="float: left;">
+                    <thead>
+                        <tr>
+                            <th></th>
+                            <th>Index</th>
+                            <th>Name</th>
+                            <th># Members</th>
+                            <th>Created</th>
+                            <th>Last Changed</th>
+                        </tr>
+                    </thead>
+                    <tbody>
+                        {% for group in member_groups %}
+                        <tr>
+                            <td><input type="checkbox" name="read" value="{{ group.id }}"></td>
+                            <td>{{ loop.index }}</td>
+                            {% set group_url = url_for('group_management.view_group', group_id=group.uuid) %}
+                            <td><a href="{{ group_url }}">{{ group.name }}</a></td>
+                            <td>{{ group.admins|length + group.members|length }}</td>
+                            <td>{{ group.created_timestamp }}</td>
+                            <td>{{ group.changed_timestamp }}</td>
+                        </tr>
+                        {% endfor %}
+                    </tbody>
+                </table>
+                {% endif %}
+                {% endif %}
+            </div>
+        </form>
+    </div>
+
+<!-- End of body -->
+
+{% endblock %}
+
+{% block js %}
+    <script language="javascript" type="text/javascript" src="{{ url_for('js', filename='DataTables/js/jquery.dataTables.min.js') }}"></script>
+
+    <script type="text/javascript" charset="utf-8">
+        $(document).ready( function () {
+            {% if admin_groups|length != 0 %}
+            $('#admin_groups').dataTable({
+                'sDom': 'tr'
+            });
+            {% endif %}
+            {% if member_groups|length != 0 %}
+            $('#member_groups').dataTable({
+                'sDom': 'tr'
+            });
+            {% endif %}
+            submit_special = function(url) {
+                $("#groups_form").attr("action", url);
+                return $("#groups_form").submit();
+            };
+
+            $("#remove_groups").on("click", function() {
+                url = $(this).data("url")
+                groups = []
+                $("input[name=group_id]:checked").each(function() {
+                    groups.push($(this).val());
+                });
+                groups_string = groups.join(":")
+                $("input[name=selected_group_ids]").val(groups_string)
+                return submit_special(url)
+            });
+        });
+    </script>
+{% endblock %}
diff --git a/gn2/wqflask/templates/admin/ind_user_manager.html b/gn2/wqflask/templates/admin/ind_user_manager.html
new file mode 100644
index 00000000..b821e5d5
--- /dev/null
+++ b/gn2/wqflask/templates/admin/ind_user_manager.html
@@ -0,0 +1,111 @@
+{% extends "base.html" %}
+{% block title %}User Manager{% endblock %}
+{% block content %}
+<!-- Start of body -->
+
+    <div class="container">
+        <div class="page-header">
+            <h1 title="{{ user.id }}">{{ user.email_address }}</h1>
+
+            <span class="badge">{{ numify(user.login_count, "login", "logins").capitalize() }}</span>
+
+            {% if user.active %}
+            <span class="label label-success">Active</span>
+            {% else %}
+            <span class="label label-warning">Inactive</span>
+            {% endif %}
+        </div>
+
+        {{ flash_me() }}
+
+        <table class="table table-hover">
+<!--        <thead>
+                <tr>
+                    <th>Field</th>
+                    <th>Value</th>
+                </tr>
+            </thead>-->
+
+            <tr>
+                <td>Name</td>
+                <td>{{ user.full_name }}</td>
+            </tr>
+
+            <tr>
+                <td>Organization</td>
+                <td>{{ user.organization }}</td>
+            </tr>
+
+
+            <tr>
+                <td>Confirmed</td>
+
+                {% if user.confirmed_at %}
+                <td>{{ timeago(user.confirmed_at + "Z") }}</td>
+                {% else %}
+                <td><span class="label label-warning">Unconfirmed</span></td>
+                {% endif %}
+            </tr>
+
+            <tr>
+                <td>Superuser</td>
+
+                {% if user.superuser %}
+                <td>Made a superuser {{ timeago(user.superuser_info['timestamp'] + "Z") }} by
+                {{ user.crowner.name_and_org }}.
+                </td>
+                {% else %}
+                <td>
+                    <span>
+                        <a class="btn btn-danger btn-small" href={{"/manage/make_superuser?user_id={}".format(user.id)}}>
+                            Make Superuser
+                        </a>
+                    </span>
+                </td>
+                {% endif %}
+            </tr>
+
+
+            <tr>
+                <td>Most recent login</td>
+                {% if user.most_recent_login %}
+                <td>{{ timeago(user.most_recent_login.timestamp.isoformat() + "Z") }} from {{ user.most_recent_login.ip_address }}</td>
+                {% else %}
+                <td><span class="label label-warning">Never</span></td>
+                {% endif %}
+            </tr>
+
+<!--            <tr>
+                <td>Last login</td>
+                <td>{{ user.last_login_at }} from {{ user.last_login_ip }}</td>
+            </tr>
+-->
+    <!--        <tr>
+                <td>Number of logins</td>
+                <td>{{ user.login_count }}</td>
+            </tr>-->
+            <tr>
+                <td colspan="2">
+                    <a class="btn btn-danger btn-small" href={{"/manage/assume_identity?user_id={}".format(user.id)}}>
+                        Become this user for debugging
+                    </a>
+                </td>
+            </tr>
+
+        </table>
+
+
+    </div>
+
+<!-- End of body -->
+
+{% endblock %}
+
+{% block js %}
+
+    <script language="javascript" type="text/javascript" src="{{ url_for('js', filename='js_alt/timeago.min.js') }}"></script>
+    <script>
+        $('body').timeago();
+    </script>
+
+{% endblock %}
diff --git a/gn2/wqflask/templates/admin/manage_resource.html b/gn2/wqflask/templates/admin/manage_resource.html
new file mode 100644
index 00000000..63ec17c0
--- /dev/null
+++ b/gn2/wqflask/templates/admin/manage_resource.html
@@ -0,0 +1,124 @@
+{% extends "base.html" %}
+{% block title %}Resource Manager{% endblock %}
+{% block content %}
+<!-- Start of body -->
+<div class="container">
+    <section>
+    {{ flash_me() }}
+    {% set DATA_ACCESS = access_role.get('data') %}
+    {% set METADATA_ACCESS = access_role.get('metadata') %}
+    {% set ADMIN_STATUS = access_role.get('admin') %}
+    {% set ADMIN_STATUS = access_role.get('admin') %}
+    <h1>Resource Manager</h1>
+    {% if resource_info.get('owner_id') %}
+    {% set user_details = resource_info.get('owner_details') %}
+    <h3>
+        Current Owner: {{ user_details.get('full_name') }}
+    </h3>
+    {% if user_details.get('organization') %}
+    <h3>
+        Organization: {{ user_details.get('organization')}}
+    </h3>
+    {% endif %}
+    {% endif %}
+    {% if DATA_ACCESS > DataRole.VIEW and ADMIN_STATUS > AdminRole.NOT_ADMIN %}
+    <a class="btn btn-danger" target="_blank"
+       href="/resource-management/resources/{{ resource_info.get('resource_id') }}/change-owner">
+        Change Owner
+    </a>
+    {% endif %}
+        </section>
+
+    <section class="container" style="margin-top: 2em;">
+        <form class="container-fluid" action="/resource-management/resources/{{ resource_info.get('resource_id') }}/make-public" method="POST">
+            <input type="hidden" name="resource_id" value="{{ resource_info.get('resource_id') }}">
+            <div>
+                <fieldset>
+                    <div class="form-horizontal" style="width: 900px; margin-bottom: 50px;">
+                        <div class="form-group" style="padding-left: 20px;">
+                            <label for="group_name" class="col-xs-3" style="float: left; font-size: 18px;">Resource Name:</label>
+                            <div class="controls input-append col-xs-9" style="display: flex; padding-left: 20px; float: left;">
+                                {{ resource_info.get('name') }}
+                            </div>
+                        </div>
+                        {% if DATA_ACCESS > DataRole.VIEW and ADMIN_STATUS > AdminRole.NOT_ADMIN %}
+                        {% set is_open_to_public = DataRole(resource_info.get('default_mask').get('data')) > DataRole.NO_ACCESS %}
+                        <div class="form-group" style="padding-left: 20px;">
+                            <label for="user_email" class="col-xs-3" style="float: left; font-size: 18px;">Open to Public:</label>
+                            <div class="controls input-append col-xs-9" style="display: flex; padding-left: 20px; float: left;">
+                                <label class="radio-inline">
+                                    <input type="radio" name="open_to_public" value="True" {{ 'checked' if is_open_to_public }}>
+                                    Yes
+                                </label>
+                                <label class="radio-inline">
+                                    <input type="radio" name="open_to_public" value="False" {{ 'checked' if not is_open_to_public }}>
+                                    No
+                                </label>
+                            </div>
+                        </div>
+                        <div class="form-group" style="padding-left: 20px;">
+                            <label class="col-xs-3" style="float: left; font-size: 18px;"></label>
+                            <div class="controls input-append col-xs-9" style="display: flex; padding-left: 20px; float: left;">
+                                <button id="save_changes" class="btn btn-primary" data-url="/resource-management/resources/change_default_privileges">Save Changes</button>
+                            </div>
+                        </div>
+                        {% endif %}
+                    </div>
+                </fieldset>
+            </div>
+            {% if ADMIN_STATUS > AdminRole.NOT_ADMIN %}
+            <div style="min-width: 600px; max-width: 800px;">
+                <hr>
+                <button id="add_group_to_resource" class="btn btn-primary" style="margin-bottom: 30px;" data-url="/resources/add_group">Add Group</button>
+                <br>
+                {% if resource_info.get('group_masks', [])|length > 0 %}
+                <h2>Current Group Permissions</h2>
+                <hr>
+                <table id="groups_table" class="table table-hover table-striped cell-border">
+                    <thead>
+                        <tr>
+                            <th>Id</th>
+                            <th>Name</th>
+                            <th>Data</th>
+                            <th>Metadata</th>
+                        </tr>
+                    </thead>
+                    <tbody>
+                        {% for key, value in resource_info.get('group_masks').items() %}
+                        <tr>
+                            <td>{{ key }}</td>
+                            <td>{{ value.group_name}}</td>
+                            <td>{{ value.data }}</td>
+                            <td>{{ value.metadata }}</td>
+                        </tr>
+                        {% endfor %}
+                    </tbody>
+                </table>
+                {% else %}
+                <h3>No groups are currently added to this resource.</h3>
+                {% endif %}
+            </div>
+            {% endif %}
+        </form>
+        </section>
+
+    <!-- End of body -->
+
+    {% endblock %}
+    {% block js %}
+    <script language="javascript" type="text/javascript" src="{{ url_for('js', filename='DataTables/js/jquery.dataTables.min.js') }}"></script>
+
+    <script type="text/javascript" charset="utf-8">
+     $('#add_group_to_resource, #save_changes, #change_owner').click(function(){
+         url = $(this).data("url");
+         $('#manage_resource').attr("action", url)
+         $('#manage_resource').submit()
+     })
+
+     {% if group_masks|length > 0 %}
+     $('#groups_table').dataTable({
+         'sDom': 'tr',
+     });
+     {% endif %}
+    </script>
+    {% endblock %}
diff --git a/gn2/wqflask/templates/admin/manage_user.html b/gn2/wqflask/templates/admin/manage_user.html
new file mode 100644
index 00000000..3ef90b90
--- /dev/null
+++ b/gn2/wqflask/templates/admin/manage_user.html
@@ -0,0 +1,79 @@
+{% extends "base.html" %}

+{% block title %}View and Edit Group{% endblock %}

+{% block css %}

+    <link rel="stylesheet" type="text/css" href="{{ url_for('css', filename='DataTables/css/jquery.dataTables.css') }}" />

+     <link rel="stylesheet" type="text/css" href="{{ url_for('css', filename='DataTablesExtensions/buttonStyles/css/buttons.dataTables.min.css') }}" />

+    <link rel="stylesheet" type="text/css" href="/static/new/css/show_trait.css" />

+{% endblock %}

+{% block content %}

+<!-- Start of body -->

+    <div class="container">

+        {% if 'full_name' in user_details %}

+        <div class="page-header">

+            <h1>User details for: {{ user_details.full_name }}</h1>

+        </div>

+        {% endif %}

+        <form id="user_form" action="/user/manage" method="POST">

+            <div class="row">

+                <div id="user_info_div" class="col-xs-8" style="margin-right: 30px; min-width: 800px; max-width: 1000px;">

+                    <div class="form-horizontal">

+                        <div class="form-group">

+                            <label for="email_address" style="text-align: left;" class="col-xs-2">Email Address:</label>

+                            <div style="margin-left: 20px; text-align: left;" class="col-xs-2 controls">

+                                <span id="email_address">{% if 'email_address' in user_details %}{{ user_details.email_address }}{% else %}N/A{% endif %}</span>

+                            </div>

+                        </div>

+                        <div class="form-group">

+                            <label for="full_name" style="text-align: left;" class="col-xs-2">User Name:</label>

+                            <div style="margin-left: 20px; text-align: left;" class="col-xs-2 controls">

+                                <span id="full_name" class="old_user_attribute">{% if 'full_name' in user_details %}{{ user_details.full_name }}{% else %}N/A{% endif %}</span>

+                                <input type="text" name="new_full_name" style="display: none; width: 500px;" class="form-control new_user_attribute" placeholder="{% if 'full_name' in user_details %}{{ user_details.full_name }}{% else %}N/A{% endif %}"> 

+                            </div>

+                        </div>

+                        <div class="form-group">

+                            <label for="organization" style="text-align: left;" class="col-xs-2">Organization:</label>

+                            <div style="margin-left: 20px; text-align: left;" class="col-xs-2 controls">

+                                <span id="organization" class="old_user_attribute">{% if 'organization' in user_details %}{{ user_details.organization }}{% else %}N/A{% endif %}</span>

+                                <input type="text" name="new_organization" style="display: none; width: 500px;" class="form-control new_user_attribute" placeholder="{% if 'organization' in user_details %}{{ user_details.organization }}{% else %}N/A{% endif %}"> 

+                            </div>

+                        </div>

+                        <div class="form-group">

+                            <label for="change_user_details" style="text-align: left;" class="col-xs-2"></label>

+                            <div style="margin-left: 20px; text-align: left;" class="col-xs-2 controls">

+                                <input type="button" id="change_user_details" value="Change Details">

+                                <input type="button" id="save_changes" value="Save Changes" style="display: none;">

+                            </div>

+                        </div>

+                    </div>

+                </div>

+            </div>

+        </form>

+    </div>

+

+<!-- End of body -->

+

+{% endblock %}

+

+{% block js %}

+    <script language="javascript" type="text/javascript" src="{{ url_for('js', filename='DataTables/js/jquery.dataTables.min.js') }}"></script>

+

+    <script type="text/javascript" charset="utf-8">

+        $(document).ready( function () {

+            $('#change_user_details').click(function(){

+                $('.new_user_attribute').css("display", "inline-block");

+                $('.old_user_attribute').css("display", "none");

+                $('#change_user_details').css("display", "none");

+                $('#save_changes').css("display", "inline-block");

+            });

+

+            $('#save_changes').click(function(){

+                $('.new_user_attribute').each(function(){

+                    if ($(this).val() == ""){

+                        $(this).val($(this).attr("placeholder"))

+                    }

+                });

+                $('#user_form').submit();

+            });

+        });

+    </script>

+{% endblock %}

diff --git a/gn2/wqflask/templates/admin/search_for_groups.html b/gn2/wqflask/templates/admin/search_for_groups.html
new file mode 100644
index 00000000..0e1ec720
--- /dev/null
+++ b/gn2/wqflask/templates/admin/search_for_groups.html
@@ -0,0 +1,134 @@
+{% extends "base.html" %}
+{% block title %}Resource Manager{% endblock %}
+{% block css %}
+    <link rel="stylesheet" type="text/css" href="{{ url_for('css', filename='DataTables/css/jquery.dataTables.css') }}" />
+    <link rel="stylesheet" type="text/css" href="/static/new/css/show_trait.css" />
+{% endblock %}
+{% block content %}
+<!-- Start of body -->
+    <div class="container">
+        <div class="page-header">
+            <h1>Find Groups</h1>
+        </div>
+        <form id="add_group" action="/resources/add_group" method="POST">
+            <input type="hidden" name="resource_id" value="{{ resource_id }}">
+            <div style="min-width: 600px; max-width: 800px;">
+                <fieldset>
+                    <div class="form-horizontal" style="width: 900px;">
+                        <div style="margin-bottom: 30px;">
+                            <h2>Search by:</h2>
+                        </div>
+                        <div class="form-group" style="padding-left: 20px;">
+                            <label for="group_name" class="col-xs-3" style="float: left; font-size: 18px;">Group ID:</label>
+                            <div class="controls input-append col-xs-9" style="display: flex; padding-left: 20px; float: left;">
+                                <input name="group_id" type="text" value="">
+                            </div>
+                        </div>
+                        <div class="form-group" style="padding-left: 20px;">
+                            <label for="group_name" class="col-xs-3" style="float: left; font-size: 18px;">Group Name:</label>
+                            <div class="controls input-append col-xs-9" style="display: flex; padding-left: 20px; float: left;">
+                                <input name="group_name" type="text" value="">
+                            </div>
+                        </div>
+                        <div class="form-group" style="padding-left: 20px;">
+                            <label for="user_name" class="col-xs-3" style="float: left; font-size: 18px;">User Name:</label>
+                            <div class="controls input-append col-xs-9" style="display: flex; padding-left: 20px; float: left;">
+                                <input name="user_name" type="text" value="">
+                            </div>
+                        </div>
+                        <div class="form-group" style="padding-left: 20px;">
+                            <label for="user_email" class="col-xs-3" style="float: left; font-size: 18px;">User E-mail:</label>
+                            <div class="controls input-append col-xs-9" style="display: flex; padding-left: 20px; float: left;">
+                                <input name="user_email" type="text" value="">
+                            </div>
+                        </div>
+                        <div class="form-group" style="padding-left: 20px;">
+                            <label class="col-xs-3" style="float: left; font-size: 18px;"></label>
+                            <div class="controls input-append col-xs-9" style="display: flex; padding-left: 20px; float: left;">
+                                <button type="button" id="find_groups" class="btn btn-primary">Search</button>
+                                <button style="margin-left: 20px; display: none;" type="submit" id="submit_group" class="btn btn-success">Add Privileges for Selected Group</button>
+                            </div>
+                        </div>
+                    </div>
+                </fieldset>
+                <hr>
+                <div id="group_results">
+                </div>
+            </div>
+        </form>
+    </div>
+
+<!-- End of body -->
+
+{% endblock %}
+
+{% block js %}
+     <script language="javascript" type="text/javascript" src="{{ url_for('js', filename='DataTables/js/jquery.js') }}"></script>
+    <script language="javascript" type="text/javascript" src="/static/new/javascript/group_manager.js"></script>
+    <script language="javascript" type="text/javascript" src="{{ url_for('js', filename='DataTables/js/jquery.dataTables.min.js') }}"></script>
+
+    <script type="text/javascript" charset="utf-8">
+
+        $('#find_groups').click(function() {
+            $.ajax({
+                method: "POST",
+                url: "/search_for_groups",
+                data: {
+                    group_id: $('input[name=group_id]').val(),
+                    group_name: $('input[name=group_name]').val(),
+                    user_name: $('input[name=user_name]').val(),
+                    user_email: $('input[name=user_email]').val()
+                },
+                success: populate_groups
+            });
+        })
+
+        populate_groups = function(json_group_list){
+            console.log(json_group_list)
+            var group_list = JSON.parse(json_group_list)
+
+            var the_html = ""
+            if (group_list.length > 0){
+                the_html += "<table id='groups_table' style='padding-top: 10px; width: 100%;' class='table-hover table-striped cell-border'>";
+                the_html += "<thead><tr><th></th><th>Index</th><th>Name</th><th># Admins</th><th># Members</th></tr></thead>";
+                the_html += "<tbody>";
+                for (_i = 0, _len = group_list.length; _i < _len; _i++) {
+                    this_group = group_list[_i]
+                    the_html += "<tr>";
+                    the_html += "<td align='center' class='select_group'><input type='radio' name='selected_group' value='" + this_group.id + "'></td>";
+                    the_html += "<td>" + (_i + 1).toString() + "</td>"
+                    if ("name" in this_group) {
+                        the_html += "<td>" + this_group.name + "</td>";
+                    } else {
+                        the_html += "<td>N/A</td>"
+                    }
+                    if ("admins" in this_group) {
+                        the_html += "<td>" + this_group.admins.length + "</td>";
+                    } else {
+                        the_html += "<td>0</td>"
+                    }
+                    if ("members" in this_group) {
+                        the_html += "<td>" + this_group.members.length + "</td>";
+                    } else {
+                        the_html += "<td>0</td>"
+                    }
+                    the_html += "</tr>"
+                }
+                the_html += "</tbody>";
+                the_html += "</table>";
+            } else {
+                the_html = "<span>No groups were found matching the entered criteria.</span>"
+            }
+
+            $('#group_results').html(the_html)
+            if (group_list.length > 0){
+                $('#groups_table').dataTable({
+                    'order': [[1, "asc" ]],
+                    'sDom': 'tr'
+                });
+                $('input[name=selected_group]:eq(0)').prop("checked", true)
+                $('#submit_group').css("display", "inline-block")
+            }
+        }
+    </script>
+{% endblock %}
diff --git a/gn2/wqflask/templates/admin/set_group_privileges.html b/gn2/wqflask/templates/admin/set_group_privileges.html
new file mode 100644
index 00000000..04842453
--- /dev/null
+++ b/gn2/wqflask/templates/admin/set_group_privileges.html
@@ -0,0 +1,102 @@
+{% extends "base.html" %}
+{% block title %}Set Group Privileges{% endblock %}
+{% block css %}
+    <link rel="stylesheet" type="text/css" href="{{ url_for('css', filename='DataTables/css/jquery.dataTables.css') }}" />
+     <link rel="stylesheet" type="text/css" href="{{ url_for('css', filename='DataTablesExtensions/buttonStyles/css/buttons.dataTables.min.css') }}" />
+    <link rel="stylesheet" type="text/css" href="/static/new/css/show_trait.css" />
+{% endblock %}
+{% block content %}
+<!-- Start of body -->
+    <div class="container">
+        <h1>Group Privileges</h1>
+        <br>
+        <form id="set_group_privileges" action="/resources/add_group" method="POST">
+            <input type="hidden" name="resource_id" value="{{ resource_id }}">
+            <input type="hidden" name="group_id" value="{{ group_id }}">
+            <div style="min-width: 600px; max-width: 800px;">
+                <button type="submit" class="btn btn-primary" style="margin-bottom: 10px;">Add Group</button>
+                <hr>
+                <h2>Data and Metadata Privileges</h2>
+                <table id="data_privileges_table" class="table-hover table-striped cell-border" style="float: left;">
+                    <thead>
+                        <tr>
+                            <th></th>
+                            <th>No-Access</th>
+                            <th>View</th>
+                            <th>Edit</th>
+                        </tr>
+                    </thead>
+                    <tbody>
+                        <tr>
+                            <td>Data:</td>
+                            {% if 'data' in default_privileges %}
+                            <td align="center" style="padding: 0px;"><input type="radio" name="data_privilege" VALUE="no-access" {% if default_privileges.data == "no-access" %}checked{% endif %}></td>
+                            <td align="center" style="padding: 0px;"><input type="radio" name="data_privilege" VALUE="view" {% if default_privileges.data == "view" %}checked{% endif %}></td>
+                            <td align="center" style="padding: 0px;"><input type="radio" name="data_privilege" VALUE="edit" {% if default_privileges.data == "edit" %}checked{% endif %}></td>
+                            {% else %}
+                            <td align="center" style="padding: 0px;"><input type="radio" name="data_privilege" VALUE="no-access" checked></td>
+                            <td align="center" style="padding: 0px;"><input type="radio" name="data_privilege" VALUE="view"></td>
+                            <td align="center" style="padding: 0px;"><input type="radio" name="data_privilege" VALUE="edit"></td>
+                            {% endif %}
+                        </tr>
+                        <tr>
+                            <td>Metadata:</td>
+                            {% if 'metadata' in default_privileges %}
+                            <td align="center" style="padding: 0px;"><input type="radio" name="metadata_privilege" VALUE="no-access" {% if default_privileges.metadata == "no-access" %}checked{% endif %}></td>
+                            <td align="center" style="padding: 0px;"><input type="radio" name="metadata_privilege" VALUE="view" {% if default_privileges.metadata == "view" %}checked{% endif %}></td>
+                            <td align="center" style="padding: 0px;"><input type="radio" name="metadata_privilege" VALUE="edit" {% if default_privileges.metadata[-1] == "edit" %}checked{% endif %}></td>
+                            {% else %}
+                            <td align="center" style="padding: 0px;"><input type="radio" name="metadata_privilege" VALUE="no-access" checked></td>
+                            <td align="center" style="padding: 0px;"><input type="radio" name="metadata_privilege" VALUE="view"></td>
+                            <td align="center" style="padding: 0px;"><input type="radio" name="metadata_privilege" VALUE="edit"></td>
+                            {% endif %}
+                        </tr>
+                    </tbody>
+                </table>
+                <hr>
+                <h2>Admin Privileges</h2>
+                <table id="admin_privileges_table" class="table-hover table-striped cell-border" style="float: left;">
+                    <thead>
+                        <tr>
+                            <th></th>
+                            <th>Not Admin</th>
+                            <th>Edit Access</th>
+                            <th>Edit Admins</th>
+                        </tr>
+                    </thead>
+                    <tbody>
+                        <tr>
+                            <td>Admin:</td>
+                            {% if 'admin' in default_privileges %}
+                            <td align="center" style="padding: 0px;"><input type="radio" name="admin_privilege" VALUE="not-admin" {% if default_privileges.admin == "not-admin" %}checked{% endif %}></td>
+                            <td align="center" style="padding: 0px;"><input type="radio" name="admin_privilege" VALUE="edit-access" {% if default_privileges.admin == "edit-access" %}checked{% endif %}></td>
+                            <td align="center" style="padding: 0px;"><input type="radio" name="admin_privilege" VALUE="edit-admins" {% if default_privileges.admin == "edit-admins" %}checked{% endif %}></td>
+                            {% else %}
+                            <td align="center" style="padding: 0px;"><input type="radio" name="admin_privilege" VALUE="not-admin" checked></td>
+                            <td align="center" style="padding: 0px;"><input type="radio" name="admin_privilege" VALUE="edit-access"></td>
+                            <td align="center" style="padding: 0px;"><input type="radio" name="admin_privilege" VALUE="edit-admins"></td>
+                            {% endif %}
+                        </tr>
+                    </tbody>
+                </table>
+            </div>
+        </form>
+    </div>
+
+<!-- End of body -->
+
+{% endblock %}
+
+{% block js %}
+    <script language="javascript" type="text/javascript" src="{{ url_for('js', filename='DataTables/js/jquery.dataTables.min.js') }}"></script>
+    <script>
+        $('#data_privileges_table').dataTable({
+            'sDom': 'tr',
+            'bSort': false
+        });
+        $('#admin_privileges_table').dataTable({
+            'sDom': 'tr',
+            'bSort': false
+        });
+    </script>
+{% endblock %}
diff --git a/gn2/wqflask/templates/admin/user_manager.html b/gn2/wqflask/templates/admin/user_manager.html
new file mode 100644
index 00000000..2b6c1b2b
--- /dev/null
+++ b/gn2/wqflask/templates/admin/user_manager.html
@@ -0,0 +1,41 @@
+{% extends "base.html" %}
+{% block title %}User Manager{% endblock %}
+{% block content %}
+<!-- Start of body -->
+    {{ header("List of users", "" )}}
+
+
+    <div class="container">
+        <div class="page-header">
+            <h1>User Manager</h1>
+        </div>
+
+        <table class="table table-hover">
+            <thead>
+                <tr>
+                    <th>Email</th>
+                    <th>Organization</th>
+                    <th>Active</th>
+                    <th>Confirmed</th>
+                    <th>Superuser</th>
+                </tr>
+            </thead>
+        {% for user in users %}
+            <tr>
+                <td title="{{ user.id }}">
+                    <a href="{{ url_for('manage_user', user_id=user.id) }}">{{ user.email_address }}</a>
+                </td>
+                <td>{{ user.organization }}</td>
+                <td>{{ 'Yes' if user.active else 'No' }}</td>
+                <td title="{{ user.confirmed }}">{{ 'True' if user.confirmed else 'False' }}</td>
+                <td title="{{ user.superuser }}">{{ 'True' if user.superuser else 'False' }}</td>
+            </tr>
+        {% endfor %}
+        </table>
+
+
+    </div>
+
+<!-- End of body -->
+
+{% endblock %}
diff --git a/gn2/wqflask/templates/admin/view_group.html b/gn2/wqflask/templates/admin/view_group.html
new file mode 100644
index 00000000..c88ce0e7
--- /dev/null
+++ b/gn2/wqflask/templates/admin/view_group.html
@@ -0,0 +1,270 @@
+{% extends "base.html" %}
+{% block title %}View and Edit Group{% endblock %}
+{% block css %}
+<link rel="stylesheet" type="text/css" href="{{ url_for('css', filename='DataTables/css/jquery.dataTables.css') }}" />
+<link rel="stylesheet" type="text/css" href="{{ url_for('css', filename='DataTablesExtensions/buttonStyles/css/buttons.dataTables.min.css') }}" />
+<link rel="stylesheet" type="text/css" href="/static/new/css/show_trait.css" />
+{% endblock %}
+{% block content %}
+<!-- Start of body -->
+{% set GROUP_URL = url_for('group_management.view_group', group_id=group_info.guid) %}
+{% set UPDATE_GROUP_URL = url_for('group_management.update_group', group_id=group_info.guid) %}
+<div class="container">
+        <div class="page-header">
+            <h1>
+                <span id="group_name">Name: {{ group_info.name }}</span>
+                <input type="text" name="new_group_name" style="font-size: 20px; display: none; width: 500px;" class="form-control" placeholder="{{ group_info.name }}">
+                {% if is_admin %}
+                <button class="btn btn-default" style="display: inline;" id="change_group_name">Change Group Name</button>
+                {% endif %}
+            </h1>
+            {% if is_admin %}
+            <div style="display: inline;">
+                <button type="button" id="remove_users" class="btn btn-danger" data-url="/groups/remove_users">Remove Selected Users from Group</button>
+            </div>
+            {% endif %}
+        </div>
+        <form id="group_form" action="{{ UPDATE_GROUP_URL }}" method="POST">
+            <input type="hidden" name="group_id" value="{{ group_info.id }}">
+            <input type="hidden" name="selected_admin_ids" value="">
+            <input type="hidden" name="selected_member_ids" value="">
+            <div class="row">
+            <div id="groups_div" class="col-xs-6" style="margin-right: 30px; min-width: 600px; max-width: 800px;">
+                <div>
+                    <div style="margin-top: 20px;"><h2>Admins</h2></div>
+                    <hr>
+                    <table id="group_admins" class="table-hover table-striped cell-border" style="float: left;">
+                        <thead>
+                            <tr>
+                                <th></th>
+                                <th>Index</th>
+                                <th>Name</th>
+                                <th>Email Address</th>
+                                <th>Organization</th>
+                                {% if is_admin %}
+                                <th>UID</th>
+                                {% endif %}
+                            </tr>
+                        </thead>
+                        <tbody>
+                            {% for admin in admins %}
+                            <tr>
+                                <td style="text-align: center; padding: 0px 10px 2px 10px;"><input type="checkbox" name="admin_id" value="{{ admin.user_id }}"></td>
+                                <td align="right">{{ loop.index }}</td>
+                                <td>{% if 'full_name' in admin %}{{ admin.full_name }}{% elif 'name' in admin %}{{ admin.name }}{% else %}N/A{% endif %}</td>
+                                <td>{% if 'email_address' in admin %}{{ admin.email_address }}{% else %}N/A{% endif %}</td>
+                                <td>{% if 'organization' in admin %}{{ admin.organization }}{% else %}N/A{% endif %}</td>
+                                {% if is_admin %}
+                                <td>{{admin.user_id}}</td>
+                                {% endif %}
+                            </tr>
+                            {% endfor %}
+                        </tbody>
+                    </table>
+                    {% if is_admin %}
+                    <div style="margin-top: 20px;">
+                            <span>E-mail of user to add to admins (multiple e-mails can be added separated by commas):</span>
+                            <input type="text" size="60" name="admin_emails_to_add" placeholder="Enter E-mail(s)" value="">
+                    </div>
+                    <div style="margin-bottom: 30px; margin-top: 20px;">
+                        <button type="button" id="add_admins" class="btn btn-primary" data-usertype="admin" data-url="{{ UPDATE_GROUP_URL }}">Add Admin(s)</button>
+                    </div>
+                    {% endif %}
+                </div>
+                <hr>
+                <div>
+                    {% if members|length > 0 %}
+                    <div><h2>Members</h2></div>
+                    <hr>
+                    <table id="group_members" class="table-hover table-striped cell-border" style="float: left;">
+                        <thead>
+                            <tr>
+                                <th></th>
+                                <th>Index</th>
+                                <th>Name</th>
+                                <th>Email Address</th>
+                                <th>Organization</th>
+                                {% if is_admin %}
+                                <th>UID</th>
+                                {% endif %}
+                            </tr>
+                        </thead>
+                        <tbody>
+                            {% for member in members %}
+                            <tr>
+                                
+                                <td style="text-align: center; padding: 0px 10px 2px 10px;">
+                                    {% if is_admin %}
+                                    <input type="checkbox" name="member_id" value="{{ member.user_id }}">
+                                    {% endif %}
+                                </td>
+                                <td align="right">{{ loop.index }}</td>
+                                <td>{% if 'full_name' in member %}{{ member.full_name }}{% elif 'name' in admin %}{{ admin.name }}{% else %}N/A{% endif %}</td>
+                                <td>{% if 'email_address' in member %}{{ member.email_address }}{% else %}N/A{% endif %}</td>
+                                <td>{% if 'organization' in member %}{{ member.organization }}{% else %}N/A{% endif %}</td>
+                                {% if is_admin %}
+                                <td>{{ member }}</td>
+                                {% endif %}
+
+                            </tr>
+                            {% endfor %}
+                        </tbody>
+                    </table>
+                    {% if is_admin %}
+                    <div style="margin-top: 20px;">
+                            <span>E-mail of user to add to members (multiple e-mails can be added separated by commas):</span>
+                            <input type="text" size="60" name="member_emails_to_add" placeholder="Enter E-mail(s)" value="">
+                    </div>
+                    <div style="margin-bottom: 30px; margin-top: 20px;">
+                        <button type="button" id="add_members" class="btn btn-primary" data-usertype="member" data-url="{{ GROUP_URL }}">Add Member(s)</button>
+                    </div>
+                    {% endif %}
+                    {% else %}
+                    There are currently no members in this group.
+                    {% if is_admin %}
+                    <div style="margin-top: 20px;">
+                            <span>E-mail of user to add to members (multiple e-mails can be added separated by commas):</span>
+                            <input type="text" size="60" name="member_emails_to_add" placeholder="Enter E-mail(s)" value="">
+                    </div>
+                    <div style="margin-bottom: 30px; margin-top: 20px;">
+                        <button type="button" id="add_members" class="btn btn-primary" data-usertype="member" data-url="{{ GROUP_URL }}">Add Member(s)</button>
+                    </div>
+                    {% endif %}
+                    {% endif %}
+                </div>
+            </div>
+            <div id="resources_div" class="col-xs-6" style="border-left: 1px solid #eee; margin-right: 30px; min-width: 600px; max-width: 800px;">
+                <div style="margin-top: 20px;"><h2>Resources</h2></div>
+                <hr>
+                {% if resources|length > 0 %}
+                <table id="resources" class="table-hover table-striped cell-border" style="float: left;">
+                    <thead>
+                        <tr>
+                            <th>Index</th>
+                            <th>Name</th>
+                            <th>Data</th>
+                            <th>Metadata</th>
+                            <th>Admin</th>
+                        </tr>
+                    </thead>
+                    <tbody>
+                        {% for resource in resources %}
+                        <tr>
+                            <td align="right">{{ loop.index }}</td>
+                            <td>{% if 'name' in resource %}<a href="/resources/manage?resource_id={{ resource.id }}">{{ resource.name }}</a>{% else %}N/A{% endif %}</td>
+                            <td>{% if 'data' in resource %}{{ resource.data }}{% else %}N/A{% endif %}</td>
+                            <td>{% if 'metadata' in resource %}{{ resource.metadata }}{% else %}N/A{% endif %}</td>
+                            <td>{% if 'admin' in resource %}{{ resource.admin }}{% else %}N/A{% endif %}</td>
+                        </tr>
+                        {% endfor %}
+                    </tbody>
+                </table>
+                {% else %}
+                There are currently no resources associated with this group.
+                {% endif %}
+            </div>
+            </div>
+        </form>
+    </div>
+
+<!-- End of body -->
+
+{% endblock %}
+
+{% block js %}
+    <script language="javascript" type="text/javascript" src="{{ url_for('js', filename='DataTables/js/jquery.dataTables.min.js') }}"></script>
+
+    <script type="text/javascript" charset="utf-8">
+        $(document).ready( function () {
+            $('#group_admins').dataTable({
+                'order': [[1, "asc" ]],
+                'columns': [
+                    { "type": "natural", "width": "25px"},
+                    { "type": "natural", "width": "30px" },
+                    { "type": "natural", "width": "150px" },
+                    { "type": "natural" },
+                    { "type": "natural" }
+                ],
+                'sDom': 'tr'
+            });
+            {% if members|length > 0 %}
+            $('#group_members').dataTable({
+                'order': [[1, "asc" ]],
+                'columns': [
+                    { "type": "natural", "width": "25px"},
+                    { "type": "natural", "width": "30px" },
+                    { "type": "natural", "width": "150px" },
+                    { "type": "natural" },
+                    { "type": "natural" }
+                ],
+                'sDom': 'tr'
+            });
+            {% endif %}
+            {% if resources|length > 0 %}
+            $('#resources').dataTable({
+                'order': [[0, "asc" ]],
+                'columns': [
+                    { "type": "natural", "width": "30px" },
+                    { "type": "natural", "width": "150px" },
+                    { "type": "natural" },
+                    { "type": "natural" },
+                    { "type": "natural" }
+                ],
+                'sDom': 'tr'
+            });
+            {% endif %}
+
+            $('#resources_div').css('height', $('#groups_div').css('height'))
+
+            submit_special = function(url) {
+                $("#group_form").attr("action", url);
+                return $("#group_form").submit();
+            };
+
+            $("#remove_users").on("click", function() {
+                url = $(this).data("url");
+                admins = [];
+                $("input[name=admin_id]:checked").each(function() {
+                    admins.push($(this).val());
+                });
+                admins_string = admins.join(":")
+                $("input[name=selected_admin_ids]").val(admins_string)
+
+                members = [];
+                $("input[name=member_id]:checked").each(function() {
+                    members.push($(this).val());
+                });
+                members_string = members.join(":")
+                $("input[name=selected_member_ids]").val(members_string)
+                return submit_special(url)
+            });
+
+            $("#add_admins, #add_members").on("click", function() {
+                url = $(this).data("url");
+                console.log(url)
+                return submit_special(url)
+            });
+
+            $("#change_group_name").on("click", function() {
+                if ($('input[name=new_group_name]').css('display') == 'none') {
+                    $('input[name=new_group_name]').css('display', 'inline');
+                    $('#group_name').css('display', 'none');
+                } else {
+                    new_name = $('input[name=new_group_name]').val()
+                    $.ajax({
+                        type: "POST",
+                        url: "{{ GROUP_URL }} ",
+                        data: {
+                            group_id: $('input[name=group_id]').val(),
+                            new_name: new_name
+                        }
+                    });
+                    $('input[name=new_group_name]').css('display', 'none');
+                    $('input[name=group_name]').val(new_name);
+                    $('#group_name').text(new_name)
+                    $('#group_name').css('display', 'inline');
+                }
+            });
+        });
+    </script>
+{% endblock %}