carga
This commit is contained in:
2025-04-17 00:18:43 -06:00
parent 212fea81b2
commit f5dcfba2b6
306 changed files with 112862 additions and 2 deletions

0
laboratorios/__init__.py Normal file
View File

3
laboratorios/admin.py Normal file
View File

@@ -0,0 +1,3 @@
from django.contrib import admin
# Register your models here.

6
laboratorios/apps.py Normal file
View File

@@ -0,0 +1,6 @@
from django.apps import AppConfig
class LaboratoriosConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'laboratorios'

29
laboratorios/forms.py Normal file
View File

@@ -0,0 +1,29 @@
from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
from .models import lab, labComputo
class Formlab(forms.ModelForm):
class Meta:
model = lab
fields = ('usuario', 'id_lab', 'id_asig', 'id_area', 'id_mat', 'uso')
class FormlabEnv(forms.ModelForm):
class Meta:
model = lab
fields = ('id_asig', 'id_area', 'id_mat', 'uso')
class FormlabComputo(forms.ModelForm):
class Meta:
model = labComputo
fields = ('usuario', 'id_lab', 'id_asig', 'id_area', 'id_mat', 'uso')
class FormlabComputoEnv(forms.ModelForm):
class Meta:
model = labComputo
fields = ('id_asig', 'id_area', 'id_mat', 'uso')

View File

@@ -0,0 +1,40 @@
# Generated by Django 4.0.5 on 2022-06-27 13:26
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
('universidad', '0001_initial'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.CreateModel(
name='lab',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('uso', models.CharField(choices=[('Practica', 'Practica'), ('Clase', 'Clase'), ('Libre', 'Libre')], default='Clase', max_length=10, verbose_name='Tipo de Uso')),
('foto', models.ImageField(blank=True, upload_to='foto/')),
('entrada', models.DateField(auto_now_add=True, verbose_name='Entrada')),
('salida', models.DateField(auto_now_add=True, verbose_name='Salida')),
('fecha_alta', models.DateField(auto_now_add=True, verbose_name='Fecha alta')),
('fecha_actualizacion', models.DateField(auto_now=True, verbose_name='Fecha de Actualización')),
('id_area', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='universidad.area', verbose_name='Area')),
('id_asig', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='universidad.asignatura', verbose_name='Asignatura')),
('id_lab', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='universidad.laboratorio', verbose_name='Laboratorio')),
('id_mat', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='universidad.material', verbose_name='Material')),
('usuario', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
options={
'verbose_name': 'laboratorio',
'verbose_name_plural': 'laboratorios',
'ordering': ['-entrada'],
},
),
]

View File

@@ -0,0 +1,68 @@
# Generated by Django 4.0.5 on 2022-07-22 12:25
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('universidad', '0001_initial'),
('laboratorios', '0001_initial'),
]
operations = [
migrations.AlterModelOptions(
name='lab',
options={'ordering': ['-entrada'], 'verbose_name': 'Laboratorio de automatización', 'verbose_name_plural': 'Laboratorio de automatización'},
),
migrations.AlterField(
model_name='lab',
name='id_area',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='universidad.area', verbose_name='Area'),
),
migrations.AlterField(
model_name='lab',
name='id_asig',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='universidad.asignatura', verbose_name='Asignatura'),
),
migrations.AlterField(
model_name='lab',
name='id_lab',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='universidad.laboratorio', verbose_name='Laboratorio'),
),
migrations.AlterField(
model_name='lab',
name='id_mat',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='universidad.material', verbose_name='Material'),
),
migrations.AlterField(
model_name='lab',
name='salida',
field=models.DateField(auto_now=True, verbose_name='Salida'),
),
migrations.CreateModel(
name='labComputo',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('uso', models.CharField(choices=[('Practica', 'Practica'), ('Clase', 'Clase'), ('Libre', 'Libre')], default='Clase', max_length=10, verbose_name='Tipo de Uso')),
('foto', models.ImageField(blank=True, upload_to='foto/')),
('entrada', models.DateField(auto_now_add=True, verbose_name='Entrada')),
('salida', models.DateField(auto_now=True, verbose_name='Salida')),
('fecha_alta', models.DateField(auto_now_add=True, verbose_name='Fecha alta')),
('fecha_actualizacion', models.DateField(auto_now=True, verbose_name='Fecha de Actualización')),
('id_area', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='universidad.area', verbose_name='Area')),
('id_asig', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='universidad.asignatura', verbose_name='Asignatura')),
('id_lab', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='universidad.laboratorio', verbose_name='Laboratorio')),
('id_mat', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='universidad.material', verbose_name='Material')),
('usuario', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
options={
'verbose_name': 'Laboratorio de cómputo y redes',
'verbose_name_plural': 'Laboratorio de cómputo y redes',
'ordering': ['-entrada'],
},
),
]

View File

@@ -0,0 +1,33 @@
# Generated by Django 4.0.5 on 2022-07-23 08:20
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('laboratorios', '0002_alter_lab_options_alter_lab_id_area_and_more'),
]
operations = [
migrations.AlterField(
model_name='labcomputo',
name='entrada',
field=models.DateTimeField(auto_now_add=True, verbose_name='Entrada'),
),
migrations.AlterField(
model_name='labcomputo',
name='fecha_actualizacion',
field=models.DateTimeField(auto_now=True, verbose_name='Fecha de Actualización'),
),
migrations.AlterField(
model_name='labcomputo',
name='fecha_alta',
field=models.DateTimeField(auto_now_add=True, verbose_name='Fecha alta'),
),
migrations.AlterField(
model_name='labcomputo',
name='salida',
field=models.DateTimeField(auto_now=True, verbose_name='Salida'),
),
]

View File

@@ -0,0 +1,21 @@
# Generated by Django 4.0.5 on 2022-07-23 23:52
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('laboratorios', '0003_alter_labcomputo_entrada_and_more'),
]
operations = [
migrations.AlterModelOptions(
name='lab',
options={'ordering': ['-entrada'], 'verbose_name': 'Laboratorio', 'verbose_name_plural': 'Laboratorios'},
),
migrations.AlterModelOptions(
name='labcomputo',
options={'ordering': ['-entrada'], 'verbose_name': 'Laboratorio', 'verbose_name_plural': 'Laboratorios'},
),
]

View File

@@ -0,0 +1,17 @@
# Generated by Django 4.0.5 on 2022-07-24 22:10
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('laboratorios', '0004_alter_lab_options_alter_labcomputo_options'),
]
operations = [
migrations.AlterModelOptions(
name='labcomputo',
options={'ordering': ['-id'], 'verbose_name': 'Laboratorio', 'verbose_name_plural': 'Laboratorios'},
),
]

View File

62
laboratorios/models.py Normal file
View File

@@ -0,0 +1,62 @@
from django.db import models
from django.contrib.auth.models import User
import os
from model_utils import Choices
from universidad.models import laboratorio, asignatura, area, material
# Create your models here.
class lab(models.Model):
USO = Choices('Practica', 'Clase', 'Libre')
usuario = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)
id_lab = models.ForeignKey(laboratorio, on_delete=models.CASCADE, null=True, blank=True, verbose_name='Laboratorio')
id_asig = models.ForeignKey(asignatura, on_delete=models.CASCADE, null=True, blank=True, verbose_name='Asignatura')
id_area = models.ForeignKey(area, on_delete=models.CASCADE, null=True, blank=True, verbose_name='Area')
id_mat = models.ForeignKey(material, on_delete=models.CASCADE, null=True, blank=True, verbose_name='Material')
uso = models.CharField(choices=USO, default=USO.Clase, max_length=10, verbose_name='Tipo de Uso')
foto = models.ImageField(upload_to='foto/', blank=True)
entrada = models.DateField(auto_now_add=True, verbose_name='Entrada')
salida = models.DateField(auto_now=True, verbose_name='Salida')
fecha_alta = models.DateField(auto_now_add=True, verbose_name='Fecha alta')
fecha_actualizacion = models.DateField(auto_now=True, verbose_name='Fecha de Actualización')
def delete(self, *args, **kwargs):
if os.path.isfile(self.foto.path):
os.remove(self.foto.path)
super(User, self).delete(*args, **kwargs)
def __str__(self):
return self.entrada
class Meta:
verbose_name = 'Laboratorio'
verbose_name_plural = 'Laboratorios'
ordering = ['-entrada']
class labComputo(models.Model):
USO = Choices('Practica', 'Clase', 'Libre')
usuario = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)
id_lab = models.ForeignKey(laboratorio, on_delete=models.CASCADE, null=True, blank=True, verbose_name='Laboratorio')
id_asig = models.ForeignKey(asignatura, on_delete=models.CASCADE, null=True, blank=True, verbose_name='Asignatura')
id_area = models.ForeignKey(area, on_delete=models.CASCADE, null=True, blank=True, verbose_name='Area')
id_mat = models.ForeignKey(material, on_delete=models.CASCADE, null=True, blank=True, verbose_name='Material')
uso = models.CharField(choices=USO, default=USO.Clase, max_length=10, verbose_name='Tipo de Uso')
foto = models.ImageField(upload_to='foto/', blank=True)
entrada = models.DateTimeField(auto_now_add=True, verbose_name='Entrada')
salida = models.DateTimeField(auto_now=True, verbose_name='Salida')
fecha_alta = models.DateTimeField(auto_now_add=True, verbose_name='Fecha alta')
fecha_actualizacion = models.DateTimeField(auto_now=True, verbose_name='Fecha de Actualización')
def delete(self, *args, **kwargs):
if os.path.isfile(self.foto.path):
os.remove(self.foto.path)
super(User, self).delete(*args, **kwargs)
def __str__(self):
return self.entrada
class Meta:
verbose_name = 'Laboratorio'
verbose_name_plural = 'Laboratorios'
ordering = ['-id']

3
laboratorios/tests.py Normal file
View File

@@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

79
laboratorios/views.py Normal file
View File

@@ -0,0 +1,79 @@
from django.contrib import messages
from django.shortcuts import render, redirect, get_object_or_404
from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User
from datetime import datetime
from .models import lab, labComputo
from autenticacion.models import perfil
from universidad.models import carrera, asignatura, area, material, laboratorio
from .forms import FormlabComputoEnv, FormlabComputo
# Create your views here.
def scan(request):
return render(request, 'scan.html')
def user(request):
return render(request, 'user.html')
def lcomputo(request, id):
if request.method == "POST":
form = FormlabComputo(request.POST)
if form.is_valid():
post = form.save(commit=False)
post.save()
messages.success(request, f"El registro se ha creado o actualizado correctamente")
return redirect('laboratorios', id)
else:
for field, items in form.errors.items():
for item in items:
messages.error(request, '{}: {}'.format(field, item))
datos = labComputo.objects.filter(id_lab_id=id)
perfils = perfil.objects.all()
users = User.objects.all()
labos = laboratorio.objects.get(id=id)
asigs = asignatura.objects.all()
areas = area.objects.all()
mates = material.objects.all()
return render(request, 'laboratorios.html', {"datos": datos, "perfils": perfils, "users": users, "labos": labos, "asigs": asigs, "areas": areas, "mates": mates})
def LCscan(request, id):
idlab = id
return render(request, 'LCscan.html', {"idlab": idlab})
def LCcheckIng(request, id):
idlab = id
key = request.POST.get("key")
datos = perfil.objects.get(key=key)
user = User.objects.get(id=datos.usuario_id)
form = FormlabComputoEnv()
return render(request, 'LCcheckIng.html', {"datos": datos, "form": form, "user": user, "idlab": idlab})
def LCscanS(request, idlab, id):
idlabx = idlab
idx = id
return render(request, 'LCscanS.html', {"idlabx": idlabx, "idx": idx})
def Updatesalida(request, idlab, id ):
key = request.POST.get("key")
datosuser = perfil.objects.get(key=key)
datoslab = labComputo.objects.get(id=id)
idlabx = idlab
idx= id
date = datetime.now()
if datosuser.usuario_id == datoslab.usuario_id:
update = labComputo.objects.values('salida').filter(id=idx).update(salida=date)
return redirect('laboratorios', idlabx)
return redirect('laboratorios', idlabx)