carga
carga
This commit is contained in:
0
laboratorios/__init__.py
Normal file
0
laboratorios/__init__.py
Normal file
3
laboratorios/admin.py
Normal file
3
laboratorios/admin.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from django.contrib import admin
|
||||
|
||||
# Register your models here.
|
||||
6
laboratorios/apps.py
Normal file
6
laboratorios/apps.py
Normal 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
29
laboratorios/forms.py
Normal 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')
|
||||
40
laboratorios/migrations/0001_initial.py
Normal file
40
laboratorios/migrations/0001_initial.py
Normal 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'],
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -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'],
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -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'),
|
||||
),
|
||||
]
|
||||
@@ -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'},
|
||||
),
|
||||
]
|
||||
17
laboratorios/migrations/0005_alter_labcomputo_options.py
Normal file
17
laboratorios/migrations/0005_alter_labcomputo_options.py
Normal 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'},
|
||||
),
|
||||
]
|
||||
0
laboratorios/migrations/__init__.py
Normal file
0
laboratorios/migrations/__init__.py
Normal file
62
laboratorios/models.py
Normal file
62
laboratorios/models.py
Normal 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
3
laboratorios/tests.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
||||
79
laboratorios/views.py
Normal file
79
laboratorios/views.py
Normal 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)
|
||||
|
||||
Reference in New Issue
Block a user