from django.shortcuts import render, redirect, get_object_or_404 from django.contrib import messages from django.contrib.auth.decorators import login_required from django.contrib.auth.models import User from .models import bitreporte from .forms import FormBitReporte, FormBitReporteEnv from inventarioalmacen.models import area from datetime import datetime import datetime from servicios.models import serviciorealizado, accesorios from openpyxl import Workbook from django.http.response import HttpResponse date = datetime.datetime.now() year = date.strftime('%y') h = date.strftime("%H:%M:%S") # Create your views here. @login_required(login_url='/acceder') def bitacora(request): datos = bitreporte.objects.filter(pendiente='Bitacora') servicios = serviciorealizado.objects.all() usuarios = User.objects.all() accesorio = accesorios.objects.all() return render(request, "bitacora.html", {"datos": datos, "servicios": servicios, "usuarios": usuarios, "accesorio": accesorio}) @login_required(login_url='/acceder') def crear_bitacora(request): if request.method == "POST": form = FormBitReporte(request.POST) if form.is_valid(): post = form.save(commit=False) post.save() titulo = form.cleaned_data.get("n_reporte") messages.success(request, f"El reporte {titulo} se ha creado correctamente") return redirect("bitacora") else: for field, items in form.errors.items(): for item in items: messages.error(request, '{}: {}'.format(field, item)) reporte = bitreporte.objects.latest('id') date = datetime.datetime.now() year = date.strftime('%y') h = date.strftime("%H:%M:%S") dato_rep = reporte.n_reporte + 1 dato_year = reporte.n_year if year != dato_year : new_year = year dato_rep = 1 hora = h form = FormBitReporteEnv() return render(request, "crear_bitacora.html", {"form": form, "dato_rep":dato_rep, "new_year":new_year, "hora":hora}) new_year = dato_year hora = h form = FormBitReporteEnv() return render(request, "crear_bitacora.html", {"form": form, "dato_rep":dato_rep, "new_year":new_year, "hora":hora}) @login_required(login_url='/acceder') def ActualizarBitacora(request, id): instance= get_object_or_404(bitreporte, pk=id) form = FormBitReporte(request.POST or None, instance=instance) context= {'form': form} if form.is_valid(): obj= form.save(commit= False) obj.save() messages.success(request, "La Bitacora fue actualizada") return redirect("bitacora") else: context= {'form': form, 'error': 'Error al actualizar'} return render(request,'actualizar_bitacora.html' , context) @login_required(login_url='/acceder') def ReporteExcelBitacora(request): bitacoras = bitreporte.objects.all() ibs = User.objects.all() bitareas = area.objects.all() datosservicio = serviciorealizado.objects.all() datosaccesorios = accesorios.objects.all() fecha = datetime.datetime.now() fe = str(fecha) wb = Workbook() ws = wb.active ws['B1'] = 'REPORTE DE SERVICIOS CONCLUIDOS' ws.merge_cells('B1:L1') ws['B2'] = datetime.datetime.now() ws.merge_cells('B2:D2') ws['B3'] = 'No. REPORTE' ws['C3'] = 'FECHA' ws['D3'] = 'AREA' ws['E3'] = 'REPORTE' ws['F3'] = 'QUIEN REPORTA' ws['G3'] = 'ASIGNADO' ws['H3'] = 'RECIBIO' ws['I3'] = 'HORA' ws['J3'] = 'SERVICIOS' ws['K3'] = 'ACCESORIOS' cont = 4 for bitacora in bitacoras: for ib in ibs: if bitacora.recibido_por_id == ib.id: recibido = ib.username for ib in ibs: if bitacora.asignado_id == ib.id: asignado = ib.username for bitarea in bitareas: if bitacora.area_id == bitarea.id: datoarea = bitarea.nombre count = 0 serreali = "" for datoservicio in datosservicio: if bitacora.control_bit == datoservicio.control_bit: count = count + 1 realizado = str(count) + " - " + datoservicio.descripcion serreali = serreali + " // " + realizado if count == 0 : serreali = "" count = 0 count1 = 0 seracce = "" for datoaccesorios in datosaccesorios: if bitacora.control_bit == datoaccesorios.control_bit: count1 = count1 + 1 acceso = str(count1) + " - " + datoaccesorios.n_parte + " | " + datoaccesorios.descripcion seracce = seracce + " // " + acceso if count1 == 0 : seracce = "" ws.cell(row=cont, column=2).value = bitacora.control_bit ws.cell(row=cont, column=3).value = bitacora.fecha ws.cell(row=cont, column=4).value = datoarea ws.cell(row=cont, column=5).value = bitacora.reporte ws.cell(row=cont, column=6).value = bitacora.quien_reporta ws.cell(row=cont, column=7).value = asignado ws.cell(row=cont, column=8).value = recibido ws.cell(row=cont, column=9).value = bitacora.hora ws.cell(row=cont, column=10).value = serreali ws.cell(row=cont, column=11).value = seracce cont += 1 serreali = "" seracce = "" nombre_archivo = "ReporteServicioConcluidos "+fe+".xlsx" response = HttpResponse(content_type="application/ms-excel") content = "attachment; filename = {0}".format(nombre_archivo) response['Content-Disposition'] = content wb.save(response) return response