diff --git a/InvenTree/InvenTree/settings.py b/InvenTree/InvenTree/settings.py index dda110e834..3d87527216 100644 --- a/InvenTree/InvenTree/settings.py +++ b/InvenTree/InvenTree/settings.py @@ -106,12 +106,13 @@ INSTALLED_APPS = [ 'django.contrib.staticfiles', # InvenTree apps - 'common.apps.CommonConfig', - 'part.apps.PartConfig', - 'stock.apps.StockConfig', - 'company.apps.CompanyConfig', 'build.apps.BuildConfig', + 'common.apps.CommonConfig', + 'company.apps.CompanyConfig', 'order.apps.OrderConfig', + 'part.apps.PartConfig', + 'report.apps.ReportConfig', + 'stock.apps.StockConfig', # Third part add-ons 'django_filters', # Extended filter functionality diff --git a/InvenTree/report/__init__.py b/InvenTree/report/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/InvenTree/report/admin.py b/InvenTree/report/admin.py new file mode 100644 index 0000000000..1d5d1fee01 --- /dev/null +++ b/InvenTree/report/admin.py @@ -0,0 +1,14 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.contrib import admin + +from .models import ReportTemplate + + +class ReportTemplateAdmin(admin.ModelAdmin): + + list_display = ('template', 'description') + + +admin.site.register(ReportTemplate, ReportTemplateAdmin) diff --git a/InvenTree/report/apps.py b/InvenTree/report/apps.py new file mode 100644 index 0000000000..138ba20404 --- /dev/null +++ b/InvenTree/report/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class ReportConfig(AppConfig): + name = 'report' diff --git a/InvenTree/report/migrations/0001_initial.py b/InvenTree/report/migrations/0001_initial.py new file mode 100644 index 0000000000..5d50070c64 --- /dev/null +++ b/InvenTree/report/migrations/0001_initial.py @@ -0,0 +1,23 @@ +# Generated by Django 3.0.5 on 2020-05-21 03:43 + +from django.db import migrations, models +import report.models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='ReportTemplate', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('template', models.FileField(help_text='Report template file', upload_to=report.models.rename_template)), + ('description', models.CharField(help_text='Report template description', max_length=250)), + ], + ), + ] diff --git a/InvenTree/report/migrations/0002_auto_20200521_0350.py b/InvenTree/report/migrations/0002_auto_20200521_0350.py new file mode 100644 index 0000000000..6a88531438 --- /dev/null +++ b/InvenTree/report/migrations/0002_auto_20200521_0350.py @@ -0,0 +1,20 @@ +# Generated by Django 3.0.5 on 2020-05-21 03:50 + +import django.core.validators +from django.db import migrations, models +import report.models + + +class Migration(migrations.Migration): + + dependencies = [ + ('report', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='reporttemplate', + name='template', + field=models.FileField(help_text='Report template file', upload_to=report.models.rename_template, validators=[django.core.validators.FileExtensionValidator(allowed_extensions=['html', 'tex'])]), + ), + ] diff --git a/InvenTree/report/migrations/__init__.py b/InvenTree/report/migrations/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/InvenTree/report/models.py b/InvenTree/report/models.py new file mode 100644 index 0000000000..f155407573 --- /dev/null +++ b/InvenTree/report/models.py @@ -0,0 +1,36 @@ +""" +Report template model definitions +""" + +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +import os + +from django.db import models +from django.core.validators import FileExtensionValidator + +from django.utils.translation import gettext_lazy as _ + + +def rename_template(instance, filename): + + filename = os.path.basename(filename) + + return os.path.join('report', 'template', filename) + +class ReportTemplate(models.Model): + """ + Reporting template model. + """ + + def __str__(self): + return os.path.basename(self.template.name) + + template = models.FileField( + upload_to=rename_template, + help_text=_("Report template file"), + validators=[FileExtensionValidator(allowed_extensions=['html', 'tex'])], + ) + + description = models.CharField(max_length=250, help_text=_("Report template description")) diff --git a/InvenTree/report/tests.py b/InvenTree/report/tests.py new file mode 100644 index 0000000000..7ce503c2dd --- /dev/null +++ b/InvenTree/report/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/InvenTree/report/views.py b/InvenTree/report/views.py new file mode 100644 index 0000000000..91ea44a218 --- /dev/null +++ b/InvenTree/report/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/Makefile b/Makefile index 630784becf..556813a149 100644 --- a/Makefile +++ b/Makefile @@ -51,12 +51,12 @@ style: # Run unit tests test: cd InvenTree && python3 manage.py check - cd InvenTree && python3 manage.py test build common company order part stock + cd InvenTree && python3 manage.py test build common company order part report stock InvenTree # Run code coverage coverage: cd InvenTree && python3 manage.py check - coverage run InvenTree/manage.py test build common company order part stock InvenTree + coverage run InvenTree/manage.py test build common company order part report stock InvenTree coverage html # Install packages required to generate code docs