Finishing up color printing

This commit is contained in:
Reid D McKenzie 2025-02-07 12:57:42 -07:00
parent 095ab9746f
commit 35ae07d7e3
5 changed files with 32 additions and 12 deletions

View file

@ -46,7 +46,14 @@ def manipulate_jobs():
if job := ctx.db.fetch_job( if job := ctx.db.fetch_job(
uid=ctx.uid, jid=int(request.form.get("job_id")) uid=ctx.uid, jid=int(request.form.get("job_id"))
): ):
ctx.db.create_job(uid=ctx.uid, fid=job.file_id) ctx.db.create_job(
uid=ctx.uid,
fid=job.file_id,
cid=job.color_id,
# FIXME: Need to dissociate job copies from the original mapped printer. Can't tell the difference
# between the requested printer in the original job and the mapped printer from a scheduler run.
pid=None,
)
flash("Job created!", category="info") flash("Job created!", category="info")
else: else:
flash("Could not duplicate", category="error") flash("Could not duplicate", category="error")

View file

@ -38,10 +38,15 @@ RETURNING
-- name: list-files -- name: list-files
SELECT SELECT
* f.id
, f.filename
, f.user_id
, (SELECT COUNT(*) FROM jobs WHERE file_id = f.id AND status_id > 1) AS `print_successes` , (SELECT COUNT(*) FROM jobs WHERE file_id = f.id AND status_id > 1) AS `print_successes`
, (SELECT COUNT(*) FROM jobs WHERE file_id = f.id AND status_id < 0) AS `print_failures` , (SELECT COUNT(*) FROM jobs WHERE file_id = f.id AND status_id < 0) AS `print_failures`
, fa.color_id as color_id
FROM files f FROM files f
INNER JOIN file_analysis fa
ON f.id = fa.file_id
WHERE WHERE
(:uid IS NULL OR user_id = :uid) (:uid IS NULL OR user_id = :uid)
ORDER BY ORDER BY

View file

@ -27,13 +27,10 @@ CREATE TABLE IF NOT EXISTS jobs (
); );
-- name: migration-0001-jobs-add-print-time# -- name: migration-0001-jobs-add-print-time#
ALTER TABLE jobs ADD COLUMN time_left INTEGER DEFAULT (0); ALTER TABLE jobs ADD COLUMN IF NOT EXISTS time_left INTEGER DEFAULT (0);
-- name: migration-0002-jobs-add-print-color# -- name: migration-0002-jobs-add-print-color#
ALTER TABLE jobs ADD COLUMN color_id INTEGER DEFAULT (0); ALTER TABLE jobs ADD COLUMN IF NOT EXISTS color_id INTEGER DEFAULT (NULL);
-- name: migration-0003-jobs-add-queued-at#
ALTER TABLE jobs ADD COLUMN queued_at TEXT DEFAULT (datetime('now'));
-- name: create-job^ -- name: create-job^
INSERT INTO jobs ( INSERT INTO jobs (
@ -93,7 +90,7 @@ SELECT
, fa.nozzle_diameter , fa.nozzle_diameter
, fa.filament_id , fa.filament_id
, (SELECT name FROM filament WHERE id = fa.filament_id) AS filament_name , (SELECT name FROM filament WHERE id = fa.filament_id) AS filament_name
, (SELECT name AS name FROM filament_color WHERE id = fa.color_id) AS color_name , (SELECT name AS name FROM filament_color WHERE id = coalesce(j.color_id, fa.color_id)) AS color_name
, (SELECT name FROM job_statuses WHERE id = j.status_id) AS status , (SELECT name FROM job_statuses WHERE id = j.status_id) AS status
, j.started_at , j.started_at
, j.time_left , j.time_left
@ -126,7 +123,17 @@ LIMIT 1
-- name: list-job-history -- name: list-job-history
SELECT SELECT
j.* j.id
, j.user_id
, j.file_id
, j.printer_id
, j.started_at
, j.cancelled_at
, j.finished_at
, j.time_left
, j.status_id
, j.message
, coalesce(j.color_id, fa.color_id) as color_id
, fa.id as analysis_id , fa.id as analysis_id
, (SELECT name FROM job_statuses WHERE id = j.status_id) AS `status` , (SELECT name FROM job_statuses WHERE id = j.status_id) AS `status`
FROM jobs j FROM jobs j

View file

@ -35,3 +35,4 @@
You don't have any files. Upload something! You don't have any files. Upload something!
{% endif %} {% endif %}
{% endwith %} {% endwith %}


View file

@ -5,9 +5,9 @@
<input type="hidden" name="action" value="enqueue" /> <input type="hidden" name="action" value="enqueue" />
<input type="hidden" name="file_id" value="{{ file.id }}" /> <input type="hidden" name="file_id" value="{{ file.id }}" />
<select name="color_id"> <select name="color_id">
{% for c in ctx.db.list_colors() %} {%- for c in ctx.db.list_colors() %}
<option value="{{c.id}}" {% if file.color_id == c.id %}selected{%endif%}>{{c.name}}</option> <option value="{{c.id}}" {% if file.color_id == c.id %}selected{%endif%}>{{c.name}}</option>
{% endfor %} {%- endfor %}
</select> </select>
<input id="submit" type="image" src="/static/print.svg" height="24" width="24" /> <input id="submit" type="image" src="/static/print.svg" height="24" width="24" />
</form> </form>