2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-08-06 20:11:37 +00:00
Files
InvenTree/InvenTree/report/apps.py
Matthias Mair 1199291835 Refactor label/report template copying (#6582)
* [BUG] Inventree fiddles with files directly rather than using Django Storage api
Fixes #2585

* PEP fix

* clean diff

* move template discovery into central location

* more moving file operations

* fix paths

* and another path fixing

* more fixes

* fix typing

* switch config back to local

* revert locale stats

* add s3 support

* storages

* more adaptions

* use s3 switch to set storage backend

* fix reqs

* cleanup default_storage

* init in storage_backend

* move to storage classes everywhere

* fix call

* remove more S3 references

* move storage init

* fix startup error

* alsways use url

* ignore FileExistsError

* move s3 required url in

* remove S3 for now

* use Djangos defaults

* fix old import

* remove default_storage calls

* make labels/reports more similar

* expand functions out

* refactor to use refs where possible

* refactor copy section to be similar

* unify db lookup

* move shared code to generic section

* move ready out

* docstrings

* move even more functions out

* move references inline of the classes

* clean up refs

* fix init

* fix ensure dir

* remove unneeded tries

* cleanup diff

* more cleanup

* fix tests

* use SUBDIR
2024-02-28 09:25:01 +11:00

125 lines
3.6 KiB
Python

"""Config options for the report app."""
import logging
from pathlib import Path
from django.apps import AppConfig
from generic.templating.apps import TemplatingMixin
class ReportConfig(TemplatingMixin, AppConfig):
"""Configuration class for the "report" app."""
name = 'report'
db = 'template'
def ready(self):
"""This function is called whenever the app is loaded."""
# Configure logging for PDF generation (disable "info" messages)
logging.getLogger('fontTools').setLevel(logging.WARNING)
logging.getLogger('weasyprint').setLevel(logging.WARNING)
super().ready()
def create_defaults(self):
"""Create all default templates."""
# Test if models are ready
try:
import report.models
except Exception: # pragma: no cover
# Database is not ready yet
return
assert bool(report.models.TestReport is not None)
# Create the categories
self.create_template_dir(
report.models.TestReport,
[
{
'file': 'inventree_test_report.html',
'name': 'InvenTree Test Report',
'description': 'Stock item test report',
}
],
)
self.create_template_dir(
report.models.BuildReport,
[
{
'file': 'inventree_build_order.html',
'name': 'InvenTree Build Order',
'description': 'Build Order job sheet',
}
],
)
self.create_template_dir(
report.models.BillOfMaterialsReport,
[
{
'file': 'inventree_bill_of_materials_report.html',
'name': 'Bill of Materials',
'description': 'Bill of Materials report',
}
],
)
self.create_template_dir(
report.models.PurchaseOrderReport,
[
{
'file': 'inventree_po_report.html',
'name': 'InvenTree Purchase Order',
'description': 'Purchase Order example report',
}
],
)
self.create_template_dir(
report.models.SalesOrderReport,
[
{
'file': 'inventree_so_report.html',
'name': 'InvenTree Sales Order',
'description': 'Sales Order example report',
}
],
)
self.create_template_dir(
report.models.ReturnOrderReport,
[
{
'file': 'inventree_return_order_report.html',
'name': 'InvenTree Return Order',
'description': 'Return Order example report',
}
],
)
self.create_template_dir(
report.models.StockLocationReport,
[
{
'file': 'inventree_slr_report.html',
'name': 'InvenTree Stock Location',
'description': 'Stock Location example report',
}
],
)
def get_src_dir(self, ref_name):
"""Get the source directory."""
return Path(__file__).parent.joinpath('templates', self.name)
def get_new_obj_data(self, data, filename):
"""Get the data for a new template db object."""
return {
'name': data['name'],
'description': data['description'],
'template': filename,
'enabled': True,
}