Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion web/analysis/templatetags/analysis_tags.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,8 @@ def mongo_id(value):
"""
if isinstance(value, dict):
if "_id" in value:
value = value["_id"]
return str(value.get("_id", ""))
return ""

# Return value
return str(value)
Expand Down
175 changes: 92 additions & 83 deletions web/templates/analysis/admin/index.html
Original file line number Diff line number Diff line change
@@ -1,99 +1,108 @@
{% load analysis_tags %}
<div class="card bg-dark border-secondary mb-3 shadow-sm">
<div class="card-header border-secondary text-white bg-transparent">
<div class="card-header border-secondary text-white bg-transparent d-flex align-items-center justify-content-between">
<h5 class="mb-0"><i class="fas fa-user-shield me-2 text-info"></i>Admin Information</h5>
<span class="badge bg-secondary border border-secondary">CAPE {{analysis.info.version}}</span>
</div>
<div class="card-body">
<!-- Task ID -->
<div class="row mb-3 border-bottom border-secondary pb-2">
<div class="col-sm-3 text-light d-flex align-items-center">
<i class="fas fa-id-badge me-2 text-muted"></i><strong>Task ID</strong>
</div>
<div class="col-sm-9 text-white d-flex align-items-center justify-content-between">
<span class="font-monospace fs-5">{{analysis.info.id}}</span>
<a href="{% url 'remove' analysis.info.id %}"
class="btn btn-outline-danger btn-sm"
data-bs-toggle="tooltip"
title="Delete this task permanently"
onclick="return confirm('Are you sure you want to delete this task? This action cannot be undone.');">
<i class="fas fa-trash-alt me-1"></i> Delete Task
</a>
</div>
</div>
<div class="card-body text-white">
<div class="row g-4">
<!-- Metadata Column -->
<div class="col-md-7">
<h6 class="text-muted text-uppercase small mb-3">Task Metadata</h6>

<div class="row mb-3">
<div class="col-sm-4 text-light">
<i class="fas fa-id-badge me-2 text-muted"></i><strong>Task ID</strong>
</div>
<div class="col-sm-8 font-monospace fs-5">
{{analysis.info.id}}
</div>
</div>

<!-- Database IDs -->
{% if config.mongodb %}
<div class="row mb-3">
<div class="col-sm-3 text-light">
<i class="fas fa-database me-2 text-muted"></i><strong>Mongo ID</strong>
</div>
<div class="col-sm-9 text-white font-monospace">
{{analysis|mongo_id}}
</div>
</div>
{% elif config.elasticsearchdb %}
<div class="row mb-3">
<div class="col-sm-3 text-light">
<i class="fas fa-search me-2 text-muted"></i><strong>ElasticSearch Index</strong>
</div>
<div class="col-sm-9 text-white font-monospace">
{{analysis.es.index}}
</div>
</div>
<div class="row mb-3">
<div class="col-sm-3 text-light">
<i class="fas fa-fingerprint me-2 text-muted"></i><strong>ElasticSearch ID</strong>
</div>
<div class="col-sm-9 text-white font-monospace">
{{analysis.es.id}}
</div>
</div>
{% endif %}
{% if config.mongodb %}
<div class="row mb-3">
<div class="col-sm-4 text-light">
<i class="fas fa-database me-2 text-muted"></i><strong>Mongo ID</strong>
</div>
<div class="col-sm-8 font-monospace text-break">
{{analysis|mongo_id}}
</div>
</div>
{% elif config.elasticsearchdb %}
<div class="row mb-3">
<div class="col-sm-4 text-light">
<i class="fas fa-search me-2 text-muted"></i><strong>ES Index</strong>
</div>
<div class="col-sm-8 font-monospace text-break">
{{analysis.es.index}}
</div>
</div>
<div class="row mb-3">
<div class="col-sm-4 text-light">
<i class="fas fa-fingerprint me-2 text-muted"></i><strong>ES ID</strong>
</div>
<div class="col-sm-8 font-monospace text-break">
{{analysis.es.id}}
</div>
</div>
{% endif %}

<!-- CAPE Version -->
<div class="row mb-3">
<div class="col-sm-3 text-light">
<i class="fas fa-code-branch me-2 text-muted"></i><strong>CAPE Release</strong>
</div>
<div class="col-sm-9 text-white">
<span class="badge bg-secondary border border-secondary">{{analysis.info.version}}</span>
{% if analysis.info.user_id %}
<div class="row mb-0 pt-2 border-top border-secondary">
<div class="col-sm-4 text-light d-flex align-items-center">
<i class="fas fa-user me-2 text-muted"></i><strong>Created By</strong>
</div>
<div class="col-sm-8">
<a href="{% url 'admin:auth_user_change' analysis.info.user_id %}"
class="badge bg-info text-dark text-decoration-none p-2"
data-bs-toggle="tooltip"
title="View User in Admin Panel">
<i class="fas fa-user-circle me-1"></i> User ID: {{analysis.info.user_id}}
</a>
</div>
</div>
{% endif %}
</div>
</div>

<!-- User Info -->
{% if analysis.info.user_id %}
<div class="row mb-0 pt-2 border-top border-secondary">
<div class="col-sm-3 text-light d-flex align-items-center">
<i class="fas fa-user me-2 text-muted"></i><strong>Created By</strong>
</div>
<div class="col-sm-9">
<div class="d-flex align-items-center flex-wrap gap-3 mt-2">
<a href="{% url 'admin:auth_user_change' analysis.info.user_id %}"
class="badge bg-info text-dark text-decoration-none p-2"
<!-- Divider for mobile -->
<div class="d-md-none"><hr class="border-secondary"></div>

<!-- Actions Column -->
<div class="col-md-5">
<h6 class="text-muted text-uppercase small mb-3">Administrative Actions</h6>
<div class="d-grid gap-3">
<a href="{% url 'remove' analysis.info.id %}"
class="btn btn-outline-danger d-flex align-items-center justify-content-center gap-2"
data-bs-toggle="tooltip"
title="View User in Admin Panel">
<i class="fas fa-user-circle me-1"></i> User ID: {{analysis.info.user_id}}
title="Delete this task permanently"
onclick="return confirm('Are you sure you want to delete this task? This action cannot be undone.');">
<i class="fas fa-trash-alt"></i> Delete Task
</a>

<div class="btn-group btn-group-sm" role="group" aria-label="User Actions">
<a href="{% url 'ban_user' analysis.info.user_id %}"
class="btn btn-outline-warning"
data-bs-toggle="tooltip"
title="Ban this user"
onclick="return confirm('Are you sure you want to ban this user?');">
<i class="fas fa-user-lock me-1"></i> Ban User
</a>
<a href="{% url 'ban_all_user_tasks' analysis.info.user_id %}"
class="btn btn-outline-danger"
data-bs-toggle="tooltip"
title="Ban all tasks submitted by this user"
onclick="return confirm('Are you sure you want to ban ALL tasks from this user? This cannot be undone.');">
<i class="fas fa-ban me-1"></i> Ban All Tasks
</a>

{% if analysis.info.user_id %}
<div class="text-muted small text-center border-top border-secondary pt-2 mt-1">
<i class="fas fa-user-cog me-1"></i>User Controls
</div>

<a href="{% url 'ban_user' analysis.info.user_id %}"
class="btn btn-outline-warning d-flex align-items-center justify-content-center gap-2"
data-bs-toggle="tooltip"
title="Ban this user"
onclick="return confirm('Are you sure you want to ban this user?');">
<i class="fas fa-user-lock"></i> Ban User
</a>

<a href="{% url 'ban_all_user_tasks' analysis.info.user_id %}"
class="btn btn-outline-danger d-flex align-items-center justify-content-center gap-2"
data-bs-toggle="tooltip"
title="Ban all tasks submitted by this user"
onclick="return confirm('Are you sure you want to ban ALL tasks from this user? This cannot be undone.');">
<i class="fas fa-ban"></i> Ban All Tasks
</a>
{% endif %}
</div>
</div>
</div>
{% endif %}
</div>
</div>
Loading