1{% extends "base_main_template.html" %}
6 background-color: #1a1a1a;
10 background-color: #2d2d2d;
11 border: 1px solid #404040;
15 background-color: #3d3d3d;
16 border-bottom: 1px solid #404040;
20 color: #b0b0b0 !important;
23 background-color: #1e4d2b;
24 border-color: #2d5a3d;
28 background-color: #4d3a1e;
29 border-color: #5a4d2d;
33 background-color: #4d1e1e;
34 border-color: #5a2d2d;
38 background-color: #1e3d4d;
39 border-color: #2d4d5a;
43 background-color: #0d6efd;
44 border-color: #0d6efd;
47 background-color: #0dcaf0;
48 border-color: #0dcaf0;
52 background-color: #dc3545;
53 border-color: #dc3545;
55 .dark-border-primary {
56 border-color: #0d6efd !important;
59 border-color: #0dcaf0 !important;
62 border-color: #dc3545 !important;
65 color: #0d6efd !important;
68 color: #0dcaf0 !important;
71 color: #dc3545 !important;
74 color: #198754 !important;
77 color: #ffc107 !important;
80 background-color: #404040;
87 <div class="container-fluid dark-theme">
90 <h2 class="text-white"><i class="fas fa-database"></i> Migration Management</h2>
91 <p class="dark-text-muted">Manage database migrations for project ownership system</p>
95 <!-- Migration Status -->
96 <div class="row mb-4">
99 <div class="card-header dark-card-header">
100 <h5 class="text-white"><i class="fas fa-info-circle"></i> Migration Status</h5>
102 <div class="card-body">
105 <div class="col-md-3">
106 <div class="text-center">
107 <h3 class="dark-text-primary">{{ status.total_projects_with_owners }}</h3>
108 <p class="dark-text-muted">Total Projects with Owners</p>
111 <div class="col-md-3">
112 <div class="text-center">
113 <h3 class="dark-text-success">{{ status.migrated_projects }}</h3>
114 <p class="dark-text-muted">Migrated Projects</p>
117 <div class="col-md-3">
118 <div class="text-center">
119 <h3 class="dark-text-warning">{{ status.unmigrated_projects }}</h3>
120 <p class="dark-text-muted">Unmigrated Projects</p>
122 <div class="col-md-3">
123 <div class="text-center">
124 {% if status.migration_complete %}
125 <h3 class="dark-text-success"><i class="fas fa-check-circle"></i></h3>
126 <p class="dark-text-success">Migration Complete</p>
128 <h3 class="dark-text-warning"><i class="fas fa-exclamation-triangle"></i></h3>
129 <p class="dark-text-warning">Migration Needed</p>
135 <div class="alert alert-danger">
136 <i class="fas fa-exclamation-triangle"></i> Unable to retrieve migration status
144 <!-- Validation Status -->
146 <div class="row mb-4">
148 <div class="card dark-card">
149 <div class="card-header dark-card-header">
150 <h5><i class="fas fa-shield-alt"></i> Data Validation</h5>
152 <div class="card-body">
153 {% if validation.is_valid %}
154 <div class="alert dark-alert-success">
155 <i class="fas fa-check-circle"></i> <strong>Data validation passed!</strong> All data is consistent.
158 <div class="alert dark-alert-warning">
159 <i class="fas fa-exclamation-triangle"></i> <strong>Data validation issues detected:</strong>
160 <ul class="mb-0 mt-2">
161 {% if validation.orphaned_members > 0 %}
162 <li>{{ validation.orphaned_members }} orphaned project members</li>
164 {% if validation.projects_without_owner_membership > 0 %}
165 <li>{{ validation.projects_without_owner_membership }} projects without owner membership</li>
167 {% if validation.projects_with_multiple_owners > 0 %}
168 <li>{{ validation.projects_with_multiple_owners }} projects with multiple owners</li>
179 <!-- Migration Actions -->
182 <div class="card dark-card">
183 <div class="card-header dark-card-header">
184 <h5 class="text-white"><i class="fas fa-tools"></i> Migration Actions</h5>
186 <div class="card-body">
188 <div class="col-md-4">
189 <div class="card border-primary dark-card border-primary">
190 <div class="card-body text-center">
191 <h5 class="card-title dark-text-primary">Run Migration</h5>
192 <p class="card-text dark-text-muted">Migrate project owners from projects.id_users to project_members table</p>
193 <form method="POST" class="d-inline">
194 <input type="hidden" name="action" value="run_migration">
195 <button type="submit" class="btn btn-primary dark-btn-primary"
196 onclick="return confirm('Are you sure you want to run the migration?')">
197 <i class="fas fa-play"></i> Run Migration
204 <div class="col-md-4">
205 <div class="card border-info dark-card border-info">
206 <div class="card-body text-center">
207 <h5 class="card-title dark-text-info">Validate Data</h5>
208 <p class="card-text dark-text-muted">Check data consistency and validate migration results</p>
209 <form method="POST" class="d-inline">
210 <input type="hidden" name="action" value="validate_migration">
211 <button type="submit" class="btn btn-info dark-btn-info">
212 <i class="fas fa-search"></i> Validate
219 <div class="col-md-4">
220 <div class="card border-danger dark-card border-danger">
221 <div class="card-body text-center">
222 <h5 class="card-title dark-text-danger">Rollback Migration</h5>
223 <p class="card-text dark-text-muted">Remove all owner memberships (WARNING: This will remove ALL owner memberships)</p>
224 <form method="POST" class="d-inline">
225 <input type="hidden" name="action" value="rollback_migration">
226 <button type="submit" class="btn btn-danger dark-btn-danger"
227 onclick="return confirm('WARNING: This will remove ALL owner memberships. Are you absolutely sure?')">
228 <i class="fas fa-undo"></i> Rollback
241 <div class="row mt-4">
243 <div class="card dark-card">
244 <div class="card-header dark-card-header">
245 <h5 class="text-white"><i class="fas fa-info-circle"></i> Migration Information</h5>
247 <div class="card-body">
248 <h6 class="text-white">What does this migration do?</h6>
249 <ul class="text-white">
250 <li>Migrates project owners from the old <code>projects.id_users</code> field to the new <code>project_members</code> table</li>
251 <li>Creates owner membership records with <code>role_type='owner'</code></li>
252 <li>Maintains backward compatibility by keeping the old fields</li>
253 <li>Is idempotent - can be run multiple times safely</li>
256 <h6 class="mt-3 text-white">When is migration needed?</h6>
257 <ul class="text-white">
258 <li>When upgrading from version</li>
259 <li>When projects exist with <code>id_users</code> but no corresponding <code>project_members</code> record</li>
262 <h6 class="mt-3 text-white">Safety features:</h6>
263 <ul class="text-white">
264 <li>Automatic validation after migration</li>
265 <li>Detailed logging of all operations</li>
266 <li>Rollback capability (use with caution)</li>
267 <li>Checks for data consistency</li>