PDF fixes, and working on models andstlying django side
This commit is contained in:
parent
87922787c9
commit
13bbc4705a
@ -279,7 +279,7 @@ namespace BenchtopPDF
|
|||||||
table.Cell().Element(CellStyle).AlignRight().Text($"{masterValue.LowLimit / 1000.0:F3}");
|
table.Cell().Element(CellStyle).AlignRight().Text($"{masterValue.LowLimit / 1000.0:F3}");
|
||||||
table.Cell().Element(CellStyle).AlignRight().Text($"{masterValue.HighLimit / 1000.0:F3}");
|
table.Cell().Element(CellStyle).AlignRight().Text($"{masterValue.HighLimit / 1000.0:F3}");
|
||||||
table.Cell().Element(CellStyle).AlignRight().Text($"{value / 1000.0:F3}");
|
table.Cell().Element(CellStyle).AlignRight().Text($"{value / 1000.0:F3}");
|
||||||
table.Cell().Element(CellStyle).AlignRight().Text($"{delta / 1000.0:F3}");
|
table.Cell().Element(CellStyle).AlignRight().Text($"---");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,14 +1,8 @@
|
|||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from sheets.models import (
|
from .models import (
|
||||||
Configuration,
|
|
||||||
Sheet
|
Sheet
|
||||||
)
|
)
|
||||||
|
|
||||||
class ConfigurationAdmin(admin.ModelAdmin):
|
|
||||||
pass
|
|
||||||
|
|
||||||
admin.site.register(Configuration, ConfigurationAdmin)
|
|
||||||
|
|
||||||
|
|
||||||
class SheetAdmin(admin.ModelAdmin):
|
class SheetAdmin(admin.ModelAdmin):
|
||||||
pass
|
pass
|
||||||
|
@ -3,18 +3,48 @@ from django.forms.widgets import ClearableFileInput
|
|||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from sheets.models import Configuration, Sheet
|
from .models import Sheet
|
||||||
|
|
||||||
|
|
||||||
class SheetForm(forms.ModelForm):
|
class SheetForm(forms.ModelForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Sheet
|
model = Sheet
|
||||||
fields = ["instrument", "customer_name", "customer_address", "control_number", "serial_number", "accuracy", "barometric_pressure", "temperature", "humidity", "report_type", "as_found", "as_left", "both", "configuration",]
|
fields = [
|
||||||
|
"customer_name",
|
||||||
|
"onsite_cal",
|
||||||
|
"control_doc",
|
||||||
|
"technician",
|
||||||
|
|
||||||
|
"instrument_model",
|
||||||
|
"serial_number",
|
||||||
|
"channel",
|
||||||
|
"transducer_model",
|
||||||
|
"transducer_span",
|
||||||
|
|
||||||
|
"calibration_serial",
|
||||||
|
"calibration_model",
|
||||||
|
"calibration_date",
|
||||||
|
"calibration_due_date",
|
||||||
|
"calibration_cert_id",
|
||||||
|
|
||||||
|
"accuracy",
|
||||||
|
"barometric_pressure",
|
||||||
|
"temperature",
|
||||||
|
"humidity",
|
||||||
|
"report_type",
|
||||||
|
"as_found",
|
||||||
|
"as_left",
|
||||||
|
"both",
|
||||||
|
]
|
||||||
|
|
||||||
widgets = {
|
widgets = {
|
||||||
"accuracy": forms.NumberInput(attrs={'step': 0.01}),
|
"accuracy": forms.NumberInput(attrs={'step': 0.01}),
|
||||||
"barometric_pressure": forms.NumberInput(attrs={'step': 0.01, 'max': 1100, 'min': 800}),
|
"barometric_pressure": forms.NumberInput(attrs={'step': 0.01, 'max': 1100, 'min': 800}),
|
||||||
"temperature": forms.NumberInput(attrs={'step': 0.01, 'max': 1000.0, 'min': -459.67}),
|
"temperature": forms.NumberInput(attrs={'step': 0.01, 'max': 1000.0, 'min': -459.67}),
|
||||||
"humidity": forms.NumberInput(attrs={'step': 0.01, 'max': 100.0, 'min': 0.0}),
|
"humidity": forms.NumberInput(attrs={'step': 0.01, 'max': 100.0, 'min': 0.0}),
|
||||||
|
"calibration_date": forms.SelectDateWidget(),
|
||||||
|
"calibration_due_date": forms.SelectDateWidget(),
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
@ -30,4 +60,3 @@ class SheetForm(forms.ModelForm):
|
|||||||
})
|
})
|
||||||
else:
|
else:
|
||||||
field.widget.attrs.update({'v-model': name})
|
field.widget.attrs.update({'v-model': name})
|
||||||
|
|
||||||
|
@ -1,30 +1,38 @@
|
|||||||
# Generated by Django 4.2.3 on 2023-07-26 18:12
|
# Generated by Django 4.2.5 on 2023-09-18 17:03
|
||||||
|
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
class Migration(migrations.Migration):
|
||||||
initial = True
|
|
||||||
|
|
||||||
dependencies = []
|
dependencies = [
|
||||||
|
]
|
||||||
|
|
||||||
operations = [
|
operations = [
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name="Configuration",
|
name='Sheet',
|
||||||
fields=[
|
fields=[
|
||||||
(
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
"id",
|
('customer_name', models.CharField(max_length=256)),
|
||||||
models.BigAutoField(
|
('customer_address', models.CharField(max_length=256)),
|
||||||
auto_created=True,
|
('serial_number', models.CharField(max_length=256)),
|
||||||
primary_key=True,
|
('accuracy', models.FloatField()),
|
||||||
serialize=False,
|
('barometric_pressure', models.FloatField()),
|
||||||
verbose_name="ID",
|
('temperature', models.FloatField()),
|
||||||
),
|
('humidity', models.FloatField()),
|
||||||
),
|
('report_type', models.CharField(choices=[('TV', 'Transducer Verify'), ('HC', 'Hardware Calibration')], max_length=256)),
|
||||||
("serial", models.CharField(max_length=100)),
|
('as_found', models.FileField(blank=True, upload_to='')),
|
||||||
("device", models.CharField(max_length=100)),
|
('as_left', models.FileField(blank=True, upload_to='')),
|
||||||
("calibration_date", models.DateField()),
|
('both', models.FileField(blank=True, upload_to='')),
|
||||||
("calibration_due_date", models.DateField()),
|
('calibration_cert_id', models.CharField(default=0, max_length=100)),
|
||||||
|
('calibration_date', models.DateField(default=0)),
|
||||||
|
('calibration_due_date', models.DateField(default=0)),
|
||||||
|
('calibration_model', models.CharField(default=0, max_length=100)),
|
||||||
|
('calibration_serial', models.CharField(default=0, max_length=100)),
|
||||||
|
('channel', models.CharField(default=0, max_length=256)),
|
||||||
|
('instrument_model', models.CharField(default=0, max_length=256)),
|
||||||
|
('transducer_model', models.CharField(default=0, max_length=256)),
|
||||||
|
('transducer_span', models.CharField(default=0, max_length=256)),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
@ -0,0 +1,58 @@
|
|||||||
|
# Generated by Django 4.2.5 on 2023-09-18 17:03
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('sheets', '0001_initial'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='sheet',
|
||||||
|
name='calibration_cert_id',
|
||||||
|
field=models.CharField(max_length=100),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='sheet',
|
||||||
|
name='calibration_date',
|
||||||
|
field=models.DateField(),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='sheet',
|
||||||
|
name='calibration_due_date',
|
||||||
|
field=models.DateField(),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='sheet',
|
||||||
|
name='calibration_model',
|
||||||
|
field=models.CharField(max_length=100),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='sheet',
|
||||||
|
name='calibration_serial',
|
||||||
|
field=models.CharField(max_length=100),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='sheet',
|
||||||
|
name='channel',
|
||||||
|
field=models.CharField(max_length=256),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='sheet',
|
||||||
|
name='instrument_model',
|
||||||
|
field=models.CharField(max_length=256),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='sheet',
|
||||||
|
name='transducer_model',
|
||||||
|
field=models.CharField(max_length=256),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='sheet',
|
||||||
|
name='transducer_span',
|
||||||
|
field=models.CharField(max_length=256),
|
||||||
|
),
|
||||||
|
]
|
@ -1,56 +0,0 @@
|
|||||||
# Generated by Django 4.2.3 on 2023-07-26 19:33
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
dependencies = [
|
|
||||||
("sheets", "0001_initial"),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.CreateModel(
|
|
||||||
name="Sheet",
|
|
||||||
fields=[
|
|
||||||
(
|
|
||||||
"id",
|
|
||||||
models.BigAutoField(
|
|
||||||
auto_created=True,
|
|
||||||
primary_key=True,
|
|
||||||
serialize=False,
|
|
||||||
verbose_name="ID",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
("instrument", models.CharField(max_length=256)),
|
|
||||||
("customer_name", models.CharField(max_length=256)),
|
|
||||||
("customer_address", models.CharField(max_length=256)),
|
|
||||||
("control_number", models.CharField(max_length=256)),
|
|
||||||
("serial_number", models.CharField(max_length=256)),
|
|
||||||
("accuracy", models.FloatField()),
|
|
||||||
("barometric_pressure", models.FloatField()),
|
|
||||||
("temperature", models.FloatField()),
|
|
||||||
("humidity", models.FloatField()),
|
|
||||||
(
|
|
||||||
"report_type",
|
|
||||||
models.CharField(
|
|
||||||
choices=[
|
|
||||||
("TV", "Transducer Verify"),
|
|
||||||
("HC", "Hardware Calibration"),
|
|
||||||
],
|
|
||||||
max_length=256,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
("as_found", models.FileField(upload_to="")),
|
|
||||||
("as_left", models.FileField(upload_to="")),
|
|
||||||
("both", models.FileField(upload_to="")),
|
|
||||||
(
|
|
||||||
"configuration",
|
|
||||||
models.ForeignKey(
|
|
||||||
on_delete=django.db.models.deletion.PROTECT,
|
|
||||||
to="sheets.configuration",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
]
|
|
@ -1,36 +0,0 @@
|
|||||||
# Generated by Django 4.2.3 on 2023-07-26 20:34
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
dependencies = [
|
|
||||||
("sheets", "0002_sheet"),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="sheet",
|
|
||||||
name="as_found",
|
|
||||||
field=models.FileField(blank=True, upload_to=""),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="sheet",
|
|
||||||
name="as_left",
|
|
||||||
field=models.FileField(blank=True, upload_to=""),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="sheet",
|
|
||||||
name="both",
|
|
||||||
field=models.FileField(blank=True, upload_to=""),
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name="sheet",
|
|
||||||
name="configuration",
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name="sheet",
|
|
||||||
name="configuration",
|
|
||||||
field=models.ManyToManyField(to="sheets.configuration"),
|
|
||||||
),
|
|
||||||
]
|
|
@ -0,0 +1,34 @@
|
|||||||
|
# Generated by Django 4.2.5 on 2023-09-18 17:13
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('sheets', '0002_alter_sheet_calibration_cert_id_and_more'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RemoveField(
|
||||||
|
model_name='sheet',
|
||||||
|
name='customer_address',
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='sheet',
|
||||||
|
name='control_doc',
|
||||||
|
field=models.CharField(default=0, max_length=256),
|
||||||
|
preserve_default=False,
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='sheet',
|
||||||
|
name='onsite_cal',
|
||||||
|
field=models.BooleanField(default=False),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='sheet',
|
||||||
|
name='technician',
|
||||||
|
field=models.CharField(default=0, max_length=256),
|
||||||
|
preserve_default=False,
|
||||||
|
),
|
||||||
|
]
|
@ -1,41 +1,41 @@
|
|||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
# Create your models here.
|
|
||||||
|
|
||||||
class Configuration(models.Model):
|
|
||||||
serial = models.CharField(max_length=100)
|
|
||||||
device = models.CharField(max_length=100)
|
|
||||||
calibration_date = models.DateField()
|
|
||||||
calibration_due_date = models.DateField()
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"{self.serial} {self.device} [{self.calibration_date} to {self.calibration_due_date}]"
|
|
||||||
|
|
||||||
|
|
||||||
class Sheet(models.Model):
|
class Sheet(models.Model):
|
||||||
instrument = models.CharField(max_length=256)
|
instrument_model = models.CharField(max_length=256)
|
||||||
customer_name = models.CharField(max_length=256)
|
|
||||||
customer_address = models.CharField(max_length=256)
|
|
||||||
control_number = models.CharField(max_length=256)
|
|
||||||
serial_number = models.CharField(max_length=256)
|
serial_number = models.CharField(max_length=256)
|
||||||
|
channel = models.CharField(max_length=256)
|
||||||
|
transducer_model = models.CharField(max_length=256)
|
||||||
|
transducer_span = models.CharField(max_length=256)
|
||||||
|
|
||||||
|
customer_name = models.CharField(max_length=256)
|
||||||
|
onsite_cal = models.BooleanField(default=False)
|
||||||
|
control_doc = models.CharField(max_length=256)
|
||||||
|
technician = models.CharField(max_length=256)
|
||||||
|
|
||||||
accuracy = models.FloatField()
|
accuracy = models.FloatField()
|
||||||
|
|
||||||
barometric_pressure = models.FloatField()
|
barometric_pressure = models.FloatField()
|
||||||
temperature = models.FloatField()
|
temperature = models.FloatField()
|
||||||
humidity = models.FloatField()
|
humidity = models.FloatField()
|
||||||
|
|
||||||
|
calibration_serial = models.CharField(max_length=100)
|
||||||
|
calibration_model = models.CharField(max_length=100)
|
||||||
|
calibration_date = models.DateField()
|
||||||
|
calibration_due_date = models.DateField()
|
||||||
|
calibration_cert_id = models.CharField(max_length=100)
|
||||||
|
|
||||||
CHOICES = [
|
CHOICES = [
|
||||||
('TV', _('Transducer Verify')),
|
('TV', _('Transducer Verify')),
|
||||||
('HC', _('Hardware Calibration'))
|
('HC', _('Hardware Calibration'))
|
||||||
]
|
]
|
||||||
|
|
||||||
report_type = models.CharField(max_length=256,
|
report_type = models.CharField(
|
||||||
|
max_length=256,
|
||||||
choices=CHOICES,
|
choices=CHOICES,
|
||||||
)
|
)
|
||||||
|
|
||||||
as_found = models.FileField(blank=True)
|
as_found = models.FileField(blank=True)
|
||||||
as_left = models.FileField(blank=True)
|
as_left = models.FileField(blank=True)
|
||||||
both = models.FileField(blank=True)
|
both = models.FileField(blank=True)
|
||||||
|
|
||||||
configuration = models.ManyToManyField("Configuration")
|
|
@ -2,6 +2,7 @@ import re
|
|||||||
import json
|
import json
|
||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
|
|
||||||
|
|
||||||
def in_range(index, value, master_values):
|
def in_range(index, value, master_values):
|
||||||
return (
|
return (
|
||||||
master_values[index]["Low Limit"] <= value <= master_values[index]["High Limit"]
|
master_values[index]["Low Limit"] <= value <= master_values[index]["High Limit"]
|
||||||
|
@ -1,6 +1,14 @@
|
|||||||
<html>
|
<html lang="en">
|
||||||
<body class="app">
|
<head>
|
||||||
|
<!--? <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/foundation-sites@6.8.1/dist/css/foundation.min.css"-->
|
||||||
|
<!--? crossorigin="anonymous">-->
|
||||||
|
<!--? <script src="https://cdn.jsdelivr.net/npm/foundation-sites@6.8.1/dist/js/foundation.min.js"-->
|
||||||
|
<!--? crossorigin="anonymous"></script>-->
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65" crossorigin="anonymous">
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.min.js" integrity="sha384-cuYeSxntonz0PPNlHhBs68uyIAVpIIOZZ5JqeqvYYIcEL727kskC66kF92t6Xl2V" crossorigin="anonymous"></script>
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-kenU1KFdBIe4zVF0s0G1M5b4hcpxyD9F7jL+jjXkk+Q2h455rYXK/7HAuoJl+0I4" crossorigin="anonymous"></script>
|
||||||
<script type="importmap">
|
<script type="importmap">
|
||||||
{
|
{
|
||||||
"imports": {
|
"imports": {
|
||||||
@ -8,38 +16,150 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
<style>
|
||||||
|
.app {
|
||||||
|
margin: auto;
|
||||||
|
align: center;
|
||||||
|
width: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body class="app">
|
||||||
|
|
||||||
<div id="app">
|
<div id="app">
|
||||||
<form action="." method="post" enctype="multipart/form-data">
|
<form action="." method="post" enctype="multipart/form-data">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<table>
|
<table class="table table-striped">
|
||||||
<tdata>
|
<thead>
|
||||||
<tr><td>Customer Name</td><td>{{ form.customer_name }}</td></tr>
|
<tr>
|
||||||
<tr><td>Customer Address</td><td>{{ form.customer_address }}</td></tr>
|
<th colspan="2"><h2>Customer</h2></th>
|
||||||
<tr><td colspan=2><hr></td></tr>
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
|
||||||
<tr><td>Instrument</td><td>{{ form.instrument }}</td></tr>
|
<tr>
|
||||||
<tr><td>Control Number</td><td>{{ form.control_number }}</td></tr>
|
<td>Customer Name</td>
|
||||||
<tr><td>Serial Number</td><td>{{ form.serial_number }}</td></tr>
|
<td>{{ form.customer_name }}</td>
|
||||||
<tr><td colspan=2><hr></td></tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>On Site Calibration</td>
|
||||||
|
<td>{{ form.onsite_cal }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Control Doc#</td>
|
||||||
|
<td>{{ form.control_doc }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Technician</td>
|
||||||
|
<td>{{ form.technician }}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
|
||||||
<tr><td>Accuracy</td><td>{{ form.accuracy }}</td></tr>
|
<thead>
|
||||||
<tr><td>Barometric Pressure (mbar)</td><td>{{ form.barometric_pressure }}</td></tr>
|
<tr>
|
||||||
<tr><td>Temperature (°F)</td><td>{{ form.temperature }}</td></tr>
|
<th colspan="2"><h2>Instrument</h2></th>
|
||||||
<tr><td>Humidity</td><td>{{ form.humidity }}</td></tr>
|
</tr>
|
||||||
<tr><td colspan=2><hr></td></tr>
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>Model:</td>
|
||||||
|
<td>{{ form.instrument_model }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Serial Number</td>
|
||||||
|
<td>{{ form.serial_number }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Channel</td>
|
||||||
|
<td>{{ form.channel }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Transducer Model:</td>
|
||||||
|
<td>{{ form.transducer_model }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Transducer Span:</td>
|
||||||
|
<td>{{ form.transducer_span }}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
|
||||||
<tr><td>Report Type</td><td>{{ form.report_type }}</td></tr>
|
<thead>
|
||||||
<tr><td>Configuration(s)</td><td>{{ form.configuration }}</td></tr>
|
<tr>
|
||||||
<tr><td colspan=2><hr></td></tr>
|
<th colspan="2"><h2>Primary Calibration Device</h2></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>Model</td>
|
||||||
|
<td>{{ form.calibration_model }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Serial #</td>
|
||||||
|
<td>{{ form.calibration_serial }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Cal Date</td>
|
||||||
|
<td>{{ form.calibration_date }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Cal Due Date</td>
|
||||||
|
<td>{{ form.calibration_due_date }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Cert ID</td>
|
||||||
|
<td>{{ form.calibration_cert_id }}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th colspan="2"><h2>Environment</h2></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
|
||||||
<tr><td>As Found: {{ form.as_found }}</td><td>As Left:{{ form.as_left }}</td></tr>
|
<tr>
|
||||||
<tr><td colspan=2>One File: {{ form.both }}</td></tr>
|
<td>Accuracy</td>
|
||||||
<tr><td colspan=2><hr></td></tr>
|
<td>{{ form.accuracy }}</td>
|
||||||
<tr><td> </td><td align="right"><input type="submit" value="Generate PDF and Label"></td></tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Barometric Pressure (mbar)</td>
|
||||||
|
<td>{{ form.barometric_pressure }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Temperature (°F)</td>
|
||||||
|
<td>{{ form.temperature }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Humidity</td>
|
||||||
|
<td>{{ form.humidity }}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
|
||||||
</tdata>
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th colspan="2"><h2>Report Uploads</h2></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>Report Type</td>
|
||||||
|
<td>{{ form.report_type }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan=2>One File: {{ form.both }}</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>As Found: {{ form.as_found }}</td>
|
||||||
|
<td>As Left:{{ form.as_left }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td> </td>
|
||||||
|
<td align="right"><input type="submit" value="Generate PDF and Label"></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
@ -53,34 +173,22 @@
|
|||||||
const vm = createApp({
|
const vm = createApp({
|
||||||
el: "#app",
|
el: "#app",
|
||||||
data() {
|
data() {
|
||||||
const instrument = ""
|
const as_found = ""
|
||||||
const customer_name = ""
|
const as_left = ""
|
||||||
const customer_address = ""
|
const both = ""
|
||||||
const control_number = ""
|
|
||||||
const serial_number = ""
|
|
||||||
const accuracy = ref("0.5")
|
const accuracy = ref("0.5")
|
||||||
const barometric_pressure = ref(1013.25)
|
const barometric_pressure = ref(1013.25)
|
||||||
const temperature = ref("50")
|
const temperature = ref("50")
|
||||||
const humidity = ref("50.0")
|
const humidity = ref("50.0")
|
||||||
const report_type = ""
|
|
||||||
const as_found = ""
|
|
||||||
const as_left = ""
|
|
||||||
const both = ""
|
|
||||||
const show_as_found = reactive(true)
|
const show_as_found = reactive(true)
|
||||||
const show_as_left = reactive(true)
|
const show_as_left = reactive(true)
|
||||||
const show_both = reactive(true)
|
const show_both = reactive(true)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
instrument,
|
|
||||||
customer_name,
|
|
||||||
customer_address,
|
|
||||||
control_number,
|
|
||||||
serial_number,
|
|
||||||
accuracy,
|
accuracy,
|
||||||
barometric_pressure,
|
barometric_pressure,
|
||||||
temperature,
|
temperature,
|
||||||
humidity,
|
humidity,
|
||||||
report_type,
|
|
||||||
as_found,
|
as_found,
|
||||||
as_left,
|
as_left,
|
||||||
both,
|
both,
|
||||||
@ -94,7 +202,6 @@
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
change_as_found: function (event) {
|
change_as_found: function (event) {
|
||||||
console.log(this)
|
|
||||||
this.show_both = false
|
this.show_both = false
|
||||||
},
|
},
|
||||||
change_as_left: function (event) {
|
change_as_left: function (event) {
|
||||||
@ -110,9 +217,8 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
notifyFileInput: function (event) {
|
notifyFileInput: function (event) {
|
||||||
var fileName = event.target.files[0].name;
|
|
||||||
// update file name value
|
// update file name value
|
||||||
this.file = fileName;
|
this.file = event.target.files[0].name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}).mount("#app")
|
}).mount("#app")
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
from django.http import HttpResponseRedirect
|
from django.http import HttpResponseRedirect
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
from .forms import SheetForm, SheetForm
|
|
||||||
from django.core.exceptions import ValidationError
|
from django.core.exceptions import ValidationError
|
||||||
from .parsers import parse_transducer, parse_hardware_calibration
|
|
||||||
|
|
||||||
|
from .forms import SheetForm, SheetForm
|
||||||
|
from .parsers import parse_transducer, parse_hardware_calibration
|
||||||
|
|
||||||
|
|
||||||
def upload_file(request):
|
def upload_file(request):
|
||||||
@ -23,7 +23,9 @@ def upload_file(request):
|
|||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
raise ValidationError("Please provide proper files")
|
raise ValidationError("Please provide proper files")
|
||||||
return HttpResponseRedirect("/success/url/")
|
f.save()
|
||||||
|
breakpoint()
|
||||||
|
return HttpResponseRedirect("/")
|
||||||
else:
|
else:
|
||||||
form = SheetForm()
|
form = SheetForm()
|
||||||
return render(request, "sheets/upload.html", {"form": form})
|
return render(request, "sheets/upload.html", {"form": form})
|
85
benchtopdevices/transducer_verify.txt
Normal file
85
benchtopdevices/transducer_verify.txt
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
|| Transducer Verify Report ||
|
||||||
|
TRANSDUCER1
|
||||||
|
===============================================================
|
||||||
|
Transducer 1 CTS D34-442 115PSIA
|
||||||
|
Setpoint Pressure 1 0.000 psig
|
||||||
|
Setpoint Pressure 2 20.000 psig
|
||||||
|
Setpoint Pressure 3 40.000 psig
|
||||||
|
Setpoint Pressure 4 60.000 psig
|
||||||
|
Setpoint Pressure 5 80.000 psig
|
||||||
|
Setpoint Pressure 6 100.000 psig
|
||||||
|
Instrument Pressure 1 0.000 psig
|
||||||
|
Instrument Pressure 2 20.002 psig
|
||||||
|
Instrument Pressure 3 39.997 psig
|
||||||
|
Instrument Pressure 4 60.010 psig
|
||||||
|
Instrument Pressure 5 80.001 psig
|
||||||
|
Instrument Pressure 6 100.002 psig
|
||||||
|
Master Value 1 0.000 psig
|
||||||
|
Master Value 2 20.000 psig
|
||||||
|
Master Value 3 40.000 psig
|
||||||
|
Master Value 4 60.000 psig
|
||||||
|
Master Value 5 80.000 psig
|
||||||
|
Master Value 6 100.000 psig
|
||||||
|
Verify Date 07/20/22
|
||||||
|
Verify Time 11:20:26
|
||||||
|
|
||||||
|
TRANSDUCER2
|
||||||
|
===============================================================
|
||||||
|
Transducer 2 CTS A12-221 250SCCM
|
||||||
|
Setpoint Pressure 1 20.000 psig
|
||||||
|
Setpoint Pressure 2 20.000 psig
|
||||||
|
Setpoint Pressure 3 20.000 psig
|
||||||
|
Setpoint Pressure 4 20.000 psig
|
||||||
|
Setpoint Pressure 5 20.000 psig
|
||||||
|
Setpoint Pressure 6 20.000 psig
|
||||||
|
Setpoint Pressure 7 20.000 psig
|
||||||
|
Setpoint Pressure 8 20.000 psig
|
||||||
|
Setpoint Pressure 9 20.000 psig
|
||||||
|
Setpoint Pressure 10 20.000 psig
|
||||||
|
Setpoint Pressure 11 20.000 psig
|
||||||
|
Instrument Pressure 1 20.154 psig
|
||||||
|
Instrument Pressure 2 20.153 psig
|
||||||
|
Instrument Pressure 3 20.152 psig
|
||||||
|
Instrument Pressure 4 20.150 psig
|
||||||
|
Instrument Pressure 5 20.148 psig
|
||||||
|
Instrument Pressure 6 20.145 psig
|
||||||
|
Instrument Pressure 7 20.144 psig
|
||||||
|
Instrument Pressure 8 20.141 psig
|
||||||
|
Instrument Pressure 9 20.139 psig
|
||||||
|
Instrument Pressure 10 20.138 psig
|
||||||
|
Instrument Pressure 11 20.136 psig
|
||||||
|
Instrument Flow 1 -0.082 sccm
|
||||||
|
Instrument Flow 2 24.802 sccm
|
||||||
|
Instrument Flow 3 49.664 sccm
|
||||||
|
Instrument Flow 4 74.836 sccm
|
||||||
|
Instrument Flow 5 99.416 sccm
|
||||||
|
Instrument Flow 6 125.289 sccm
|
||||||
|
Instrument Flow 7 150.205 sccm
|
||||||
|
Instrument Flow 8 175.290 sccm
|
||||||
|
Instrument Flow 9 200.165 sccm
|
||||||
|
Instrument Flow 10 224.748 sccm
|
||||||
|
Instrument Flow 11 249.825 sccm
|
||||||
|
Master Reading 1 0.000 sccm
|
||||||
|
Master Reading 2 25.000 sccm
|
||||||
|
Master Reading 3 50.000 sccm
|
||||||
|
Master Reading 4 75.000 sccm
|
||||||
|
Master Reading 5 100.000 sccm
|
||||||
|
Master Reading 6 125.000 sccm
|
||||||
|
Master Reading 7 150.000 sccm
|
||||||
|
Master Reading 8 175.000 sccm
|
||||||
|
Master Reading 9 200.000 sccm
|
||||||
|
Master Reading 10 225.000 sccm
|
||||||
|
Master Reading 11 250.000 sccm
|
||||||
|
Master Value 1 0.000 sccm
|
||||||
|
Master Value 2 25.000 sccm
|
||||||
|
Master Value 3 50.000 sccm
|
||||||
|
Master Value 4 75.000 sccm
|
||||||
|
Master Value 5 100.000 sccm
|
||||||
|
Master Value 6 125.000 sccm
|
||||||
|
Master Value 7 150.000 sccm
|
||||||
|
Master Value 8 175.000 sccm
|
||||||
|
Master Value 9 200.000 sccm
|
||||||
|
Master Value 10 225.000 sccm
|
||||||
|
Master Value 11 250.000 sccm
|
||||||
|
Verify Date 07/15/21
|
||||||
|
Verify Time 14:55:10
|
Loading…
Reference in New Issue
Block a user