Added extruder/bed temp override settings

Closes #4
This commit is contained in:
Donkie
2023-05-28 21:52:51 +02:00
parent 424856c710
commit 7c7ee9296c
11 changed files with 183 additions and 27 deletions

View File

@@ -109,6 +109,30 @@ export const FilamentCreate: React.FC<IResourceComponentsProps> = () => {
> >
<InputNumber min={0} addonAfter="g" /> <InputNumber min={0} addonAfter="g" />
</Form.Item> </Form.Item>
<Form.Item
label="Override Extruder Temperature"
help="Override the extruder temperature for this filament type."
name={["settings_extruder_temp"]}
rules={[
{
required: false,
},
]}
>
<InputNumber min={0} addonAfter="°C" />
</Form.Item>
<Form.Item
label="Override Bed Temperature"
help="Override the bed temperature for this filament type."
name={["settings_bed_temp"]}
rules={[
{
required: false,
},
]}
>
<InputNumber min={0} addonAfter="°C" />
</Form.Item>
<Form.Item <Form.Item
label="Article Number" label="Article Number"
name={["article_number"]} name={["article_number"]}

View File

@@ -147,6 +147,30 @@ export const FilamentEdit: React.FC<IResourceComponentsProps> = () => {
> >
<InputNumber min={0} addonAfter="g" /> <InputNumber min={0} addonAfter="g" />
</Form.Item> </Form.Item>
<Form.Item
label="Override Extruder Temperature"
help="Override the extruder temperature for this filament type."
name={["settings_extruder_temp"]}
rules={[
{
required: false,
},
]}
>
<InputNumber min={0} addonAfter="°C" />
</Form.Item>
<Form.Item
label="Override Bed Temperature"
help="Override the bed temperature for this filament type."
name={["settings_bed_temp"]}
rules={[
{
required: false,
},
]}
>
<InputNumber min={0} addonAfter="°C" />
</Form.Item>
<Form.Item <Form.Item
label="Article Number" label="Article Number"
name={["article_number"]} name={["article_number"]}

View File

@@ -13,4 +13,6 @@ export interface IFilament {
spool_weight?: number; spool_weight?: number;
article_number?: string; article_number?: string;
comment?: string; comment?: string;
settings_extruder_temp?: number;
settings_bed_temp?: number;
} }

View File

@@ -66,6 +66,28 @@ export const FilamentShow: React.FC<IResourceComponentsProps> = () => {
maximumFractionDigits: 1, maximumFractionDigits: 1,
}} }}
/> />
<Title level={5}>Overridden Extruder Temperature</Title>
{
!record?.settings_extruder_temp ? (
<TextField value="Not Set" />
) : (
<NumberFieldUnit
value={record?.settings_extruder_temp ?? ""}
unit="°C"
/>
)
}
<Title level={5}>Overridden Bed Temperature</Title>
{
!record?.settings_bed_temp ? (
<TextField value="Not Set" />
) : (
<NumberFieldUnit
value={record?.settings_bed_temp ?? ""}
unit="°C"
/>
)
}
<Title level={5}>Article Number</Title> <Title level={5}>Article Number</Title>
<TextField value={record?.article_number} /> <TextField value={record?.article_number} />
<Title level={5}>Comment</Title> <Title level={5}>Comment</Title>

View File

@@ -1,4 +1,4 @@
"""${message}- """${message}.
Revision ID: ${up_revision} Revision ID: ${up_revision}
Revises: ${down_revision | comma,n} Revises: ${down_revision | comma,n}
@@ -7,7 +7,6 @@ Create Date: ${create_date}
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op from alembic import op
${imports if imports else ""} ${imports if imports else ""}
# revision identifiers, used by Alembic. # revision identifiers, used by Alembic.
revision = ${repr(up_revision)} revision = ${repr(up_revision)}
down_revision = ${repr(down_revision)} down_revision = ${repr(down_revision)}

View File

@@ -0,0 +1,32 @@
"""add extruder and bed temperature override.
Revision ID: b47376d60c6d
Revises: 684d32cf7e4d
Create Date: 2023-05-28 21:36:53.452067
"""
import sqlalchemy as sa
from alembic import op
# revision identifiers, used by Alembic.
revision = "b47376d60c6d"
down_revision = "684d32cf7e4d"
branch_labels = None
depends_on = None
def upgrade() -> None:
"""Perform the upgrade."""
op.add_column(
"filament",
sa.Column("settings_extruder_temp", sa.Integer(), nullable=True, comment="Overridden extruder temperature."),
)
op.add_column(
"filament",
sa.Column("settings_bed_temp", sa.Integer(), nullable=True, comment="Overridden bed temperature."),
)
def downgrade() -> None:
"""Perform the downgrade."""
op.drop_column("filament", "settings_bed_temp")
op.drop_column("filament", "settings_extruder_temp")

View File

@@ -63,6 +63,16 @@ class FilamentParameters(BaseModel):
description="Free text comment about this filament type.", description="Free text comment about this filament type.",
example="", example="",
) )
settings_extruder_temp: Optional[int] = Field(
ge=0,
description="Overridden extruder temperature, in °C.",
example=210,
)
settings_bed_temp: Optional[int] = Field(
ge=0,
description="Overridden bed temperature, in °C.",
example=60,
)
class FilamentUpdateParameters(FilamentParameters): class FilamentUpdateParameters(FilamentParameters):
@@ -152,6 +162,8 @@ async def create(
spool_weight=body.spool_weight, spool_weight=body.spool_weight,
article_number=body.article_number, article_number=body.article_number,
comment=body.comment, comment=body.comment,
settings_extruder_temp=body.settings_extruder_temp,
settings_bed_temp=body.settings_bed_temp,
) )
return Filament.from_db(db_item) return Filament.from_db(db_item)

View File

@@ -69,6 +69,16 @@ class Filament(BaseModel):
description="Free text comment about this filament type.", description="Free text comment about this filament type.",
example="", example="",
) )
settings_extruder_temp: Optional[int] = Field(
ge=0,
description="Overridden extruder temperature, in °C.",
example=210,
)
settings_bed_temp: Optional[int] = Field(
ge=0,
description="Overridden bed temperature, in °C.",
example=60,
)
@staticmethod @staticmethod
def from_db(item: models.Filament) -> "Filament": def from_db(item: models.Filament) -> "Filament":
@@ -86,6 +96,8 @@ class Filament(BaseModel):
spool_weight=item.spool_weight, spool_weight=item.spool_weight,
article_number=item.article_number, article_number=item.article_number,
comment=item.comment, comment=item.comment,
settings_extruder_temp=item.settings_extruder_temp,
settings_bed_temp=item.settings_bed_temp,
) )

View File

@@ -24,6 +24,8 @@ async def create(
spool_weight: Optional[float] = None, spool_weight: Optional[float] = None,
article_number: Optional[str] = None, article_number: Optional[str] = None,
comment: Optional[str] = None, comment: Optional[str] = None,
settings_extruder_temp: Optional[int] = None,
settings_bed_temp: Optional[int] = None,
) -> models.Filament: ) -> models.Filament:
"""Add a new filament to the database.""" """Add a new filament to the database."""
vendor_item: Optional[models.Vendor] = None vendor_item: Optional[models.Vendor] = None
@@ -41,6 +43,8 @@ async def create(
spool_weight=spool_weight, spool_weight=spool_weight,
article_number=article_number, article_number=article_number,
comment=comment, comment=comment,
settings_extruder_temp=settings_extruder_temp,
settings_bed_temp=settings_bed_temp,
) )
db.add(db_item) db.add(db_item)
await db.flush() await db.flush()

View File

@@ -39,7 +39,8 @@ class Filament(Base):
spool_weight: Mapped[Optional[float]] = mapped_column(comment="The weight of an empty spool.") spool_weight: Mapped[Optional[float]] = mapped_column(comment="The weight of an empty spool.")
article_number: Mapped[Optional[str]] = mapped_column(String(64)) article_number: Mapped[Optional[str]] = mapped_column(String(64))
comment: Mapped[Optional[str]] = mapped_column(String(1024)) comment: Mapped[Optional[str]] = mapped_column(String(1024))
# TODO: Print settings settings_extruder_temp: Mapped[Optional[int]] = mapped_column(comment="Overridden extruder temperature.")
settings_bed_temp: Mapped[Optional[int]] = mapped_column(comment="Overridden bed temperature.")
# TODO: Color? # TODO: Color?

View File

@@ -19,6 +19,8 @@ def test_add_filament(random_vendor: dict[str, Any]):
spool_weight = 250 spool_weight = 250
article_number = "123456789" article_number = "123456789"
comment = "abcdefghåäö" comment = "abcdefghåäö"
settings_extruder_temp = 200
settings_bed_temp = 60
result = httpx.post( result = httpx.post(
f"{URL}/api/v1/filament", f"{URL}/api/v1/filament",
json={ json={
@@ -32,6 +34,8 @@ def test_add_filament(random_vendor: dict[str, Any]):
"spool_weight": spool_weight, "spool_weight": spool_weight,
"article_number": article_number, "article_number": article_number,
"comment": comment, "comment": comment,
"settings_extruder_temp": settings_extruder_temp,
"settings_bed_temp": settings_bed_temp,
}, },
) )
result.raise_for_status() result.raise_for_status()
@@ -51,6 +55,8 @@ def test_add_filament(random_vendor: dict[str, Any]):
"spool_weight": spool_weight, "spool_weight": spool_weight,
"article_number": article_number, "article_number": article_number,
"comment": comment, "comment": comment,
"settings_extruder_temp": settings_extruder_temp,
"settings_bed_temp": settings_bed_temp,
} }
# Clean up # Clean up
@@ -96,6 +102,8 @@ def test_get_filament(random_vendor: dict[str, Any]):
spool_weight = 250 spool_weight = 250
article_number = "123456789" article_number = "123456789"
comment = "abcdefghåäö" comment = "abcdefghåäö"
settings_extruder_temp = 200
settings_bed_temp = 60
result = httpx.post( result = httpx.post(
f"{URL}/api/v1/filament", f"{URL}/api/v1/filament",
json={ json={
@@ -109,6 +117,8 @@ def test_get_filament(random_vendor: dict[str, Any]):
"spool_weight": spool_weight, "spool_weight": spool_weight,
"article_number": article_number, "article_number": article_number,
"comment": comment, "comment": comment,
"settings_extruder_temp": settings_extruder_temp,
"settings_bed_temp": settings_bed_temp,
}, },
) )
result.raise_for_status() result.raise_for_status()
@@ -122,18 +132,22 @@ def test_get_filament(random_vendor: dict[str, Any]):
# Verify # Verify
filament = result.json() filament = result.json()
assert filament["name"] == name assert filament == {
assert filament["vendor"] == random_vendor "id": added_filament["id"],
assert filament["material"] == material "registered": added_filament["registered"],
assert filament["price"] == price "name": name,
assert filament["density"] == density "vendor": random_vendor,
assert filament["diameter"] == diameter "material": material,
assert filament["weight"] == weight "price": price,
assert filament["spool_weight"] == spool_weight "density": density,
assert filament["article_number"] == article_number "diameter": diameter,
assert filament["comment"] == comment "weight": weight,
assert filament["id"] == added_filament["id"] "spool_weight": spool_weight,
assert filament["registered"] == added_filament["registered"] "article_number": article_number,
"comment": comment,
"settings_extruder_temp": settings_extruder_temp,
"settings_bed_temp": settings_bed_temp,
}
# Clean up # Clean up
httpx.delete(f"{URL}/api/v1/filament/{filament['id']}").raise_for_status() httpx.delete(f"{URL}/api/v1/filament/{filament['id']}").raise_for_status()
@@ -331,6 +345,8 @@ def test_update_filament(random_vendor: dict[str, Any]):
"spool_weight": 250, "spool_weight": 250,
"article_number": "123456789", "article_number": "123456789",
"comment": "abcdefghåäö", "comment": "abcdefghåäö",
"settings_extruder_temp": 200,
"settings_bed_temp": 60,
}, },
) )
result.raise_for_status() result.raise_for_status()
@@ -346,6 +362,8 @@ def test_update_filament(random_vendor: dict[str, Any]):
new_spool_weight = 123 new_spool_weight = 123
new_article_number = "987654321" new_article_number = "987654321"
new_comment = "test" new_comment = "test"
new_settings_extruder_temp = 210
new_settings_bed_temp = 70
result = httpx.patch( result = httpx.patch(
f"{URL}/api/v1/filament/{added_filament['id']}", f"{URL}/api/v1/filament/{added_filament['id']}",
json={ json={
@@ -359,24 +377,30 @@ def test_update_filament(random_vendor: dict[str, Any]):
"spool_weight": new_spool_weight, "spool_weight": new_spool_weight,
"article_number": new_article_number, "article_number": new_article_number,
"comment": new_comment, "comment": new_comment,
"settings_extruder_temp": new_settings_extruder_temp,
"settings_bed_temp": new_settings_bed_temp,
}, },
) )
result.raise_for_status() result.raise_for_status()
# Verify # Verify
filament = result.json() filament = result.json()
assert filament["name"] == new_name assert filament == {
assert filament["vendor"] == random_vendor "id": added_filament["id"],
assert filament["material"] == new_material "registered": added_filament["registered"],
assert filament["price"] == new_price "name": new_name,
assert filament["density"] == new_density "vendor": random_vendor,
assert filament["diameter"] == new_diameter "material": new_material,
assert filament["weight"] == new_weight "price": new_price,
assert filament["spool_weight"] == new_spool_weight "density": new_density,
assert filament["article_number"] == new_article_number "diameter": new_diameter,
assert filament["comment"] == new_comment "weight": new_weight,
assert filament["id"] == added_filament["id"] "spool_weight": new_spool_weight,
assert filament["registered"] == added_filament["registered"] "article_number": new_article_number,
"comment": new_comment,
"settings_extruder_temp": new_settings_extruder_temp,
"settings_bed_temp": new_settings_bed_temp,
}
# Clean up # Clean up
httpx.delete(f"{URL}/api/v1/filament/{filament['id']}").raise_for_status() httpx.delete(f"{URL}/api/v1/filament/{filament['id']}").raise_for_status()