Exemple #1
0
def report_event(request, event_category, event_slug):
    """Report specific event.

    Returns:
    HttpResponseObject -- report event page

    """
    event = check_event(request,
                        event_category=event_category,
                        event_slug=event_slug)
    if event:
        if request.method == 'POST':
            report_form = ReportForm(request.POST)
            if report_form.is_valid():
                report = Report(event=event,
                                report_type=request.POST['report_type'],
                                detail=request.POST['detail'])
                report.save()
                messages.warning(request, f'{event.title} is reported.')
                return redirect('events:feed')
        else:
            report_form = ReportForm()
        return render(request, 'events/report_event.html', {
            'report_form': report_form,
            'event': event
        })
    else:
        return redirect('events:feed')
Exemple #2
0
def home_view(request):
    sales_df = None
    positions_df = None
    merged_df = None
    df = None
    chart = None
    no_data = None

    search_form = SalesSearchForm(request.POST or None)
    report_form = ReportForm()

    if request.method == 'POST':
        date_from = request.POST.get('date_from')
        date_to = request.POST.get('date_to')
        chart_type = request.POST.get('chart_type')
        results_by = request.POST.get('results_by')

        sale_qs = Sale.objects.filter(created__date__lte=date_to,
                                      created__date__gte=date_from)
        if len(sale_qs) > 0:
            sales_df = pd.DataFrame(sale_qs.values())
            sales_df['customer_id'] = sales_df['customer_id'].apply(
                get_customer_from_id)
            sales_df['salesman_id'] = sales_df['salesman_id'].apply(
                get_salesman_from_id)
            sales_df['created'] = sales_df['created'].apply(
                lambda x: x.strftime('%Y-%m-%d'))
            sales_df.rename(
                {
                    'customer_id': 'customer',
                    'salesman_id': 'salesman',
                    'id': 'sales_id'
                },
                axis=1,
                inplace=True)

            positions_data = []
            for sale in sale_qs:
                for pos in sale.get_positions():
                    obj = {
                        'position_id': pos.id,
                        'product': pos.product.name,
                        'quantity': pos.quantity,
                        'price': pos.price,
                        'sales_id': pos.get_sales_id(),
                    }
                    positions_data.append(obj)

            positions_df = pd.DataFrame(positions_data)
            merged_df = pd.merge(sales_df, positions_df, on='sales_id')

            df = merged_df.groupby('transaction_id',
                                   as_index=False)['price'].agg('sum')

            chart = get_chart(chart_type, sales_df, results_by)
            # print('chart', chart)
            sales_df = sales_df.to_html()
            positions_df = positions_df.to_html()
            merged_df = merged_df.to_html()
            df = df.to_html()

        else:
            no_data = 'No data is available in this date range'

    context = {
        'search_form': search_form,
        'report_form': report_form,
        'sales_df': sales_df,
        'positions_df': positions_df,
        'merged_df': merged_df,
        'df': df,
        'chart': chart,
        'no_data': no_data,
    }
    return render(request, 'sales/home.html', context)
Exemple #3
0
def create_report(request):
    if request.method == 'POST':

        form = ReportForm(request.POST)
        if form.is_valid():  #check rules in forms.py
            report_name = request.POST.get('report_name')  #from html
            report_obj = Report(name=report_name)  #get data into Report Model
            report_obj.user_id = request.user  #from user that login
            report_obj.save()  #save data intp database

            item_stage1_name = request.POST.getlist('stage1')
            for item in item_stage1_name:
                if item != '':
                    item_obj = Items(name=item, stage=1, report_id=report_obj)
                    item_obj.save()

            item_stage2_name = request.POST.getlist('stage2')
            for item in item_stage2_name:
                if item != '':
                    item_obj = Items(name=item, stage=2, report_id=report_obj)
                    item_obj.save()

            item_stage3_name = request.POST.getlist('stage3')
            for item in item_stage3_name:
                if item != '':
                    item_obj = Items(name=item, stage=3, report_id=report_obj)
                    item_obj.save()

            if request.POST.get("check_default", False):
                Items.objects.bulk_create([
                    Items(name="Do I know what topic I would like to write?",
                          stage=1,
                          report_id=report_obj),
                    Items(name="Do I have enough information to write?",
                          stage=1,
                          report_id=report_obj),
                    Items(name="Does the report have the title?",
                          stage=2,
                          report_id=report_obj),
                    Items(name="Does the report have the table of content?",
                          stage=2,
                          report_id=report_obj),
                    Items(name="Does the report have the content?",
                          stage=2,
                          report_id=report_obj),
                    Items(name="Does the report have the references?",
                          stage=2,
                          report_id=report_obj),
                    Items(
                        name=
                        "Do I send an email to my lecturer that I complete the report?",
                        stage=3,
                        report_id=report_obj),
                    Items(name="Do I post it on my Facebook?",
                          stage=3,
                          report_id=report_obj),
                ])

            return HttpResponseRedirect(
                reverse('report.views.create_report'))  #redirect after POST
    else:
        form = ReportForm()
    return render(request, 'create_report.html', {})
Exemple #4
0
def report(request):
    if "csrfmiddlewaretoken" in request.GET:
        form = ReportForm(request.GET)
        if form.is_valid():
            export_to = form.cleaned_data["export_to"]
            registers = form.cleaned_data["registers"]
            branchoffice = form.cleaned_data["branchoffice"]
            report_date = form.cleaned_data["report_date"]
            report_date_start = form.cleaned_data["report_date_start"]
            report_date_end = form.cleaned_data["report_date_end"]
            employee = form.cleaned_data["item_employee"]
            car = form.cleaned_data["item_car"]
            ci_guest = form.cleaned_data["ci_guest"]

            if registers == "1":
                # entrada CarRegistration
                if report_date_start and report_date_end:
                    rp_reg_car = CarRegistration.objects.filter(event="entrada").filter(
                        register_date__range=[report_date_start, report_date_end]
                    )
                else:
                    rp_reg_car = CarRegistration.objects.filter(event="entrada").filter(register_date=report_date)
                if branchoffice:
                    rp_reg_car = rp_reg_car.filter(branch_office=branchoffice)
                if car:
                    rp_reg_car = rp_reg_car.filter(car=car)
                if employee:
                    rp_reg_car = rp_reg_car.filter(employee=employee)
                if not rp_reg_car:
                    messages.add_message(
                        request,
                        messages.WARNING,
                        "Los datos que ingreso no tienen ningun resultado "
                        + "intentelo nuevamene con otros datos. Gracias",
                    )
                    return HttpResponseRedirect("/report/")

            elif registers == "2":
                # salida CarRegistration
                if report_date_start and report_date_end:
                    rp_reg_car = CarRegistration.objects.filter(event="salida").filter(
                        register_date__range=[report_date_start, report_date_end]
                    )
                else:
                    rp_reg_car = CarRegistration.objects.filter(event="salida").filter(register_date=report_date)
                if branchoffice:
                    rp_reg_car = rp_reg_car.filter(branch_office=branchoffice)
                if car:
                    rp_reg_car = rp_reg_car.filter(car=car)
                if employee:
                    rp_reg_car = rp_reg_car.filter(employee=employee)
                if not rp_reg_car:
                    messages.add_message(
                        request,
                        messages.WARNING,
                        "Los datos que ingreso no tienen ningun resultado "
                        + "intentelo nuevamene con otros datos. Gracias",
                    )
                    return HttpResponseRedirect("/report/")

            elif registers == "3":
                # ambos registers
                if report_date_start and report_date_end:
                    rp_reg_car = CarRegistration.objects.filter(
                        register_date__range=[report_date_start, report_date_end]
                    )
                else:
                    rp_reg_car = CarRegistration.objects.filter(register_date=report_date)
                if branchoffice:
                    rp_reg_car = rp_reg_car.filter(branch_office=branchoffice)
                if car:
                    rp_reg_car = rp_reg_car.filter(car=car)
                if employee:
                    rp_reg_car = rp_reg_car.filter(employee=employee)
                if not rp_reg_car:
                    messages.add_message(
                        request,
                        messages.WARNING,
                        "Los datos que ingreso no tienen ningun resultado "
                        + "intentelo nuevamene con otros datos. Gracias",
                    )
                    return HttpResponseRedirect("/report/")

            elif registers == "4":
                # juntos
                if report_date_start and report_date_end:
                    if branchoffice:
                        rp_reg_car_together = AllCarRegistration.objects.filter(parking_out=branchoffice).filter(
                            register_date__range=[report_date_start, report_date_end]
                        )
                    else:
                        rp_reg_car_together = AllCarRegistration.objects.filter(
                            register_date__range=[report_date_start, report_date_end]
                        )
                else:
                    if branchoffice:
                        rp_reg_car_together = AllCarRegistration.objects.filter(parking_out=branchoffice).filter(
                            register_date=report_date
                        )
                    else:
                        rp_reg_car_together = AllCarRegistration.objects.filter(register_date=report_date)
                if car:
                    rp_reg_car_together = rp_reg_car_together.filter(car=car)
                if employee:
                    rp_reg_car_together = rp_reg_car_together.filter(custody_out=employee)
                if not rp_reg_car_together:
                    messages.add_message(
                        request,
                        messages.WARNING,
                        "Los datos que ingreso no tienen ningun resultado "
                        + "intentelo nuevamene con otros datos. Gracias",
                    )
                    return HttpResponseRedirect("/report/")

            elif registers == "5":
                # personas
                if report_date_start and report_date_end:
                    if branchoffice:
                        rp_guest = GuestRegistration.objects.filter(branchoffice=branchoffice).filter(
                            register_date__range=[report_date_start, report_date_end]
                        )
                    else:
                        rp_guest = GuestRegistration.objects.filter(
                            register_date__range=[report_date_start, report_date_end]
                        )
                else:
                    if branchoffice:
                        rp_guest = GuestRegistration.objects.filter(branchoffice=branchoffice).filter(
                            register_date=report_date
                        )
                    else:
                        rp_guest = GuestRegistration.objects.filter(register_date=report_date)
                if ci_guest:
                    guest = Guest.objects.get(val_document=ci_guest)
                    rp_guest = rp_guest.filter(guest=guest)
                if not rp_guest:
                    messages.add_message(
                        request,
                        messages.WARNING,
                        "Los datos que ingreso no tienen ningun resultado "
                        + "intentelo nuevamene con otros datos. Gracias",
                    )
                    return HttpResponseRedirect("/report/")

            elif registers == "6":
                # ingresos a taller
                if branchoffice:
                    try:
                        workshop = Workshop.objects.get(branchoffice=branchoffice)
                    except Workshop.DoesNotExist:
                        branchoffice = BranchOffice.objects.get(name="Km. 0")
                        workshop = Workshop.objects.get(branchoffice=branchoffice)
                else:
                    branchoffice = BranchOffice.objects.get(name="Km. 0")
                    workshop = Workshop.objects.get(branchoffice=branchoffice)
                if report_date_start and report_date_end:
                    rp_maintenance = MaintenanceWorkshop.objects.filter(workshop=workshop).filter(
                        date_joined__range=[report_date_start, report_date_end]
                    )
                else:
                    rp_maintenance = MaintenanceWorkshop.objects.filter(workshop=workshop).filter(
                        date_joined=report_date
                    )
                if car:
                    rp_maintenance = rp_maintenance.filter(car=car)
                if not rp_maintenance:
                    messages.add_message(
                        request,
                        messages.WARNING,
                        "Los datos que ingreso no tienen ningun resultado "
                        + "intentelo nuevamene con otros datos. Gracias",
                    )
                    return HttpResponseRedirect("/report/")
            elif registers == "7":
                motorist_list = Motorist.objects.all()
            elif registers == "8":
                bo_list = BranchOffice.objects.all()
                gbo_list = GuardsToBranchoffice.objects.filter(is_active=True)
            else:
                if branchoffice:
                    cars_list = Car.objects.filter(branchoffice=branchoffice)
                else:
                    cars_list = Car.objects.all()
                bo_list = BranchOffice.objects.all()

            if export_to == "1":
                if registers == "1":
                    if branchoffice:
                        return render_to_response(
                            "list_register_event.html",
                            {
                                "registers": rp_reg_car.order_by("register_date"),
                                "branchoffice": branchoffice,
                                "event": "entrada",
                                "both": False,
                            },
                            context_instance=RequestContext(request),
                        )
                    else:
                        return render_to_response(
                            "list_register_event.html",
                            {"registers": rp_reg_car.order_by("register_date"), "event": "entrada", "both": False},
                            context_instance=RequestContext(request),
                        )
                elif registers == "2":
                    if branchoffice:
                        return render_to_response(
                            "list_register_event.html",
                            {
                                "registers": rp_reg_car.order_by("register_date"),
                                "branchoffice": branchoffice,
                                "event": "salida",
                                "both": False,
                            },
                            context_instance=RequestContext(request),
                        )
                    else:
                        return render_to_response(
                            "list_register_event.html",
                            {"registers": rp_reg_car.order_by("register_date"), "event": "salida", "both": False},
                            context_instance=RequestContext(request),
                        )
                elif registers == "3":
                    if branchoffice:
                        return render_to_response(
                            "list_register_event.html",
                            {
                                "registers": rp_reg_car.order_by("register_date"),
                                "branchoffice": branchoffice,
                                "event": "both",
                                "both": True,
                            },
                            context_instance=RequestContext(request),
                        )
                    else:
                        return render_to_response(
                            "list_register_event.html",
                            {"registers": rp_reg_car.order_by("register_date"), "event": "both", "both": True},
                            context_instance=RequestContext(request),
                        )
                elif registers == "4":
                    if branchoffice:
                        return render_to_response(
                            "list_all.html",
                            {"registers": rp_reg_car_together.order_by("register_date"), "branchoffice": branchoffice},
                            context_instance=RequestContext(request),
                        )
                    else:
                        return render_to_response(
                            "list_all.html",
                            {"registers": rp_reg_car_together.order_by("register_date")},
                            context_instance=RequestContext(request),
                        )
                elif registers == "5":
                    return render_to_response(
                        "guest_list.html",
                        {"persons": rp_guest.order_by("-time_entry")},
                        context_instance=RequestContext(request),
                    )
                elif registers == "6":
                    return render(request, "maintenance.html", {"m_list": rp_maintenance})
                elif registers == "7":
                    return render(request, "motorist.html", {"motorist_list": motorist_list})
                elif registers == "8":
                    return render(request, "branchoffice_guards.html", {"guards": gbo_list, "bo_list": bo_list})
                else:
                    return render(request, "list_cars.html", {"cars": cars_list, "bo_list": bo_list})

            elif export_to == "2":
                # EXCEL
                if registers == "1" or registers == "2" or registers == "3":
                    try:
                        output = StringIO.StringIO()
                        book = Workbook(output)
                        sheet = book.add_worksheet("Registro de vehiculos")
                        sheet.write(0, 0, "Interno de Vehiculo")
                        sheet.write(0, 1, "Item del conductor")
                        sheet.write(0, 2, "Conductor del Vehiculo")
                        sheet.write(0, 3, "Fecha de registro")
                        sheet.write(0, 4, "Evento")
                        sheet.write(0, 5, "Hora")
                        sheet.write(0, 6, "Kilometraje")
                        sheet.write(0, 7, "Escaleras")

                        i = 1
                        for row in rp_reg_car:
                            sheet.write(i, 0, row.car.internal_number)
                            sheet.write(i, 1, row.employee.item)
                            sheet.write(i, 2, row.employee.staff.full_name())
                            sheet.write(i, 3, row.register_date.strftime("%d/%m/%y"))
                            sheet.write(i, 4, row.event)
                            sheet.write(i, 5, row.register_time.strftime("%H:%M"))
                            sheet.write(i, 6, row.register_km)
                            if row.ladders is None:
                                sheet.write(i, 7, "---")
                            else:
                                sheet.write(i, 7, row.ladders)
                            i += 1
                        book.close()

                        # construct response
                        output.seek(0)
                        response = HttpResponse(
                            output.read(),
                            content_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
                        )
                        response["Content-Disposition"] = "attachment; filename=RegistroDeVehiculos.xlsx"

                        return response
                    except Exception:
                        raise Http404
                elif registers == "4":
                    try:
                        output = StringIO.StringIO()
                        book = Workbook(output)
                        sheet = book.add_worksheet("Registro de vehiculos")
                        sheet.write(0, 0, "Interno de Vehiculo")
                        sheet.write(0, 1, "Item del conductor")
                        sheet.write(0, 2, "Conductor del Vehiculo")
                        sheet.write(0, 3, "Fecha de registro")
                        sheet.write(0, 4, "Hora de salida")
                        sheet.write(0, 5, "Km de salida")
                        sheet.write(0, 6, "Hora de retorno")
                        sheet.write(0, 7, "Km de retorno")
                        sheet.write(0, 8, "Recorrido")
                        sheet.write(0, 9, "Escaleras")

                        i = 1
                        for row in rp_reg_car_together:
                            sheet.write(i, 0, row.car.internal_number)
                            sheet.write(i, 1, row.custody_out.item)
                            sheet.write(i, 2, row.custody_out.staff.full_name())
                            sheet.write(i, 3, row.register_date.strftime("%d/%m/%y"))
                            sheet.write(i, 4, row.time_out.strftime("%H:%M"))
                            sheet.write(i, 5, row.km_out)
                            if row.time_in is None:
                                sheet.write(i, 6, "")
                            else:
                                sheet.write(i, 6, row.time_in.strftime("%H:%M"))
                            if row.km_in is None:
                                sheet.write(i, 7, "---")
                            else:
                                sheet.write(i, 7, row.km_in)
                            sheet.write(i, 8, row.get_diff_km())
                            sheet.write(i, 9, row.ladders_out)
                            i += 1
                        book.close()

                        # construct response
                        output.seek(0)
                        response = HttpResponse(
                            output.read(),
                            content_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
                        )
                        response["Content-Disposition"] = "attachment; filename=RegistroDeVehiculos.xlsx"

                        return response
                    except Exception:
                        raise Http404
                elif registers == "5":
                    try:
                        output = StringIO.StringIO()
                        book = Workbook(output)
                        sheet = book.add_worksheet("Registro de Personas")
                        sheet.write(0, 0, "Fecha")
                        sheet.write(0, 1, "Documento")
                        sheet.write(0, 2, "Nombre")
                        sheet.write(0, 3, "Hora de ingreso")
                        sheet.write(0, 4, "Hora de salida")
                        sheet.write(0, 5, "Oficina")
                        sheet.write(0, 6, "Motivo")

                        i = 1
                        for row in rp_guest:
                            sheet.write(i, 0, row.register_date.strftime("%d/%m/%y"))
                            sheet.write(i, 1, row.guest.get_document())
                            sheet.write(i, 2, row.guest.full_name())
                            sheet.write(i, 3, row.time_entry.strftime("%H:%M"))
                            if row.time_out is None:
                                sheet.write(i, 4, "---")
                            else:
                                sheet.write(i, 4, row.time_out.strftime("%H:%M"))
                            sheet.write(i, 5, row.branchoffice.name)
                            if row.reason is None:
                                sheet.write(i, 6, "---")
                            else:
                                sheet.write(i, 6, row.reason)
                            i += 1
                        book.close()

                        # construct response
                        output.seek(0)
                        response = HttpResponse(
                            output.read(),
                            content_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
                        )
                        response["Content-Disposition"] = "attachment; filename=RegistroDePersonas.xlsx"

                        return response
                    except Exception:
                        raise Http404
                elif registers == "6":
                    try:
                        output = StringIO.StringIO()
                        book = Workbook(output)
                        sheet = book.add_worksheet("Registro de Ingresos a Taller")
                        sheet.write(0, 0, "Taller")
                        sheet.write(0, 1, "Vehiculo")
                        sheet.write(0, 2, "Origen")
                        sheet.write(0, 3, "Conductor de Vehiculo")
                        sheet.write(0, 4, "Fecha de Ingreso")
                        sheet.write(0, 5, "Fecha de Salida")
                        sheet.write(0, 6, "Problema")

                        i = 1
                        for row in rp_maintenance:
                            sheet.write(i, 0, row.workshop.branchoffice.name)
                            sheet.write(i, 1, row.car.internal_number)
                            sheet.write(i, 2, row.register.branch_office.name)
                            sheet.write(i, 3, row.register.employee.staff.full_name())
                            sheet.write(i, 4, row.date_joined.strftime("%d/%m/%y"))
                            if row.date_out is None:
                                sheet.write(i, 5, "---")
                            else:
                                sheet.write(i, 5, row.date_out.strftime("%d/%m/%y"))
                            if row.problem_description is None:
                                sheet.write(i, 6, "---")
                            else:
                                sheet.write(i, 6, row.problem_description)
                            i += 1
                        book.close()

                        # construct response
                        output.seek(0)
                        response = HttpResponse(
                            output.read(),
                            content_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
                        )
                        response["Content-Disposition"] = "attachment; filename=RegistrosTaller.xlsx"

                        return response
                    except Exception:
                        raise Http404
                elif registers == "7":
                    try:
                        output = StringIO.StringIO()
                        book = Workbook(output)
                        sheet = book.add_worksheet("Conductores de Vehiculo")
                        sheet.write(0, 0, "Item")
                        sheet.write(0, 1, "Nombre")
                        sheet.write(0, 2, "CI")
                        sheet.write(0, 3, "Categoria")
                        sheet.write(0, 4, "Valides de licencia")

                        i = 1
                        for row in motorist_list:
                            sheet.write(i, 0, row.employee.staff.full_name())
                            sheet.write(i, 1, row.employee.item)
                            sheet.write(i, 2, row.employee.staff.get_document())
                            if row.driver_category is None:
                                sheet.write(i, 3, "---")
                            else:
                                sheet.write(i, 3, row.driver_category)
                            if row.expiration_date is None:
                                sheet.write(i, 4, "---")
                            else:
                                sheet.write(i, 4, row.expiration_date.strftime("%d/%m/%y"))
                            i += 1
                        book.close()

                        # construct response
                        output.seek(0)
                        response = HttpResponse(
                            output.read(),
                            content_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
                        )
                        response["Content-Disposition"] = "attachment; filename=Conductores.xlsx"

                        return response
                    except Exception:
                        raise Http404
                elif registers == "8":
                    try:
                        output = StringIO.StringIO()
                        book = Workbook(output)
                        sheet = book.add_worksheet("Conductores de Vehiculo")
                        sheet.write(0, 0, "Oficina")
                        sheet.write(0, 1, "CI")
                        sheet.write(0, 2, "Nombre")
                        sheet.write(0, 3, "Empresa")
                        sheet.write(0, 4, "Fecha de ingreso")

                        i = 1
                        for row in gbo_list:
                            sheet.write(i, 0, row.branchoffice.name)
                            sheet.write(i, 1, row.guard.staff.full_name())
                            sheet.write(i, 2, row.guard.staff.get_document())
                            sheet.write(i, 3, row.guard.company.name)
                            sheet.write(i, 4, row.date_joined.strftime("%d/%m/%y"))
                            i += 1
                        book.close()

                        # construct response
                        output.seek(0)
                        response = HttpResponse(
                            output.read(),
                            content_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
                        )
                        response["Content-Disposition"] = "attachment; filename=Guardias.xlsx"
                        return response
                    except Exception, err:
                        raise Http404(err)
                else:
                    try:
                        output = StringIO.StringIO()
                        book = Workbook(output)
                        sheet = book.add_worksheet("Vehiculos de la empresa")
                        sheet.write(0, 0, "Interno")
                        sheet.write(0, 1, "Placa")
                        sheet.write(0, 2, "Chasis")
                        sheet.write(0, 3, "Tipo")
                        sheet.write(0, 4, "Modelo")
                        sheet.write(0, 5, "Marca")
                        sheet.write(0, 6, "Kilometraje")
                        sheet.write(0, 7, "Parqueo")

                        i = 1
                        for row in cars_list:
                            sheet.write(i, 0, row.internal_number)
                            sheet.write(i, 1, row.license_plate)
                            if row.chassis is None:
                                sheet.write(i, 2, "---")
                            else:
                                sheet.write(i, 2, row.chassis)
                            if row.type_motorized is None:
                                sheet.write(i, 3, "---")
                            else:
                                sheet.write(i, 3, row.type_motorized.name)
                            if row.model_year is None:
                                sheet.write(i, 4, "---")
                            else:
                                sheet.write(i, 4, row.model_year)
                            if row.manufacturer is None:
                                sheet.write(i, 5, "---")
                            else:
                                sheet.write(i, 5, row.manufacturer)
                            if row.current_km is None:
                                sheet.write(i, 6, "---")
                            else:
                                sheet.write(i, 6, row.current_km)
                            if row.branchoffice is None:
                                sheet.write(i, 7, "---")
                            else:
                                sheet.write(i, 7, row.branchoffice.name)
                            i += 1
                        book.close()

                        # construct response
                        output.seek(0)
                        response = HttpResponse(
                            output.read(),
                            content_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
                        )
                        response["Content-Disposition"] = "attachment; filename=Vehiculos.xlsx"
                        return response
                    except Exception, err:
                        raise Http404(err)
            else:
                # PDF
                if registers == "1" or registers == "2" or registers == "3":
                    try:
                        resp = HttpResponse(content_type="application/pdf")
                        report = RegisterCarReportByEvent(queryset=rp_reg_car)
                        report.title = "Registro de vehiculos" + (
                            " del edificio " + branchoffice.name if branchoffice is not None else ""
                        )
                        report.generate_by(PDFGenerator, filename=resp)
                    except Exception:
                        raise Http404()
                    return resp
                elif registers == "4":
                    try:
                        resp = HttpResponse(content_type="application/pdf")
                        report = RegisterCarReportTogether(queryset=rp_reg_car_together)
                        report.title = "Registro de vehiculos" + (
                            " del edificio " + branchoffice.name if branchoffice is not None else ""
                        )
                        report.generate_by(PDFGenerator, filename=resp)
                    except Exception:
                        raise Http404()
                    return resp
                elif registers == "5":
                    try:
                        resp = HttpResponse(content_type="application/pdf")
                        report = RegisterPeopleReport(queryset=rp_guest)
                        report.title = "Registro de ingresos de personas" + (
                            " del edificio " + branchoffice.name if branchoffice is not None else ""
                        )
                        report.generate_by(PDFGenerator, filename=resp)
                    except Exception:
                        raise Http404()
                    return resp
                elif registers == "6":
                    try:
                        resp = HttpResponse(content_type="application/pdf")
                        report = RegisterWorkshopReport(queryset=rp_maintenance)
                        report.title = "Registro de ingresos a Taller"
                        report.generate_by(PDFGenerator, filename=resp)
                    except Exception:
                        raise Http404()
                    return resp
                elif registers == "7":
                    try:
                        resp = HttpResponse(content_type="application/pdf")
                        report = MotoristReport(queryset=motorist_list)
                        report.generate_by(PDFGenerator, filename=resp)
                    except Exception:
                        raise Http404()
                    return resp
                elif registers == "8":
                    try:
                        resp = HttpResponse(content_type="application/pdf")
                        report = GuardsReport(queryset=gbo_list)
                        report.generate_by(PDFGenerator, filename=resp)
                    except Exception, err:
                        raise Http404(err)
                    return resp
                else: