mirror of
https://github.com/inventree/InvenTree.git
synced 2025-08-06 20:11:37 +00:00
* [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
125 lines
3.6 KiB
Python
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,
|
|
}
|