Exemplo n.º 1
0
Arquivo: views.py Projeto: josben/flo
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},
        )
Exemplo n.º 2
0
Arquivo: views.py Projeto: josben/flo
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})