def selectByRegisterWorkshop(request, register_id): register = CarRegistration.objects.get(id=register_id) if request.method == "POST": form = SelectWorkshopForm(request.POST) if form.is_valid(): workshop = form.cleaned_data["workshop"] m = MaintenanceWorkshop( workshop=workshop, car=register.car, register=register, date_joined=register.register_date, problem_description=register.observation, fixed=False, ) m.save() register.car.is_active = False register.car.save() messages.add_message( request, messages.SUCCESS, "El vehiculo se mando al taller " + workshop.branchoffice.name ) return HttpResponseRedirect("/register/register_form/") else: messages.add_message(request, messages.ERROR, "Debe seleccionar un Taller") return render( request, "select_workshop.html", {"form": form, "url": register.get_absolute_url() + "/select/workshop/", "car": register.car}, ) else: form = SelectWorkshopForm() return render( request, "select_workshop.html", {"form": form, "url": register.get_absolute_url() + "/select/workshop/", "car": register.car}, )
def registerCar(request): request.session["today"] = str(datetime.date.today()) request.session.modified = True if request.method == "POST": form = CarRegistrationForm(request, request.POST) if form.is_valid(): employee = form.cleaned_data["employee"] car = form.cleaned_data["car"] register_date = form.cleaned_data["register_date"] time = form.cleaned_data["time"] km = form.cleaned_data["km"] ladders = form.cleaned_data["ladders"] observation = form.cleaned_data["observation"] ######### ESTA SECCION SOLO PERMITE A LOS GUARDIAS REGISTRAR ###### try: guard = Guard.objects.get(staff=request.user.staff) branchoffice = GuardsToBranchoffice.objects.filter(guard=guard).filter(is_active=True) except Guard.DoesNotExist: messages.add_message( request, messages.ERROR, "Usted %s no tiene permisos para guadar registros" % request.user.get_full_name(), ) return HttpResponseRedirect("/register/register_form/") ############### FIN DE LA SECCION ################################ ############ SECCION PARA MANTENER LA FECHA DE REGISTRO ########### if request.POST.get("stick_date"): if "stick_date" in request.session: # register_date = request.session["stick_date"] register_date = datetime.datetime.strptime(request.session["stick_date"], "%Y-%m-%d").date() else: request.session["stick_date"] = str(register_date) request.session.modified = True else: if "stick_date" in request.session: del request.session["stick_date"] ##################### FIN DE ESTA SECCION ######################### ############# SECCION PARA DISCRIMINAR AUTOS ################ if car.branchoffice != branchoffice[0].branchoffice: messages.add_message( request, messages.WARNING, "Este auto pertenece a " + car.branchoffice.name + ". Use la opcion " + "de Vehiculos Externos en Opciones", ) return HttpResponseRedirect("/register/register_form/") ###################### FIN DE LA SECCION ######################### status = StatusCar.objects.get(car=car) last_register_car = status.last_register_car if last_register_car is not None: # dt = str(register_date) + ' ' + str(time) currentDate = datetime.datetime.combine(register_date, time) diff_date = currentDate - last_register_car.register_time diff_time = divmod(diff_date.days * 86400 + diff_date.seconds, 60)[0] diff_km = km - last_register_car.register_km if diff_time <= 60 and diff_km > 80: messages.add_message( request, messages.ERROR, "ERROR: No pudo haber recorrido " + str(diff_km) + " km en " + str(diff_time) + "minutos", ) return HttpResponseRedirect("/register/register_form/") elif diff_time <= 120 and diff_km > 200: messages.add_message( request, messages.ERROR, "ERROR: No pudo haber recorrido " + str(diff_km) + " km en menos de dos horas", ) return HttpResponseRedirect("/register/register_form/") elif diff_time <= 1400 and diff_km >= 1000: messages.add_message( request, messages.ERROR, "ERROR: No pudo haber recorrido " + str(diff_km) + " km en menos de un dia", ) return HttpResponseRedirect("/register/register_form/") if str(last_register_car.register_time) > str(register_date) + " " + str(time): messages.add_message( request, messages.ERROR, "La fecha que ingreso es menor " + "que la fecha del ultimo registro." + "Ultima fecha: " + str(last_register_car.register_time) + "Fecha que ingreso: " + str(register_date) + " " + str(time), ) return HttpResponseRedirect("/register/register_form/") elif str(last_register_car.register_time) == str(register_date) + " " + str(time): messages.add_message( request, messages.ERROR, "No pudo haber salido al mismo tiempo que ingreso " + str(time) + " " + "el vehiculo " + str(car) + " en fecha " + str(register_date), ) return HttpResponseRedirect("/register/register_form/") if diff_km < 0: if request.POST.get("km_revert"): car.revert_km = True car.save() else: messages.add_message( request, messages.ERROR, "El kilometraje que ingreso es incorrecto, " + "es menor que el ultimo registro", ) return HttpResponseRedirect("/register/register_form/") if status.in_moving: event = "entrada" else: event = "salida" register = CarRegistration( employee=employee, car=car, branch_office=branchoffice[0].branchoffice, register_date=register_date, register_time=datetime.datetime.combine(register_date, time), register_km=km, ladders=ladders, date_modification=datetime.datetime.today(), event=event, owner=request.user, observation=observation, ) register.save() status.updateStatus(register) ############### section to maintenance ############# if request.POST.get("maintenance"): workshop = Workshop.objects.filter(is_active=True) if len(workshop) > 1: return HttpResponseRedirect(register.get_absolute_url() + "/select/workshop/") else: if workshop: m = MaintenanceWorkshop( workshop=workshop[0], car=car, register=register, date_joined=register_date, problem_description=observation, fixed=False, ) m.save() car.is_active = False car.save() else: messages.add_message( request, messages.WARNING, "No hay ningun taller habilitado, " + "el registro se guardo, pero no se " + "mando a ningun taller, consulte al " + "administrador", ) return HttpResponseRedirect("/maintenance/workshop/list/") else: if not car.is_active: m = MaintenanceWorkshop.objects.filter(car=car).filter(fixed=False)[0] m.date_out = register_date m.fixed = True m.save() car.is_active = True car.save() messages.add_message(request, messages.INFO, "El vehiculo %s ya se encuentra activo" % car) ######## end section maintenance ############ messages.add_message(request, messages.SUCCESS, "Registro guardado exitosamente") return HttpResponseRedirect("/register/register_form/") else: messages.add_message(request, messages.ERROR, "Ocurrio un error, revise los datos que ingreso") if "stick_date" in request.session: stick_date = datetime.datetime.strptime(request.session["stick_date"], "%Y-%m-%d") else: stick_date = "" today_date = datetime.date.today() return render(request, "register_form.html", {"form": form, "stick_date": stick_date, "today": today_date}) else: form = CarRegistrationForm(request) if "stick_date" in request.session: stick_date = datetime.datetime.strptime(request.session["stick_date"], "%Y-%m-%d") else: stick_date = "" today_date = datetime.date.today() return render(request, "register_form.html", {"form": form, "stick_date": stick_date, "today": today_date})