feat: implementar ABM completo de comisiones, carreras y asignaturas con proteccion de integridad y corregir edificios y campus virtual

This commit is contained in:
2026-09-23 19:53:27 -03:00
parent 195bfd915e
commit 165a0b65b8
13 changed files with 1033 additions and 154 deletions
+14 -4
View File
@@ -28,8 +28,8 @@
</h1>
</div>
<div class="col-md-5 text-md-end mt-3 mt-md-0">
{% if user.has_permission('classrooms', 'read_write') %}
<a href="/buildings/edit_building" class="btn btn-outline-secondary me-2">
{% if user.has_permission('classrooms', 'read_write') or user.is_admin() or user.is_bedelia() %}
<a href="/buildings/edit/{{ building.id }}" class="btn btn-outline-secondary me-2">
<i class="bi bi-pencil me-1"></i>Editar Edificio
</a>
<a href="/classrooms/add_classroom" class="btn btn-primary">
@@ -46,7 +46,7 @@
<div class="card-body p-3">
<div class="text-muted small fw-semibold">Ubicación / Dirección</div>
<p class="h6 fw-bold mb-2">
<i class="bi bi-geo-alt text-danger me-1"></i>{{ building.address or 'Sin dirección especificada' }}
<i class="bi {% if building.is_virtual %}bi-globe2 text-info{% else %}bi-geo-alt text-danger{% endif %} me-1"></i>{{ building.address or 'Sin dirección especificada' }}
</p>
{% if building.description %}
<small class="text-secondary">{{ building.description }}</small>
@@ -59,7 +59,11 @@
<div class="col-sm-4">
<div class="card border-0 shadow-sm text-center p-3">
<small class="text-muted text-uppercase fw-bold">Pisos</small>
{% if building.is_virtual %}
<span class="fs-5 fw-bold text-info d-block mt-2">Digital / Nube</span>
{% else %}
<span class="display-6 fw-bold text-primary">{{ building.floors }}</span>
{% endif %}
</div>
</div>
<div class="col-sm-4">
@@ -71,7 +75,13 @@
<div class="col-sm-4">
<div class="card border-0 shadow-sm text-center p-3">
<small class="text-muted text-uppercase fw-bold">Capacidad Total</small>
<span class="display-6 fw-bold text-info">{{ building.total_capacity }}</span>
{% if building.is_virtual %}
<span class="fs-5 fw-bold text-primary d-block mt-2" title="Capacidad de concurrencia virtual ilimitada">
<i class="bi bi-infinity me-1"></i>Ilimitada
</span>
{% else %}
<span class="display-6 fw-bold text-info">{{ building.physical_capacity or building.total_capacity }}</span>
{% endif %}
</div>
</div>
</div>