Skip to main content

A Django app to create and use ReportBro reports with a sample admin. This allows you to generate yours reports using three options: by its code or name from database or JSON template.

Project description

django-reportbrod

A Django app to create, use and export ReportBro reports (free version) with a admin.

Django lib JS lib

Quick start

  1. Add "django_reportbroD" to your INSTALLED_APPS setting like this:
INSTALLED_APPS = [
... ,
'django_reportbroD.apps.ReportbrodConfig',
   ]

  1. Include the reportbroD URLconf in your project urls.py like this:
   path("reportbroD/", include("django_reportbroD.urls", namespace="reportbroD")),  
  1. Run python manage.py migrate to create the models and to migrating to data base.

  2. Start the development server.

  3. Visit the /reportbroD/ URL to create/update/edit/duplicate/remove reports.

Traslations

The next step is optional if you want to use in Spanish and English, otherwise it isn't necessary.

  1. Add LocaleMiddleware to your MIDDLEWARE list in your settings. This allows the reporting app to have translation in Spanish and English.
       MIDDLEWARE = [
   'django.middleware.locale.LocaleMiddleware',
   ...
           ],  
  1. Include the i18N URLconf in your project urls.py like this:
   path("i18n/", include("django.conf.urls.i18n")),  

Using report

  1. Create a app to using the view file or other file .py for defining the view function to show/export selected report
 from django_reportbroD.utils import convert_to_base64, convert_list_to_dict, to_dict, export_report_by_code, export_report_by_name, export_report_from_JSON
 
  def generar_pdf(request):
  
    products=Product.objects.all()
  
    #converting in a dictionary
    productos=[to_dict(p) for p in products]
  
    imagen= convert_to_base64(products.first().imagen.url, 'jpg')
  
    data={
           "productos":productos,
           "imagen":imagen
         }
  
    code_report= 12

    return export_report_by_code(template_code=code_report, data=data, extension="pdf")

def generar_xls(request):
  
    products=Product.objects.all()
  
    #converting in a dictionary
    productos=[to_dict(p) for p in products]
  
    imagen= convert_to_base64(products.first().imagen.url, 'jpg')
  
    data={
  "productos":productos,
  "imagen":imagen
   }
  

    return export_report_by_name(template_name="Plantilla de obrero" , data=data, extension="xlsx")


def generar_reporte(request):
  
    products=Product.objects.all()
  
    #converting in a dictionary
    productos=[to_dict(p) for p in products]
  
    imagen= convert_to_base64(products.first().imagen.url, 'jpg')
  
    data={
  "productos":productos,
  "imagen":imagen
   }
  

    return export_report_from_JSON(path_json="reporte.json", data=data, extension="xlsx")

  1. Include a report into Django Admin through a action function.

# admin.py 
from .views import reporte
...

def reportbro(modeladmin, request, queryset):
    w=queryset.first()
    if w:
        return reporte(request, w.code)

reportbro.short_description="Working Report"

@admin.register(Working)
class WorkAdmin(admin.ModelAdmin):
    list_display = ("worker","date", "hours","payhorary", "descount", "pay_extra", "pay" )
    list_filter=["date", "worker"]
    list_display_links = ("worker","date" )
    actions=[reportbro]

Parameter >> download = True

In this case, download parameter from export_report_by_code, export_report_by_name and export_report_from_JSON functions must be "True" to avoid any errors when the report format is "pdf".

#views.py 
from django_reportbroD.utils import convert_to_base64, convert_list_to_dict, to_dict, export_report_by_code, export_report_by_name, export_report_from_JSON
  ...

def reporte(request, code):

    worker=Worker.objects.filter(code=code).first()
    workings=Working.objects.filter(worker=worker)
    
    asistencia= [
{
    "date": w.date.date,
    "payhorary" : w.payhorary,
    "descount" : w.descount,
    "pay_extra" : w.pay_extra,
    "pay" : w.pay,
    
    }
for w in workings
    ]

    trabajador=to_dict(worker)
    trabajador["horary"]=worker.horary.horario()
    trabajador["area"]=worker.area.Area()


    data={
        "worker":trabajador,
        "working": asistencia,
        "date":datetime.datetime.now()
    }

    return export_report_by_code(template_code=7, data=data, file="nuevo", download=True)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_reportbrod-4.1.2.tar.gz (6.3 MB view details)

Uploaded Source

File details

Details for the file django_reportbrod-4.1.2.tar.gz.

File metadata

  • Download URL: django_reportbrod-4.1.2.tar.gz
  • Upload date:
  • Size: 6.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.4

File hashes

Hashes for django_reportbrod-4.1.2.tar.gz
Algorithm Hash digest
SHA256 ce8a54d4c0388463f505566c6bbf6210f39ad5034cfc55156e43a0b9f7fe962a
MD5 1d578b5e25228a8a916e782a8ceb6600
BLAKE2b-256 651b109eb83d2b79bdb9e2e6dc45b2ee23561352d5cb31a3422ff8ad19d1beab

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page