Initial commit: Location Management Flask app

This commit is contained in:
ske087
2026-02-26 19:24:17 +02:00
commit 7a22575dab
52 changed files with 3481 additions and 0 deletions

View File

@@ -0,0 +1,49 @@
{% extends "base.html" %}
{% block title %}{% if user %}Edit User{% else %}Add User{% endif %} Location Management{% endblock %}
{% block content %}
<nav aria-label="breadcrumb" class="mb-3">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="{{ url_for('admin.list_users') }}">Users</a></li>
<li class="breadcrumb-item active">{% if user %}Edit: {{ user.username }}{% else %}Add User{% endif %}</li>
</ol>
</nav>
<div class="card border-0 rounded-4" style="max-width:500px">
<div class="card-header bg-transparent fw-semibold pt-3">
<i class="bi bi-person me-1"></i> {% if user %}Edit User{% else %}New User{% endif %}
</div>
<div class="card-body">
<form method="POST">
<div class="mb-3">
<label class="form-label">Username</label>
<input type="text" name="username" class="form-control" value="{{ user.username if user else '' }}" required />
</div>
<div class="mb-3">
<label class="form-label">Password {% if user %}<span class="text-secondary small">(leave blank to keep)</span>{% endif %}</label>
<input type="password" name="password" class="form-control"
{% if not user %}required{% endif %}
placeholder="{% if user %}New password{% else %}Password{% endif %}" />
</div>
<div class="mb-3">
<label class="form-label">Role</label>
<select name="role" class="form-select">
<option value="user" {% if user and user.role == 'user' %}selected{% endif %}>User</option>
<option value="admin" {% if user and user.role == 'admin' %}selected{% endif %}>Admin</option>
</select>
</div>
{% if user %}
<div class="form-check mb-4">
<input class="form-check-input" type="checkbox" name="is_active" id="is_active"
{% if user.is_active %}checked{% endif %} />
<label class="form-check-label" for="is_active">Active</label>
</div>
{% endif %}
<div class="d-flex gap-2">
<button type="submit" class="btn btn-primary"><i class="bi bi-check-lg me-1"></i> Save</button>
<a href="{{ url_for('admin.list_users') }}" class="btn btn-outline-secondary">Cancel</a>
</div>
</form>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,50 @@
{% extends "base.html" %}
{% block title %}Users Location Management{% endblock %}
{% block content %}
<div class="d-flex align-items-center justify-content-between mb-4">
<h2 class="fw-bold mb-0"><i class="bi bi-people me-2 text-primary"></i>Users</h2>
<a href="{{ url_for('admin.add_user') }}" class="btn btn-primary">
<i class="bi bi-plus-circle me-1"></i> Add User
</a>
</div>
<div class="table-responsive">
<table class="table table-hover align-middle">
<thead class="table-dark">
<tr><th>Username</th><th>Role</th><th>Active</th><th></th></tr>
</thead>
<tbody>
{% for u in users %}
<tr>
<td class="fw-semibold">
{{ u.username }}
{% if u.id == current_user.id %}
<span class="badge text-bg-info ms-1">you</span>
{% endif %}
</td>
<td><span class="badge {% if u.role == 'admin' %}text-bg-primary{% else %}text-bg-secondary{% endif %}">{{ u.role }}</span></td>
<td>
{% if u.is_active %}
<i class="bi bi-check-circle-fill text-success"></i>
{% else %}
<i class="bi bi-x-circle-fill text-danger"></i>
{% endif %}
</td>
<td>
<a href="{{ url_for('admin.edit_user', user_id=u.id) }}" class="btn btn-sm btn-outline-secondary me-1">
<i class="bi bi-pencil"></i>
</a>
{% if u.id != current_user.id %}
<form method="POST" action="{{ url_for('admin.delete_user', user_id=u.id) }}" class="d-inline"
onsubmit="return confirm('Delete user {{ u.username }}?')">
<button class="btn btn-sm btn-outline-danger"><i class="bi bi-trash"></i></button>
</form>
{% endif %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% endblock %}